scraping-youtube-channel-data について
YouTube の URL やハンドルからチャンネル統計を収集し、動画一覧も取得できるスキルです。Apify の YouTube スクレーパーを実行し、検索やトレンド取得にも対応します。
主な機能
- 01チャンネル統計の収集
- 02動画一覧の任意取得
- 03キーワードと条件による検索
- 04トレンド動画の取得
- 05結果の CSV 保存
活用シーン
- 01複数チャンネルの登録者数と再生数の比較
- 02チャンネルの動画一覧の収集
- 03キーワード、日付、長さによる動画検索
- 04国別のトレンド動画の取得
MCP 対応
利用可能な場合は、Apify MCP サーバーの `apify:run-actor` ツールからスクレーパーを実行できます。スクリプトと REST API による方法も記載されています。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ apidojo-io/ apidojo-skills --skill scraping-youtube-channel-dataインストール後、Claude Code で/scraping-youtube-channel-dataを入力して読み込まれたか確認します。
詳細
YouTube チャンネルデータのスクレイピング
YouTube チャンネルの URL またはハンドルを指定して、チャンネル単位の統計情報と、オプションで動画カタログをエクスポートします。
前提条件
APIFY_TOKEN環境変数が設定されていること- オプション:Apify MCP サーバーがインストールされていること
入力
| パラメーター | 型 | 必須 | デフォルト | 備考 |
|---|---|---|---|---|
startUrls | array | 任意 | [] | YouTube URL — チャンネル、プレイリスト、Shorts、検索結果 |
youtubeHandles | array | 任意 | [] | YouTube チャンネルのハンドル(例:@kurzgesagt) |
getTrending | boolean | 任意 | false | トレンド動画を取得します |
keywords | array | 任意 | [] | 検索キーワード |
gl | string | 任意 | us | 結果の国コード(例:US、GB) |
hl | string | 任意 | en | 言語コード(例:en、de) |
uploadDate | string | 任意 | all | アップロード日のフィルター:any、hour、today、week、month、year |
duration | string | 任意 | all | 動画の長さのフィルター:any、short、long |
features | string | 任意 | all | 機能のフィルター:4k、hd、live、cc、3d、hdr など |
sort | string | 任意 | r | 検索結果の並べ替え順 |
maxItems | number | 任意 | 無制限 | 返す動画の最大数 |
customMapFunction | string | 任意 | — | 各出力オブジェクトを変換する JavaScript 関数 |
ワークフロー
Progress:
- [ ] Step 1: Normalize channel URLs
- [ ] Step 2: Run youtube-scraper
- [ ] Step 3: Poll for SUCCEEDED
- [ ] Step 4: Deliver channel dataset
ステップ 2:Actor を実行する
推奨 — run_actor.js(待機、出力、ファイル保存を自動で処理します):
# Quick answer (prints table to chat)
node scripts/run_actor.js \
--actor "apidojo~youtube-channel-scraper" \
--input '{"param": "value"}'
# Save as CSV
node scripts/run_actor.js \
--actor "apidojo~youtube-channel-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# Save as JSON
node scripts/run_actor.js \
--actor "apidojo~youtube-channel-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.json --format json
APIFY_TOKENは環境または.envファイルに設定する必要があります。
Apify MCP が利用可能な場合:
Tool: apify:run-actor
Actor: "apidojo~youtube-channel-scraper"
Input:
{
"channelUrls": ["https://www.youtube.com/@channelhandle"],
"maxVideos": 30
}
REST API による代替方法:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~youtube-channel-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"channelUrls": ["https://www.youtube.com/@channelhandle"], "maxVideos": 30}'
id を RUN_ID として保存します。status = SUCCEEDED になるまでポーリングします:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID?token=$APIFY_TOKEN" | grep '"status"'
結果を取得します:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN&format=json"
ステップ 3:エッジケースに対応する
- チャンネル URL が見つからない場合:ハンドルが変更された可能性があります。YouTube で確認してください。
- 登録者数が非公開の場合:チャンネルによっては登録者数を非公開にしています。フィールドは null を返すため、これらにフラグを付けてください。
- 年齢制限のあるチャンネルの場合:返されるメタデータが制限されることがあります。
出力形式
# YouTube Channel Dataset
Channels requested: N | Returned: N
| Channel | Subscribers | Total Views | Videos | Joined | Country | Recent Avg Views |
|---------|-------------|-------------|--------|--------|---------|-----------------|
| ... | ... | ... | ... | ... | ... | ... |
Available fields: channelName, channelId, subscriberCount, viewCount, videoCount,
country, joinedDate, description, channelUrl, recentVideos[]
トラブルシューティング
登録者数が非公開の場合: YouTube ではチャンネルが登録者数を非公開にできます。null を返し、出力にその旨を記載してください。
動画カタログが大きい場合: タイムアウトを避けるため、1 回の実行あたりの maxVideos を最大 100 に設定してください。
コメント
Markdown 対応