以下是您要求的英文文章翻译为流畅中文的结果,已按照要求保留原文结构、技术术语和代码块,并输出为 Markdown 格式。
bradautomates claude-video
/watch 让 Claude 能够观看任何视频。 Claude Code(推荐——通过市场自动更新): /plugin marketplace add bradautomates/claude-video /plugin install watch@claude-video
Codex、Cursor、Copilot、Gemini CLI 或任何 50 多种 Agent Skills 宿主: npx skills add bradautomates/claude-video -g (-g 为你的用户全局安装,适用于所有项目。去掉 -g 则限定为每个项目单独安装。)
更多安装选项(claude.ai 网页端、手动安装)请参见下方“安装”部分。
零配置即可开始使用——首次运行时,yt-dlp 和 ffmpeg 会通过 brew 在 macOS 上自动安装(Linux/Windows 会打印精确命令)。 字幕覆盖大多数公共视频,完全免费。仅当视频没有字幕时才需要 Whisper API 密钥。
Claude 可以阅读网页、运行脚本、浏览代码仓库。但它开箱即用时所不能做的,就是观看视频。 你粘贴一个 YouTube 链接,它要么只能根据标题猜测,要么拉取一段缺失了屏幕上 90% 内容的转录文本。
借助 Claude Video /watch,你可以粘贴一个 URL 或本地路径,提出一个问题,Claude 会:
- 首先获取字幕
- 仅下载它所需的部分
- 提取帧(场景感知模式,或高效细节下的快速关键帧)
- 拉取带时间戳的转录文本(有可用字幕时免费,否则回退到 Whisper API)
- 将每一帧作为图像进行阅读
等到它回答时,它已经看过了视频,也听过了音频。
/watch https://youtu.be/dQw4w9WgXcQ 在 30 秒标记处发生了什么?
人们实际用它做什么
分析他人的内容。 /watch https://youtu.be/
通过视频诊断 Bug。 有人给你发了一段屏幕录制,展示某个故障。 /watch bug-repro.mov 哪里出了问题? Claude 观看录制内容,找到问题出现的帧,描述屏幕上显示的内容,通常无需你打开文件就能抓住原因。
总结视频。 /watch https://youtu.be/<长视频> 总结一下 做了显而易见的事情——提取结构、关键时刻、实际说了什么和展示了什么。比以 2 倍速观看还快。
剔除更新视频中的水分。 /watch https://youtu.be/<发布视频> 真正的新内容是什么——跳过那些炒作 将一个“颠覆性”功能发布精简到少数几个真正重要的点,让你获得实质内容,而不必忍受十分钟的开头和过度推销。
将播放列表转化为笔记。 /watch https://youtu.be/<视频> 将这段总结成一条笔记 对一系列视频运行此操作,并为每个视频生成摘要,这样整个频道或课程就变成了一组可搜索的笔记,而不是你必须花几个小时看完的内容。
工作原理
你粘贴一个视频和一个问题。
- URL(任何 yt-dlp 支持的格式——YouTube、Loom、TikTok、X、Instagram,以及另外数百种)
- 或本地路径(.mp4、.mov、.mkv、.webm)
yt-dlp 首先检查字幕。
- 在转录文本细节层面,带字幕的 URL 无需下载视频即可返回结果。
- 否则,或者当需要 Whisper 处理音频时,它只下载运行所需的部分。
ffmpeg 以所选细节提取帧。
- 高效模式:仅解码关键帧(近乎即时);
- 平衡模式 / token-burner 模式:优先选择场景变化帧,当生成帧数不足时回退到基于时长的均匀采样器。
JPEG 默认宽度为 512 像素,高度限制为 1998 像素,以确保与 Claude Read 兼容。
转录文本来自两个来源之一:
- 首选:yt-dlp 从源拉取原生字幕(手动或自动生成)。免费、即时、准确度尚可。
- 回退:提取单声道 16 kHz 64 kbps 的 mp3 音频片段(约 480 kB/分钟),并发送给 Whisper——Groq 的 whisper-large-v3(首选——更便宜、更快)或 OpenAI 的 whisper-1。
帧 + 转录文本被传递给 Claude。
- 脚本打印带有 t=MM:SS 标记的帧路径以及带时间戳的转录文本。
- Claude 并行阅读每一帧——JPEG 作为图像直接渲染到其上下文中。
Claude 的回答基于屏幕上和音频中实际呈现的内容。不是“根据描述”或“根据标题”。它看到了帧。它听到了转录文本。它的回答方式就像真正看过视频的人一样。
清理。 脚本在最后打印一个工作目录。如果你没有后续追问,Claude 会将其删除。
帧预算——为什么它很重要
Token 成本主要由帧决定。每一帧都是一张图像;图像 token 累加得很快。 脚本的自动 fps 逻辑之所以存在,是为了避免你在对一段 30 分钟的视频进行稀疏扫描时耗尽上下文预算——而这段视频本可以通过聚焦于 30 秒的关键窗口来更好地回答。
| 时长 | 默认帧预算 | 你得到的效果 | |------|------------|--------------| | ≤30 秒 | ~30 帧 | 密集——基本上覆盖每个关键时刻 | | 30 秒 - 1 分钟 | ~40 帧 | 仍然密集 | | 1 - 3 分钟 | ~60 帧 | 舒适 | | 3 - 10 分钟 | ~80 帧 | 稀疏但可用 | | > 10 分钟 | 100 帧(上限模式) | “稀疏扫描”警告——建议重新聚焦运行,或使用 --detail token-burner 获得无上限的完整覆盖 |
当用户指定某个时刻(“大约 2:30”、“最后 30 秒”、“从 0:45 到 1:00”)时,请传递 --start / --end。 聚焦模式会获得更密集的每秒预算,上限为 2 fps。这比对整个视频进行稀疏扫描要有用得多。
帧去重
帧选择——关键帧(高效模式)、场景变化检测(平衡模式 / token-burner 模式),或回退的均匀采样器——仍然可能产生几乎相同的帧:例如,一个屏幕录制在 90 秒内只显示同一张幻灯片,会产生十几张几乎相同的帧,每张都被计为一张独立的图像。
去重过程会在帧到达 Claude 之前将其丢弃。它默认在所有帧模式下运行(--no-dedup 可关闭):
- 一次 ffmpeg 调用将每个提取的 JPEG 缩放为 16×16 灰度缩略图。
- 之后全部使用纯标准库 Python——无需图像库。
- 对于每一帧,计算它与上一张保留帧之间的平均绝对差值(每个像素的平均亮度变化,范围 0–255)。
- 如果该差值小于或等于阈值(2.0),则该帧被视为近似重复并被丢弃。
- 否则,它被保留,并成为新的比较基准。
如果您需要我进一步调整语气、补充术语注释或适配特定平台风格,也可以随时告知。