mcpField
T
Transcriptor MCP

Transcriptor MCP

远程服务
transcriptor-mcp.org媒体与设计242 周前更新

关于 Transcriptor MCP

Transcriptor MCP 为 AI 助手提供从 YouTube 等 11 个视频平台提取文本、字幕、章节、元数据和单帧的能力,适用于视频分析与检索。它支持托管连接或自行部署,长文本可分段返回。

主要功能

  1. 01提取视频文本和字幕
  2. 02读取字幕语言与章节
  3. 03获取视频元数据和单帧
  4. 04提取播放列表视频文本
  5. 05搜索 YouTube 视频

适用场景

  1. 01总结视频内容
  2. 02导出指定语言的字幕
  3. 03查找视频中的特定片段
  4. 04批量获取播放列表文本

MCP 相关

该 MCP 服务通过工具向客户端提供视频文本、字幕、章节、元数据、画面和 YouTube 搜索。可连接托管端点,也可通过 Docker 自托管,并支持 Streamable HTTP 和 stdio。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://transcriptor.gateway.mcpal.io/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
ocidocker.io/artsamsonov/transcriptor-mcp:1.5.21

工具

详细介绍

Transcriptor MCP

🎬 现在,你的 AI 助手可以观看视频了!

**连接一个服务,然后向 Claude、ChatGPT 等询问视频内容:**文字稿、章节、元数据或单帧画面。它支持 11 个平台,不仅限于 YouTube。

Website ChatGPT MCP Registry Docker MCP Apps License

连接 · 可以询问什么 · 小组件 · 平台 · 自托管


⚡ 30 秒内完成连接

托管端点如下:

https://transcriptor.gateway.mcpal.io/mcp
🖱️ 一键连接

Add to Cursor Install in VS Code Add to LM Studio

⌨️ 一条命令,适用于 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,最大值为 200000
  • next_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(默认)或 png
  • width — 默认值为 1280,最大值为 1920,且不能超过源图像的宽度
  • quality — 2 到 31,仅适用于 jpeg

响应:一个图像块,以及 url、timestampSeconds、timestamp、mimeType、sizeBytes 和 width。此工具需要 ffmpeg。Docker 镜像中已包含该工具。

get_playlist_transcripts

输入:

  • url — 播放列表 URL,或带有 list= 的观看 URL
  • type、lang、format — 与 get_raw_subtitles 相同,但 lang 为必填项:一次只会为一个视频选择原始语言
  • playlistItems — yt-dlp 的 -I 值,例如 1:5、1,3,7 或 -1
  • maxItems — 视频数量上限

响应:results。每一项都有 videoId 和 text。

#### `search_videos`

输入:

  • query — 搜索文本
  • limit — 默认值为 10,最大值为 50
  • offset — 要跳过的结果数量
  • uploadDateFilter — hour、today、week、month 或 year
  • response_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 的形式获取相同数据。

search_videos 小组件:包含缩略图、时长和观看次数的结果卡片轮播

search_videos · “model context protocol MCP server production”

get_video_frame 小组件:一帧截图,带有步进控件和时间码输入框

get_video_frame · 3:30 处的架构幻灯片

get_transcript 小组件:视频卡片下方是可搜索的定时字幕列表

get_transcript · 3 分钟的 MCP 讲解视频,官方字幕

get_video_info 小组件:缩略图、频道、观看次数、点赞数、简介和字幕语言选择器

get_video_info · 频道、观看次数、点赞数和 169 种字幕语言


🌍 平台

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_HOST4200 和 0.0.0.0HTTP 监听器
COOKIES_FILE_PATH—用于需要账号的视频的 Netscape cookies 文件。请参阅 cookies.example.txt
WHISPER_MODEoff设置为 local 或 api,以便在视频没有字幕时转录音频。然后设置 WHISPER_BASE_URL 或 WHISPER_API_KEY。WHISPER_MAX_DURATION_SECONDS 会跳过时长更长的视频和直播;如果平台未报告视频时长,则会在下载音频后使用 ffprobe 测量
CACHE_MODEoff设置为 redis,并设置 CACHE_REDIS_URL,以缓存字幕和元数据
YT_DLP_MAX_CONCURRENCY4可同时运行的 yt-dlp/ffmpeg 进程数。YT_DLP_MAX_QUEUE(8)表示可等待的调用数;超过此数量后,会立即拒绝调用并返回“server busy”。每次调用的峰值约为 40 MiB,因此此上限限制的是平台限流和延迟,而非内存
SUBTITLES_RATE_LIMIT_HOLD_MS600000平台对字幕下载返回 429 后,服务会在这段时间内停止向该平台请求字幕,并立即返回 rate_limited。每次重复都会使等待时间加倍,最长一小时;成功下载后会清除限制。元数据请求不受影响
CANARY_INTERVAL_MS900000HTTP 服务获取一段转录文本以验证链路仍可正常工作时的间隔。设为 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。