youtube-api について
youtube-apiは、TranscriptAPI.com経由でYouTubeデータを取得するスキルです。Google APIのクォータではなくTranscriptAPIキーを使い、動画・チャンネル検索、メタデータ、文字起こし、プレイリスト閲覧に対応します。
主な機能
- 01動画、プレイリスト、チャンネルの検索
- 02文字起こしと動画メタデータの取得
- 03チャンネルの投稿動画とプレイリストの閲覧
- 04チャンネルハンドルの解決
- 05動画情報と文字起こし言語の確認
活用シーン
- 01検索語に合う動画を探す
- 02動画の文字起こしとメタデータを取得
- 03チャンネルの最新または人気動画を閲覧
- 04プレイリスト内の動画を一覧表示
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ zeropointrepo/ youtube-skills --skill youtube-apiインストール後、Claude Code で/youtube-apiを入力して読み込まれたか確認します。
同梱ファイルreferences/auth-setup.mdreferences/curl-examples.md
詳細
YouTube API
TranscriptAPI.com 経由で YouTube データにアクセスします。Google API のクォータは不要です。
セットアップ
$TRANSCRIPT_API_KEY が設定されていない場合は、references/auth-setup.md を読み、そこに記載された手順に従ってキーを取得し、保存してください。
必須ヘッダー
すべてのリクエストに、次の 2 つのヘッダーが必要です。
- Authorization:
Bearer $TRANSCRIPT_API_KEY - User-Agent: エージェント名と、分かる場合はそのバージョン(例:
HermesAgent/0.11.0、ClaudeCode/1.0)。バージョンは任意です。エージェント名だけでもかまいません。このヘッダーを省略したり、単なるデフォルト値を送信したりしないでください。Cloudflare が 403(エラーコード 1010)を返し、リクエストをブロックします。
API リファレンス
完全な OpenAPI 仕様:transcriptapi.com/openapi.json。最新のパラメーターとスキーマについては、こちらを参照してください。
エンドポイントのリファレンス
すべてのエンドポイント:https://transcriptapi.com/api/v2/youtube/...
チャンネルのエンドポイントでは、@handle、チャンネル URL、または UC... ID を channel に指定します。プレイリストのエンドポイントでは、プレイリスト URL または ID を playlist に指定します。
| エンドポイント | メソッド | コスト |
|---|---|---|
/info?video_url=ID | GET | 無料 |
/video/metadata?video_url=ID | GET | 1 |
/transcript?video_url=ID | GET | 1 |
/search?q=QUERY&type=video | GET | 1 |
/channel/resolve?input=@handle | GET | 無料 |
/channel/info?channel=@handle | GET | 1 |
/channel/latest?channel=@handle | GET | 無料 |
/channel/videos?channel=@handle | GET | 1/ページ |
/channel/search?channel=@handle&q=Q | GET | 1 |
/channel/playlists?channel=@handle | GET | 1/ページ |
/channel/posts?channel=@handle | GET | 1/ページ |
/channel/sections?channel=@handle | GET | 1 |
/playlist/videos?playlist=PL_ID | GET | 1/ページ |
search では、type=playlist または type=movie も指定できます。また、最初のページのみ、sort(relevance/views)、upload_date、duration、features で絞り込めます。channel/videos では、tab=videos(デフォルト)、shorts、streams を指定でき、任意で sort(latest/popular/oldest)も指定できます。
名前について:
/video/metadataは以前/video/infoでした。旧パスも引き続き使えますが、非推奨です。/video/metadataを使用してください。
簡単な例
動画を検索する:
GET https://transcriptapi.com/api/v2/youtube/search?q=python+tutorial&type=video&limit=10
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
トランスクリプトを取得する:
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=dQw4w9WgXcQ&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
動画情報とトランスクリプトの言語を確認する(無料。クレジットを使用する前に):
GET https://transcriptapi.com/api/v2/youtube/info?video_url=dQw4w9WgXcQ
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
詳細な動画メタデータを取得する(再生回数、いいね数、説明、タグ):
GET https://transcriptapi.com/api/v2/youtube/video/metadata?video_url=dQw4w9WgXcQ&include=details
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
チャンネルのプロフィールを取得する(登録者数、タグ、タブ):
GET https://transcriptapi.com/api/v2/youtube/channel/info?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
同じ channel パラメーターで、/channel/playlists(チャンネルのプレイリスト)、/channel/posts(コミュニティタブ)、/channel/sections(チャンネルのホームページに整理されたセクション)も利用できます。
チャンネルのハンドルを解決する(無料):
GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
最新の動画を取得する(無料):
GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
チャンネルのアップロード動画を閲覧する(ページ分割):
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# Most-viewed first (channel Videos tab, ~30 per page)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# Use continuation token from response for next pages, repeating the same tab and sort
並べ替え。 channel/videos に sort=latest、popular、または oldest を追加すると、チャンネルの動画を希望の順序で取得できます。たとえば、人気の高いアップロード動画から取得できます。並べ替えたページには約 30 本の動画が返されます(並べ替えなしのページでは約 100 本)。どちらも各ページのコストは 1 クレジットです。
ページを切り替えるときは、各リクエストで同じ sort を指定してください。
項目のフィールド。 すべての項目には members_only が含まれます。これは、YouTube が「メンバー限定」と表示している場合に限り true となり、そのような項目には viewCountText がありません。tab=streams の項目には lengthText と publishedTimeText(例:Streamed 2 years ago)が含まれます。tab=shorts では、YouTube のショート動画グリッドにはどちらも表示されないため、両方とも null になります。チャンネルタブのフィード(sort を指定した tab=videos、tab=shorts、tab=streams)では、channelId、channelTitle、channelHandle、index は null です。
プレイリストを閲覧する(ページ分割):
GET https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_PLAYLIST_ID
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
パラメーターの検証
| フィールド | ルール |
|---|---|
channel | @handle、チャンネル URL、または UC... ID |
playlist | プレイリスト URL または ID(PL/UU/LL/FL/OL プレフィックス) |
q (検索) | 1~200 文字 |
type (検索) | video(デフォルト)、channel、playlist、movie |
tab (チャンネル/動画) | videos(デフォルト)、shorts、streams |
sort (チャンネル/動画) | latest、popular、oldest(アップロードフィードでは省略) |
tab (チャンネル/セクション) | featured(デフォルト)、podcasts、releases |
include (動画/メタデータ) | details、related(カンマ区切り) |
limit | 1~50 |
continuation | 空でない文字列 |
Google の API を使わない理由
| Google YouTube Data API | TranscriptAPI | |
|---|---|---|
| クォータ | 1 日あたり 10,000 ユニット(検索 100 回) | クレジット制、1 日あたりの上限なし |
| セットアップ | OAuth + API キー + プロジェクト | 1 つの API キー |
| 文字起こし | 利用不可 | 中核機能 |
| 料金 | 超過分は 1 ユニットあたり $0.0015 | 1,000 クレジットあたり $5 |
エラー
| コード | 意味 | 対処 |
|---|---|---|
| 401 | API キーが無効 | キーを確認してください |
| 402 | クレジットなし | transcriptapi.com/billing |
| 403/1010 | Cloudflare によるブロック | User-Agent ヘッダーを追加または修正してください |
| 404 | 見つかりません | リソースが存在しません |
| 408 | タイムアウト/再試行可能 | 2 秒後に 1 回再試行してください |
| 422 | 検証エラー | パラメーターの形式を確認してください |
| 429 | レート制限 | 待機し、Retry-After を順守してください |
無料プラン:100 クレジット、毎分 300 リクエスト。Starter($5/月):1,000 クレジット。
コピーしてすぐ使える例
このファイル内のすべてのリクエストを、そのまま実行できる 1 行コマンドとして掲載しています:references/curl-examples.md