视频笔记 是做什么的?
用户将反馈录制成屏幕录制,边操作边讲解:一次通过,持续几分钟,常常在光标滞后时重复某个要点。交付物是一份操作清单,其他会话无需观看视频即可执行。Whisper 和 ffmpeg 在本地运行;不会将任何视频或音频发送到云端语音或视觉 API。
步骤
- 运行辅助脚本(它位于本文件旁边)。
它会复用与视频文件同目录下的python3 "<该技能所在文件夹>/video-notes.py" "<视频路径>"<视频文件名>.srt(如果存在),否则在 CPU 上运行whisper --model base.en(在 Apple Silicon 笔记本上,每 5 分钟视频约需 2.5 分钟)。输出内容写入<视频主文件名>.notes/文件夹:transcript.md(每行对应一个合并后的片段,附带帧名称)以及 1600px 宽的截图。当<视频主文件名>.notes/的修改时间晚于视频文件时,结果会被直接复用;--force强制重建,--model turbo在基础转录效果不佳时使用,--every 10用于无旁白的演示,--sheet生成 2x2 缩略图集,--max-row 5在说话和屏幕操作快速变化时捕获更多帧(每行最多 8 秒,每行一帧),--max-frames 40为默认值。 - 阅读
transcript.md,然后查看截图。 如果使用了--sheet,先快速浏览sheet_NN.jpg(每张缩略图集包含四帧,按从左到右、从上到下的帧顺序排列,因此 sheet 01 包含第 1 到第 4 帧,其左上角为最早的那一帧),然后对每一行中指向屏幕(如“这个区域”、“这里”、“这两个图标”)或文本需要精读的帧,单独查看其单帧截图。缩略图集用于定位;只有单帧截图才能作为标注或尺寸的证据。 - 在视频文件旁边写入
<视频主文件名>.notes.md,使用绝对路径,无论当前工作目录是什么。格式如下:
编号贯穿整个清单,因此用户可以回复“3 和 7”。区域按访问顺序排列。重复的备注合并为一项,并在重复是关键信息时附加“说了 3 次”。# <视频名称> · <录制日期> · <时长> · <帧中可见的应用名称或网址> ## 操作清单 ### <屏幕区域,按屏幕上显示的名称命名:左侧栏、标题、设置面板> 1. [mm:ss] <一句话的强制性修复指令>。用户原话:“<简短的原话>”。截图:frame_mmss.jpg 2. ... ## 待定 <标记为“稍后”、“最终”、“现在不做”的项目,格式同上> ## 不明确 <每行一个需要用户回答的问题> - 回复:提供文件路径、区域标题及每个区域中的条目数量,以及前三个条目。除非“不明确”部分有内容,否则不要提问。
- 当负责渲染屏幕的仓库已打开时,添加
## 代码位置:条目编号 -> 文件路径,通过搜索帧中可见的组件名称和标签找到。如果没有仓库,则跳过该部分;切勿猜测路径。
规则
- 如果截图中有无法辨认的文字,必须重新捕获,不可推测:使用
--width 2400,或使用 ffmpeg 裁剪该区域。 .notes/文件夹和.notes.md文件必须保持在视频文件旁边。在仓库内部,该文件夹必须被忽略(通过.git/info/exclude),以确保大型录制文件不会进入 git。- 竞争产品分析或产品演示:步骤相同,但清单读作“他们做了什么”而非“修复”。
- 转录使用位于
~/.cache/whisper的本地 Whisper 模型。不使用云端语音 API 或视觉 API;会话模型负责阅读截图。
完成检查清单
- 已生成
transcript.md,并且在编写任何条目之前已阅读每一帧截图 - 已写入
<视频主文件名>.notes.md:全局编号、区域按访问顺序排列、每个条目都包含时间戳和截图名称 - 已合并重复项,已分离“待定”和“不明确”部分与“操作清单”
- 未将任何视频或音频发送到本机之外