reel-editor
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseReel editor
Reel 编辑器
Turns a raw talking-head clip into a finished, on-brand vertical reel. Every brand choice (colours, fonts, caption style, sounds, CTA) comes from the person's brand file, never from defaults baked into this skill. You do the editing; they only make the calls that are theirs.
将原始口播片段变成一支完成度高的、符合品牌风格的竖版 Reel。每一项品牌选择(颜色、字体、字幕样式、声音、CTA)都来自当事人的 品牌文件,绝不使用内置在这个 skill 中的默认值。你负责剪辑;他们只做属于他们的决策。
Before anything else: is there a brand file?
开始其他操作前:是否已有品牌文件?
The workspace is unless is set.
~/reels/REELS_HOME- No → run the setup interview in
~/reels/brand.mdfirst. Do not edit a clip without a brand file, even if they say "just use whatever". The interview takes 5 minutes and it is the whole point of this skill.references/setup-interview.md - Brand file exists → read and
brand.mdin full, then continue.brand.json
工作区默认为 ,除非设置了 。
~/reels/REELS_HOME- 不存在 → 先运行
~/reels/brand.md中的设置访谈。即使他们说“随便用什么都行”,也不要剪辑片段。访谈需要 5 分钟,而这正是此 skill 的核心意义。references/setup-interview.md - 品牌文件存在 → 完整阅读 和
brand.md,然后继续。brand.json
Check the tools (once per machine)
检查工具(每台机器一次)
bash scripts/doctor.shbash scripts/doctor.shThe edit, in order
剪辑流程(按顺序)
Each reel gets its own folder: . Copy the raw clip in (never edit the original).
~/reels/<yyyy-mm-dd>-<short-name>/- Transcribe - . Uses ElevenLabs Scribe when
python3 scripts/transcribe.py <clip> transcript.jsonis inELEVENLABS_API_KEY(tight word timing; captions land on the word), else local Whisper (free, timing can drift ~0.3 s).~/.config/reels/.env - Clean the voice - (add
bash scripts/clean_audio.sh <clip> voice.wavif there is background noise). Targets -14 LUFS, the level Instagram and TikTok expect.--denoise - Review (their call) - propose: lines to cut (repeats, false starts, rambles), fillers to drop, CTA moved to the end, target under 60 s, and the graphics plan. Wait for their yes before cutting. This is the step people care most about.
Look at the start and end before proposing cuts: grab a frame every 0.5 s for the first and last 4 s. Cut any camera setup (pointing at the floor/garden, flipping the camera, reaching for the phone) even if words are spoken over it. Start on the first frame where they're settled in shot, and on a word that works as an opener.
- Main path: the Reel Review page. First check that the and
Artifacttools exist in this session (load them through tool search if they're deferred). If they do, followArtifactData: they tap words to cut, watch the live rough cut, check graphics, captions, sound and colour, then say "build preview". Its import step writesreferences/review.md+edl.json, so skip to step 4's cut and step 5.4's render.edit.json - Fallback: review in chat when those tools aren't there (older Claude Code, other apps). Show the transcript as numbered lines (format in ), then the card list in step 5.
references/rough-cut.md
- Main path: the Reel Review page. First check that the
- Tighten, then cut + speed - write from the approved lines, then
edl.json: it removes fillers and shortens pauses inside the kept lines, as hard as the brand'spython3 scripts/tighten.py <folder>says ("pacing"default,natural,tight; presets infast). They never approve these one by one. Thenscripts/pacing.py. Speed comes from the same preset unlesspython3 scripts/cut.py <folder>setsbrand.json. Listen-check: re-transcribe"speed"and confirm no clipped words at the joins.master.mp4 - Graphics + captions: fill the template, don't design. You are the editor here, not the designer - the look is already built from the brand file.
python3 scripts/transcribe.py master.mp4 master_transcript.json- → drafts
python3 scripts/auto_edit.py <folder>(captions in their caption mode, punch-ins)edit.json - Edit yourself, in one pass: set
edit.jsonon the one key word per sentence, and add cards at the density"accent": truebrand.jsonasks for:"graphics"about one every 8-12 s,minimal(default) every 4-6 s,balancedevery 2-4 s. A line with nothing to show gets no card; don't chart every number or screenshot every tool just to fill the gap. Card types and fields are in the header ofbusy; HyperFrames catalog motions (carousels, charts, counters, notifications, cursor, follow cards) are inscripts/build_reel.py. Every card must show what that exact line says.references/motions.md- Hook title: max ~10 characters per line, 2-3 lines (), so it renders big. It's the only text with an outline.
"still / uploading / screenshots?" - Carousel: if has
brand.json, every reel gets one ("require_carousel": truecard, amotionname,carousel-*from screenshots/their assets). If no line suits one, ask them; if they say no, setimages."no_carousel_ok": true - Screenshots: for a tool or site they name that the line is about, run . Exit code 2 means the site blocked it: try the tool's marketing page, or ask them for a screenshot. Never use a blank one.
bash scripts/screenshot.sh <url> shots/<name>.png - Mix the kinds: website shots, a colour block, a list card (for liquid glass), a sticker from their assets, a
"glass": truecard for the big moment, a counter or chart when they say a number.follow
- Hook title: max ~10 characters per line, 2-3 lines (
- for the draft (1080p, low priority), then
REEL_PREVIEW=1 bash scripts/render.sh <folder>once they approve it (the resolution inbash scripts/render.sh <folder> --final; addbrand.jsonon the CapCut route) →--capcut+ stage timings. Do not hand-write composition HTML or use other HyperFrames workflows here: they are slower and ignore the brand template. Only if they explicitly ask for an effect the template lacks (e.g. text behind their head), say it's slower, then use thefinal.mp4skill for that one effect.hyperframes
- QA - (loudness, size, length, missing words). Then grab a frame at every card and look: text inside the frame, readable over the background, on brand. Fix
python3 scripts/qa.py <folder>and re-run render.sh until it passes.edit.json - Deliver - → upload-ready MP4 in their delivery folder.
bash scripts/deliver.sh <final.mp4> "<clear name>" - CapCut (only if has
brand.json) - build the editable CapCut draft and give them the link."capcut": true.references/capcut.md
Tell them what changed, and what to check by ear (cuts, names, brand words spelled right).
每个 Reel 使用独立文件夹:。将原始片段复制进去(绝不编辑原文件)。
~/reels/<yyyy-mm-dd>-<short-name>/- 转录 - 。当
python3 scripts/transcribe.py <clip> transcript.json中存在~/.config/reels/.env时使用 ElevenLabs Scribe(词级时间定位精准;字幕可准确落在单词上),否则使用本地 Whisper(免费,但时间定位可能漂移约 0.3 秒)。ELEVENLABS_API_KEY - 清理人声 - (存在背景噪声时添加
bash scripts/clean_audio.sh <clip> voice.wav)。目标为 -14 LUFS,这是 Instagram 和 TikTok 所期望的响度。--denoise - 审片(由他们决定) - 提出:建议剪掉的片段(重复内容、说错后重开的开头、冗长离题内容)、应删除的填充词、将 CTA 移到结尾、控制在 60 秒以内,以及图形方案。在剪切前等待他们确认。 这是用户最看重的环节。
在提出剪切建议前查看开头和结尾: 每 0.5 秒截取一帧,查看前 4 秒和后 4 秒。删掉所有摄像机设置画面(镜头对着地面或花园、翻转镜头、伸手拿手机),即使画面上有人在说话也要删除。从人物在镜头中稳定就位后的第一帧开始,并以适合作为开场的一个词作为起点。
- 主要路径:Reel Review 页面。 先检查当前会话中是否存在 和
Artifact工具(如果工具被延迟加载,则通过工具搜索加载)。如果存在,则遵循ArtifactData:用户点按要删除的词语,查看实时粗剪效果,检查图形、字幕、声音和色彩,然后说“生成预览”。其导入步骤会写入references/review.md+edl.json,因此跳到第 4 步的剪切和第 5.4 步的渲染。edit.json - 备用路径:当这些工具不存在时,在聊天中审片(适用于较旧的 Claude Code、其他应用)。按 的格式将转录稿显示为带编号的行,然后显示第 5 步中的卡片列表。
references/rough-cut.md
- 主要路径:Reel Review 页面。 先检查当前会话中是否存在
- 收紧剪辑,然后剪切 + 加速 - 根据获批的行写入 ,然后运行
edl.json:它会删除填充词,并按照品牌文件中的python3 scripts/tighten.py <folder>预设尽可能缩短保留行内的停顿(默认"pacing";另有natural、tight;预设见fast)。这些调整无需逐项审批。然后运行scripts/pacing.py。除非python3 scripts/cut.py <folder>设置了brand.json,否则速度沿用同一预设。试听检查:重新转录"speed",确认连接处没有词被截断。master.mp4 - 图形 + 字幕:填充模板,不要重新设计。 你是这里的剪辑师,不是设计师——视觉风格已经由品牌文件定义。
python3 scripts/transcribe.py master.mp4 master_transcript.json- → 生成
python3 scripts/auto_edit.py <folder>草稿(包含其字幕模式下的字幕和推进镜头)edit.json - 一次性自行编辑 :为每个句子中的一个关键词设置
edit.json,并按照"accent": true中brand.json要求的密度添加卡片:"graphics"约每 8–12 秒一张,minimal(默认)每 4–6 秒一张,balanced每 2–4 秒一张。没有可展示内容的句子不加卡片;不要为了填充空档而给每个数字配图表,或给每个工具配截图。卡片类型和字段见busy文件头;HyperFrames 目录中的动效(轮播、图表、计数器、通知、光标、关注卡片)见scripts/build_reel.py。每张卡片都必须准确呈现对应句子所表达的内容。references/motions.md- 钩子标题: 每行最多约 10 个字符,共 2–3 行(),以便大字号呈现。这是唯一带描边的文字。
"still / uploading / screenshots?" - 轮播: 如果 中有
brand.json,每个 Reel 都必须包含一个轮播("require_carousel": true卡片,使用motion名称,图片来自截图或其素材)。如果没有任何句子适合做轮播,就询问他们;如果他们同意不用,则设置carousel-*。"no_carousel_ok": true - 截图: 对于句子所涉及的、他们提到的工具或网站,运行 。退出代码 2 表示网站阻止了访问:尝试该工具的营销页面,或请他们提供截图。绝不能使用空白截图。
bash scripts/screenshot.sh <url> shots/<name>.png - 组合不同类型: 网站截图、纯色块、列表卡片(设置 以实现液态玻璃效果)、来自其素材的贴纸、在重点时刻使用的
"glass": true卡片,以及当他们提到数字时使用计数器或图表。follow
- 钩子标题: 每行最多约 10 个字符,共 2–3 行(
- 使用 渲染草稿(1080p,低优先级),待他们批准后,再运行
REEL_PREVIEW=1 bash scripts/render.sh <folder>(分辨率取自bash scripts/render.sh <folder> --final;在 CapCut 流程中添加brand.json)→--capcut+ 各阶段耗时。 不要在此手写 composition HTML,也不要使用其他 HyperFrames 工作流:这些方式速度更慢,而且会忽略品牌模板。只有当他们明确要求模板不支持的效果(例如让文字位于人物头部后方)时,先说明这种方式更慢,再仅为该效果使用final.mp4skill。hyperframes
- 质量检查 - (响度、大小、时长、词语缺失)。然后在每张卡片出现的位置截取一帧并检查:文字位于画面内、在背景上清晰可读、符合品牌规范。修复
python3 scripts/qa.py <folder>并重新运行 render.sh,直到通过检查。edit.json - 交付 - → 位于其交付文件夹中的可上传 MP4。
bash scripts/deliver.sh <final.mp4> "<clear name>" - CapCut(仅当 中有
brand.json时) - 创建可编辑的 CapCut 草稿并提供链接。参见"capcut": true。references/capcut.md
告诉用户做了哪些改动,以及哪些内容需要通过听感检查(剪切点、姓名、品牌词的拼写是否正确)。
Their brand rules win
品牌规则优先
If the brand file and your taste disagree, the brand file wins. If they correct something during an edit ("no, never outline captions"), add it to under "Rules" straight away so the next edit gets it right.
brand.md如果品牌文件与你的审美判断冲突,以品牌文件为准。如果他们在剪辑过程中纠正了某项设置(“不,字幕永远不要加描边”),立即将其添加到 的“Rules”下,确保下次剪辑时正确应用。
brand.mdCommon mistakes
常见错误
| Mistake | Instead |
|---|---|
| Editing before a brand file exists | Run the setup interview |
| Cutting on Whisper word times blindly | Check the joins; nudge cuts into the quiet gap between words |
| Graphics that decorate instead of illustrate | Each card shows what this exact line says |
| Captions in a font the brand file bans | Re-read brand.md "Rules" before step 5 |
| Saying CapCut works everywhere | It doesn't (see capcut.md). The MP4 route always works |
| Fixing QA failures by lowering the bar | Fix the edit, re-run QA |
| 错误 | 正确做法 |
|---|---|
| 品牌文件存在前就开始剪辑 | 运行设置访谈 |
| 盲目按照 Whisper 的词级时间戳剪切 | 检查连接处;将剪切点微调到词语之间的安静间隙 |
| 用图形进行装饰,而不是阐释内容 | 每张卡片都要呈现对应句子的具体内容 |
| 使用品牌文件禁止的字幕字体 | 在第 5 步前重新阅读 |
| 声称 CapCut 在所有环境都可用 | 并非如此(参见 |
| 通过降低标准来修复 QA 失败 | 修复剪辑,然后重新运行 QA |