1实现原理 · 为什么它能做到
把解说片定义为「论证」而非功能巡回:动任何流水线步骤之前先锁死叙事,且要求能压成一句话的核心主张——压不出来就砍范围,而不是缩小它。
An explainer is an argument, not a feature tour.
script-first:VO 是脊柱,画面只解释正在被说出的那句;先写词并计时,再画 storyboard 与动画。
Write and time the words before you storyboard or animate — it is far cheaper to cut a sentence than a built scene.
叙事弧拆成五拍并各给观众内心台词(Problem→Stakes→Solution→How→Payoff/CTA),并要求比喻唯一、取自观众世界,禁止中途换喻。
| Problem | Name the pain in their words | "That's me." |
流水线是六步固定序列(Script → Storyboard → Build scenes → Narration & captions → Edit → Polish),storyboard 阶段规定一场景一想法、每条 VO 行映射一个视觉意图。
2. **Storyboard** — one idea per scene.
时长由 VO 数学推导:约 2.3 词/秒(140 wpm)为基线、技术句降到 ~2.0,场景长度 = 词数/语速 + 呼吸量;参考值 30s≈69 词、60s≈138 词、90s≈207 词。
`scene_seconds = line_words / pace + 0.4` (breathing room).
字幕被视为必需品(默认静音自动播放),规定 ≤2 行、≤42 字符/行、屏上 ≥1.0s,并要求在 Remotion 里与切点共用同一计时数组以免漂移。
In Remotion, drive captions from the same timing array used for scene cuts so they never drift.
交付是 Remotion 工程 + 逐帧渲染的 MP4:全部动效帧驱动(禁 Date.now / Math.random / timer),时长依赖 props 时用 calculateMetadata 计算;验证走 still → inspect → encode。
A Remotion project with the composition registered (`<Composition>` + zod `schema` + `defaultProps`), all motion frame-driven (no timers / `Date.now()` / `Math.random()`).
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| cli | npx remotion still / render / compositions(帧渲染与编码) |
| package | Remotion + zod(composition 注册与 props schema)+ React |
| cli | ffmpeg / ffprobe(contact-sheet.sh 与 probe-mp4.sh) |
| cli | npx -y playwright(仓库根 seek-shot.sh,网页层兄弟 skill 用) |
| api | 无第三方业务 API;配音由用户自备或宿主侧 TTS 产出,skill 只要求把 VO 作为本地静态资源挂载 |
4风险提醒 风险提醒:橙色 · 评估后使用
- 渲染链依赖远程包并在本地执行项目代码 — `npx remotion …` 从 npm 取包并 bundle 执行;离线环境或私有 registry 场景需先本地锁定依赖,否则验证回路不可复现。
- 像素级验收仍靠人工 — 「字幕与当帧 VO 对齐」「文本不裁切」等均为视觉项,skill 只给检查单不给断言;批量产出时应自加帧级快照比对。
- 配音与素材来源在 skill 之外 — skill 只规定「VO 先写、计时进 props、用 `<Audio>` 承载」;实际 TTS/录音与版权归属由使用者负责,成片合规性不由本 skill 保证。
- 教学参数的锚定效应 — 2.3 w/s、20/15/45/20 占比、Inter 字阶是可复现起点,但套用到强节奏、无旁白或多语种场景会失真,需主动偏离。
- 同 pack 依赖悬空 — 验证脚本与另四个 skill 属同一 repo;单装本 skill 目录时 `scripts/` 与兄弟 skill 交叉引用都不可用。
5第二遍独立确认
- [ok] 外部依赖调用点复核(npx remotion / ffprobe / @remotion/google-fonts) — SKILL.md Verify loop 实际给出 `npx remotion still Explainer out/f-start.png --frame=0 --props='{...}'` 与 `npx remotion render Explainer out/explainer.mp4`;仓库根 scripts/probe-mp4.sh 确为 ffprobe 实现。@remotion/google-fonts 出现在同 pack 的 wrapped-video/references/remotion-recipes.md,本 skill 只写 `<Audio src={staticFile()}>`,故未把它记为本 skill 的行为。
- [ok] 无凭证 / 无业务 API 反查 — SKILL.md 与 reference 中无密钥、无 endpoint、无上传动作;`staticFile()` 指向项目内静态资源而非远端。判橙依据仅为远程包依赖,非凭据读取。
- [ok] 帧驱动纪律的内部一致性 — SKILL.md 的输出契约、Before-you-finish 第 4 条与另两份文档的「no Date.now() / Math.random() / timers」主张互相一致,并与 Remotion 的逐帧快照渲染模型相符(帧驱动才可 seek、可复现)。
- [ok] VO 数学与叙事两张表的自洽性 — SKILL.md 五拍表(讲「为什么与顺序」)与 Script formula 表(Problem 20% / Solution 15% / How 45% / Payoff 20%,讲「占比预算」)口径可对齐:How 占比最大对应「slowest — hold each step to read」;60s≈138 词与 2.3 w/s 自洽(60×2.3≈138)。
- [ok] 跨目录 / 跨 skill 引用可解析性 — 正文引用的 `scripts/contact-sheet.sh`、`scripts/probe-mp4.sh` 位于仓库根(单装本 skill 目录会悬空,需装整个 repo);把单场景网页动效分流到同 repo 的 diagram-animation,该 skill 确实存在于本 repo 的 skills/ 下,引用可解析。
- [ok] 功能声明 vs 实际能力 — frontmatter 宣称覆盖 script→storyboard→scene build→narration/caption sync→edit→polish 全链,正文六步流水线与 reference 的模板/计时表/字幕规范逐项兑现;未见夸大——未声称能自动配音或自动剪素材。
6结论
ae5f4f77121acf12…3e2d411b72