1仕組みと動作原理
解説動画を機能ツアーではなく「論証」として定義する:パイプラインのいかなる作業に入る前にもナラティブを確定させ、1文に凝縮できるコアな主張を要求する。1文にまとめられない場合は、薄めるのではなくスコープを削る。
An explainer is an argument, not a feature tour.
script-first(スクリプト優先):VO(ナレーション)を主軸とし、画面は現在語られている1文のみを視覚化する。テキストを執筆・計測してから、絵コンテの描画とアニメーションに進む。
Write and time the words before you storyboard or animate — it is far cheaper to cut a sentence than a built scene.
ナラティブアークを5つのビートに分割し、それぞれに視聴者の内面台詞を割り当てる(Problem→Stakes→Solution→How→Payoff/CTA)。視聴者の生活世界に基づいた単一の比喩を使用し、途中で比喩を変更することを禁止する。
| Problem | Name the pain in their words | "That's me." |
パイプラインは6つの固定ステップ(Script → Storyboard → Build scenes → Narration & captions → Edit → Polish)で進行する。絵コンテ段階では1シーン1アイデアを徹底し、VOの各行を1つの視覚的意図に対応づける。
2. **Storyboard** — one idea per scene.
尺はVOから数式で導出する:基準は秒あたり約2.3語(140 wpm)、専門的な文言では約2.0語に減速。シーン長 = 単語数 / 発話速度 + ブレス時間。参考値:30秒 ≈ 69語、60秒 ≈ 138語、90秒 ≈ 207語。
`scene_seconds = line_words / pace + 0.4` (breathing room).
字幕は必須要素として扱う(ミュート状態での自動再生を前提)。2行以内、行あたり42文字以内、表示時間1.0秒以上と規定し、ズレを防ぐためRemotion内でカット点と同一のタイミング配列を共有させる。
In Remotion, drive captions from the same timing array used for scene cuts so they never drift.
成果物はRemotionプロジェクト+フレーム単位でレンダリングされたMP4:すべてのアニメーションはフレーム駆動(Date.now / Math.random / タイマーは禁止)。尺が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外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| 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推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: npx remotion still / render / compositions(SKILL.mdおよびscripts/README.mdの指示)
- 网络端点: 外部ネットワークアクセスの宣言: 同一パックのremotion-recipesに基づき@remotion/google-fontsを使用する場合、レンダリング時にGoogle Fontsからフォントを取得
- 本地工作目录: ファイル読み書きおよび成果物出力: out/*.mp4(完成動画)、out/*.gif、out/f-*.png(stillフレーム)
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…