VidOtter
VidOtter 是跨平台的浏览器媒体下载工具,通过 Chrome/Edge 扩展和本地 Go Bridge 检测、下载及处理视频和音频。
VidOtter
1. Introduction
最开始开发 VidOtter,是因为我想下载浏览器里正在播放的视频,但很多网站并不提供直接的下载链接。
这些网站通常使用 HLS 等流媒体协议,视频被拆分成多个片段,播放地址也可能是临时生成的。虽然浏览器可以正常播放,但很难直接拿到完整的视频文件。
我不想为每个网站单独编写解析器,因为网站一旦改版,就需要重新适配。实际上,浏览器播放视频时已经发起了媒体请求,直接从这些请求中发现视频资源,会更简单,也更通用。
VidOtter 就是为了解决这个问题。它通过浏览器扩展检测 MP4、HLS 等媒体资源,再交给本地 Go 下载引擎完成下载和文件合并,不依赖针对特定网站的解析规则。
使用时,只需要在 Chrome 或 Edge 中播放视频,打开 VidOtter,选择检测到的资源并下载。下载任务、进度和历史记录可以在浏览器弹窗、侧边栏或全屏界面中管理。
此外,VidOtter 还支持字幕提取、本地语音识别和翻译,也可以通过 MCP 连接 ChatGPT,让 AI 帮忙管理下载任务。这些功能按需启用,不影响普通的视频下载。
项目提供 Windows、Linux 和 macOS 安装包。

