curlで30秒でYouTubeの文字起こしを取得する方法

YouTube動画をプレーンテキストに変換するのに、アカウントもSDKもヘッドレスブラウザも必要ありません。youtube2text.orgはREST APIです。キーの取得に1回、文字起こしの取得に1回、それだけです。
ステップ1: 無料のデモキーを取得する
curl -s https://youtube2text.org/api/demo-key
レスポンス:
{"success": true, "apiKey": "yt_..."}
デモキーは共有キーで、IPごとに制限されています(1つのIPにつき月5本まで)。ちょっと試してみたいときや、たまにスクリプトで使う程度には十分です。
ステップ2: 文字起こしを取得する
curl -s "https://youtube2text.org/api/transcribe?url=https://www.youtube.com/watch?v=VIDEO_ID&maxChars=5000" \
-H "x-api-key: yt_YOUR_KEY"
成功時のレスポンス:
{"result": {"videoId": "...", "title": "...", "pubDate": "2025-01-01T00:00:00-07:00",
"content": "full transcript text ...", "contentSize": 12345, "truncated": false}}
これだけです。知っておくと便利なポイントをいくつか挙げます。
urlはYouTubeのあらゆるURL形式に対応しています —watch?v=、youtu.be、embed、あるいは11文字の動画IDそのものでも構いません。maxCharsは文字起こしを指定文字数で切り詰めます(デフォルトかつ最大値は150000)。トークン数に上限のあるLLMにテキストを渡すときに便利です。x-api-keyの代わりにAuthorization: Bearer <key>も使えます。- POSTを使いたい場合は、同じエンドポイントにJSONを送信します:
{"url": "...", "maxChars": 5000}
エラーハンドリング
エラーはすべて、機械可読な同一フォーマットで返されます。
{"error": {"code": "RATE_LIMIT_EXCEEDED", "message": "...", "status": 429,
"docsUrl": "https://youtube2text.org/api.md", "retryAfterSeconds": 3600}}
実際に目にする可能性のあるエラーコードは次のとおりです。
TRANSCRIPT_UNAVAILABLE— 動画に字幕が一切存在しない場合。RATE_LIMIT_EXCEEDED— クォータを使い切った場合。retryAfterSecondsがリトライ可能になるまでの時間を示します。UNAUTHORIZED— キーが未指定または無効な場合。/api/demo-keyから取得してください。
デモキーでは足りなくなったら
youtube2text.org/app/keys からGoogleでサインインして、自分専用のキーを作成しましょう。無料アカウントでも月5本まで利用でき、有料プランは月50本から無制限まで用意されています。
パラメータ、全エラーコード、MCP連携を網羅した機械可読の完全なリファレンスは youtube2text.org/api.md にあります。シェルスクリプトではなくAIエージェントに組み込みたい場合は、次にMCPガイドをお読みください。