在 goose 中接入 YouTube Transcript MCP 扩展:安装配置、抓取视频字幕并让 Agent 处理全文
【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose
YouTube Transcript 是面向 goose 的一款第三方 MCP 扩展:它把mcp-youtube-transcript(基于uvx运行的标准 I/O 型 MCP Server)注册为 goose 的扩展,使 goose 可以根据一条 YouTube 链接或视频 ID 拉取视频的字幕文本,并在此基础上执行翻译、总结、问答、关键词提取等后续任务。本文将以 youtube-transcript-mcp.md 官方教程为骨架,先给出 Desktop 与 CLI 两条安装路径,再补充 deeplink、交互式配置与配置文件(config.yaml)三种底层写法,并结合 extension.rs 的扩展配置结构说明每个字段的含义。读完后,你可以独立把任意视频的字幕接入 goose 会话,并写出可复用的指令。
goose 扩展与 YouTube Transcript 的定位
goose 是一个基于 Model Context Protocol(MCP) 的可扩展 AI Agent:所有外部能力都被抽象为“扩展(Extension)”。开发者版(Developer)、Computer Controller、Memory 等属于内建扩展;而任意第三方 MCP Server——包括本文要装的mcp-youtube-transcript——都可以作为外部扩展注册进 goose。
从 goose 的角度看,一个外部扩展就是一个被 goose 拉起并持续通过 stdin/stdout 通信的子进程(MCP stdio 传输)。goose 会把该进程暴露出的“工具”映射为 Agent 可调用的能力。接入 YouTube Transcript 后,goose 相当于获得了一组与 YouTube 字幕相关的工具,可以自主完成“读取视频 ID → 拉取字幕 → 处理文本”的整条链路,而不再需要你手动去第三方网站复制粘贴。
前置条件
- 已安装 goose(Desktop 应用或 CLI 均可)。本文以 CLI 命令为例,Desktop 对应操作会在对应小节注明。
- 安装 uv。原因是启动命令基于
uvx——它是 uv 提供的“在隔离环境中运行 Python 应用”的工具,uvx --from git+... pkg的写法会先从指定 Git 源解析并缓存包,再执行其中的可执行入口。 - 目标视频链接,或视频 ID。以
https://www.youtube.com/watch?v=dQw4w9WgXcQ为例,dQw4w9WgXcQ即为该扩展需要的 video ID。字幕是否可用取决于视频本身是否提供(YouTube 自动生成字幕也算可用来源)。
快速安装:一行命令完成注册
官方教程提供了 Quick Install 快捷入口,Desktop 与 CLI 各有一条路径:
goose Desktop(深链接一键安装)
点击 启动安装器 即可触发 goose Desktop 的扩展安装对话框。这条goose://extension?…是 goose 的深链接协议:Desktop 收到后会自动解析其中的命令与参数,填入扩展信息表单(ID、显示名、描述、启动命令)供你确认。
goose CLI(手工注册)
uvx --from git+https://github.com/jkawamoto/mcp-youtube-transcript mcp-youtube-transcript这条命令本身即扩展的完整启动命令(command + args),两种安装界面最终落到 goose 配置里的都是它:uvx作为命令,--from git+https://github.com/jkawamoto/mcp-youtube-transcript与mcp-youtube-transcript作为参数。
完整配置:两种界面 + 两种底层写法
官方文档把安装拆成“Desktop 图形表单”和“CLI 配置向导”两条交互路径,二者只是配置入口不同,产物相同。
方式一:goose Desktop
- 点击左上角侧边栏按钮打开侧边栏,进入
Extensions。 - 点击
Add custom extension打开添加表单。 - 按下表填写后点击
Add:
| 字段 | 填写值 | 说明 |
|---|---|---|
| Type | Standard IO | stdio 类型:goose 启动命令并以标准输入/输出与进程通信 |
| ID | youtube-transcript-mcp | 扩展唯一标识,将用作配置 map 的键,可自定 |
| Name | YouTube Transcript | 会话中的展示名 |
| Description | Access YouTube video transcripts | 功能描述,帮助 goose 判断何时启用此扩展 |
| Command | uvx | 启动程序 |
| Arguments | --from git+https://github.com/jkawamoto/mcp-youtube-transcript、mcp-youtube-transcript | 传给命令的完整参数列表 |
| Timeout | 如300 | goose 等待该扩展单次工具调用返回的最大秒数 |
方式二:goose CLI 配置向导
goose configure在交互菜单中依次选择:
Add Extension;- 扩展类型选择
Command-Line Extension(本地以命令方式运行的扩展,对应配置结构中的 stdio 类型;Built-In Extension与Remote Extension (Streamable HTTP)分别是内建扩展与远程 HTTP 扩展,本场景不适用)。类型选择逻辑可在 configure.rs 中看到:配置器会基于所选类型分发到configure_stdio_extension等实现; - 提示
What would you like to call this extension?时输入名称,如YouTube Transcript; - 提示
What command should be run?时粘贴完整命令:
uvx --from git+https://github.com/jkawamoto/mcp-youtube-transcript mcp-youtube-transcript- 按提示设置超时(单位秒)并确认是否添加环境变量(本扩展无需 API Key,选择
No即可); - 确认后配置器返回
Added … extension,扩展即注册完成。
配置完成后重启会话即可在 goose 的扩展工具列表里看到该扩展暴露的字幕相关工具。
配置文件里的最终形态
两种交互方式最终都写入 goose 的配置文件~/.config/goose/config.yaml。对于“懂配置”的进阶用户,可以直接编辑该文件添加扩展。结合 extension.rs 中ExtensionConfig::Stdio的定义(name、description、cmd、args、envs/env_keys、timeout、cwd等字段),本扩展对应的一段配置如下:
extensions: youtube-transcript-mcp: name: YouTube Transcript description: Access YouTube video transcripts cmd: uvx args: - --from - git+https://github.com/jkawamoto/mcp-youtube-transcript - mcp-youtube-transcript enabled: true type: stdio timeout: 300各字段的含义如下:
extensions下的顶层键(这里是youtube-transcript-mcp)即扩展 ID,与 Desktop 表单里的 ID 对应;name:展示名,会出现在 goose 对话的工具调用与权限提示中;description:扩展功能说明。goose 在判定“当前任务是否需要该扩展的工具”时会参考这段描述,因此应写得具体;cmd/args:完整启动命令的拆分。注意--from与后面的 Git 源是两个独立参数,要分别写入args,不能合并成一个带空格的字符串;type: stdio:扩展传输类型。源码中ExtensionConfig通过#[serde(tag = "type")]区分stdio、builtin、platform、streamable_http四类,本扩展属于stdio;timeout:goose 等待扩展单次工具调用返回的最长秒数,若字幕文本很大或网络较慢可适当调大;enabled:是否默认启用。置为false时扩展处于已安装但禁用状态,可稍后在会话内再开启。
Deep Link 参数速查(可选:理解一键安装的原理)
Desktop 的“一键安装”本质是 goose 的 deeplink 协议。URL 格式为:
goose://extension?cmd=<command>&arg=<argument>&id=<id>&name=<name>&description=<description>cmd:基础命令,允许取值包括jbang、npx、uvx、goosed、docker;arg:命令参数,可重复拼接(&arg=…&arg=…)表示多个参数;所有参数都必须 URL 编码(空格为%20,@为%40,:为%3A,/为%2B视场景而定,文档统一要求 URL-encode);timeout:单次工具调用的等待超时(秒);id/name/description:与上文表单字段一一对应。
对照上文的一键链接,可以还原出实际参数:cmd=uvx,arg=--from,arg=git+https://github.com/jkawamoto/mcp-youtube-transcript(+被编码为%2B),arg=mcp-youtube-transcript,再加上id、name(空格编码为%20)与description。也就是说,它与 CLI 版启动命令是同一条命令的参数化表达。
使用示例
安装完成后,goose 便具备了抓取 YouTube 字幕的能力。你唯一需要提供的是目标视频的链接或视频 ID——goose 会自行解析 ID、调用字幕工具并返回结果。
goose Prompt
在会话中直接输入:
Get me the transcript for this YouTube video: https://www.youtube.com/watch?v=dQw4w9WgXcQgoose 会从 URL 中识别出视频 IDdQw4w9WgXcQ,确认后调用 YouTube Transcript 扩展提供的工具拉取字幕。
goose Output(示意)
I'll help you get the transcript for that video. The video ID is "dQw4w9WgXcQ". Let me fetch the transcript for you. Here's the transcript: [Transcript content would appear here with timestamps and text] I've retrieved the transcript for Rick Astley's "Never Gonna Give You Up" music video. The transcript shows the lyrics of the song, though there are some minor transcription errors due to the automated nature of the system. The transcript includes the iconic chorus and verses of this famous 1987 song, which has become one of the most well-known internet memes, often used for "rickrolling." Would you like me to help you with anything else regarding the video or its transcript?需要注意两点事实约束:
- 字幕由 YouTube 自动生成时可能含转写错误(专有名词、歌词连读等尤为明显)。上述输出中 goose 也明确提示“minor transcription errors due to the automated nature of the system”。用于总结、检索原文时可接受,但需要逐字引用或人工校对时请以视频内的字幕原文为准,或检查视频是否提供人工上传的准确字幕。
- 返回文本通常带时间戳与分段文本,可继续用于生成带时间点的纪要,或交给 goose 进行翻译、要点提炼与问答。
进阶追问示例
拿到转录文本后,可以继续在同一会话里追加指令,例如:
Summarize this transcript in 3 bullet points.Translate the first two paragraphs of this transcript into Chinese.由于扩展工具返回的文本已进入会话上下文,goose 会基于这段内容执行后续的总结、翻译、关键词抽取等文本任务,无需再次联网。
在会话内临时启用:不写入配置的方式
如果不想永久注册该扩展,可以用/extension斜杠命令在当前会话内临时加载(此方式不会修改默认配置,也不影响后续新会话):
/extension uvx --from git+https://github.com/jkawamoto/mcp-youtube-transcript mcp-youtube-transcript同样地,也可以不进入交互式会话,直接在启动新会话时附带扩展:
goose session --with-extension "uvx --from git+https://github.com/jkawamoto/mcp-youtube-transcript mcp-youtube-transcript"此类“一次性启用”适用于临时性、偶发性的字幕抓取需求。若希望每次会话默认具备该能力,应使用上文“完整配置”中的持久化方式,并在config.yaml中将enabled置为true。
安装后的管理与排障
- 启用/停用:运行
goose configure,选择Toggle Extensions,用空格键在扩展列表中勾选或取消youtube-transcript-mcp(实心为启用);该操作决定新会话的默认加载状态。会话中途如需切换,可在 Desktop 底部扩展面板或 CLI 中执行/extension指令。 - 修改属性:Desktop 的扩展设置齿轮按钮可改名称、超时、参数等;CLI 用户直接编辑
~/.config/goose/config.yaml对应段落即可。若改动args,请保持--from与其 Git 源为相邻的两个数组元素。 - 移除:先经
Toggle Extensions停用(只有禁用状态的扩展可被删除),再在goose configure中选择Remove Extension,勾选后回车删除;或在配置文件中删除对应键。 - 首次启动较慢:
uvx --from git+…首次运行需要从 Git 源解析并安装包,存在明显网络与安装耗时,这是正常现象,缓存完成后再次启动会明显变快。若在受限网络环境中,可参照 goose 文档中关于 Airgapped/离线环境扩展无法激活的说明处理。 - 字幕获取失败:请先确认视频确实存在字幕(含 YouTube 自动字幕);私有视频、区域限制视频或未提供任何字幕轨的视频会导致拉取失败,此时需更换目标视频或手动提供文本。
小结
YouTube Transcript 扩展的接入过程可以归结为一个模式:凡是可用单条命令在本地拉起、通过 stdio 与 MCP 通信的外部服务,都可以像本教程一样注册为 goose 扩展。本次实践的核心是理解uvx启动命令的写法与 goose 扩展配置的三要素——扩展 ID、启动命令(cmd+args)、超时设置;三者既可以通过 Desktop 表单与 CLI 向导交互填写,也可以直接写入~/.config/goose/config.yaml。而配置文件背后的字段语义,均可在 extension.rs 的ExtensionConfig定义中一一对应验证。完成安装后,goose 即可把 YouTube 字幕作为上下文的一部分,用于总结、翻译、问答等下游任务。更系统的扩展管理方法(内置扩展、权限模式、MCP Roots、容器内运行等)可继续阅读 using-extensions.md 与同目录下 mcp 系列扩展教程。
【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考