mcpField
S
scraping-youtube-channel-data

scraping-youtube-channel-data

github.com/apidojo-ioデータ・データベース1751 回インストール24 週間前に更新
リポジトリ

scraping-youtube-channel-data について

YouTube の URL やハンドルからチャンネル統計を収集し、動画一覧も取得できるスキルです。Apify の YouTube スクレーパーを実行し、検索やトレンド取得にも対応します。

主な機能

  1. 01チャンネル統計の収集
  2. 02動画一覧の任意取得
  3. 03キーワードと条件による検索
  4. 04トレンド動画の取得
  5. 05結果の CSV 保存

活用シーン

  1. 01複数チャンネルの登録者数と再生数の比較
  2. 02チャンネルの動画一覧の収集
  3. 03キーワード、日付、長さによる動画検索
  4. 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 サーバーがインストールされていること

入力

パラメーター型必須デフォルト備考
startUrlsarray任意[]YouTube URL — チャンネル、プレイリスト、Shorts、検索結果
youtubeHandlesarray任意[]YouTube チャンネルのハンドル(例:@kurzgesagt)
getTrendingboolean任意falseトレンド動画を取得します
keywordsarray任意[]検索キーワード
glstring任意us結果の国コード(例:US、GB)
hlstring任意en言語コード(例:en、de)
uploadDatestring任意allアップロード日のフィルター:any、hour、today、week、month、year
durationstring任意all動画の長さのフィルター:any、short、long
featuresstring任意all機能のフィルター:4k、hd、live、cc、3d、hdr など
sortstring任意r検索結果の並べ替え順
maxItemsnumber任意無制限返す動画の最大数
customMapFunctionstring任意—各出力オブジェクトを変換する 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 に設定してください。

コメント