2. Quick Start
安装 VidOtter,启用浏览器扩展,再下载一个示例视频。
2.1. 安装
从最新 Release下载对应系统的安装包。图形安装器支持 Windows x64、Linux x64 和 Intel macOS。
2.1.1. 图形界面
Windows
运行 VidOtter-Setup-v*-windows-amd64.exe,按安装向导完成安装。然后从开始菜单打开 View Setup Instructions,按照说明加载浏览器扩展。
macOS(Intel)
打开 VidOtter-Setup-v*-macos-amd64.dmg,运行其中的安装程序。安装完成后,按提示加载浏览器扩展。Apple Silicon 用户请使用 macos-arm64.tar.gz 压缩包。
Linux(x64)
在桌面环境中运行 VidOtter-Setup-v*-linux-amd64.run。如果系统不允许执行,可以在文件属性中开启执行权限,或者先执行 chmod +x。完成安装后,从安装目录加载浏览器扩展。
三个平台的安装器都会注册本地 Native Messaging Host,Chrome 或 Edge 在需要时自动启动 Bridge。
2.1.2. 命令行
以下命令使用同一份图形安装器,但不显示安装向导。在安装包的下载目录打开终端。
Windows(PowerShell)
$installer = (Get-ChildItem .\VidOtter-Setup-v*-windows-amd64.exe | Select-Object -First 1).FullName
Start-Process -FilePath $installer -ArgumentList '--accept-licenses --default-answer --confirm-command install' -Wait
macOS(Intel)
dmg=$(find . -maxdepth 1 -name 'VidOtter-Setup-v*-macos-amd64.dmg' -print -quit)
mount=$(mktemp -d)
hdiutil attach -nobrowse -readonly -mountpoint "$mount" "$dmg"
app=$(find "$mount" -maxdepth 2 -type d -name '*.app' -print -quit)
installer=$(find "$app/Contents/MacOS" -maxdepth 1 -type f -perm -111 -print -quit)
QT_QPA_PLATFORM=offscreen "$installer" --root "$HOME/VidOtter" --accept-licenses --default-answer --confirm-command install
hdiutil detach "$mount"
Linux(x64)
installer=$(find . -maxdepth 1 -name 'VidOtter-Setup-v*-linux-amd64.run' -print -quit)
chmod +x "$installer"
QT_QPA_PLATFORM=offscreen "$installer" --root "$HOME/VidOtter" --accept-licenses --default-answer --confirm-command install
2.1.3. 手动安装压缩包
需要手动安装时,从同一 Release 下载对应压缩包:
- Windows x64:
vidotter-v*-windows-amd64.zip - Linux x64 / ARM64:
vidotter-v*-linux-amd64.tar.gz/vidotter-v*-linux-arm64.tar.gz - macOS Intel / Apple Silicon:
vidotter-v*-macos-amd64.tar.gz/vidotter-v*-macos-arm64.tar.gz
将压缩包完整解压到固定目录。安装根目录应直接包含 bin/ 和 extension/。进入该目录,注册 Native Messaging Host:
Windows PowerShell:
Set-Location 'C:\path\to\VidOtter'
.\bin\vidotterdev.exe install
Linux/macOS:
cd '/path/to/VidOtter'
./bin/vidotterdev install
移动安装目录后,需要重新注册。Linux 可通过 uname -m 查看架构:x86_64 是 x64,aarch64 是 ARM64;macOS 可在“关于本机”查看芯片类型。
2.2. 配置
2.2.1. 浏览器扩展
- Edge 打开
edge://extensions,Chrome 打开chrome://extensions。 - 开启开发者模式,点击加载解压缩的扩展。
- 选择 VidOtter 安装目录下的
extension/文件夹,这个文件夹中应直接包含manifest.json。 - 在浏览器工具栏的扩展菜单中打开 VidOtter,也可以将它固定到工具栏。
- 进入设置 → 连接与运行时,确认显示浏览器与下载服务连接正常后,再继续下载。
若提示找不到 Native Messaging Host,复制扩展管理页的 32 位扩展 ID,在安装根目录重新注册:
# Windows:将占位符替换为实际扩展 ID
.\bin\vidotterdev.exe install --extension-id YOUR_32_CHARACTER_ID
Linux/macOS 使用 ./bin/vidotterdev install --extension-id YOUR_32_CHARACTER_ID。注册后,在扩展管理页重新加载 VidOtter。
2.2.2. 下载设置
download.output_dir:下载目录,默认是Data/downloads/。download.concurrent:下载并发,默认32,范围1–64。download.quality:默认自动选择,也可指定best或来源支持的高度,例如720。proxy.enabled、proxy.url:默认关闭代理;支持 HTTP 代理,不支持代理凭据和 SOCKS。interface.language:界面语言,默认zh-CN,可改为en。interface.open_mode:默认popup,可改为sidePanel。
手动编辑前,先备份配置并停止 Bridge,修改后重启。请保留完整文件,不要用配置片段覆盖。
2.2.3. 升级与卸载
先暂停任务并备份 Data/,再按安装方式操作:
- 图形安装: 使用 VidOtter Maintenance,按对应 Release 的说明升级。未配置在线更新源时,通过维护工具移除旧程序,再运行新安装器。
- 压缩包安装: 用同一新发行版的
bin/、extension/和随包tools/替换旧文件,保留Data/,重新注册并加载扩展。
程序卸载会保留数据和下载文件;手动删除安装目录前需自行备份。
手动安装的注销命令为 Windows .\bin\vidotterdev.exe uninstall,Linux/macOS ./bin/vidotterdev uninstall,之后在浏览器移除扩展。
2.3. 验证安装
连接正常后,打开 MDN 的 CC0 示例视频并开始播放。
保持在这个标签页,打开 VidOtter:
- 在资源嗅探中找到 MP4。
- 字幕选择不下载字幕。
- 点击下载。
- 切换到下载任务,查看刚创建的任务。
如果换成 HLS,选择完整播放清单,不要选择单独的媒体分片。
等待任务变为已完成,在任务中展开下载文件,点击文件旁的打开,确认视频可以播放。也可以直接进入默认下载目录:安装根目录下的 Data/downloads/。
需要全屏界面时,在扩展中点击打开工作区。
2.4. 连接 ChatGPT(可选)
VidOtter 内置本地 MCP Server。只有连接网页版 ChatGPT 时才需要 Tunnel;普通视频下载和本地 MCP 客户端不需要。
- 在 OpenAI Platform 创建 Tunnel ID,再在 API Keys 创建 Runtime API Key。
- 打开 VidOtter → 设置 → 外部组件 → ChatGPT MCP,按页面提示安装 Tunnel Client。
- 填写两项连接信息并点击 Save,再点击 Start Service。如果关闭了 Connect Tunnel automatically,则需要手动点击 Connect Tunnel。
- 在 ChatGPT Plugins 使用同一 Tunnel ID 注册并授权插件。
- 在 ChatGPT 中选择 VidOtter,调用只读工具
vidotter_status检查连接。
Start local service at login 和 Connect Tunnel automatically 是两个独立设置。保存配置不会改变正在运行的服务;修改连接后使用 Restart Service 生效。Disconnect Tunnel 只断开 Tunnel,保留本地服务;Stop Service 停止本次运行,不会关闭下次登录自启动。已保存的密钥会遮挡显示,无需重复填写。
Windows 使用任务计划程序,Linux 使用 systemd 用户服务,macOS 使用 LaunchAgent,三者均由 Go 管理。v1.7.0 不导入旧版 PowerShell/Shell 管理的 MCP 连接配置,需要重新填写连接信息;已有下载文件和其他用户数据保留。
命令行也可以查看和控制服务,使用安装目录中的 Bridge 执行 --mcp-service status|start|stop|restart|connect|disconnect。例如 Windows:
.\bin\vidotter-windows-amd64.exe --mcp-service status
Linux 使用 ./bin/vidotter-linux-amd64(或 linux-arm64);macOS 使用 ./bin/vidotter-macos-amd64(或 macos-arm64)。首次填写密钥建议使用图形设置页。
本地 Tunnel 已连接并不等于 ChatGPT 插件已经授权,两者需要分别确认。
2.5. 字幕与外部组件
MP4/HLS 使用内置下载器。解析其他受支持的网页时,在设置页安装 yt-dlp;HLS 合并、音视频封装需要 FFmpeg。DASH 和分离音视频的支持取决于来源及工具。
根据字幕来源选择处理方式:
- 使用原站字幕:需要 yt-dlp,且来源提供可获取的字幕。
- 本地语音识别:需要 FFmpeg、whisper.cpp 和语音模型。
- 字幕翻译:需要 llama.cpp 和翻译模型;使用语音识别结果时,还要指定原声语言。
在设置 → 外部组件检查所需工具,缺少时安装或配置;本地识别和翻译还需选择并下载模型,或填写已有模型的路径。组件就绪后,回到资源嗅探选择字幕处理方式并下载。完成后检查字幕文件、内容和时间轴。
如果 ChatGPT 已连接 Remote Browser Tool,直接复用现有连接操作页面,由 VidOtter 发现媒体和下载。
需要由 VidOtter 操作浏览器时,在设置中安装 Remote Browser MCP 组件。它使用独立发行包,只操作受限后台标签页;自动点击需在本机显式开启,无需另建 Tunnel。
2.6. 故障排查
- 扩展连接不上本地服务: 按 2.2.1 核对扩展 ID 并修复注册。仍失败时,查看
Data/logs/,检查端口127.0.0.1:17891是否被占用。 - 发现不到视频: 回到原标签页播放或拖动进度条,让页面重新请求媒体。部分网站没有可下载的 MP4/HLS,或使用 DRM。
- 任务报 403 或地址过期: 回到原页面重新播放,获取新的媒体请求,再按任务提示恢复或重新下载。
- HLS 合并失败: 检查 FFmpeg 是否可用。字幕问题先切回“不下载字幕”,确认普通下载是否正常。
- 升级后仍是旧版本,或提示不支持的 Tool 操作: 停止旧 Bridge,更新程序文件,重新加载扩展,再到设置 → 关于核对版本。
如果以上方法仍无法解决,请提交 Issue,附上 VidOtter 版本、操作系统、复现步骤和脱敏后的错误信息,不要上传完整 Data/。
3. Development
开发环境需要 Git、Go 和 Node.js。Go 工具链须满足 bridge/go.mod 与 tools/vidotterdev/go.mod 的声明;Node.js 版本与 CI 配置保持一致。
3.1. 打开项目并验证
git clone https://github.com/ThinkerQAQ/vidotter.git
cd vidotter
go -C tools/vidotterdev run . verify
go -C tools/vidotterdev run . build
verify 执行两个 Go 模块的测试、扩展 JS 语法检查与脚本测试,成功后输出 Go and browser checks passed。build 将当前系统的 Bridge 编译到 .build/out/,开发安装见 3.2。
跨平台编译示例:
go -C tools/vidotterdev run . build --os windows --arch amd64
3.2. 安装开发版本
在源码仓库根目录执行以下命令,部署到 .build/dev-install/ 并注册:
Linux/macOS:
vidotter_dev_dir="$PWD/.build/dev-install"
go -C tools/vidotterdev run . deploy --target "$vidotter_dev_dir"
cd "$vidotter_dev_dir"
./bin/vidotterdev install
Windows PowerShell:
$vidotterDevDir = Join-Path (Get-Location).Path '.build\dev-install'
go -C tools/vidotterdev run . deploy --target $vidotterDevDir
Set-Location $vidotterDevDir
.\bin\vidotterdev.exe install
按 2.2.1 加载这个部署目录的 extension/,再按 2.4–2.5 下载并检查文件。继续修改或打包源码前,先切回原来的源码仓库根目录。
3.3. 打包与 CI
统一使用 tools/vidotterdev/ 构建、验证和打包。正式打包命令为 go -C tools/vidotterdev run . package,要求准备已校验的侧车工具、许可证及固定版本的 FFmpeg 源码包。--allow-missing-tools 仅用于不完整的开发包。
CI 在 Windows、macOS 和 Linux 执行测试、构建及 README 链接检查;真实浏览器下载和图形安装器操作需要另外验收。协作约定见 AGENTS.md。
4. License
项目原创代码采用 Apache-2.0 许可证。第三方组件遵循各自的许可证,详见 NOTICE 和 THIRD_PARTY_NOTICES.md。
VidOtter 提供媒体发现和下载功能,不绕过 DRM、付费墙或访问控制。请仅下载有权保存的内容,并遵守适用法律及媒体来源的使用条款。
拖动可平移,滚轮缩放,点击节点可展开或折叠。大型导图默认折叠较深层级,可点击节点继续展开。