reel 是做什么的?
文件位置与首次设置
- 管线文件夹 = 本技能所在的
video-pipeline文件夹(位于此文件上方三级:video-pipeline/.claude/skills/reel/SKILL.md)。所有命令均从该文件夹运行。 项目位于其内部的projects/<日期>-<短横命名>/中。 - PY = 管线自带的 Python。以下所有命令均使用它,切勿使用系统 Python:
Windows 上为
.venv/Scripts/python.exe,Mac 或 Linux 上为.venv/bin/python。 - 如果 PY 尚不存在,请先进行设置,无需用户输入任何内容:
运行
python install.py(Windows 上为py install.py,Mac 上为python3 install.py)。如果遇到“ffmpeg is missing”或“git is missing”而停止,请为用户安装该工具(Windows:winget install ffmpeg/winget install Git.Git;Mac:brew install ffmpeg),如果新命令未找到,告知用户重启 Claude Code,然后再次运行安装。 当安装程序打印 READY 后,运行PY scripts/selftest.py并确认输出9/9 passed。
风格(每个参考一次)-> 1 简报 -> [门控:用户批准脚本] -> 2 拍摄(用户)
-> 3 对齐 -> 4 剪辑 -> 5 特效 -> 6 预览 -> [门控:用户反馈,循环] -> 7 最终版本
您负责撰写、剪辑和渲染。用户负责拍摄、批准和发布。所有内容均不会从此处发布。
0. 从参考视频获取风格(当用户发送参考剪辑时)
PY scripts/style_ref.py <参考视频.mp4> [更多参考视频] --name <风格名称>- 打开其在
styles/refs/<风格名称>/中写入的每张图片,并读取 report.json 中的数字。 - 编写
styles/<风格名称>.json,仅包含与styles/default.json不同的键: 字幕字体/字号/颜色/位置/每组合字数/大写、屏幕文字外观、剪辑紧密程度(cut.max_gap:快速剪辑时更小)、特效间距(effects.min_gap,来自参考节奏)、响度。 - 编写
styles/<风格名称>.md:用通俗语言描述剪辑效果。哪些特效(51种)匹配了您看到的动作、屏幕上的动作频率、开头的钩子方式、以及它从不做什么。添加测量到的数字(每分钟剪辑次数、镜头长度)。 - 向用户展示 .md 文件,并询问哪些地方理解有误。您看到的只是采样帧,而非运动或声音:请坦诚说明,并要求用户提供他们喜欢的精确时间戳(
--at 7.2,12会抓取这些帧)。
字体:字幕可以使用 vendor/claude-video-effects/fonts/ 中的任何字体(Montserrat, Anton, Archivo Black, Inter, Instrument Serif, Playfair Display, Space Mono, Permanent Marker)或用户拖入 fonts/ 的任何 .ttf/.otf 文件。
1. 简报
PY scripts/new_project.py "<短横命名>" --lang id --style <风格>(lang:id、en 或 auto)。- 如果存在
~/.claude/youtube/voice.md或~/.claude/instagram/voice.md,请阅读它们。使用用户的语言和语气进行写作。切勿编造任何数字、结果或客户;请询问,或留作{{angka}}。 - 填写
script.json:用户将说出的每句话占一行,角色为hook/body/cta。- 钩子:撰写3个选项,推荐其中一个,使其口语时长保持在约3秒以内。
onscreen:钩子的简短文本(以及任何需要标题卡的行)。effects:在某个单词上提示特效:{"fx": "backdrop-word", "on": "GRATIS", "text": "GRATIS"}。 从风格的 .md 中选择。每个效果之间至少间隔effects.min_gap秒。并非每行都需要特效。需要使用用户自己片段的效果(orbit,phone-fan,place-in-grid,fan-build,noise,profile-wall,carousel-spin)需要"images": "<文件夹>"。- 图表和计数器(
liquid-glass-graph,over-the-shoulder-zoom)仅在有真实数字时使用。
- 在旁边编写
brief.md:包含钩子选项、用户将阅读的脚本、每个特效的拍摄注意事项(“第4行:头顶上方留出空间”),以及来自templates/shooting.md的拍摄规则。 - 门控: 展示脚本并停止。在用户批准之前不要继续。
2. 拍摄(用户)
他们将文件放入 <项目>/raw/ 中。多个文件可以;它们将按名称顺序使用。
3. 对齐
PY scripts/transcribe.py <项目>(首次运行会下载 Whisper 模型)。 录音中多次重启,或剪辑仍然重复某些词?请改用PY scripts/burst_transcribe.py <项目>:它会独立转录每一段连续语音(使用 large-v3-turbo),因此暂停后的重启永远不会合并到下一个镜头中。如果词语仍然吞没停顿,在对齐前运行PY scripts/snap_words.py <项目>。PY scripts/align.py <项目>。以简短形式向用户报告: 缺失的台词、没有完整镜头的台词,以及任何听起来值得保留的即兴发言。除非某句台词缺失,否则不要因此停止;在预览时提及它们。
4. 剪辑
PY scripts/cut.py <项目>
纯语音 Reel(用户只录制语音,画面全部由动态图形构成):
改用 PY scripts/cut_voice.py <项目> -> 生成 work/voice.wav(干净,-16 LUFS)和 work/prog_words.json(每个保留的词及其在剪辑轨道中的时间)。在此基础上构建视觉效果(如果用户有 HyperFrames,则使用它,否则使用用户自己的编辑器)。特效步骤需要人脸,因此跳过它。
无许可证的背景音乐: 如果存在 .venv-music/(通过 python install.py --music 创建),使用以下命令生成背景音乐:.venv-music/<Scripts|bin>/python scripts/music_bed.py work/bed.wav --seconds 30 --seed 1 --prompt "<情绪>, no vocals",监听间隙(如果节奏不均,尝试其他随机种子),并设置 "music": {"file": "<绝对路径>/work/bed.wav", "db": -22}。
5. 特效
PY scripts/effects.py <项目> plan。通过编辑script.json中的提示修复任何警告。PY scripts/effects.py <项目> check,然后查看work/check/fx_*.png中的每一张。 如果文字挡脸、被边缘裁剪、或难以辨认,请修复选项(x、y、缩短text)并再次检查。PY scripts/effects.py <项目> render。这是最慢的步骤(每一帧都经过人脸追踪)。告知用户正在运行。
6. 预览
PY scripts/finish.py <项目>->preview/preview_vN.mp4。PY scripts/finish.py <项目> --check <t1,t2,...>,在每个特效的中间时刻以及另外两三个时段进行检查。查看 PNG 图片:字幕是否与特效冲突、钩子文字是否难以辨认、是否有任何内容遮挡人脸。在展示之前修复。- 门控: 向用户提供预览路径和一份简短的剪辑列表:使用的镜头、被剪掉的内容、特效及其位置。请求反馈。
将反馈转化为修改
| 反馈 | 修改 | 从哪一步重新运行 |
|---|---|---|
| “使用第3行的另一个镜头” | choices.json {"take": {"3": 1}} | 对齐 |
| “保留我在0:14说的话” | choices.json {"keep_unmatched": ["u3"]} | 对齐 |
| “删除第5行” | choices.json {"drop_lines": [5]} | 对齐 |
| “剪辑太紧/太松” | 风格 cut.max_gap、cut.post_pad | 对齐 |
| “那里不要特效” / “字大一点” | script.json 中的特效 | 特效计划 |
| 字幕外观、屏幕文字 | 风格 captions / onscreen,或脚本 onscreen | 完成 |
| 音乐 | script.json "music": {"file": "...", "db": -22} | 完成 |
从某个阶段重新运行意味着该阶段之后的所有阶段也需要重新运行。重新运行对齐或剪辑意味着特效需要再次渲染(较慢),因此请先汇总所有反馈。
7. 最终版本
PY scripts/finish.py <项目> --final->final/final.mp4和final/cover.jpg。- 编写
final/caption.md:- 前约125个字符需体现钩子;这是信息流在“更多”按钮之前显示的全部内容。
- 一个行动号召。如果是“评论 关键词”,它需要与视频匹配。
- 最多5个话题标签,与主题相关,放在末尾。使用用户的语言和语气。
- 不要编造数字。不要使用“stop scrolling”,不要使用话题标签墙。
- 用一句话提醒用户:热门音频需在Instagram内添加,并且由用户自己发布。
规则
- 风格的 .md 文件是品味的依据。如果对是否添加某个内容不确定,就省略它。
- 切勿遮挡人脸。切勿缩放超过2倍。
- 对局限性直言不讳:编辑器能很好地选择镜头和节奏;它无法判断用户的表达表现。如果某个镜头听起来平淡,说“检查第3行的语气”,不要假装您听出了区别。
- 将
projects/排除在 git 之外:原始素材文件大且涉及隐私。