youtube について
youtube は curl で YouTube Data API v3 を利用するスキルです。API キーを使い、動画、チャンネル、再生リスト、コメント、急上昇動画の情報を取得できます。
主な機能
- 01条件を指定した動画検索
- 02動画の詳細と統計情報の取得
- 03チャンネル情報の取得
- 04再生リスト内の動画一覧
- 05コメントと急上昇動画の取得
活用シーン
- 01トピックやカテゴリで動画を探す
- 02動画の再生回数や長さを確認する
- 03チャンネル情報や再生リストの内容を調べる
- 04コメントや地域別の急上昇動画を取得する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ manojbajaj95/ claude-gtm-plugin --skill youtubeインストール後、Claude Code で/youtubeを入力して読み込まれたか確認します。
詳細
YouTube Data API
直接 curl 呼び出しで YouTube Data API v3 を使用して、動画の検索、動画の詳細の取得、チャンネル情報の取得、再生リストのアイテムの一覧表示、コメントの取得を行います。
公式ドキュメント:
https://developers.google.com/youtube/v3
使用する場面
次のことを行う必要がある場合に、このスキルを使用します。
- キーワードやフィルターで動画を検索する
- 動画の詳細(タイトル、説明、統計情報、再生時間)を取得する
- チャンネル情報(登録者数、動画数、説明)を取得する
- 再生リストのアイテム(再生リスト内の動画)を一覧表示する
- 動画のコメントを取得する
- 地域別の急上昇動画を取得する
前提条件
1. Google Cloud プロジェクトを作成する
- Google Cloud Console にアクセスします
- 新しいプロジェクトを作成するか、既存のプロジェクトを選択します
- 「API とサービス」>「ライブラリ」に移動します
- 「YouTube Data API v3」を検索して有効にします
2. API キーを取得する
- 「API とサービス」>「認証情報」に移動します
- 「認証情報を作成」>「API キー」をクリックします
- API キーをコピーします
export YOUTUBE_API_KEY="your-api-key-here"
3. (任意)API キーを制限する
本番環境で使用する場合は、キーを制限します。
- アプリケーションの制限:HTTP リファラー、IP アドレス
- API の制限:YouTube Data API v3 のみ
重要: コマンド内で
$VARを使用し、そのコマンドを別のコマンドにパイプで渡す場合は、$VARを含むコマンドをbash -c '...'で囲んでください。Claude Code の不具合により、パイプを直接使用すると環境変数がひそかに消去されます。bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY" | jq .'
使用方法
ベース URL:https://www.googleapis.com/youtube/v3
1. 動画を検索する
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/search?part=snippet&q=kubernetes+tutorial&type=video&maxResults=5&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {videoId: .id.videoId, title: .snippet.title, channel: .snippet.channelTitle}'
2. フィルターを指定して検索する
今年アップロードされた動画を再生回数順に検索します。
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/search?part=snippet&q=react+hooks&type=video&order=viewCount&publishedAfter=2024-01-01T00:00:00Z&maxResults=10&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {videoId: .id.videoId, title: .snippet.title}'
3. 動画の詳細を取得する
<your-video-id> を実際の動画 ID に置き換えます。
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics,contentDetails&id=<your-video-id>&key=${YOUTUBE_API_KEY}"' | jq '.items[0] | {title: .snippet.title, views: .statistics.viewCount, likes: .statistics.likeCount, duration: .contentDetails.duration}'
4. 複数の動画を取得する
<your-video-id-1>、<your-video-id-2>、<your-video-id-3> を実際の動画 ID に置き換えます。
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&id=<your-video-id-1>,<your-video-id-2>,<your-video-id-3>&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {id: .id, title: .snippet.title, views: .statistics.viewCount}'
5. 急上昇動画を取得する
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&chart=mostPopular®ionCode=US&maxResults=10&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {title: .snippet.title, channel: .snippet.channelTitle, views: .statistics.viewCount}'
6. ID でチャンネルを取得する
<your-channel-id> を実際のチャンネル ID に置き換えます。
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&id=<your-channel-id>&key=${YOUTUBE_API_KEY}"' | jq '.items[0] | {title: .snippet.title, subscribers: .statistics.subscriberCount, videos: .statistics.videoCount}'
7. ハンドルでチャンネルを取得する
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&forHandle=@GoogleDevelopers&key=${YOUTUBE_API_KEY}"' | jq '.items[0] | {id: .id, title: .snippet.title, subscribers: .statistics.subscriberCount}'
8. ユーザー名でチャンネルを取得する
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&forUsername=GoogleDevelopers&key=${YOUTUBE_API_KEY}"' | jq '.items[0] | {id: .id, title: .snippet.title, description: .snippet.description}'
9. 再生リストのアイテムを一覧表示する
<your-playlist-id> を実際の再生リスト ID に置き換えます。
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=<your-playlist-id>&maxResults=20&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {position: .snippet.position, title: .snippet.title, videoId: .snippet.resourceId.videoId}'
10. チャンネルのアップロード再生リストを取得する
まずチャンネルのアップロード再生リスト ID を取得し、その後動画を一覧表示します。<your-channel-id> を実際のチャンネル ID に置き換えます。
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id=<your-channel-id>&key=${YOUTUBE_API_KEY}"' | jq -r '.items[0].contentDetails.relatedPlaylists.uploads'
11. 動画のコメントを取得する
<your-video-id> を実際の動画 ID に置き換えます。
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=<your-video-id>&maxResults=20&order=relevance&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {author: .snippet.topLevelComment.snippet.authorDisplayName, text: .snippet.topLevelComment.snippet.textDisplay, likes: .snippet.topLevelComment.snippet.likeCount}'
12. コメントを検索する
<your-video-id> を実際の動画 ID に置き換えます。
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=<your-video-id>&searchTerms=great+video&maxResults=10&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {author: .snippet.topLevelComment.snippet.authorDisplayName, text: .snippet.topLevelComment.snippet.textDisplay}'
13. 動画カテゴリを取得する
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videoCategories?part=snippet®ionCode=US&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {id: .id, title: .snippet.title}'
14. カテゴリで動画を検索する
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&videoCategoryId=28&maxResults=10&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {videoId: .id.videoId, title: .snippet.title}'
注:カテゴリ 28 = 科学とテクノロジー
15. チャンネルの再生リストを取得する
<your-channel-id> を実際のチャンネル ID に置き換えます。
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=<your-channel-id>&maxResults=20&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {id: .id, title: .snippet.title, description: .snippet.description}'
よく使われる動画カテゴリ
| ID | カテゴリ |
|---|---|
| 1 | 映画とアニメーション |
| 10 | 音楽 |
| 17 | スポーツ |
| 20 | ゲーム |
| 22 | 人物とブログ |
| 24 | エンターテインメント |
| 25 | ニュースと政治 |
| 26 | ハウツーとスタイル |
| 27 | 教育 |
| 28 | 科学とテクノロジー |
part パラメーターのオプション
動画
snippet- タイトル、説明、サムネイル、チャンネルstatistics- 再生回数、高評価数、コメント数contentDetails- 再生時間、画質、字幕status- アップロード状態、公開設定、ライセンスplayer- 埋め込み可能なプレーヤー
チャンネル
snippet- タイトル、説明、サムネイルstatistics- 登録者数、動画数、再生回数contentDetails- 関連する再生リスト(アップロード、高評価)brandingSettings- チャンネルのカスタマイズ設定
ページネーション
レスポンスの nextPageToken を使用すると、さらに結果を取得できます。<your-next-page-token> を前回のレスポンスに含まれる実際のトークンに置き換えます。
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/search?part=snippet&q=python&type=video&maxResults=50&pageToken=<your-next-page-token>&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {title: .snippet.title}'
ガイドライン
- クォータ制限:API のクォータは 1 日あたり 10,000 ユニットです。検索には 100 ユニット、その他のほとんどの操作には 1 ユニットかかります
- レート制限:403/429 エラーが発生した場合は、指数バックオフを実装してください
- API キーのセキュリティ:クライアントサイドのコードで API キーを公開しないでください
- キャッシュ:クォータの使用量を減らすため、レスポンスをキャッシュしてください
- 動画 ID:
youtube.com/watch?v=VIDEO_IDやyoutu.be/VIDEO_IDのような URL から抽出してください