Communitygithub.com

视频审查

无需逐帧观看即可审查渲染的视频或 Remotion 项目。运行 review-video.ps1 脚本,提取场景变化处及每 2 秒的关键帧,检查音频质量(LUFS、峰值、削波、静音、咔嗒声),将叙述文本与帧对齐,使用 Windows OCR 读取屏幕文本(检查拼写、阅读时间、数字缺失、YouTube Shorts 安全区域),并列出自上次审查以来的变化,最终生成 report.md 和 PDF 联系单。

视频审查 是什么?

该技能自动化视频审查流程,为用户提供可阅读的报告包,包括关键帧 PNG、音频分析结果、每帧的叙述文本和 OCR 识别出的屏幕文本,以及自动检查结果和与上次审查的差异对比。它支持直接对 MP4 等视频文件运行,也支持对 Remotion 项目(无需完整渲染)进行处理。对于 Remotion 项目,它会使用 npx remotion still 渲染静态帧并单独渲染音频。用户可以指定叙述来源(SRT、VTT、CSV、MD 录制表或 voiceover.json)、调整帧间隔、设置字数阅读速度、拼写字典等参数。技能还提供 PDF 生成功能,包括完整联系单、仅包含变化帧的 PDF 以及针对长视频优化的关键帧 PDF(约 15-20 帧,10MB 以内),方便用户与其他 AI 模型共享或附加到聊天中。其核心价值在于大幅降低视频审查的 AI 使用成本,避免逐帧打开图像,通过报告和采样帧高效发现问题。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Ablation-Lab/video-review-tool/tree/main/skills/video-review

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

视频审查 是做什么的?

该工具将视频文件或 Remotion 项目转换为可阅读的审查包:帧作为 PNG 文件、音频检查结果、每帧的叙述行和 OCR 识别的屏幕文本、自动检查结果以及自上次审查以来的变化,全部整合在 report.md 中。您的工作是运行它,然后从审查包中审查视频。

1. 运行工具

使用以下确切的命令运行它(它可以从 Bash 和 PowerShell 工具中运行),使用用户的路径并加引号:

powershell -NoProfile -ExecutionPolicy Bypass -File "${CLAUDE_SKILL_DIR}/review-video.ps1" "<视频文件或Remotion项目文件夹>" [选项]
  • 视频文件(MP4、MOV 等):每 2 秒一帧,在每次场景变化附近以及结尾处。
  • Remotion 项目文件夹:使用 npx remotion still 渲染静态帧(无需完整渲染),并单独渲染音频。除非指定了 -Composition <id>,否则它会使用第一个构图;输出会列出其他构图。该项目需要已经运行过 npm install。

有用的选项(全部可选):

选项用途
-Composition <id>Remotion:要渲染哪个构图。
-Frames 0,90,450Remotion:仅渲染这些帧号。
-Interval <秒>常规帧之间的秒数(默认 2)。对于长视频,请使用 4 或更大。
-Narration <文件>仅当叙述未自动找到时使用的叙述来源:.srt、.vtt、.csv、.md 录制表或 voiceover.json。
-Project <文件夹>当视频位于其项目之外时,搜索叙述的文件夹。
-OutDir <文件夹>写入审查包的路径。
-CompareWith <文件夹>与较旧的审查文件夹(例如,先前文件名的)进行比较。默认情况下,每次运行都会与同一视频的上次运行进行比较。
-ChangesPdf当用户只想要更改时,也生成一个仅包含更改帧的 PDF。
-KeyFramesPdf在审查文件夹中生成 key-frames.pdf:大约 15 到 20 帧,每个场景一个完全构建的帧加上标记的帧,标有时间戳、场景和问题,小于 10 MB。如果审查文件夹中已有完整的审查,则从这些帧构建,且不会更改其他内容;否则,会先运行审查。添加 -NoPdf 以跳过完整的联系单。
-KeyFramesMaxMB <n>key-frames.pdf 的大小限制(默认 10)。
-WordsPerSecond <n>阅读时间检查的阅读速度(默认 3)。
-NumberWordsFrom <n>从此值开始检查口语中的数字单词(默认 10)。
-SafeMargins 上,右,下,左Shorts 在 1080x1920 下的安全区域边距(默认 288,192,672,48,基于 Google 的谨慎参数)。
-WordList <文件>拼写检查接受的额外单词。
-SceneThreshold 0.3用于摄像机素材(默认值 0.02 适用于带有淡入淡出效果的幻灯片)。
-NoOcr跳过屏幕文本检查。
-NoPdf当用户只需要您的审查时,跳过 PDF。
-NoAudioRemotion:跳过音频渲染。

