B-roll 处理
目标:每个B-roll视频只需观看一次,挑选最佳瞬间,仅保留这些片段。每个保留的片段以1秒缓冲区剪裁,并根据内容打上标签,以便以后无需重新观看即可找到任何镜头。
本技能专为 Claude Code 和 Runneth 构建。它需要三样东西:
- 查看视频的方式: 在 Runneth 中,由视频模型观看。Claude 无法观看视频,因此它会读取静态帧:每秒2帧的小型接触印相板来寻找瞬间(
ffmpeg -i IN.mp4 -vf fps=2,scale=160:-2,tile=10x6 sheet_%02d.jpg),全尺寸帧来判断它们(ffmpeg -ss <time> -i IN.mov -frames:v 1 frame.jpg),如果有音频转录也一并使用。如果无法转录,则仅凭帧工作。 - 剪辑视频的方式: ffmpeg 或任何视频编辑器。
- B-roll 库文件夹: 一个存放片段以及两种文本文件(索引和每个拍摄日一个文件)的地方。模板位于此文件旁边的
templates/文件夹中。
用日常用语与剪辑师交流,一次只谈一个想法。
开始之前:工具
在 Runneth 中,所有内容都已安装:跳过此部分。
在 Claude Code 中,本技能需要 video-editing-setup 技能安装的免费视频工具。静默检查 ~/.video-editing-tools/bin/ffmpeg -version 是否可运行。如果可以,则在本技能所有提到 ffmpeg、ffprobe 或 python3 的地方使用 ~/.video-editing-tools/bin 中的工具(ffmpeg、ffprobe、python),然后继续。如果不可行,请先按照 video-editing-setup 技能操作,然后返回此处。
第0步:先问一个问题
在执行任何其他操作之前,请准确地向剪辑师提出这个问题,作为一个包含两个选项的问题:
“你是想让我先给你看时间戳候选,还是直接开始工作?”
- 先给我看候选 → 遵循下面的每一步,包括第3步(剪辑师挑选)。
- 直接开始工作 → 从头到尾不间断地运行每一步。在第3步中,使用“什么时刻值得保留”自行挑选瞬间。沿途无需征求批准、项目名称或任何其他内容;在拍摄文件中将未知项留为
_not given_,并在最后一次性提及它们。
如果剪辑师已经在他们的消息中说明了选择(“直接做”、“别问我”、“给我看候选”),则跳过此问题。如果没有人回答,则视为“直接开始工作”。
第1步:在片段被剪裁之前保留完整视频
- 原样保存每个B-roll视频,完整长度,并使用简单的名称:
broll-<n>-<what-it-is>.<ext>(例如broll-4-unboxing.mov)。注明它所属的项目和品牌,以及拍摄日期。 - 检查其长度和方向。
- 制作一个轻量级的工作副本用于观看和挑选。使用 ffmpeg:
ffmpeg -i IN.mov -vf scale=540:960 -c:v libx264 -preset veryfast -crf 25 -g 15 -pix_fmt yuv420p -c:a aac -b:a 96k -movflags +faststart OUT.mp4(短关键帧间隔使其滚动流畅;对于横向素材,将 540:960 互换为 960:540)。
第2步:标记视频
- 观看工作副本,并编写一个覆盖视频每一段、没有间隙的工作映射图:时间范围、来自库标签列表的标签,以及一句描述发生了什么的话。不可用的片段也应保留在映射图中,并附带简短说明原因(例如“失焦”、“检查画面”),以表明已检查过它们。映射图仅用于查找候选片段;它在工作副本被删除时一起删除,只有保留的片段才会获得保存的标签。
- 检查AI查看器无法知道的内容:这是谁的素材?屏幕上的产品是否真的是品牌的产品(镜头中的咖啡只是咖啡)?以及任何看起来不对劲的地方。使用小型接触印相板寻找瞬间,在调用任何瞬间可用之前查看全尺寸帧。小帧会隐藏柔软的产品和创作者的视线方向。
- 一个很好但无法使用的创意会成为重拍笔记。
- 根据素材本身,用一句话命名每个视频的要点(它被拍摄用来展示什么)。第3步始终保留展示该要点的瞬间,如果该瞬间可用的话。
- 说明每个视频是 生活化(镜头中没有产品,可重复用于任何品牌)还是 产品 素材。
第3步:挑选瞬间
如果剪辑师想先看候选:
- 将工作副本和一份简短的、来自工作映射图的最强瞬间列表提供给剪辑师,作为起点。
- 剪辑师标记每个他们想保留的瞬间:开始时间、结束时间以及 原因。任何格式均可(选择器应用程序、电子表格、笔记文档、消息中的时间戳),只要每个候选都有开始、结束和原因。
- 原因和时间一样重要。它们是本技能学习剪辑师审美的方式(第4步,第6项)。
如果剪辑师说直接开始工作:
- 自行挑选瞬间,按顺序使用“什么时刻值得保留”。始终保留视频的要点(规则4)并保存常青镜头(规则9)。
- 当同一动作出现多次时,保留最干净的一次。
- 为每个候选记录开始时间、结束时间和一行原因。
- 在剪裁前,使用全尺寸帧检查每个候选的每一帧,至少从开始到结束每半秒检查一次(不仅仅是中间部分):产品是否锐利、眼睛是否符合规则3、时间是否正确(AI生成的时间是近似的,不精确)。丢弃任何不合格的候选,或将其修剪到符合要求的部分。
- 在保存前,比较每个视频中的候选片段。当两个候选显示几乎相同的镜头时(相同的构图、相同的主题),只保留动作最多的那个,丢弃另一个(规则11)。
第4步:剪裁片段并保存
- 从原始文件以全质量剪裁每个候选片段,在候选时间前后各添加 1秒额外素材,并限制在视频的开始和结束范围内。命名每个片段为
<shoot-date>-v<video>-<pick>-<what-happens>.mp4(例如2026-10-22-v4-4-unbox-tear-top.mp4)。日期可以防止名称冲突,因为同一个品牌的所有拍摄都位于同一文件夹中,并且每个拍摄的视频编号会重新开始。使用 ffmpeg,高质量剪裁为-c:v libx264 -crf 16。如果片段太大而无法移动到目标位置,则可以稍微提高 crf(18)而不是缩短它。 - 没有长度(开始等于结束)的候选是笔记,而不是片段。它应放入拍摄文件的重拍笔记中(例如“失焦,需重拍”)。
- 将片段存储在品牌的B-roll文件夹中,这是该品牌所有B-roll素材跨项目存储的唯一位置。
- 编写拍摄文件,每个拍摄日一个文件,放在库文件夹的
shoots/<shoot-date>-<brand>.md(模板:templates/shoot-file.md):包括每个视频的要点,然后列出每个保留的片段及其文件名、候选时间、标签、发生了什么以及被选中的原因。剪辑师的原因逐字记录;AI编写的原因标记为“(AI)”。最后附上重拍笔记以及该品牌仍然缺少的镜头。 - 将每个片段添加到库索引的“按标签查找”表格中对应标签下。第一次使用时,从
templates/b-roll-library-index.md开始创建索引。然后删除原始完整视频和所有工作副本。仅保留挑选出的片段。 - 从原因中学习:将 剪辑师 的每个原因转化为一般规则,并将其合并到下面的“什么时刻值得保留”中(或当涉及片段在视频中的位置时,合并到B-roll选择技能中)。保持列表简短:重写和合并规则,而不是堆砌新规则。只有剪辑师的原因会改变规则;标记为“(AI)”的原因保持原样。
- 如果剪辑师后来拒绝了某个保留的片段,则将其删除,从拍摄文件和索引中移除,并将他们的原因转化为一条规则。
后续查找B-roll
当有人询问某种类型的镜头时(“这个品牌的拆箱”、“我看起来很累”),在库索引的“按标签查找”表格中查找,并返回匹配的片段。裸标签(pet)匹配其下的每个细节(pet:cat、pet:dog)。生活化片段适用于任何品牌;产品片段属于它们自己的品牌。
什么时刻值得保留
这些规则来自一位真实剪辑师在某次UGC产品拍摄中的挑选和原因。按顺序应用它们,然后随着剪辑师理由的录入,用您自己剪辑师的规则替换它们。
- 动作为王。 镜头中最好的时刻是发生变化的时刻:转头、手势、新表情、宠物走进来。没有任何移动的镜头看起来像照片。静态镜头仅作为简短的点缀保留(干净的产品特写);打上
static标签。 - 传达情感的面部。 叹气、打哈欠、双手抱头、灿烂笑容。表情本身就能传达台词的感受。
- 带有意图的眼神。 仅当有目的性时才看向镜头:自拍、对观众说话或反应、向镜头展示产品。否则,目光应属于镜头的主体(饮料、笔记本电脑、包装)。如果创作者只是坐在那里时看向镜头,或者目光扫向一侧,那是他们在检查自己在画面中的样子(通常是一旁设置的手机屏幕),那一段不是正式拍摄。真正的拍摄是创作者没有在检查的那一段:打哈欠、搅拌、叹气。在每个检查之后开始,在下一个检查之前结束;如果一个片段中检查画面超过一次,则跳过该片段。
- 视频的要点总是被保留。 每个B-roll视频都是为了展示某些东西而拍摄的,最清晰展示该要点的瞬间始终要保留。从素材本身解读要点:视频大部分时间在展示什么,或者创作者设置然后展示了什么。要点可以是任何东西:产品流畅倒出、竞争对手的粉末结块、凌乱的“使用前”、宠物做有趣的事。展示产品有效果是一种要点,但不是规则。如果展示要点的瞬间不可用(模糊、出画),则它成为第一个重拍笔记。
- 画面中的生活真实感。 宠物、有趣的小瞬间(扔掉空包装)和其他计划外的细节让B-roll感觉真实,并为观众提供看点。
- 自然、好看的版本。 当创作者将同一动作做两次时,看起来自然、像真人的版本胜出(比如用手捂住嘴打哈欠)。
- 焦点锐利。 当产品和面部都在焦点内时,镜头才算合格。在全尺寸帧上判断焦点,绝不在接触印相板上判断。如果产品在镜头中任何地方都不清晰,则整个镜头不合格。一个很好但模糊的创意会成为重拍笔记。
- 产品展示完整。 展示完整包装,并翻转展示背面。翻转增加了动感并介绍了产品,背面带有成分等细节。
- 常青镜头,每次必存。 从每次产品拍摄中都保存这些镜头,即使当前视频不会使用它们:拆箱(撕开、看里面、取出一个)、使用中的产品(打开、倒出、混合、啜饮)、指着成分、创作者与产品合影、干净的产品特写、手持产品。任何好的特写也值得保存(举到镜头前的杯子、混合中的手);打上
closeup:<what>标签,以便可以将其用作简短的点缀。 - 短小精悍。 一个干净的2秒片段就是一个可用的片段。
- 每种镜头只保留一个版本。 当两个瞬间看起来几乎相同时(同一个杯子靠近镜头),只保存有动作发生的那一个(搅拌它)。静态版本绝不与它同时保存。
- 直接切入主要动作。 每个B-roll视频都有一个它被拍摄用于的“回报动作”(把毯子拉到自己身上、倒出、打哈欠)。候选片段应包含该动作,并在其前仅留一个节拍。设置和摆弄(调整毯子、重新排列枕头、准备包装)应该排除在外,即使它们在同一段中。
每个标签的规则
- 每个保留的片段都有开始、结束、标签、简单的描述和原因。
- 标签仅描述片段中可以看到的内容,这样任何人在不知道品牌或脚本的情况下标记同一片段都会选择相同的标签。片段对视频的 含义(如“使用前”镜头、痛点)稍后在B-roll选择技能中决定。
- 在可见且有人可能搜索时,在冒号后面添加细节(
tag:<what>)。 - 时间来自原始文件的时间轴。拍摄文件记录候选时间;片段本身从1秒前开始。
- AI生成的时间是近似的,不精确。在剪裁前使用全尺寸帧进行检查。