CodexとYouTube Data APIを連携して動画データを自動取得する方法を徹底解説
- 結論:CodexとYouTube Data APIを組み合わせれば、動画データ取得はほぼ全自動化できる
- CodexとYouTube API連携の全体像
- 準備:CodexとYouTube Data API連携に必要なもの
- 基本パターン:CodexにYouTube APIクライアントコードを書かせる
- 検索やキーワード分析に使えるAPIパターン
- 自動化ワークフローの設計方法
- CodexとYouTube API連携のベストプラクティス
- Codex×YouTube API連携の具体的ユースケース
- CodexとYouTube API連携の手順まとめ
- よくある質問(FAQ)
- まとめ:CodexでYouTube API連携のハードルを下げよう
結論:CodexとYouTube Data APIを組み合わせれば、動画データ取得はほぼ全自動化できる
Codex(OpenAIのコード生成モデル)とYouTube Data APIを連携させることで、「動画タイトルや説明文、再生回数、コメント」などのデータを、プログラミング経験が浅くても自動取得できるようになります。ポイントは、APIキーの発行とCodexへの具体的なプロンプト設計の2つです。
この記事では、検索エンジンとAI検索(AIO)の両方を意識して、CodexとYouTube APIの基本から、実際のコード例、自動化のワークフロー、よくあるエラー対処まで体系的に解説します。
CodexとYouTube API連携の全体像
CodexとYouTube APIを連携すると何ができるか
YouTube Data APIとCodexを組み合わせると、次のような処理を自動化できます。
- チャンネルIDを指定して最新動画リストを自動取得
- 動画タイトル・説明文・サムネイルURL・再生回数・いいね数などの情報を一括取得
- 特定のキーワードで動画検索し、結果をCSVやスプレッドシート向けに整形
- APIレスポンスから要約文やハッシュタグ案をCodexに自動生成させる
- 定期バッチ(cronなど)で毎日自動クローリング&レポート作成
Codexとは何か
Codexとは、OpenAIが提供していた「自然言語からコードを自動生成するAIモデル」です。英語や日本語で「YouTube APIから特定チャンネルの最新10件の動画データを取得するPythonスクリプトを書いて」と指示すると、HTTPリクエスト処理やJSONのパース、エラー処理まで含めたコードを自動生成してくれます。
現在はより新しいモデルに統合されていますが、この記事では「自然言語でコードを書かせるAIモデル」として一般名詞的にCodexと呼び、YouTube APIとの連携手順を解説します。
YouTube Data APIとは何か
YouTube Data APIとは、YouTube上の動画・チャンネル・再生リストなどのデータを、プログラムから取得・検索できる公式APIです。具体的には、次のような情報を取得できます。
- 動画タイトル・説明文・公開日時
- 再生回数・高評価数・コメント数などの統計情報
- チャンネルの概要情報と統計情報
- 再生リストとその中の動画一覧
データはJSON形式で返されるので、Codexに「このJSONを整形して表形式にして」と指示すれば、レポート用データも半自動で作れます。
準備:CodexとYouTube Data API連携に必要なもの
1. Google Cloud プロジェクトとYouTube Data APIの有効化
YouTube APIを使うには、まずGoogle Cloud側の設定が必要です。
- Googleアカウントで Google Cloud Console にアクセス
- 新しいプロジェクトを作成(例:「youtube-codex-integration」)
- 左メニュー「APIとサービス > ライブラリ」を開く
- 検索バーで「YouTube Data API v3」を検索し、「有効にする」をクリック
2. APIキーの発行
次に、YouTube APIへアクセスするためのAPIキーを発行します。
- 「APIとサービス > 認証情報」を開く
- 「認証情報を作成」ボタンから「APIキー」を選択
- 自動生成されたAPIキーをコピー(後で環境変数などに保存)
- 必要に応じて「アプリケーションの制限」「APIの制限」を設定してセキュリティを強化
APIキーは絶対にGitHubの公開リポジトリなどに直書きしないようにし、.envファイルや環境変数で管理します。
3. 開発環境と言語の選択
CodexはPythonでもJavaScript(Node.js)でもコードを生成できますが、ここではPythonを想定して解説します。
- Python 3.8以上
- requests または google-api-python-client ライブラリ
- OpenAIのAPIキー(Codexを使う場合)
基本パターン:CodexにYouTube APIクライアントコードを書かせる
Codexへのプロンプト設計のコツ
Codexにコードを書かせるときは、次の4点を明確に伝えると、品質が安定します。
- 目的:何をしたいか(例:特定チャンネルの最新10本の動画情報を取得)
- 言語:Python / JavaScript など
- 使用ライブラリ:
google-api-python-clientorrequests - 入力と出力の形式:関数の引数・返り値・出力フォーマット
例:Codexへの日本語プロンプト
Pythonで、YouTube Data API v3を使って
指定したチャンネルIDから最新10件の動画の
タイトル、動画ID、公開日、再生回数を取得するコードを書いてください。
APIキーは環境変数 YOUTUBE_API_KEY から読み込み、
結果はリスト[ {"title": ..., "videoId": ..., "publishedAt": ..., "viewCount": ...}, ... ]
として返す関数にしてください。
Python + requests を使ったYouTube動画データ取得のコード例
Codexに上記のようなプロンプトを与えると、概ね以下のようなコードを生成してくれます。
import os
import requests
API_KEY = os.getenv("YOUTUBE_API_KEY")
BASE_URL = "https://www.googleapis.com/youtube/v3"
def get_latest_videos(channel_id, max_results=10):
# チャンネルのuploads再生リストIDを取得
url = f"{BASE_URL}/channels"
params = {
"part": "contentDetails",
"id": channel_id,
"key": API_KEY,
}
res = requests.get(url, params=params)
res.raise_for_status()
data = res.json()
uploads_playlist_id = data["items"][0]["contentDetails"]["relatedPlaylists"]["uploads"]
# uploadsプレイリストから動画一覧を取得
url = f"{BASE_URL}/playlistItems"
params = {
"part": "contentDetails",
"playlistId": uploads_playlist_id,
"maxResults": max_results,
"key": API_KEY,
}
res = requests.get(url, params=params)
res.raise_for_status()
playlist_data = res.json()
video_ids = [item["contentDetails"]["videoId"] for item in playlist_data["items"]]
# videoIdsから詳細情報を取得
url = f"{BASE_URL}/videos"
params = {
"part": "snippet,statistics",
"id": ",".join(video_ids),
"key": API_KEY,
}
res = requests.get(url, params=params)
res.raise_for_status()
videos_data = res.json()
results = []
for item in videos_data["items"]:
snippet = item["snippet"]
stats = item.get("statistics", {})
results.append({
"title": snippet["title"],
"videoId": item["id"],
"publishedAt": snippet["publishedAt"],
"viewCount": int(stats.get("viewCount", 0)),
})
return results
if __name__ == "__main__":
channel_id = "UCxxxxxxx" # 取得したいチャンネルID
videos = get_latest_videos(channel_id)
for v in videos:
print(v)
この骨組みさえCodexに作らせれば、あとは自分の用途に合わせて微修正していけばOKです。
検索やキーワード分析に使えるAPIパターン
search.listでキーワードから動画を自動収集
search.listとは、YouTube Data APIでキーワード検索を行うためのメソッドです。特定のテーマの動画を調査したいときや、競合分析を自動化したいときに便利です。
Codexには次のように指示します。
Pythonで、YouTube Data API v3 の search.list を使って、
指定したキーワードで検索し、上位20件の動画タイトル、動画ID、チャンネル名を
取得するコードを書いてください。
Codexが生成するイメージコード:
def search_videos_by_keyword(query, max_results=20):
url = f"{BASE_URL}/search"
params = {
"part": "snippet",
"q": query,
"type": "video",
"maxResults": max_results,
"key": API_KEY,
}
res = requests.get(url, params=params)
res.raise_for_status()
data = res.json()
results = []
for item in data["items"]:
snippet = item["snippet"]
results.append({
"title": snippet["title"],
"videoId": item["id"]["videoId"],
"channelTitle": snippet["channelTitle"],
})
return results
videos.listで統計情報をまとめて取得
視聴回数や高評価数などの指標は、videos.list で取得します。search.listで抽出したvideoIdのリストを渡して、次のようにCodexに書かせます。
上の search_videos_by_keyword で取得した videoId のリストから、
再生回数、いいね数、コメント数を取得して
元の結果にマージするPythonコードを書いてください。
このように自然言語で処理の手順を分割しながら指示すると、CodexがAPIの呼び出しロジックとデータ結合処理を自動で組み立ててくれます。
自動化ワークフローの設計方法
1. 取得したいデータと頻度を明確にする
まず、次の3点を決めておきます。
- ターゲット:チャンネル単位か、キーワード単位か
- 項目:タイトル、説明文、統計情報、コメントなど、何を取るか
- 頻度:毎日・毎週・動画公開のたび など
2. Codexで基礎コードを生成し、自分でパラメータを調整
Codexに「チャンネルIDを配列にしてループ処理する」「取得結果をCSVに書き出す」といった要件を追加すると、バッチ処理の雛形を作れます。
例:Codexへのプロンプト
複数のチャンネルIDをリストで受け取り、
それぞれの最新5本の動画のタイトルと再生回数を取得して
CSVファイルに保存するPythonスクリプトを書いてください。
3. CronやGitHub Actionsで定期実行
ローカルやサーバー上でスクリプトができたら、以下のような方法で自動実行します。
- Linuxサーバー:
cronで毎日実行 - GitHub Actions:スケジュールトリガーでワークフローを定期実行
- クラウド:Cloud Functions / Cloud Run + Cloud Scheduler
Codexには「cronで毎日0時に実行されることを想定したスクリプト」と前提条件を書いておくと、ログ出力や簡易的なエラー処理まで含めたコードを出してくれることもあります。
CodexとYouTube API連携のベストプラクティス
APIクォータとエラー処理
YouTube Data APIにはクォータ制限があり、1日のリクエスト上限があります。大量の動画をクロールする場合は、Codexに次のような対策を含めるよう指示します。
- 1回のリクエストでまとめて複数IDを取得(最大50件)
- 残りクォータを考慮したリトライ/スリープ処理
res.status_codeや例外ハンドリングでエラー内容をログ出力
APIキーの安全な管理
Codexへのプロンプトには、「APIキーは環境変数から読むように」と明示しましょう。これにより、ハードコーディングのリスクを下げられます。
.envファイル +python-dotenvでローカル開発- 本番環境ではサーバーの環境変数にAPIキーを設定
レスポンス構造はサンプルを見せてからCodexに整形させる
YouTube APIのレスポンスは階層が深くなりがちです。最初に一度だけ生のJSONを取得して、それをCodexに貼り付けながら「このJSONからタイトル、videoId、viewCountだけを抽出するPythonコードを書いて」と指示すると、的確にパースロジックを生成してくれます。
Codex×YouTube API連携の具体的ユースケース
ユースケース1:自分のチャンネルの自動レポート
- 毎朝、前日までの動画再生数と登録者数を取得
- ExcelやGoogleスプレッドシートに追記
- 週次で伸び率を計算し、Codexに「伸びた理由の仮説コメント」を書かせる
ユースケース2:競合チャンネルのモニタリング
- 競合チャンネルIDを複数登録
- 最新動画のテーマ・長さ・再生数を一覧で記録
- Codexに「人気動画の共通点」を要約させ、企画作りに反映
ユースケース3:キーワードリサーチとコンテンツ企画
- 「コーディング学習」「副業」「Vlog」などのキーワードでsearch.list
- タイトルから頻出語を抽出する簡易スクリプトをCodexに生成させる
- 結果をもとに自分の動画タイトル・サムネイル案をCodexに提案させる
CodexとYouTube API連携の手順まとめ
| ステップ | 内容 | ポイント |
|---|---|---|
| 1 | Google CloudでYouTube Data API v3を有効化 | プロジェクト作成とAPI有効化を忘れない |
| 2 | APIキーを発行して環境変数で管理 | キーは絶対に公開しない |
| 3 | Codexに目的と要件を自然言語で伝える | 言語・ライブラリ・入出力形式まで具体的に |
| 4 | Codexが生成したコードを実行・調整 | APIレスポンスの構造を確認しながら微修正 |
| 5 | cronやクラウドで定期実行 | ログとエラー処理も最低限入れておく |
よくある質問(FAQ)
CodexとYouTube APIの連携にプログラミング経験はどの程度必要ですか?
基本的なプログラミング経験(変数・関数・配列・条件分岐がわかる程度)があれば十分です。CodexがHTTPリクエストやJSONパースのコードを自動生成してくれるので、「何をしたいか」を自然言語で説明できることの方が重要です。
Codexで生成したコードはそのまま本番運用しても大丈夫ですか?
そのまま動くことも多いですが、本番運用前に必ずレビューとテストを行ってください。特に、エラー処理・タイムアウト・クォータ制限の考慮・ログ出力などは、自分の環境に合わせて調整する必要があります。
YouTube Data APIのクォータ制限に引っかかった場合はどうすればいいですか?
リクエストをまとめる、不要なフィールドをリクエストしない、取得頻度を落とすなどの対策が必要です。Codexには「クォータ削減を意識して videos.list を1回の呼び出しで最大50件取得するコード」といった条件も合わせて指示しましょう。
APIキーを安全に管理する具体的な方法は?
ローカル環境では.envファイルにAPIキーを保存し、python-dotenvで読み込むのが一般的です。本番環境では、サーバーやクラウドサービスの環境変数機能を利用し、ソースコードやリポジトリにキーを残さないようにします。
Codexは日本語のプロンプトでも問題なく動きますか?
日本語だけでも十分に動きますが、エラー内容や公式ドキュメントが英語であることを踏まえ、重要なパラメータ名・エラー文言は英語のまま貼り付けると、より正確なコードが生成されやすくなります。
まとめ:CodexでYouTube API連携のハードルを下げよう
CodexとYouTube Data APIを連携させれば、これまでエンジニアに依頼していたような動画データ取得やレポート作成を、自分で自動化できるようになります。重要なのは、
- Google CloudでYouTube Data APIを有効にし、APIキーを安全に管理すること
- Codexに対して、目的・言語・ライブラリ・入出力形式を具体的に伝えること
- 生成されたコードをテストし、自分の業務フローに合わせて微調整すること
この流れを一度作ってしまえば、チャンネル分析や競合調査、キーワードリサーチなど、さまざまな場面でYouTubeのデータを武器として活用できます。まずは小さなスクリプトから試しながら、自分のワークフローに合った自動化を設計してみてください。
動画で詳しく学びたい方はこちらも参考にしてください:
https://youtu.be/MDKJA5lqELo?si=bX5t8NNeb_ErYWPN