长视频需要一些时间:8 分钟的视频大约需要 2 分钟,每个 Remotion 静态帧大约需要 4 秒。使用 10 分钟的超时时间。输出的最后几行给出了 report.md、帧文件夹和 PDF 的路径,以及音频、文本检查和更改的摘要统计。审查包位于视频旁边的 <视频名称>-review\ 中,或者在 Remotion 项目内的 out\<构图>-review\ 中,除非指定了 -OutDir。每次运行都会在 previous\ 中保留上一次的运行。

如果输出以 FAILED: 结尾,请停止操作并告知用户原因。如果缺少 ffmpeg,修复方法是 winget install --id Gyan.FFmpeg -e,然后打开一个新终端。以 WARNING: 开头的行也会出现在报告顶部,请将这些信息传递给用户。

2. 浏览或完整审查

运行工具的代价很低;打开帧才会消耗用户的使用量,因为每打开一帧就是读取一张图片。对一个 15 分钟的视频进行完整审查,如果使用六个 Opus 子智能体打开每一帧,可能会耗尽整个使用会话。因此:

  • 默认情况下进行浏览,除非用户明确要求完整审查(例如说“完整审查”、“每一帧”、“全部检查一遍”)。在浏览模式下,以 report.md 为基础:查看摘要、检查结果、叙述时间线以及每帧的 OCR 文本和标记。通过报告中的行查看场景变化帧(“场景结束”和“场景变化”),并且只在看起来有问题时才打开帧图像:标记的检查、与屏幕文本不匹配的叙述行、变化的帧、该时刻的音频问题,或者应有幻灯片但 OCR 文本为空或乱码。最后说明这只是浏览,以及打开了多少帧。
  • 始终打开一些真实帧,无论是浏览、纯文本审查还是仅基于时间线的评估:每个场景中一个完全构建的幻灯片(“场景结束”帧,一旦所有内容都已出现),或者如果场景不明确,则在视频中均匀分布 15 到 20 帧。这些帧能展示文本无法体现的视觉风格(布局、重叠、溢出框、对比度、空白帧)。对于长视频,让负责浏览的 Sonnet 子智能体打开它们。最后始终说明打开了多少帧。
  • 仅在要求时进行完整审查。 如果视频超过 5 分钟(参见 report.md 摘要中的 Length 和 Frames),在打开任何帧之前停止:告诉用户有多少帧以及您将打开多少帧,说明完整审查会消耗他们大量使用量,并询问是否继续,提供浏览作为替代,或者使用更大的 -Interval 重新运行以获得更少的帧(例如,-Interval 4 将常规帧减半)。等待用户的回答。
  • 当进行完整审查时:最多同时运行两个子智能体,总共最多打开 100 帧,除非用户提供了其他数字或说“每一帧,无上限”。除非用户要求 Opus(如果用户要求,则使用它,但提醒一次这会消耗更多使用量),否则子智能体使用 Sonnet。给每个子智能体分配自己的帧范围以及 report.md 中相应的行,并要求它们只返回发现的问题。

粗略帧数估算:-Interval 2(默认值)每分钟视频产生 30 个常规帧,-Interval 4 产生 15 个,-Interval 10 产生 6 个,再加上每个场景变化最多两帧。

用户通常如何提问

用户说您应做
“审查 C:\path\to\video.mp4”浏览。
“对 C:\path\to\video.mp4 进行完整审查”完整审查,最多 100 帧(如果超过 5 分钟,请先询问)。
“...完整审查...,每一帧,无上限”对所有帧进行完整审查。如果超过 5 分钟,请先询问,说明这可能会消耗整个使用会话。
“...使用 Sonnet 子智能体” / “...使用 Opus”子智能体使用该模型(Sonnet 默认就是)。
“使用 Sonnet 浏览它,编写一个时间线文件,然后从时间线给我您的总体意见”运行工具,然后让一个 Sonnet 子智能体浏览审查包,打开关键帧样本(每个场景一个完全构建的幻灯片),并在审查文件夹中编写 timeline.md:每个场景一个条目,包含时间范围、简述叙述、简述屏幕文本、视觉效果描述以及任何问题。仅阅读该文件(您自己不再打开帧),并给出总体意见:结构、节奏、清晰度、视觉风格,以及幻灯片是否支持叙述。说明打开了多少帧。
“为 C:\path\to\video.mp4 制作审查 PDF,以便我可以将其附加到聊天中”运行工具,并给出 PDF 的完整路径。除非被要求,否则不进行审查或打开帧。
“制作一个时间线文件和一个关键帧 PDF ... 以便我可以将两者都附加到聊天中”使用 -KeyFramesPdf 运行工具(见下面的“与聊天 AI 共享”),并按上述方式编写时间线。

