YouTube Transcript & Search MCP Server
🎬 为什么
每个使用代理工作的人都至少经历过一次这样的对话。
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...只读一个视频往往不是工作的终点。下面来实际对比一下,把 YouTube 数据交给代理的三种方式:
本服务器 | 本地 yt-dlp / 抓取型 MCP | Google YouTube Data API | |
字幕 | ✅ 任何公开视频,5 种格式 | ⚠️ 云端 IP 会被拦截,YouTube 改动页面结构就失效 | ❌ 不提供字幕 |
搭建 | ✅ 一个 URL 加一个 API key | ❌ 本地安装,连带维护 需要常驻的二进制文件 | ❌ 需创建 Google Cloud 项目、完成 OAuth 授权流程 |
YouTube 搜索 | ✅ 原生搜索,每页 1 积分 | ❌ 不支持 | ⚠️ 每次搜索 100 配额单位 |
频道与播放列表 | ✅ 每页 100 个视频,或 500 个纯 ID | ❌ 一次只能处理一个视频 | ⚠️ 按条目计费 |
批量字幕 | ✅ 每个后台任务 4,000 份 | ❌ 不支持 | ❌ 不支持 |
适合 RAG 的分块 | ✅ 20–5,000 字符,逐词时间戳 | ❌ 不支持 | ❌ 不支持 |
YouTube 改版 | ✅ 服务端统一修复,无需你更新 | ❌ 自己打补丁并重新部署 | ✅ 无需关心 |
调用失败 | ✅ 积分自动返还 | ❌ 自己写重试逻辑 | ⚠️ 失败照样扣配额 |
Related MCP server: VidLens
⚡ 快速开始
1. 获取 API key。 在 transcriptout.com 注册,然后在 仪表盘 中创建 key。新账户可获得 100 个免费积分,且无需绑定卡。key 均以 sk_ 开头,仅展示一次。
2. 将客户端指向该服务。 它支持流式 HTTP,并只通过一个 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 返回带时间戳段落的 JSON。
参数 | 类型 | 默认值 | 说明 |
| string | 必填 | YouTube URL(长链接或短链接)或 11 位视频 ID |
| string |
| 字幕轨的语言代码( |
| string |
|
|
| string | 自动检测 |
|
| integer | 见下文 | 每段最大字符数。500–1500 可生成适合 RAG 的分块 |
| boolean |
| 在同一次调用中附带标题、频道、时长与观看次数,同样仅计 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 积分
获取单个视频的元数据(标题、频道、时长、播放数、封面)以及可用字幕语言列表,但不下载字幕。
参数 | 类型 | 默认值 | 说明 |
| string | 必填 | YouTube 视频 ID 或 URL |
积分使用建议: 若你同样要获取字幕,请改用
get_transcript并带上video_metadata=true。一次调用、一个积分即可获得两者,否则就是两次调用、两个积分。
3. search_youtube · 1 积分/页
在 YouTube 上搜索视频或频道。可通过 next_page_token 翻页,has_more 指示是否还有下一页。
参数名 | 类型 | 默认值 | 说明 |
| string | 必填* | 搜索词(*除非正在翻页) |
| string |
|
|
| integer |
| 每页结果数,1–50 |
| string | 来自前一页结果的翻页令牌 |
4. list_channel_videos · 1 积分/页
按新到旧列出某个频道“Videos”标签页中的视频。接受 @handle、频道名称、UC... 频道 ID 或频道链接。
参数名 | 类型 | 默认值 | 说明 |
| string | 必填* |
|
| integer |
| 页面大小,配合 |
| boolean |
| 仅返回 |
| string | — | 上一页结果的翻页令牌 |
ids_only=true是以低积分方式向submit_transcripts_job喂数据的最佳路径。
5. search_channel_videos · 1 积分/页
基于 YouTube 自带的关联度搜索在某个频道内搜索。结果标题中不包含查询词完全正常,因为结果是按相关度、而非按子串匹配排序的。
参数名 | 类型 | 默认值 | 说明 |
| string | 必填 |
|
| string | 必填 | 在频道内搜索的查询词 |
| integer |
| 每页结果数,1–100 |
| string | — | 翻页令牌 |
6. latest_channel_videos · 1 积分
返回频道 RSS 中最新发布的约 ~15 个视频,这是检查频道近期动态最快、最省积分的方式。
参数 | 类型 | 默认值 | 说明 |
| string | 必填 |
|
7. list_playlist_videos · 1 积分/页
按播放列表原有顺序列出其全部视频。接受 PL... 播放列表 ID 或含 list= 的链接。
参数名 | 类型 | 默认值 | 说明 |
| string | 必填* | 播放列表 ID 或链接 |
| integer |
| 页面大小,配合 |
| boolean |
| 仅返回 |
| string | — | 翻页令牌 |
8. search_playlist_videos · 1 积分
按标题中某个子串(不区分大小写)在播放列表内部查找视频。YouTube 没有原生的播放列表搜索,因此其会扫描最多 500 个播放列表条目。truncated=true 表示超出扫描范围可能还有更多匹配结果。
参数 | 类型 | 默认值 | 说明 |
| string | 必填 | 播放列表 ID 或 URL |
| string | 必填 | 与视频标题匹配的子串 |
| integer |
| 最大匹配数,1-100 |
9. submit_transcripts_job · 每个视频 1 积分
一次为大量视频(最多 4,000 个)排队转录,并立即返回一个 job_id。这项工作会在后台以你的速率限制的速度继续。当视频数量超过几个时,请使用此方法,而不是在循环中调用 get_transcript。
参数 | 类型 | 默认值 | 说明 |
| string[] | 必填 | 视频 ID 或 URL,最多 4,000 个。重复项会在计费前合并 |
| string |
| 整个作业使用同一种语言 |
| string |
|
|
| string | 自动检测 |
|
| integer | 整个作业使用同一种分段大小 | |
| boolean |
| 每个视频的元数据,无额外费用 |
| 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 获取批量作业中某个视频的结果,无需翻遍整个结果集。404 表示作业不存在或该视频还没处理完,因此在做出任何结论前请先检查 get_transcripts_job。
参数 | 类型 | 默认值 | 说明 |
| string | 必填 | 来自 |
| string | 必填 | 提交作业时含的其中一个视频 ID |
13. cancel_transcripts_job · 免费
取消批量作业。积分仅在视频仍未开始处理时退还。已经获取的内容保留在结果中并保持已付费状态。
14. get_credits · 免费
查询该密钥的剩余积分余额,不需任何参数。余额也会包含在每次响应的 X-Credits-Remaining 请求头中,但请求头对模型不可见,所以用户实际问到的数量需要一个工具来取。此外,大作业提交前用它检查余额也很方便,因为提交时每个视频扣 1 积分。
🔌 在你的客户端中安装
服务器是远程的,因此下面的每次安装都只是一条配置项。所有安装都需要相同的两个值:URL 和快速开始的 Bearer 请求头。
值得做一个:一条客户端常驻规则
把这个放客户端规则/说明后,粘贴 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.
一键安装:
安装后,打开服务器设置,添加 Authorization 请求头,并填入你的密钥。
手动配置(~/.cursor/mcp.json):
{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}claude mcp add --transport http transcriptout https://api.transcriptout.com/mcp \
--header "Authorization: Bearer YOUR_API_KEY"Claude 的自定义连接器通过 OAuth 认证远程服务器,但 TranscriptOut 目前还未提供 OAuth(只支持 API 密钥)。在桌面上,请使用 Claude Code(见上方),它支持 API 密钥请求头。OAuth 支持已在路线图上。请关注 变更日志。
或者把这个加到 VS Code 用户设置(settings.json)中:
"mcp.servers": {
"transcriptout": {
"type": "http",
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}创建新的 Agent
在 “Actions” 或 “Tools” 下,添加新的 MCP Server
URL:
https://api.transcriptout.com/mcp认证类型:API 密钥
从仪表盘粘贴你的 API 密钥
添加到 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"transcriptout": {
"serverUrl": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"type": "streamableHttp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}在 Zed 的 settings.json 中:
{
"context_servers": {
"transcriptout": {
"source": "remote",
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}{
"mcpServers": {
"transcriptout": {
"type": "streamable-http",
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}amp mcp add transcriptout https://api.transcriptout.com/mcp --header "Authorization: Bearer YOUR_API_KEY"在 settings.json 的 augment.advanced 下:
"augment.advanced": {
"mcpServers": [
{
"name": "transcriptout",
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
]
}在 .kilocode/mcp.json 中:
{
"mcpServers": {
"transcriptout": {
"type": "streamable-http",
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}在设置 → 工具 → AI Assistant → MCP 中:
{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}在 ~/.gemini/settings.json 中:
{
"mcpServers": {
"transcriptout": {
"httpUrl": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}在 ~/.qwen/settings.json 中:
{
"mcpServers": {
"transcriptout": {
"httpUrl": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}{
"mcpServers": {
"transcriptout": {
"serverUrl": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}在 mcp.json 中:
{
"mcpServers": {
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}在设置 → AI → MCP 中:
{
"transcriptout": {
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}在设置 → 连接器 → 高级 中:
{
"url": "https://api.transcriptout.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}🧩 作为 Agent 插件安装
该仓库根目录是一个符合 Agent Plugins 1.0.0 标准的软件包,这种可移植格式受 ChatGPT、Codex、Cursor、GitHub Copilot、Kiro 和 VS Code 支持。一次安装即可获得 MCP 服务器,以及随附的 youtube 技能;该技能会教你的 agent 何时使用每个工具,以及如何不浪费积分。
plugin.json # manifest
mcp.json # hosted MCP server, streamable-http
skills/youtube/SKILL.md # when + how to use the 14 toolsVS 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🔑 密钥与安全
密钥只在创建时显示一次。请将其保存在环境变量中,远离版本控制。
泄漏的密钥在你在仪表盘撤销的那一刻立即失效。一个账户最多可持有 20 个密钥,因此请让每台机器都专用自己的密钥。
更喜欢留在聊天里?安装了配套的 youtube-skills 的 agent 可以通过邮箱和 6 位数的验证码帮你打开账户并生成密钥,无需浏览器。
目前尚无 OAuth 接口,因此连接器无法发送自定义请求头的客户端(Claude Desktop 和 Claude Web)暂时应通过 Claude Code 使用。
🐳 在本地运行
托管端点无需安装,但仅支持 stdio 的客户端、沙盒和容器平台有时希望拥有自己的进程。仓库里也有一个:server.js 是完整的本地 MCP 服务器(官方 SDK、stdio 传输),其 14 个工具各自都会向 TranscriptOut REST API 发起一次 HTTPS 请求——这与任何由 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]” |
⚖️ 对比观点 | “比较这两个视频中的论点:[URL1] [URL2]” |
🌐 翻译 | “把该视频的转录调配成西班牙语:[URL]” |
✍️ 内容再利用 | “把这个视频改成一篇 1,500 字的博客文章:[URL]” |
📡 关注创作者 | “每天早上列出来自 @kurzgesagt 的最新,并告诉我该看哪个。” |
🏛️ 构建内容数据库 | “从 @mountains、@blue3 等处抓取所有视频 ID,并把它们全部排队转录。” |
🎯 竞品分析 | “在 @fireship 中搜索关于[竞品产品]的视频,并总结要点。” |
🧩 RAG 摄入 | “以 JSON 格式( |
批量操作详解说明。 “深度归档整个频道”只是四个工具调用,而不是脚本:
使用
ids_only=true调用list_channel_videos:每页最多返回 500 个视频 ID用这些 ID 调用
submit_transcripts_job(最多 4,000 个,计费前会去除重复项,idempotency_key让重试免费)反复调用
get_transcripts_job直到status变为done。任务会在您的速率限制内自行调节节奏逐页调用
get_transcripts_results,任务仍在运行时也可以读取
服务未能成功交付的任何内容都会按视频退款,因此账单与实际成功交付的内容一致。
💳 定价与限额
套餐 | 价格 | 积分 | 速率限制 |
Free | $0 | 注册即送 100(一次性) | 200 次请求/分钟 |
Starter | $4.49/月 | 1,000/月 | 200 次请求/分钟 |
Starter Annual | $45.29/年(约 $3.77/月) | 1,000/月 | 200 次请求/分钟 |
Scale | 滑块最高 $198.99/月 | 最高 100,000/月 | 200 次请求/分钟 |
订阅采用滑块,从每月 1,000 到 100,000 积分、以 1,000 为步长进行调整;每 1,000 积分的单价随用量增加而下降(10,000/月为 $27.49,而不是 $44.90)。年付折扣随用量增加而加大,从约 16% 到约 35%。
1 积分 = 1 次已应答的请求。 未到达 YouTube 就失败的调用(校验、频率限制、我方容量不足)会自动退款。实时余额通过
X-Credits-Remaining响应头返回。可购买永不过期的一次性积分包,叠加在有效订阅之上。
🧯 当调用失败时
确认您的 API 密钥以
sk_开头检查复制时是否混入多余空格
确认密钥在您的 仪表盘 中处于有效状态
已撤销的密钥会立即失败。请重新创建密钥
在 仪表盘 中查看余额
订阅或购买积分包:transcriptout.com/billing
404:视频在所请求的语言/字幕轨上没有字幕。这是确定性结果,重试也无法改变。410:视频已被删除。451:年龄受限或会员专属内容。
请遵守
Retry-After响应头。两者都会自动退款批量任务请使用
submit_transcripts_job:它会在您的速率限制内自动调节步调,而不会反复被拒
每个错误响应都是 {"ok": false, "code": "...", "detail": "...", "request_id": "req_..."}。
请根据机器可读的 code 分支判断,而不要依赖人工可读的文本。联系支持时请提供 request_id。
🌐 更偏好纯 REST?
您是在构建应用而不是智能体?同一后端以 JSON REST API 形式提供,支持同样的五种字幕格式,外加原始文件下载(download=true)。
MCP | REST API | |
适用场景 | AI 助手和智能体 | 应用及后端服务 |
配置 | 添加 URL + 密钥 | 代码集成 |
入门 | 本 README |
基础 URL:https://api.transcriptout.com/v1
🔗 链接
🌐 Website:transcriptout.com
📚 Docs:transcriptout.com/docs
🧰 Agent 技能(同一后端,无需 MCP):github.com/artemchuikin/youtube-skills
💬 联系邮箱:support@transcriptout.com
📇 MCP Registry
本服务器已发布到官方 Model Context Protocol Registry,名称如下:
com.transcriptout/youtube-transcript-and-youtube-searchTranscriptOut 是一项独立服务,与会者YouTube 或 Google LLC,仅凭这一点,并非其附属、支持或赞助。“YouTube”是 Google LLC 的商标。
This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceYouTube intelligence layer for AI agents. 41 tools across 10 modules ; search, explore, transcripts, comments, visual search, analytics, and more. Zero config.41250
- AlicenseBqualityBmaintenanceEnables AI agents to search, analyze, and extract insights from YouTube videos including transcripts, visual frames, and benchmarks without requiring API keys. Supports semantic search across playlists, sentiment analysis, and visual content indexing with automatic fallback chains for reliable access.4125032MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to fetch transcripts, metadata, and download videos/audio from YouTube without API keys.27MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to search, watch, summarize, clip, and extract transcripts from YouTube videos, all without needing an API key or leaving the chat.1345Apache 2.0
Related MCP Connectors
15 media & data tools for AI agents: search, transcribe, subtitles, voiceover, translate & more.
💯 The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free.
Provide token-optimized, structured YouTube data to enhance your LLM applications. Access efficien…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/artemchuikin/youtube-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server