UC-FEED-004Data FeedsLv3
YouTube チャンネル構造化データ収集
動画メタデータ・チャンネル指標を収集し、競合・トレンド分析に使う。
YouTube Scraper API
KPI 例
- 対象チャンネル数
- 取得鮮度
- 欠損率
YouTube のチャンネル分析では、画面を見ながら手で確認する運用だと継続比較ができません。このユースケースでは、YouTube Scraper API を使ってチャンネル情報や動画一覧を構造化データとして取得し、投稿頻度、再生数、競合比較の基礎データを揃えます。
誰の課題か
- 競合チャンネルの更新頻度や人気動画を継続観測したいマーケティング担当
- 動画メタデータを BI やノートブックへ流したいデータアナリスト
- 手作業のコピーではなく、定期取得できる形に整理したいコンテンツチーム
重要なのは、動画本文まで広く集めることではなく、まずチャンネル単位と動画単位で何を比較したいかを決めることです。投稿本数、再生数、公開日など、比較軸が決まっていると設計がぶれません。
推奨製品セット
| 製品 | 役割 | このユースケースでの位置づけ |
|---|---|---|
| YouTube Scraper API | YouTube 向け既製抽出 | チャンネル情報と動画一覧を構造化取得する |
| API Access | 認証 | バッチや分析スクリプトから安全に呼ぶ |
| Data Feeds | 継続供給 | 定期取得を下流に載せたい場合に組み合わせる |
- まずはチャンネル 1 件でレスポンス形式を確認します。
- 競合比較まで進める場合は、チャンネルごとの取得間隔と保存先を先に決めます。
最小実装イメージ
このリポジトリの Step 4 と同じく、まずチャンネルメタデータを取得し、必要なら動画一覧のジョブへ進みます。
curl -X POST "https://api.brightdata.com/v1/scrapers/youtube/channel" \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel_id": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
"region": "us"
}'動画一覧の取得結果は snapshot_id ベースで受け取る前提にしておくと、後続の集計コードを分離しやすくなります。
import os
import requests
API_KEY = os.getenv("BRIGHTDATA_API_KEY")
SNAPSHOT_ID = os.getenv("BRIGHTDATA_SNAPSHOT_ID")
resp = requests.get(
f"https://api.brightdata.com/v1/snapshots/{SNAPSHOT_ID}/results",
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=60,
)
resp.raise_for_status()
videos = resp.json()
print(type(videos))channel_idを固定して 1 回通し、必要なフィールドが揃うか確認してから複数チャンネルへ広げます。- 下流ではチャンネル情報と動画一覧を別テーブルで持つほうが扱いやすくなります。
運用ポイント
- 毎日取得するのか、週次で十分かを先に決めます。競合比較では頻度設計がコストに直結します。
snapshot_idをチャンネル ID と紐づけて保存しないと、どの取得結果か追跡しづらくなります。- API キーは分析用途ごとに分け、
ADMINを使わずUSERまたはOPSで運用します。 - 再生数の増減だけでなく、公開日、投稿本数、上位動画の入れ替わりなど、比較指標を固定しておくとレポートが安定します。
- 公開データの取り扱いでも、社内の利用ルールと外部公開可否は事前に整理しておきます。