YouTubeには、1本の動画に対して「タイトル」と「説明文」を言語ごとに翻訳して登録できる機能があります。視聴者がどの言語でYouTubeを使っているかによって、その言語のタイトル・説明文が自動で表示される仕組みです。
この記事はこんな人向けです
- YouTube動画を複数言語に対応させたい
- 毎回YouTube Studioでコピペするのが面倒に感じている
- Pythonで自動化したいが、何から始めればいいか分からない
海外の視聴者に見つけてもらいやすくなる可能性がある機能ですが、問題が1つあります。動画が増えると手作業では終わらないんです。
私が運営している音楽チャンネルでは、動画11本 × 11言語 = 121回、YouTube Studioの画面でコピペを繰り返す必要がありました。さすがにこれは無理があると判断し、Pythonで自動化することにしました。
この記事で一番伝えたいのは、次の3つのつまずきです。
① Google Cloudの2段階認証が2026年から必須に
② ブランドアカウントは「テストユーザー」に直接登録できない
③ defaultLanguageは表示上「en」でも実際には未設定なことがある
手順とコードもすべて公開しますが、実際にやってみて一番時間がかかったのはこの3つでした。詳しくは後半で解説します。
そもそも「多言語対応」に何の意味があるのか
YouTubeの広告収益(CPM)は、動画のタイトルの言語ではなく、実際に視聴している人がどこの国にいるかで決まります。つまり多言語対応そのものが直接収益を上げるわけではありません。
ただし、翻訳したタイトル・説明文があると、その言語で検索する人に動画が見つかりやすくなります。結果として、その言語圏(広告単価が比較的高い地域も含む)からの視聴者が増える、という間接的な効果が期待できる可能性があります。特にBGM系・instrumental系の動画は、言語の壁がそもそもないので、メタデータの翻訳だけで新しい視聴者層にリーチできる余地が大きいと感じています。
手作業だと何が大変か
YouTube Studioで多言語のタイトル・説明文を追加する場所は、動画の編集画面の「字幕」タブです。ここから「言語を追加」を押すと、その言語のタイトルと説明文を入力できます。
1本の動画に11言語を設定するには、この「言語を追加」→ タイトル貼り付け → 説明文貼り付け、という作業を11回繰り返します。動画が増えるほど作業量は掛け算で増えていくので、10本を超えたあたりで心が折れます。
自動化に必要なもの
- Googleアカウント(YouTubeチャンネルを管理しているアカウント)
- Google Cloud のプロジェクト(無料で作成可能)
- YouTube Data API v3(公式ドキュメント・Google Cloud上で有効化)
- OAuth 2.0 クライアントID(デスクトップアプリ用)
- Python 3 と
google-api-python-clientgoogle-auth-oauthlibなどのライブラリ
エンジニアでなくても、順番通りに進めれば準備できます。実際、この作業のほとんどはブラウザでのクリック操作です。
必要なライブラリは、次のコマンドでまとめてインストールできます。
pip install google-api-python-client google-auth-oauthlib google-auth
セットアップ手順
① Google Cloudでプロジェクトを作成
Google Cloud Console を開き、管理しているYouTubeアカウントでログイン。「新しいプロジェクト」から適当な名前でプロジェクトを作成します。
② YouTube Data API v3を有効化
作成したプロジェクトの中で、検索窓に「YouTube Data API v3」と入力し、出てきたAPIを「有効にする」だけです。
③ OAuth同意画面(Google Auth Platform)を設定
ここが一番つまずきやすいところでした。詳しくは後述しますが、先に「対象(Audience)」の設定で、自分のGoogleアカウントをテストユーザーとして必ず追加しておく必要があります。
④ OAuthクライアントIDを作成
「クライアント」から新規作成し、アプリケーションの種類は必ず「デスクトップアプリ」を選びます。作成後にJSONファイルをダウンロードし、client_secret.json という名前でスクリプトと同じ場所に置きます。
⑤ 初回認証
スクリプトを実行すると、ブラウザが開いて認証画面が表示されます。ここで許可を出すと、以降は保存されたトークンで自動的に認証されるようになります。
全体の流れ
コードの前に、全体像を整理しておきます。
翻訳データを辞書として用意
↓
Pythonスクリプトを実行
↓
YouTube Data API(videos.update)を呼び出す
↓
動画11本のタイトル・説明文が一括で更新される
実際に使ったPythonコード
以下は実際に使ったスクリプトを、汎用的な形に整理したものです。動画IDと言語ごとのタイトル・説明文を辞書に入れて実行するだけで、まとめて反映されます(videos.update・localizationsの公式リファレンスもあわせてどうぞ)。
“`python
import os
import pickle
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from googleapiclient.discovery import build
SCOPES = [“https://www.googleapis.com/auth/youtube.force-ssl”]
CLIENT_SECRET_FILE = “client_secret.json”
TOKEN_FILE = “youtube_token.pickle”
def get_youtube_service():
creds = None
if os.path.exists(TOKEN_FILE):
with open(TOKEN_FILE, “rb”) as f:
creds = pickle.load(f)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
creds = flow.run_local_server(port=0)
with open(TOKEN_FILE, "wb") as f:
pickle.dump(creds, f)
return build("youtube", "v3", credentials=creds)
def set_localizations(youtube, video_id, localizations, default_language=”en”):
# 現在のsnippetを取得し、defaultLanguageを明示的に設定し直す
snippet = youtube.videos().list(part=”snippet”, id=video_id).execute()[“items”][0][“snippet”]
snippet[“defaultLanguage”] = default_language
youtube.videos().update(part=”snippet”, body={“id”: video_id, “snippet”: snippet}).execute()
# 多言語のタイトル・説明文をまとめて設定
youtube.videos().update(
part="localizations",
body={"id": video_id, "localizations": localizations},
).execute()
使い方の例
VIDEOS = {
“動画ID”: {
“de”: {“title”: “ドイツ語タイトル”, “description”: “ドイツ語の説明文”},
“ko”: {“title”: “韓国語タイトル”, “description”: “韓国語の説明文”},
# 必要な言語を追加していく
},
}
if name == “main“:
youtube = get_youtube_service()
for video_id, localizations in VIDEOS.items():
set_localizations(youtube, video_id, localizations)
print(f”{video_id}: {len(localizations)}言語 設定完了”)
client_secret.json と youtube_token.pickle には認証情報が入っているので、.gitignore に必ず追加してGitの管理対象から外してください。
YouTube Data APIには1日あたりの利用上限(Quota)があります。動画数本〜十数本程度の更新であれば、個人利用の範囲で上限に達することはまずありません。
つまずいたポイント3つ
① Google Cloudの2段階認証が2026年から必須に
以前は不要だったのですが、2026年4月からGoogle Cloud Consoleの利用には2段階認証(MFA)が必須になりました。「Google Cloudへのアクセスがブロックされました」という画面が出たら、案内に従って電話番号などで2段階認証を設定すれば解決します。
② ブランドアカウントは「テストユーザー」に直接登録できない
YouTubeチャンネルがブランドアカウント(個人のGoogleアカウントとは別に作った、チャンネル専用のアカウント)になっている場合、認証時にどのアカウントとしてログインするか選択画面が出ます。ここで「ブランドアカウント」の方を選ぶと、テストユーザー未登録としてブロックされることがあります。管理している元のGoogleアカウントの方を選ぶと解決します。チャンネルの編集権限自体は、元のアカウントでも問題なく機能します。
③ defaultLanguageは表示上「en」でも実際には未設定なことがある
動画の情報を取得すると、デフォルト言語が「en」と表示されるのに、いざ多言語データを書き込もうとすると「defaultLanguageが設定されていません」というエラーが出ることがあります。これは表示上のフォールバック値であって、実際には確定保存されていないためです。多言語データを書き込む前に、毎回明示的にdefaultLanguageを設定し直すことで解決します(上記コードのset_localizations関数はこれに対応済みです)。
実際に対応した11言語
英語(デフォルト)に加えて、11言語(合計12言語)を設定しました。
ドイツ語・日本語・韓国語・フランス語・オランダ語・スペイン語・ポルトガル語・イタリア語・スウェーデン語・インドネシア語・ヒンディー語
選んだ基準は、広告単価が比較的高い地域と、Lofi(作業用BGM)の需要が大きい地域のバランスです。全部の言語を網羅するのではなく、自分のチャンネルのジャンルに合わせて絞り込みました。
まとめ
YouTubeの多言語対応は、YouTube Data APIを使えば動画1本あたり数秒で完了します。最初のGoogle Cloud設定に少し時間がかかりますが、一度仕組みを作ってしまえば、新しい動画が増えるたびに翻訳データを辞書に追記して実行するだけです。
私自身も、121回分のコピペ作業から解放されました。動画が増えるほど効果を実感できる自動化なので、同じ作業を繰り返している方の参考になれば嬉しいです。
最後まで読んでいただき、ありがとうございます。
「ゼロからAI副業」では、30代会社員の私がAI副業に挑戦する過程を、成功も失敗も正直に発信しています。
よかったら、また読みに来てください。
他のSNSなどはこちらからどうぞ→ https://linktr.ee/zero_ai_fuku


コメント