youtube-transcript-api について
youtube-transcript-apiは、YouTube動画の文字起こしを取得・処理するAPIスキルです。動画コンテンツを扱う制作者やLLMパイプラインを構築する開発者向けで、字幕取得、字幕がない動画の非同期音声認識、翻訳、バッチ処理に対応します。
主な機能
- 01単一動画の文字起こし取得
- 02最大100本の動画を一括処理
- 03字幕がない動画の非同期音声認識
- 04指定言語への文字起こし翻訳
- 05タイムスタンプ・段落・単語形式に対応
活用シーン
- 01動画コンテンツの文字起こし作成
- 02字幕のないYouTube動画の文字起こし
- 03動画の文字起こしを別の言語へ翻訳
- 04動画コンテンツの一括処理パイプライン構築
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ youtube-transcript-dev/ youtube-transcript-api --skill youtube-transcript-apiインストール後、Claude Code で/youtube-transcript-apiを入力して読み込まれたか確認します。
詳細
YouTube Transcript API スキル
YouTube 動画の文字起こしを取得する、字幕のない動画を文字起こしする、動画の内容を翻訳する、または複数の動画を一括処理する場合にこのスキルを使用します。
使用する場面
- YouTube 動画の文字起こし/字幕を取得したい
- 字幕のない YouTube 動画を文字起こししたい(ASR)
- YouTube 動画の文字起こしを別の言語に翻訳したい
- 複数の YouTube 動画を一度に処理したい
- YouTube 動画のコンテンツを使う AI/LLM パイプラインを構築したい
- 動画のコンテンツをテキスト(ブログ記事、要約など)に再利用したい
API の概要
ベース URL: https://youtubetranscript.dev/api/v2
認証: Authorization: Bearer YOUR_API_KEY による Bearer トークン
ユーザーは youtubetranscript.dev で無料の API キーを取得できます。
エンドポイント
| メソッド | エンドポイント | 説明 |
|---|---|---|
POST | /api/v2/transcribe | 単一の動画から文字起こしを取得 |
POST | /api/v2/batch | 最大 100 本の動画から文字起こしを取得 |
GET | /api/v2/jobs/{job_id} | ASR ジョブのステータスを確認 |
GET | /api/v2/batch/{batch_id} | 一括リクエストのステータスを確認 |
リクエストフィールド
| フィールド | 必須 | 説明 |
|---|---|---|
video | はい(単一) | YouTube URL または 11 文字の動画 ID |
video_ids | はい(一括) | ID または URL の配列(最大 100 件) |
language | いいえ | ISO 639-1 コード(例:"es"、"fr")。省略すると、利用可能な最適な言語が選択されます |
source | いいえ | auto(デフォルト)、manual、または asr |
format | いいえ | timestamp、paragraphs、または words |
webhook_url | いいえ | 非同期配信用 URL(source="asr" の場合は必須) |
クレジット費用
| 方法 | 費用 | 速度 |
|---|---|---|
| ネイティブ字幕 | 1 クレジット | 5~10 秒 |
| 翻訳 | 2,500 文字あたり 1 クレジット | 5~10 秒 |
| ASR(音声) | 90 秒あたり 1 クレジット | 2~20 分(非同期) |
例
基本的な文字起こしの取得(Python)
import requests
API_KEY = "your_api_key"
response = requests.post(
"https://youtubetranscript.dev/api/v2/transcribe",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={"video": "dQw4w9WgXcQ"}
)
data = response.json()
for segment in data["data"]["transcript"]:
print(f"[{segment['start']:.1f}s] {segment['text']}")
基本的な文字起こしの取得(JavaScript/Node.js)
const response = await fetch("https://youtubetranscript.dev/api/v2/transcribe", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ video: "dQw4w9WgXcQ" }),
});
const { data } = await response.json();
console.log(data.transcript);
Node.js SDK の使用
npm install youtube-audio-transcript-api
import { YouTubeTranscript } from "youtube-audio-transcript-api";
const yt = new YouTubeTranscript({ apiKey: "your_api_key" });
// Simple extraction
const result = await yt.getTranscript("dQw4w9WgXcQ");
// With translation
const translated = await yt.transcribe({
video: "dQw4w9WgXcQ",
language: "es",
});
// Batch (up to 100 videos)
const batch = await yt.batch({
video_ids: ["dQw4w9WgXcQ", "jNQXAC9IVRw", "9bZkp7q19f0"],
});
基本的な文字起こしの取得(cURL)
curl -X POST https://youtubetranscript.dev/api/v2/transcribe \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"video": "dQw4w9WgXcQ"}'
一括処理(最大 100 本の動画)
curl -X POST https://youtubetranscript.dev/api/v2/batch \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"video_ids": ["dQw4w9WgXcQ", "jNQXAC9IVRw", "9bZkp7q19f0"]}'
翻訳
"language": "es"(または任意の ISO 639-1 コード)を追加すると、文字起こしを翻訳できます。
curl -X POST https://youtubetranscript.dev/api/v2/transcribe \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"video": "dQw4w9WgXcQ", "language": "es"}'
ASR による文字起こし(字幕のない動画)
字幕のない動画では、Webhook を使って ASR を実行します。
curl -X POST https://youtubetranscript.dev/api/v2/transcribe \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"video": "VIDEO_ID", "source": "asr", "webhook_url": "https://yoursite.com/webhook"}'
このリクエストは status: "processing" を返してすぐに終了します。処理が完了すると、結果が Webhook URL に送信されます。Webhook を使用しない場合は、GET /api/v2/jobs/{job_id} でポーリングしてください。
エラー処理
| HTTP ステータス | エラーコード | 説明 |
|---|---|---|
| 400 | invalid_request | JSON が無効、または必須フィールドが不足しています |
| 401 | invalid_api_key | API キーがないか、無効です |
| 402 | payment_required | クレジットが不足しています |
| 404 | no_captions | 字幕がなく、ASR も使用されていません |
| 429 | rate_limit_exceeded | リクエストが多すぎます。Retry-After ヘッダーを確認してください |
重要な注意事項
- API キーが提示されていない場合は、必ずユーザーに API キーを尋ねてください。無料のキーは youtubetranscript.dev で取得できます。
languageパラメーターを省略すると、翻訳せずに利用可能な最適な文字起こしが返されます(クレジットを節約できます)。- ASR は非同期です。必ず Webhook URL を使用するか、ジョブのエンドポイントをポーリングしてください。
- 一括処理エンドポイントでは、YouTube URL と 11 文字の動画 ID の両方を受け付けます。
- すでに所有している文字起こしを再取得する場合、クレジットはかかりません。
リソース
コメント
Markdown 対応