YouTube Transcript & Search MCP Server について
YouTube Transcript & Search MCP Serverは、AIエージェントにYouTubeの字幕、動画・チャンネル検索、チャンネルやプレイリストの一覧を提供します。最大4,000本の字幕をバックグラウンドで一括処理できます。
主な機能
- 015種類の形式で字幕を取得
- 02動画・チャンネル・チャンネル内動画を検索
- 03チャンネルとプレイリストの動画を一覧表示
- 04字幕の一括処理をバックグラウンドで依頼
- 05一括処理の進捗と結果を確認
活用シーン
- 01字幕をもとに講演内容を要約
- 02テーマに合う動画やチャンネルを検索
- 03チャンネルやプレイリストの動画を確認
- 04分析用に字幕をまとめて取得
MCP 対応
ホスト型MCPサーバーはstreamable HTTP経由で14個のツールを提供し、MCPクライアントからYouTube字幕、検索結果、チャンネルやプレイリストの一覧を取得し、一括字幕ジョブを管理できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://api.transcriptout.com/mcpclaude mcp add --transport http com-transcriptout-youtube-transcript-and-youtube-search https://api.transcriptout.com/mcp{"mcpServers":{"com-transcriptout-youtube-transcript-and-youtube-search":{"type":"http","url":"https://api.transcriptout.com/mcp"}}}Cursor で開く{"servers":{"com-transcriptout-youtube-transcript-and-youtube-search":{"type":"http","url":"https://api.transcriptout.com/mcp"}}}VS Code で開く{"mcpServers":{"com-transcriptout-youtube-transcript-and-youtube-search":{"type":"http","url":"https://api.transcriptout.com/mcp"}}}{"mcpServers":{"com-transcriptout-youtube-transcript-and-youtube-search":{"serverUrl":"https://api.transcriptout.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
14| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| kind | enum | いいえ | 字幕トラックの種類。省略すると、手動字幕を優先し、なければ自動字幕にフォールバックします。manual | auto |
| lang | string | いいえ | 字幕トラックの言語コード。例:'en'、'de'。既定値は'en'です。 |
| video | string | はい | YouTube動画IDまたはURL |
| format | enum | いいえ | 'text' = プレーンテキスト(既定)、'json' = タイムコード付きセグメント、'srt'/'vtt' = 字幕ファイル本文、'srv3' = YouTubeの生XML(srv3はsegmentと併用できません)text | json | srt | vtt | srv3 |
| segment | integer | いいえ | セグメントあたりの最大文字数です。埋め込みや検索のために文字起こしを分割する場合は値を大きくしてください。500~1500 にすると十分なコンテキストを含むセグメントになり、字幕サイズの行にする場合は小さくしてください。省略すると、自動生成されたトラックは約 180 文字のセグメントに分割され、手動のトラックは作成者が区切ったとおりに返されます。そのため、どちらのトラックが返されてもサイズを統一したい場合は、この値を指定してください。 |
| video_metadata | boolean | いいえ | 文字起こしと併せて、動画のタイトル、チャンネル、再生時間、再生回数を含めます。別途 get_video_info を呼び出す代わりに使用でき、どちらの場合もクレジットは 1 つです。 |
詳細
YouTube Transcript & Search MCP サーバー
AI エージェントに YouTube を読ませましょう。
5 種類の形式の文字起こし、ネイティブな動画・チャンネル検索、チャンネル・再生リストの一覧表示、
一度に最大 4,000 件の文字起こしを取得できるバックグラウンドジョブを提供します。1 つのホスト型
エンドポイントで 14 個のツールを利用できます。お使いのマシン上で実行されるものはありません。
理由 · クイックスタート · ツール · インストール · レシピ · 料金 · エラー
🎬 理由
エージェントを使う人なら、誰もが一度はこんなやり取りを経験しています。
You: Summarize this. https://www.youtube.com/watch?v=kCc8FmEb1nY
Agent: I'm not able to watch videos. If you paste the transcript here, I'll gladly help!
エージェントが自力では取得できないものこそ、まさに文字起こしです。このサーバーを 接続すれば、同じ依頼にもすぐに対応できます。
You: Summarize this. https://www.youtube.com/watch?v=kCc8FmEb1nY
Agent: → get_transcript(video="kCc8FmEb1nY", video_metadata=true) 1 credit
That's "Let's build GPT: from scratch, in code, spelled out" by Andrej
Karpathy, 1:56:20. He starts from an empty file and a bigram model,
derives self-attention step by step, and ends with a working GPT that...
1 本の動画を読むだけで作業が終わることは、ほとんどありません。YouTube のデータを エージェントに取り込む 3 つの方法を実際に比較してみましょう。
| このサーバー | ローカルの yt-dlp / スクレーパー MCP | Google YouTube Data API | |
|---|---|---|---|
| 文字起こし | ✅ 任意の公開動画、5 種類の形式 | ⚠️ データセンターの IP ではブロックされ、YouTube のマークアップ変更で動作しなくなります | ❌ 提供されていません |
| セットアップ | ✅ URL と API キーのみ | ❌ ローカルへのインストール、常時稼働させるバイナリが必要 | ❌ Cloud プロジェクト、OAuth 同意画面が必要 |
| YouTube 検索 | ✅ ネイティブ対応、1 ページにつき 1 クレジット | ❌ | ⚠️ 検索 1 回につき 100 クォータ単位 |
| チャンネルと再生リスト | ✅ 1 ページにつき 100 本、または動画 ID のみなら 500 件 | ❌ 一度に 1 本の動画のみ | ⚠️ 項目ごとにクォータを消費 |
| 一括文字起こし | ✅ バックグラウンドジョブ 1 回につき 4,000 件 | ❌ | ❌ |
| RAG 対応のチャンク分割 | ✅ 20~5,000 文字、単語単位のタイムスタンプ | ❌ | ❌ |
| YouTube の変更時 | ✅ サーバー側で修正されるため、更新不要 | ❌ 自分で修正して再デプロイ | ✅ |
| 呼び出しの失敗 | ✅ クレジットは自動で返金されます | ❌ 自分でリトライ処理を実装 | ⚠️ クォータはそのまま消費されます |
⚡ クイックスタート
1. API キーを取得します。 transcriptout.com でアカウントを作成し、
ダッシュボードでキーを作成します。新規アカウントには100クレジットが無料で付与され、
カードの登録は不要です。キーは sk_ で始まり、一度だけ表示されます。
2. クライアントの接続先をサーバーに設定します。 ストリーミング可能な HTTP で通信し、 1つの Bearer ヘッダーで認証します。
{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
このページの上部には Cursor と VS Code 用のワンクリックボタンがあります。それ以外の クライアント用の正確な設定例は、クライアントへのインストールに記載されています。
3. リンクを貼り付けます。
Summarize this talk and pull the three strongest quotes.
https://www.youtube.com/watch?v=dQw4w9WgXcQ
エージェントは自動で get_transcript を選択し、タイムコード付きのテキストを読み取って、それをもとに回答します。すべての
レスポンスには X-Credits-Remaining ヘッダーが含まれるため、セッション中は常に残りのクレジットを確認できます。
🧰 14個のツール
接続すると、14個すべてのツールが自動的に公開されます。ほとんどの呼び出しのコストは1クレジットです。 YouTube に到達する前に呼び出しが失敗した場合(検証エラー、レート制限、当サービス側の容量不足)は、クレジットが自動的に返金されます。そのため、失敗ではなく回答に対して課金されます。「この動画には字幕がありません」という確定的な結果は回答として扱われ、通常どおり課金されます。
1. get_transcript · 1クレジット
任意の YouTube 動画のトランスクリプトを取得します。format=text(デフォルト)では、モデルが処理しやすい、読みやすいプレーンテキストが返されます。format=json ではタイムコード付きのセグメントが返されます。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
video | string | 必須 | YouTube の URL(完全形式または短縮形式)、または11文字の動画 ID |
lang | string | "en" | トラックの言語コード(en、de など) |
format | string | "text" | "text"(プレーンテキスト)、"json"(秒単位の start/duration を含むセグメント)、"srt"/"vtt"(字幕ファイル本文)、"srv3"(YouTube の生 XML) |
kind | string | 自動検出 | "manual" または "auto"。省略すると手動トラックが優先され、自動生成トラックがフォールバックとして使われます |
segment | integer | 下記を参照 | セグメントあたりの最大文字数。500~1500にすると RAG 用のチャンクになります |
video_metadata | boolean | false | 同じ呼び出しでタイトル、チャンネル、再生時間、再生回数を追加します。追加料金はなく、同じ1クレジットです |
segment を省略すると、自動生成トラックは約180文字のセグメントに分割され、手動トラックは作成者が区切ったとおりに返されます。トラックの種類にかかわらずサイズを統一したい場合は、値を指定してください。
出力例(format=json):
{
"video_id": "dQw4w9WgXcQ",
"language": "en",
"kind": "manual",
"transcript": [
{ "text": "Never gonna give you up", "start": 18.0, "duration": 4.12 },
{ "text": "Never gonna let you down", "start": 22.12, "duration": 3.85 }
]
}
srtとvttは字幕ファイルの本文全体が返されるため、エージェントがそのままディスクに書き込めます。srv3はソースの生 XML であり、segmentと併用できません。
2. get_video_info · 1クレジット
1本の動画のメタデータ(タイトル、チャンネル、再生時間、再生回数、サムネイル)と、利用可能な トランスクリプト言語の一覧を取得します。字幕のダウンロードは行いません。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
id | string | 必須 | YouTube 動画 ID または URL |
クレジット節約のヒント: トランスクリプトも取得する場合は、代わりに
video_metadata=trueを指定してget_transcriptを呼び出してください。2回の呼び出しが必要な情報を、1クレジットでまとめて取得できます。
3. search_youtube · 1 クレジット/ページ
YouTube で動画やチャンネルを検索します。next_page_token を使ってページネーションできます。has_more は次のページがあるかどうかを示します。
| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | required* | 検索クエリ(*ページネーション中を除く) |
type | string | "video" | "video" または "channel" |
limit | integer | 20 | 1 ページあたりの結果数(1~50) |
next_page_token | string | 前の結果から取得したトークン |
4. list_channel_videos · 1 クレジット/ページ
チャンネルの「動画」タブから、動画を新しい順に一覧表示します。@handle、チャンネル名、UC... チャンネル ID、またはチャンネル URL を指定できます。
| Parameter | Type | Default | Description |
|---|---|---|---|
name | string | required* | @handle、チャンネル名、UC... ID、または URL |
limit | integer | 100 | ページサイズ。ids_only を使うと最大 500 件 |
ids_only | boolean | false | video_ids[] のみを返します。1 ページあたり最大 500 件 |
next_page_token | string | 前の結果から取得したトークン |
ids_only=trueは、submit_transcripts_jobに渡す際のコストを抑える方法です。
5. search_channel_videos · 1 クレジット/ページ
YouTube の標準の関連性検索を使って、1 つのチャンネル内を検索します。タイトルにクエリの単語が含まれない結果が出ることもあります。結果は部分文字列ではなく、関連性に基づいてランク付けされます。
| Parameter | Type | Default | Description |
|---|---|---|---|
name | string | required | @handle、チャンネル名、UC... ID、または URL |
q | string | required | チャンネル内で検索するクエリ |
limit | integer | 30 | 1 ページあたりの結果数(1~100) |
next_page_token | string | ページネーショントークン |
6. latest_channel_videos · 1 クレジット
チャンネルの RSS フィードから、最新の約 15 件の動画を取得します。チャンネルが最近公開した動画を確認する最も速く、最も低コストな方法です。
| Parameter | Type | Default | Description |
|---|---|---|---|
name | string | required | @handle、チャンネル名、UC... ID、または URL |
7. list_playlist_videos · 1 クレジット/ページ
プレイリスト内のすべての動画を、プレイリストの順序で表示します。PL... プレイリスト ID、または list= を含む URL を指定できます。
| Parameter | Type | Default | Description |
|---|---|---|---|
id | string | required* | プレイリスト ID または URL |
limit | integer | 100 | ページサイズ。ids_only を使うと最大 500 件 |
ids_only | boolean | false | video_ids[] のみを返します。1 ページあたり最大 500 件 |
next_page_token | string | ページネーショントークン |
8. search_playlist_videos · 1 クレジット
タイトルの部分文字列でプレイリスト内の動画を検索します(大文字と小文字は区別されません)。YouTube にはプレイリストを検索する標準機能がないため、最大 500 件のプレイリスト項目をスキャンします。truncated=true は、スキャンした範囲の外にも一致する項目がある可能性を示します。
| Parameter | Type | Default | Description |
|---|---|---|---|
id | string | required | プレイリスト ID または URL |
q | string | required | 動画タイトル内で一致させる部分文字列 |
limit | integer | 30 | 一致結果の最大数(1~100) |
9. submit_transcripts_job · 動画1本につき1クレジット
多数の動画(最大4,000本)の文字起こしを一括でキューに登録し、すぐにjob_idを取得できます。作業はバックグラウンドで続行され、レート制限に応じたペースで処理されます。数本を超える動画に対してget_transcriptを繰り返し呼び出す代わりに、こちらを使用してください。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
videos | string[] | 必須 | 動画IDまたはURL。最大4,000件。重複は課金前にまとめられます |
lang | string | "en" | ジョブ全体に適用する言語 |
format | string | "text" | ジョブ全体に適用する形式。"text"、"json"、"srt"、"vtt"、"srv3" |
kind | string | 自動検出 | "manual"または"auto" |
segment | integer | ジョブ全体に適用するセグメントサイズ | |
video_metadata | boolean | false | 動画ごとのメタデータ。追加料金はかかりません |
idempotency_key | string | 同じキーで同じリストを再送信すると、同じジョブが返され、二重請求されません |
ユーザーキー(sk_...)が必要です。クレジットは送信時に請求され、こちらの過失により動画を配信できなかった場合は、動画ごとに返金されます。
10. get_transcripts_job · 無料
一括ジョブの進捗を確認できます。ステータス(queued/running/done/cancelled)、準備完了、失敗、処理待ちの動画数が表示されます。すでに料金を支払ったジョブのポーリングは無料です。
11. get_transcripts_results · 無料
一括ジョブで完了した文字起こしを、送信した順に取得できます。next_page_tokenを使ってページ分割されます(limitは1~500、デフォルトは100)。結果は取得され次第表示されるため、ジョブの完了前でも読み取れます。各エントリーは、その動画に対してget_transcriptが返す内容にステータスを加えたものです。
12. get_transcripts_result · 無料
一括ジョブの結果から、動画IDを指定して1本分の結果を取得できます。結果全体をページ分割して確認する必要はありません。404は、ジョブが存在しないか、この動画の処理がまだ完了していないことを示します。そのため、何かを結論づける前にget_transcripts_jobを確認してください。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
job_id | string | 必須 | submit_transcripts_jobのジョブID |
video_id | string | 必須 | ジョブの送信時に指定した動画IDのいずれか |
13. cancel_transcripts_job · 無料
一括ジョブをキャンセルします。クレジットが返金されるのは、まだ処理が開始されていない動画分のみです。すでに取得済みの結果は残り、その分の料金も発生します。
14. get_credits · 無料
パラメーターなしで、キーの残りクレジット残高を取得できます。残高はすべてのレスポンスのX-Credits-Remainingヘッダーにも含まれますが、ヘッダーはモデルから見えないため、ユーザーが実際に残高を尋ねた場合はツールが必要です。一括処理の送信時には動画1本につき1クレジットが請求されるため、大量の一括処理の直前にも便利です。
🔌 クライアントにインストールする
サーバーはリモートなので、以下のインストールはいずれも設定を追加するだけです。どの方法でも、クイックスタートに記載されている URL と Bearer ヘッダーの 2 つが必要です。
一度設定すれば、クライアントで常に有効なルールになります
クライアントのルール/指示にこれを追加しておけば、YouTube のリンクを貼るだけで十分です。「transcript」と入力する必要はありません。
Whenever a YouTube link or video ID appears in my message, call the transcriptout get_transcript tool first and answer from the transcript, whether I asked for a summary, a quote, a translation or a question.
Cursor にインストール(ワンクリック/手動)
ワンクリックインストール:
インストール後、サーバーの設定を開き、キーを使って Authorization ヘッダーを追加します。
手動設定(~/.cursor/mcp.json):
{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Claude Code にインストール(CLI)
claude mcp add --transport http transcriptout https://api.transcriptout.com/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
Claude Desktop と Claude Web
Claude のカスタムコネクターでは OAuth を使ってリモートサーバーを認証しますが、TranscriptOut はまだ OAuth に対応していません(API キーのみ)。デスクトップでは、API キーのヘッダーに対応している Claude Code(上記参照)を使用してください。OAuth 対応はロードマップに掲載されています。変更履歴をご確認ください。
VS Code にインストール
または、これを VS Code のユーザー設定(settings.json)に追加します:
"mcp.servers": {
"transcriptout": {
"type": "http",
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
OpenAI Agent Builder にインストール
- 新しいエージェントを作成します
- 「Actions」または「Tools」で、新しい MCP サーバーを追加します
- URL:
https://api.transcriptout.com/mcp - 認証タイプ:API Key
- ダッシュボードから API キーを貼り付けます
Windsurf にインストール
~/.codeium/windsurf/mcp_config.json に追加します:
{
"mcpServers": {
"transcriptout": {
"serverUrl": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Cline にインストール
{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"type": "streamableHttp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Zed にインストール
Zed の settings.json で設定します:
{
"context_servers": {
"transcriptout": {
"source": "remote",
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Roo Code にインストール
{
"mcpServers": {
"transcriptout": {
"type": "streamable-http",
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Amp にインストール
amp mcp add transcriptout https://api.transcriptout.com/mcp --header "Authorization: Bearer YOUR_API_KEY"
Augment Code にインストール
settings.json の augment.advanced に設定します:
"augment.advanced": {
"mcpServers": [
{
"name": "transcriptout",
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
]
}
Kilo Code にインストール
.kilocode/mcp.json に設定します:
{
"mcpServers": {
"transcriptout": {
"type": "streamable-http",
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
JetBrains AI Assistant にインストール
Settings → Tools → AI Assistant → MCP で設定します:
{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Gemini CLI にインストール
~/.gemini/settings.json に設定します:
{
"mcpServers": {
"transcriptout": {
"httpUrl": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Qwen Coder にインストール
~/.qwen/settings.json に設定します:
{
"mcpServers": {
"transcriptout": {
"httpUrl": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Google Antigravity にインストール
{
"mcpServers": {
"transcriptout": {
"serverUrl": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Trae にインストール
{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
LM Studio にインストール
mcp.json に設定します:
{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Warp にインストール
Settings → AI → MCP で設定します:
{
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
Perplexity Desktop にインストール
Settings → Connectors → Advanced で設定します:
{
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
🧩 エージェントプラグインとしてインストール
このリポジトリのルートは、ChatGPT、Codex、Cursor、GitHub Copilot、Kiro、VS Code がサポートするポータブル形式である、準拠 Agent Plugins 1.0.0
パッケージです。インストールするだけで、MCP サーバーと、各ツールをいつ使うべきか、クレジットを無駄にしない方法をエージェントに教える youtube スキルをまとめて利用できます。
plugin.json # manifest
mcp.json # hosted MCP server, streamable-http
skills/youtube/SKILL.md # when + how to use the 14 tools
VS Code。 コマンドパレット → Chat: Install Plugin From Source を選び、次の内容を貼り付けます。
https://github.com/artemchuikin/youtube-mcp
または、settings.json にローカルクローンを登録します。
"chat.pluginLocations": { "/absolute/path/to/youtube-mcp": true }
Cursor。 サイドバーの Customize → プラグインを探す → Install を選びます。ローカルクローンの場合:
git clone https://github.com/artemchuikin/youtube-mcp ~/.cursor/plugins/local/transcriptout
続いて Developer: Reload Window を選びます。
ChatGPT、Codex、GitHub Copilot、Kiro、その他のクライアント。 クライアントのプラグイン機能をこのリポジトリまたはローカルクローンに指定します。Agent Plugins 1.0.0 が標準化するのはパッケージ形式であり、インストール方法ではないため、インストールの流れは各クライアントによって異なります。
このパッケージに認証情報は含まれていません。Agent Plugins 1.0.0 では、シークレットの埋め込みが禁止されています。サーバーは、クライアントの MCP 設定に追加する API キーで認証します(キーとセキュリティを参照)。パッケージを自分で検証するには:
curl -sO https://agent-plugins.org/schemas/1.0.0/plugin.schema.json
curl -sO https://agent-plugins.org/schemas/1.0.0/mcp.schema.json
npx ajv-cli@5 validate --spec=draft2020 -s plugin.schema.json -d plugin.json
npx ajv-cli@5 validate --spec=draft2020 -s mcp.schema.json -d mcp.json
🔑 キーとセキュリティ
- キーが表示されるのは作成時の一度だけです。環境変数に保存し、バージョン管理の対象外にしてください。
- キーが漏えいしても、ダッシュボードで無効化すれば、その時点で使えなくなります。 1つのアカウントで最大20個のキーを保持できるため、マシンごとに個別のキーを用意してください。
- チャット内で完結させたい場合は、付属の youtube-skillsをインストールしたエージェントが、ブラウザーを使わずに、メールアドレスと6桁のコードでアカウントを開いてキーを発行できます。
- OAuth フローはまだないため、カスタムヘッダーを送信できないコネクターを持つクライアント(Claude Desktop、Claude Web)は、現時点では Claude Code を経由してください。
🐳 ローカルで実行
ホストされたエンドポイントはインストール不要ですが、stdio のみをサポートするクライアント、サンドボックス、コンテナプラットフォームでは、独自のプロセスが必要になることがあります。このリポジトリには、そのための server.js が含まれています。これは完全なローカル MCP サーバー(公式 SDK、stdio トランスポート)で、14個のツールそれぞれが TranscriptOut REST API をHTTPSで1回呼び出します。SaaSをバックエンドとする一般的なMCPサーバーと同じ構成です。
# as a container
docker build -t transcriptout-mcp https://github.com/artemchuikin/youtube-mcp.git
docker run -i -e TRANSCRIPTOUT_API_KEY=sk_your_key transcriptout-mcp
# or straight from a checkout (Node 20+)
npm install && TRANSCRIPTOUT_API_KEY=sk_your_key node server.js
キーがなくても接続してすべてのツールを一覧表示できます。ツールを呼び出すと、キーの入手先を明示した分かりやすい401エラーが返されます。ツール定義は tools.json に格納され、ネットワークに接続できる場合は起動時に最新のカタログから更新されるため、ローカルの一覧が古くなることはありません。
🍳 レシピ
以下のプロンプトは、記載どおりに貼り付けて使えます。
| ユースケース | プロンプト例 |
|---|---|
| 📝 動画の要約 | "この動画の要点をまとめてください:[URL]" |
| 🔍 トピックの調査 | "YouTubeでニューラル・ラディアンス・フィールドに関する最も視聴された動画を5本検索し、それぞれを要約してください。" |
| 🧠 学習ノート | "このMIT講義シリーズのプレイリストから学習ノートを作成してください:[PLAYLIST URL]" |
| ⚖️ 視点の比較 | "この2本の動画の主張を比較してください:[URL1] [URL2]" |
| 🌐 翻訳 | "この動画の文字起こしをスペイン語に翻訳してください:[URL]" |
| ✍️ コンテンツの再利用 | "この動画を1,500語のブログ記事にしてください:[URL]" |
| 📡 クリエイターの動向を確認 | "毎朝、@kurzgesagt の新しいアップロードを一覧にして、どれを見るべきか教えてください。" |
| 🏛️ コンテンツデータベースの構築 | "@3blue1brown のすべての動画IDを取得し、すべての文字起こしを一括処理のキューに入れてください。" |
| 🎯 競合分析 | "@fireship 内で [競合製品] に関する動画を検索し、要点をまとめてください。" |
| 🧩 RAG への取り込み | "このプレイリストの文字起こしを、segment=1000 の JSON として取得し、インデックスに読み込んでください。" |
一括処理のレシピを詳しく説明します。「チャンネル全体をアーカイブする」には、スクリプトではなく4回のツール呼び出しが必要です。
list_channel_videosにids_only=trueを指定します:1ページあたり最大500件の動画IDを取得します- 取得したIDを指定して
submit_transcripts_jobを呼び出します(最大4,000件、課金前に重複を除外し、idempotency_keyを指定すれば再試行は無料です) statusがdoneになるまでget_transcripts_jobを呼び出します。ジョブはレート制限の範囲内で自動的に処理速度を調整しますget_transcripts_resultsをページごとに呼び出します。ジョブの実行中でも結果を読み取れます
サービスが取得できなかった動画の分は返金されるため、請求額はアーカイブの内容に一致します。
💳 料金と制限
| プラン | 料金 | クレジット | レート制限 |
|---|---|---|---|
| 無料 | $0 | 登録時に100(1回限り) | 200 req/min |
| Starter | $4.49/month | 1,000/月 | 200 req/min |
| Starter Annual | $45.29/year (~$3.77/mo) | 1,000/月 | 200 req/min |
| Scale | 最大 $198.99/mo までスライダーで設定 | 最大 100,000/月 | 200 req/min |
- サブスクリプションでは、月1,000〜100,000クレジットを1,000単位でスライダー調整でき、1,000クレジットあたりの料金は利用量に応じて下がります(月10,000クレジットなら $44.90 ではなく $27.49)。年間割引は利用量に応じて約16%から約35%まで拡大します。
- 1クレジット = 回答済みリクエスト1件です。 YouTube に到達する前に失敗した呼び出し(検証、レート制限、当社の処理能力によるもの)は自動的に返金されます。現在の残高は
X-Credits-Remainingヘッダーで確認できます。 - 有効なサブスクリプションに加えて、期限のない使い切りクレジットパックを購入できます。
- 料金を見る · 請求を管理する
🧯 呼び出しが失敗した場合
認証エラー(401)
- API キーの先頭が
sk_であることを確認してください - コピー時に余分なスペースが入っていないか確認してください
- ダッシュボードでキーが有効であることを確認してください
- 取り消されたキーはすぐに失敗します。ダッシュボードで新しいキーを発行してください
クレジット不足(402)
- ダッシュボードで残高を確認してください
- transcriptout.com/billingでサブスクリプションに登録するか、クレジットパックを購入してください
動画を利用できません(404 / 410 / 451)
404:動画にリクエストされた言語/トラックの字幕がないか、ID が間違っています。これは 確定的な応答であり、再試行しても変わりません。410:動画は削除されています。451:年齢制限付き、またはメンバー限定のコンテンツです。
レート制限(429)と容量制限(503)
Retry-Afterヘッダーに従ってください。どちらの場合も自動的に返金されます- 一括処理には
submit_transcripts_jobを使用してください。レート制限に達して失敗する代わりに、制限内に収まるよう自動調整します
エラーは構造化されています
すべてのエラーボディは {"ok": false, "code": "...", "detail": "...", "request_id": "req_..."} です。
人間向けのテキストではなく、機械可読な code に基づいて処理を分岐してください。サポートに問い合わせる際は
request_id を記載してください。
🌐 通常の REST をお使いですか?
エージェントではなくアプリを構築していますか?同じバックエンドが JSON REST API として提供されており、
5 種類の字幕形式に加えて、ファイルの生データをダウンロードできます(download=true)。
| MCP | REST API | |
|---|---|---|
| 最適な用途 | AI アシスタントとエージェント | アプリとバックエンドサービス |
| セットアップ | URL とキーを追加 | コードで統合 |
| 利用開始 | この README | API ドキュメント → |
ベース URL:https://api.transcriptout.com/v1
クライアントライブラリは Python と Node.js 向けに提供されています。どちらも広く使われている オープンソースライブラリのドロップイン代替で、インポートを 1 行変更するだけで切り替えられます。
pip install transcriptout # replaces youtube-transcript-api
npm i transcriptout # replaces youtube-transcript
ソース:youtube-transcript-python · youtube-transcript-js
🔗 リンク
- 🌐 ウェブサイト: transcriptout.com
- 📚 ドキュメント: transcriptout.com/docs
- 🧰 エージェントスキル(同じバックエンド、MCP 不要): github.com/artemchuikin/youtube-skills
- 🐍 Python ライブラリ: github.com/artemchuikin/youtube-transcript-python
- 📦 Node.js ライブラリ: github.com/artemchuikin/youtube-transcript-js
- 💬 お問い合わせ: [email protected]
📇 MCP Registry
このサーバーは、公式のModel Context Protocol Registryに 次の名前で公開されています:
com.transcriptout/youtube-transcript-and-youtube-search
TranscriptOut は独立したサービスであり、YouTube または Google LLC とは提携、推奨、後援の関係にありません。 「YouTube」は Google LLC の商標です。
© 2026 TranscriptOut · MIT Licenseに基づいて公開
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。