关于 Transcriptor MCP
Transcriptor MCP 为 AI 助手提供从 YouTube 等 11 个视频平台提取文本、字幕、章节、元数据和单帧的能力,适用于视频分析与检索。它支持托管连接或自行部署,长文本可分段返回。
主要功能
- 01提取视频文本和字幕
- 02读取字幕语言与章节
- 03获取视频元数据和单帧
- 04提取播放列表视频文本
- 05搜索 YouTube 视频
适用场景
- 01总结视频内容
- 02导出指定语言的字幕
- 03查找视频中的特定片段
- 04批量获取播放列表文本
MCP 相关
该 MCP 服务通过工具向客户端提供视频文本、字幕、章节、元数据、画面和 YouTube 搜索。可连接托管端点,也可通过 Docker 自托管,并支持 Streamable HTTP 和 stdio。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://transcriptor.gateway.mcpal.io/mcpclaude mcp add --transport http samson-art-transcriptor https://transcriptor.gateway.mcpal.io/mcp{"mcpServers":{"samson-art-transcriptor":{"type":"http","url":"https://transcriptor.gateway.mcpal.io/mcp"}}}在 Cursor 中打开{"servers":{"samson-art-transcriptor":{"type":"http","url":"https://transcriptor.gateway.mcpal.io/mcp"}}}在 VS Code 中打开{"mcpServers":{"samson-art-transcriptor":{"type":"http","url":"https://transcriptor.gateway.mcpal.io/mcp"}}}{"mcpServers":{"samson-art-transcriptor":{"serverUrl":"https://transcriptor.gateway.mcpal.io/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
🎬 现在,你的 AI 助手可以观看视频了!
**连接一个服务,然后向 Claude、ChatGPT 等询问视频内容:**文字稿、章节、元数据或单帧画面。它支持 11 个平台,不仅限于 YouTube。
⚡ 30 秒内完成连接
托管端点如下:
https://transcriptor.gateway.mcpal.io/mcp
🖱️ 一键连接
⌨️ 一条命令,适用于 Claude Code
claude mcp add --transport http transcriptor https://transcriptor.gateway.mcpal.io/mcp
然后运行 /mcp 并在浏览器中批准登录。完成后,claude mcp list 会显示 ✔ Connected。
🧭 无需终端
| 客户端 | 操作方法 |
|---|---|
| Claude(网页端和桌面端) | 打开设置 → 自定义 → 连接器。选择 Add → Add custom connector,粘贴 https://transcriptor.gateway.mcpal.io/mcp,然后选择 Add。 |
| ChatGPT | 打开ChatGPT 插件目录中的 Transcriptor,选择 Install plugin;按提示登录。也可以在 ChatGPT 中打开 Plugins,搜索 Transcriptor,然后选择 Install plugin。之后在聊天中提及 @Transcriptor。 |
| Codex | 在同一目录中安装一次即可:ChatGPT 和 Codex 共用该插件。在 Codex 任务中打开 Sources → Use plugins → Transcriptor;在命令行中运行 /plugins。 |
🧩 其他 MCP 客户端
如果你的客户端不在上面的列表中,请使用以下配置添加服务:
{
"mcpServers": {
"transcriptor": {
"url": "https://transcriptor.gateway.mcpal.io/mcp"
}
}
}
如果想自行运行服务,请阅读自托管。工具相同,而且无需账号。
🧰 你可以提出的请求
| 请求内容 | 工具 |
|---|---|
| “为我总结这段视频” | get_transcript |
| “把字幕作为 SRT 文件提供给我” | get_raw_subtitles |
| “这段视频有德语音轨吗?” | get_available_subtitles |
| “是谁发布的?有多少次观看?” | get_video_info |
| “跳转到讲定价的部分” | get_video_chapters |
| “显示 4:12 时的画面” | get_video_frame |
| “获取此播放列表中前 5 个视频的英文字幕文本” | get_playlist_transcripts |
| “查找关于 X 的近期视频” | search_videos(YouTube) |
较长的字幕文本会分段返回。每次响应都会提供下一个部分的游标,因此不会丢失文本。
完整工具参考(输入和结构化响应)
所有接受视频作为输入的工具都接受 url。该链接可以来自受支持的平台,也可以是纯 YouTube ID。每个工具都会返回 content(聊天文本)和 structuredContent(供代码使用的类型化 JSON)。
get_transcript
清理后的纯文本,不含时间戳、HTML 或说话者姓名。不提供 lang 时,工具会返回视频原始语言的音轨。除 YouTube 外,大多数平台不会说明视频使用的语言;如果工具无法判断是哪条音轨,会返回音轨列表,你可以再次调用该工具并提供 type 和 lang。输入参数与 get_raw_subtitles 相同。
响应:videoId、url(服务解析后的视频页面)、type、lang、text、is_truncated、total_length、start_offset、end_offset。如果还有更多文本,响应中也会包含 next_cursor。
get_raw_subtitles
分段返回原始 SRT 或 VTT 内容。
输入:
type—official或auto。不提供lang时,工具会选择此类型的音轨lang— 语言代码或音轨名称,具体以get_available_subtitles列出的内容为准。不提供时,会像get_transcript一样使用视频的原始语言response_limit— 默认值为50000,最小值为1000,最大值为200000next_cursor— 上一条响应中的游标
响应:包含 get_transcript 的所有字段,另加 format(srt 或 vtt)和 content。
get_available_subtitles
响应包含 official 和 auto。每个字段都是经过排序的语言代码列表。请先使用此工具,再向上文中的工具提供 type 和 lang。
get_video_info
来自 yt-dlp 的扩展元数据:
- 标识信息 —
videoId、title、description、webpageUrl - 作者 —
uploader、uploaderId、channel、channelId、channelUrl - 数值 —
duration、uploadDate、viewCount、likeCount、commentCount - 分类信息 —
tags、categories、liveStatus、isLive、wasLive、availability - 图片 —
thumbnail和thumbnails
get_video_chapters
响应:chapters。每一项都有 startTime、endTime 和 title。如果视频没有章节,列表为空。
get_video_frame
输入:
timecode—"MM:SS"或"HH:MM:SS.mmm"seconds—timecode的替代参数。两者任选其一,不要同时提供format—jpeg(默认)或pngwidth— 默认值为1280,最大值为1920,且不能超过源图像的宽度quality—2到31,仅适用于 jpeg
响应:一个图像块,以及 url、timestampSeconds、timestamp、mimeType、sizeBytes 和 width。此工具需要 ffmpeg。Docker 镜像中已包含该工具。
get_playlist_transcripts
输入:
url— 播放列表 URL,或带有list=的观看 URLtype、lang、format— 与get_raw_subtitles相同,但lang为必填项:一次只会为一个视频选择原始语言playlistItems— yt-dlp 的-I值,例如1:5、1,3,7或-1maxItems— 视频数量上限
响应:results。每一项都有 videoId 和 text。
输入:
query— 搜索文本limit— 默认值为 10,最大值为 50offset— 要跳过的结果数量uploadDateFilter—hour、today、week、month或yearresponse_format—json(默认值)或markdown
响应:results。每个项目包含 videoId、title、url、duration、uploader、viewCount 和 thumbnail。
📺 小组件
四个工具提供交互式界面:get_transcript、get_video_info、get_video_frame 和 search_videos。支持 MCP Apps 和 ChatGPT Apps SDK 的客户端会在聊天中显示此界面。其他客户端会以文本和 JSON 的形式获取相同数据。
|
|
|
|
🌍 平台
YouTube · Twitter/X · Instagram · TikTok · Twitch · Vimeo · Facebook · Bilibili · VK · Dailymotion · Reddit
每个接受视频的工具都支持来自这 11 个平台的链接。search_videos 工具仅适用于 YouTube,通过 yt-dlp ytsearch 实现。
服务不会为你下载视频或音频文件。它会返回文本、元数据和单帧图像。
🐳 自托管
工具与托管端点上的相同。无需账号。
使用 Docker 运行服务。此镜像在端口 4200 上提供 Streamable HTTP:
docker run --rm -p 4200:4200 artsamsonov/transcriptor-mcp:latest
然后将客户端指向 http://localhost:4200/mcp。
对于 stdio,请为镜像指定明确的命令:
docker run --rm -i artsamsonov/transcriptor-mcp:latest npm run start:mcp
{
"mcpServers": {
"transcriptor": {
"command": "docker",
"args": ["run", "--rm", "-i", "artsamsonov/transcriptor-mcp:latest", "npm", "run", "start:mcp"]
}
}
}
服务启动时不需要环境变量。以下变量均为可选项。
| 变量 | 默认值 | 作用 |
|---|---|---|
MCP_PORT 和 MCP_HOST | 4200 和 0.0.0.0 | HTTP 监听器 |
COOKIES_FILE_PATH | — | 用于需要账号的视频的 Netscape cookies 文件。请参阅 cookies.example.txt |
WHISPER_MODE | off | 设置为 local 或 api,以便在视频没有字幕时转录音频。然后设置 WHISPER_BASE_URL 或 WHISPER_API_KEY。WHISPER_MAX_DURATION_SECONDS 会跳过时长更长的视频和直播;如果平台未报告视频时长,则会在下载音频后使用 ffprobe 测量 |
CACHE_MODE | off | 设置为 redis,并设置 CACHE_REDIS_URL,以缓存字幕和元数据 |
YT_DLP_MAX_CONCURRENCY | 4 | 可同时运行的 yt-dlp/ffmpeg 进程数。YT_DLP_MAX_QUEUE(8)表示可等待的调用数;超过此数量后,会立即拒绝调用并返回“server busy”。每次调用的峰值约为 40 MiB,因此此上限限制的是平台限流和延迟,而非内存 |
SUBTITLES_RATE_LIMIT_HOLD_MS | 600000 | 平台对字幕下载返回 429 后,服务会在这段时间内停止向该平台请求字幕,并立即返回 rate_limited。每次重复都会使等待时间加倍,最长一小时;成功下载后会清除限制。元数据请求不受影响 |
CANARY_INTERVAL_MS | 900000 | HTTP 服务获取一段转录文本以验证链路仍可正常工作时的间隔。设为 0 可关闭;CANARY_URL 用于指定视频 |
YT_DLP_* | — | 超时、代理和 JS 运行时。请参阅 .env.example |
同一端口还提供 GET /health 和 GET /metrics。指标采用 Prometheus 格式,并包含 mcp_* 计数器。
传输、REST API 和开发
传输。 服务仅接受 POST /mcp。GET 和 DELETE 会返回 405。服务是无状态的,不会发送 Mcp-Session-Id。
Node 进程不会检查 bearer 令牌。请在其前面配置反向代理或网关,以实现身份验证和 TLS。托管端点也采用这种方式。
REST API。 另一个镜像通过普通 HTTP 提供相同的提取功能:
docker run --rm -p 3000:3000 artsamsonov/transcriptor-mcp-api:latest
Swagger 界面位于 http://localhost:3000/docs。如需包含 API 和 MCP 服务的完整堆栈,请阅读 docker-compose.example.yml。
开发。
npm ci
npm run build
npm run start:mcp # stdio
npm run start:mcp:http # Streamable HTTP on port 4200
npm test
你需要 Node.js 22 或更高版本(20 仍可使用,但已于 2026 年 4 月结束生命周期),并且需要将 yt-dlp 放在 PATH 中。捕获帧需要 ffmpeg,而 WHISPER_MAX_DURATION_SECONDS 需要 ffprobe(二者随同一个软件包提供,也包含在 Docker 镜像中)。其他脚本:lint、type-check、format、test:coverage、test:e2e:api 和 test:e2e:mcp。
发布。 发布由维护者负责。步骤详见 .claude/skills/release/SKILL.md。运行时版本来自 package.json,通过 src/version.ts 获取。推送 v* 标签会使 CI 构建两个镜像,并根据 server.json 发布 MCP Registry 条目。
目录结构。 src/mcp.ts(stdio 入口)、src/mcp-http.ts(Streamable HTTP)、src/mcp-core.ts(工具、提示词、小组件)、src/youtube.ts(yt-dlp)、src/whisper.ts、src/cache.ts、src/index.ts(REST API)、load/(k6)和 src/e2e/(Docker 冒烟测试)。
🤝 贡献
欢迎提交拉取请求。请先阅读 CONTRIBUTING.md:其中介绍了从问题到评审的流程,适用于个人和编码 Agent。
⚖️ 法律声明
托管端点 transcriptor.gateway.mcpal.io 受服务条款和隐私政策约束。
自行托管的服务不受这些文档约束,仅受 MIT 许可证约束。
📄 许可证
MIT © 2026 samson-art。阅读 LICENSE。
💬 支持
问题反馈 · GitHub 个人主页 · LinkedIn
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。