scraping-youtube-videos-by-keyword について
キーワード、チャンネル、URLからYouTube動画のメタデータを収集し、トレンド動画も取得するスキルです。動画やチャンネルの情報、エンゲージメント指標を使う調査・分析に向いています。
主な機能
- 01キーワード、チャンネル、URLで検索
- 02トレンド動画の取得
- 03日付、長さ、機能による絞り込み
- 04動画とチャンネル指標の収集
- 05カスタム関数による出力変換
活用シーン
- 01検索テーマの動画データセット作成
- 02動画間のエンゲージメント比較
- 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 サーバーがインストールされていること
入力
| パラメーター | 型 | 必須 | デフォルト | 備考 |
|---|---|---|---|---|
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: 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 では低評価数は非表示ですが、高評価数は引き続き取得できます。一部の動画では、すべての件数が非表示になっています。
コメント
Markdown 対応