transcriptapi について
transcriptapi は、Agent から TranscriptAPI.com の YouTube データを利用するためのスキルです。字幕に加え、検索やチャンネル、プレイリストの情報も扱えます。
主な機能
- 01タイムスタンプ付き・なしの字幕取得
- 02動画とチャンネルの検索
- 03チャンネル ID の解決
- 04チャンネル動画の閲覧と検索
- 05プレイリスト動画の取得
活用シーン
- 01字幕をもとにした YouTube 動画の要約
- 02調査テーマに関連する動画の検索
- 03チャンネルの最新投稿の確認
- 04プレイリスト内の動画の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ zeropointrepo/ youtube-skills --skill transcriptapiインストール後、Claude Code で/transcriptapiを入力して読み込まれたか確認します。
同梱ファイルreferences/auth-setup.mdreferences/curl-examples.md
詳細
TranscriptAPI
TranscriptAPI.com を通じて利用できる、YouTube の包括的なデータツールキットです。文字起こし、検索、チャンネル、プレイリストを、1 つの 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 にあります。最新のパラメーターとスキーマはこちらを参照してください。
認証
すべてのリクエストで使用します:-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
エンドポイント
チャンネルエンドポイントでは、channel に @handle、チャンネル URL、または UC... ID を指定します。事前に解決する必要はありません。プレイリストエンドポイントでは、playlist にプレイリスト URL または ID を指定します。
GET /api/v2/youtube/transcript — 1 クレジット
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_URL&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
| パラメーター | 必須 | デフォルト | 検証 |
|---|---|---|---|
video_url | はい | — | YouTube URL または 11 文字の動画 ID |
format | いいえ | json | json または text |
include_timestamp | いいえ | true | true または false |
send_metadata | いいえ | false | true または false |
次を受け付けます:https://youtube.com/watch?v=ID、https://youtu.be/ID、youtube.com/shorts/ID、または ID のみ。
レスポンス(format=json):
{
"video_id": "dQw4w9WgXcQ",
"language": "en",
"transcript": [
{ "text": "We're no strangers...", "start": 18.0, "duration": 3.5 }
],
"metadata": { "title": "...", "author_name": "...", "author_url": "..." }
}
GET /api/v2/youtube/search — 1 クレジット
GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
| パラメーター | 必須 | デフォルト | 検証 |
|---|---|---|---|
q | はい | — | 1~200 文字(前後の空白を除去) |
type | いいえ | video | video または channel |
limit | いいえ | 20 | 1~50 |
レスポンス(type=video):
{
"results": [
{
"type": "video",
"videoId": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"channelTitle": "Rick Astley",
"channelHandle": "@RickAstley",
"channelVerified": true,
"lengthText": "3:33",
"viewCountText": "1.5B views",
"publishedTimeText": "14 years ago",
"hasCaptions": true,
"thumbnails": [{ "url": "...", "width": 120, "height": 90 }]
}
],
"result_count": 20
}
レスポンス(type=channel):
{
"results": [
{
"type": "channel",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"title": "Rick Astley",
"handle": "@RickAstley",
"subscriberCount": "4.2M subscribers",
"verified": true,
"rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC..."
}
],
"result_count": 5
}
GET /api/v2/youtube/channel/resolve — 無料(0 クレジット)
GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
| パラメーター | 必須 | 検証 |
|---|---|---|
input | はい | 1~200 文字 — @handle、URL、または UC... ID |
レスポンス:
{ "channel_id": "UCsT0YIqwnpJCM-mx7-gSA4Q", "resolved_from": "@TED" }
入力がすでに有効な UC[a-zA-Z0-9_-]{22} ID の場合、検索を行わずにすぐ返します。
GET /api/v2/youtube/channel/videos — 1 クレジット/ページ
# First page (100 videos)
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 videos)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# Next pages (repeat the same sort)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?continuation=TOKEN&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
| パラメーター | 必須 | 検証 |
|---|---|---|
channel | 条件付き | @handle、チャンネル URL、または UC... ID |
tab | いいえ | videos(デフォルト)、shorts、または streams |
sort | いいえ | latest、popular、または oldest(アップロードフィードの場合は省略) |
continuation | 条件付き | 空でない文字列(次のページ) |
channel または continuation のいずれか一方だけを指定してください。
並べ替え。 channel/videos に sort=latest、popular、または oldest を追加すると、チャンネルの動画を希望する順序(たとえば、最も人気のあるアップロードを先頭)で取得できます。並べ替えたページでは約30件の動画が返されます(並べ替えなしのページでは約100件)。どちらも1ページあたりの料金は同じ1クレジットです。
ページを取得する際は、各リクエストで同じ sort を指定してください。
各項目には members_only が含まれ、YouTube が「Members only」と表示している場合に限り true になります。この項目には viewCountText はありません。tab=streams の項目には lengthText と publishedTimeText(例:Streamed 2 years ago)が含まれます。tab=shorts の場合は、YouTube の Shorts グリッドにどちらも表示されないため、両方とも null です。チャンネルタブのフィード(sort を指定した tab=videos、tab=shorts、tab=streams)では、channelId、channelTitle、channelHandle、index は null です。
レスポンス:
{
"results": [{
"videoId": "abc123xyz00",
"title": "Latest Video",
"channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
"channelTitle": "TED",
"channelHandle": "@TED",
"lengthText": "15:22",
"viewCountText": "3.2M views",
"publishedTimeText": "2 years ago",
"thumbnails": [...],
"index": "0",
"members_only": false
}],
"playlist_info": {"title": "Uploads from TED", "numVideos": "5000"},
"continuation_token": "4qmFsgKlARIYVVV1...",
"has_more": true
}
GET /api/v2/youtube/channel/latest — 無料(0クレジット)
GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
| パラメーター | 必須 | 検証 |
|---|---|---|
channel | はい | @handle、チャンネル URL、または UC... ID |
RSS 経由で最新の動画15件を、正確な視聴回数と ISO タイムスタンプ付きで返します。
レスポンス:
{
"channel": {
"channelId": "...",
"title": "TED",
"author": "TED",
"url": "..."
},
"results": [
{
"videoId": "abc123xyz00",
"title": "Latest Video",
"published": "2026-01-30T16:00:00Z",
"viewCount": "2287630",
"description": "Full description...",
"thumbnail": { "url": "...", "width": "480", "height": "360" }
}
],
"result_count": 15
}
GET /api/v2/youtube/channel/search — 1 クレジット
GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=climate+change&limit=30
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
| パラメーター | 必須 | 検証 |
|---|---|---|
channel | はい | @handle、チャンネル URL、または UC... ID |
q | はい | 1~200文字 |
limit | いいえ | 1~50(デフォルト30) |
GET /api/v2/youtube/playlist/videos — 1 クレジット/ページ
# First page
GET https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_PLAYLIST_ID
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# Next pages
GET https://transcriptapi.com/api/v2/youtube/playlist/videos?continuation=TOKEN
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
| パラメーター | 必須 | 検証 |
|---|---|---|
playlist | 条件付き | プレイリスト URL または ID(PL/UU/LL/FL/OL プレフィックス) |
continuation | 条件付き | 空でない文字列 |
クレジット料金
| エンドポイント | 料金 |
|---|---|
| transcript | 1 |
| search | 1 |
| channel/resolve | 無料 |
| channel/search | 1 |
| channel/videos | 1/ページ |
| channel/latest | 無料 |
| playlist/videos | 1/ページ |
エラー
| コード | 意味 | 対処 |
|---|---|---|
| 401 | API キーが無効 | キーを確認し、セットアップを再実行します |
| 402 | クレジット不足 | transcriptapi.com/billing でチャージします |
| 403/1010 | Cloudflare によるブロック | User-Agent ヘッダーを追加または修正します |
| 404 | 見つかりません | 動画/チャンネル/プレイリストが存在しないか、字幕がありません |
| 408 | タイムアウト/再試行可能 | 2秒後に一度再試行します |
| 422 | 検証エラー | パラメーターの形式を確認します |
| 429 | レート制限超過 | 待機し、Retry-After に従ってください |
ヒント
- ユーザーが指示なしで YouTube の URL を共有した場合は、文字起こしを取得して要点をまとめます。
- 文字起こしを取得する前に、
channel/latest(無料)を使って新しい動画がないか確認します。@handle をそのまま渡してください。 - 調査する場合は、検索 → 動画を選択 → 文字起こしを取得します。
- 無料プラン:100 クレジット、300 req/min。Starter($5/mo):1,000 クレジット、300 req/min。
コピーして貼り付けられる例
このファイル内のすべてのリクエストを、そのまま実行できるワンライナーとして掲載しています:references/curl-examples.md