mcpField
S
scraping-youtube-videos-by-keyword

scraping-youtube-videos-by-keyword

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

scraping-youtube-videos-by-keyword について

キーワード、チャンネル、URLからYouTube動画のメタデータを収集し、トレンド動画も取得するスキルです。動画やチャンネルの情報、エンゲージメント指標を使う調査・分析に向いています。

主な機能

  1. 01キーワード、チャンネル、URLで検索
  2. 02トレンド動画の取得
  3. 03日付、長さ、機能による絞り込み
  4. 04動画とチャンネル指標の収集
  5. 05カスタム関数による出力変換

活用シーン

  1. 01検索テーマの動画データセット作成
  2. 02動画間のエンゲージメント比較
  3. 03指定チャンネルの動画収集

MCP 対応

Apify MCP サーバーが利用可能な場合、そこから Apify Actor を実行できます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/apidojo-io/apidojo-skills --skill scraping-youtube-videos-by-keyword

インストール後、Claude Code で/scraping-youtube-videos-by-keywordを入力して読み込まれたか確認します。

詳細

キーワードで YouTube 動画をスクレイピング

任意の検索クエリに対応した、YouTube 動画の生データセットです。エンゲージメント指標やチャンネル情報など、動画単位のメタデータを返します。

前提条件

  • 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: Build search query
- [ ] Step 2: Run youtube-scraper
- [ ] Step 3: Poll for SUCCEEDED
- [ ] Step 4: Deliver video dataset
ステップ 2:Actor を実行する

推奨 — run_actor.js(待機、出力、ファイルの保存を自動で処理します):

# Quick answer (prints table to chat)
node scripts/run_actor.js \
  --actor "apidojo~youtube-scraper" \
  --input '{"param": "value"}'

# Save as CSV
node scripts/run_actor.js \
  --actor "apidojo~youtube-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~youtube-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.json --format json

環境または .env ファイルに APIFY_TOKEN を設定する必要があります。

Apify MCP を利用できる場合:

Tool: apify:run-actor
Actor: "apidojo~youtube-scraper"
Input:
{
  "searchKeywords": "<query>",
  "maxResults": 50,
  "sortBy": "relevance"
}

REST API を使用する場合:

curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~youtube-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchKeywords": "<query>", "maxResults": 50}'

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:エッジケースに対処する
  • 結果が 20 件未満の場合:クエリが狭すぎる可能性があります。検索語を広げてください。
  • 結果に年齢制限付きコンテンツが含まれる場合:メタデータが限られている可能性があります。viewCount が欠落している行にフラグを付けてください。
  • 動画 ID が重複している場合:videoId で重複を除去してください。

出力形式

# YouTube Video Dataset: "<query>"
Videos collected: N | Sort: <sortBy>

| Video ID | Title | Channel | Views | Likes | Comments | Duration | Published |
|----------|-------|---------|-------|-------|----------|----------|-----------|
| ...      | ...   | ...     | ...   | ...   | ...      | ...      | ...       |

Available fields: videoId, title, channelName, channelId, viewCount, likeCount,
commentCount, duration, publishedAt, videoUrl, thumbnailUrl, description

トラブルシューティング

要求した件数より結果が少ない場合: ニッチなクエリでは、YouTube 検索で得られる結果が限られることがあります。 高評価数が欠落している場合: YouTube では低評価数は非表示ですが、高評価数は引き続き取得できます。一部の動画では、すべての件数が非表示になっています。

コメント