mcpField
T
transcriptapi

transcriptapi

github.com/zeropointrepo生産性1.1k841 回インストール5 週間前に更新
リポジトリ

transcriptapi について

transcriptapi は、Agent から TranscriptAPI.com の YouTube データを利用するためのスキルです。字幕に加え、検索やチャンネル、プレイリストの情報も扱えます。

主な機能

  1. 01タイムスタンプ付き・なしの字幕取得
  2. 02動画とチャンネルの検索
  3. 03チャンネル ID の解決
  4. 04チャンネル動画の閲覧と検索
  5. 05プレイリスト動画の取得

活用シーン

  1. 01字幕をもとにした YouTube 動画の要約
  2. 02調査テーマに関連する動画の検索
  3. 03チャンネルの最新投稿の確認
  4. 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いいえjsonjson または text
include_timestampいいえtruetrue または false
send_metadataいいえfalsetrue または 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いいえvideovideo または channel
limitいいえ201~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条件付き空でない文字列

クレジット料金

エンドポイント料金
transcript1
search1
channel/resolve無料
channel/search1
channel/videos1/ページ
channel/latest無料
playlist/videos1/ページ

エラー

コード意味対処
401API キーが無効キーを確認し、セットアップを再実行します
402クレジット不足transcriptapi.com/billing でチャージします
403/1010Cloudflare によるブロック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

コメント