与聊天 AI 共享

对于长视频,不要附加完整的联系单 PDF(包含数百帧)。提供给用户两样东西:一个文本时间线文件(timeline.md,如上所述)和 关键帧 PDF,使用 -KeyFramesPdf 生成(如果不需要完整 PDF,则添加 -NoPdf;如果文件夹中已有审查,它会重用帧并秒级完成)。它包含大约 15 到 20 帧:每个场景一个完全构建的帧加上审查标记的帧,每个帧标有时间戳、场景名称和问题,小于 10 MB,保存为审查文件夹中的 key-frames.pdf。给出其完整路径。如果工具未能找到清晰的场景(没有编号的页脚徽标),它会均匀分布帧并在标签中说明。它自身无法发现视觉问题,所以如果您发现了一些问题(重叠、空白帧),在交付时指出哪些时间戳需要查看。完整 PDF 最适合短视频(如 Shorts),或者使用 -ChangesPdf 仅获取更改的帧。

3. 审查视频

  1. 阅读 report.md。顺序:警告;自上次审查以来的变化(仅当有上一次运行时:变化的帧,带有指向旧帧的链接以及添加和删除的单词);摘要;音频发现;叙述时间线(每行带有开始、结束和匹配分数);屏幕文本检查(拼写、阅读时间、数字、Shorts 安全区域);然后是每一帧的表格,包含时间、抓取原因、在 frames/ 中的文件名、该时刻的叙述、OCR 文本及其标记。“(暂停;上一行)”表示无人说话,并且显示的行是刚才说过的。
  2. 如果用户询问了什么发生了变化,或者存在变化部分,则从变化的帧开始:将每个帧与其前一帧并排打开,并说明变化。
  3. 将每个幻灯片与其叙述行进行比较。在浏览模式下,从报告中的 OCR 文本进行比较,只打开看起来有问题的帧(见第 2 节)。在完整审查中,在商定的上限内使用 Read 工具打开帧:首先是标记为 end of scene 的帧(每个都是即将变化之前的完整幻灯片)和 scene change 的帧(每个都是稳定后的下一张幻灯片),然后是每个被标记的帧,最后是叙述行发生变化或屏幕上有内容构建的常规帧。
  4. 将自动检查视为线索而非结论,并在帧图像中确认每个问题:
    • 拼写:OCR 可能会误读小字、模糊字或等宽字体文本,并且一些标记的单词可能是故意的(名称、故意展示的误听单词)。只报告图像确认的问题。
    • 阅读时间:被标记的幻灯片包含的新单词数量超过了给定单词/秒速度下可容纳的数量。带有许多标签的叙述性图表容易触发此检查;指出哪些幻灯片确实需要更多时间。
    • 数字:屏幕未显示的口语数字可能是真正的错配(幻灯片显示不同的数字),或者是 OCR 遗漏的数字(通常是大标题数字)。检查帧。
    • 安全区域:水平视频中 YouTube 叠加边距内的文本。默认边距是最谨慎的已发布参数,因此优先关注靠近底部和右边距的文本。
  5. 在您打开的帧中,还需通过肉眼检查:屏幕文本、数字、名称或标签是否与叙述不一致;截断或重叠的文本;低对比度;空白或黑色帧;占位符或遗留内容;标记为“未找到”的叙述行;以及报告中的音频问题(削波、真峰值高于 -1 dBTP、咔嗒声或爆音、视频中间的静音、远离约 -14 LUFS 的响度)。
  6. 简洁地报告:首先是问题,每个问题附上帧号和时间戳(例如 #14 00:22.00)以及问题描述,然后是音频发现,最后是工具无法检查的内容。如果一切匹配,则直接说明。除非用户要求,否则不要更改项目;如果标记的单词是正确的,可以建议将其添加到项目文件夹中的 review-words.txt。

PDF 文件

<名称>-review.pdf 位于同一文件夹中:封面页包含音频发现、检查和任何更改,然后每页 6 到 9 帧,每个帧标有时间戳、任何发现的问题(红色)、叙述行和 OCR 文本(蓝色,拼写错误带下划线)。它保持在 20 MB 以下。使用 -ChangesPdf 时,还会生成 <名称>-changes.pdf,仅包含更改的帧。当用户想要附加到 Claude 聊天或发送给他人时,给出完整路径。使用 -MaxPdfMB <n> 可以设置更小的限制。key-frames.pdf(使用 -KeyFramesPdf)是用于附加到长视频的文件。

相关技能