产品演示
将本仓库中的应用程序转换为带评分、带字幕、逐帧完美的演示视频, 仅使用 Node + Playwright + FFmpeg。流水线是确定性的:整个演示 可以从干净的检出中重新渲染和重新评分。
流水线顺序
| 步骤 | 配方 | 输出 |
|---|---|---|
| 1. 脚本 | 01-script.md | 场景表、画外音台词(含时间码)、节奏网格 |
| 2. 独立 UI | 02-standalone-ui.md | 从静态文件夹渲染的应用组件 |
| 3. 合成 | 03-composition.md | 一个作为时钟纯函数的 React 树 |
| 4. 录制 | 04-record.md | PNG 帧 → 视觉无损 H.264 母版 |
| 5. 字幕 + 画外音 | 05-captions-vo.md | SRT/VTT 侧边字幕、带时间码的画外音脚本 |
| 6. 音效 | 06-sound.md | sfx-cues.json、实时预览播放器、自动混音器 |
| 7. 音乐 | 07-music.md | EQ 雕刻、闪避的背景音乐,从节拍开始 |
| 8. 合成 | 08-assemble.md | 片头 + 过渡 + 音轨 → 最终导出 |
按顺序执行各步骤;每个步骤都消耗前一步的输出。步骤 5-8 对于静默草稿是可选的,对于发布级质量是强制性的。
一个启动提示即可运行所有内容
当用户请求演示时,自己编排所有八个步骤。不要 将步骤列表交给用户或告诉他们使用下一个提示返回。 相反,在对话中直接询问用户,恰好在那些你 需要只有他们能提供的内容的时刻,并附上使问题在几秒钟内可回答的产物:
- 步骤 1 之后:显示场景表和画外音脚本,在编写任何代码前 请求批准。重新定时脚本成本低;重新定时已渲染的电影则不然。
- 初步渲染之后:显示 4 个关键帧,在长时间完整渲染前 请求继续。
- 步骤 5:移交已准备好粘贴的带标签画外音块(其中没有同步说明), 并请求生成的音频文件路径。
- 步骤 7:移交你编写的音乐生成器提示,并请求生成的 文件路径。如果用户更愿意一次访问工具,这两个请求可以与步骤 3 的请求分批处理。
- 评分预览之后:提供一小段以供试听,然后再导出最终母版。
在请求之间,无需确认直接继续。如果用户拒绝 可选资源(语音、音乐),则跳过它继续,而不是停滞。
进度跟踪(可恢复运行)
在目标仓库中维护 demo/PROGRESS.md:每步骤一行,包含
状态(待办 / 进行中 / 完成)以及生成的产物路径。在每次会话中首先
读取它;半完成的流水线从上次的问题处恢复,而不是重新开始。
在每步骤后更新它。
决策规则
- 用户没有脚本或故事 → 从 01 开始。永远不要从编写代码开始。
- 用户有卡顿的视频 → 仅步骤 04(逐帧录制可解决此问题)。
- 用户想要在现有视频上添加音效/SFX → 步骤 06(提示文件 + 混音器),如果需要音乐则接着步骤 07。
- 用户的演示“感觉不真实” → 01 和 03 中的诚实规则(真实数据、对账总计)。
- 用户询问时长/结构 → 45-60 秒,每场景一个主张,约 6 个场景, 弧线:问题 → 亮点 → 魔法 → 交互 → 证据 → 品牌。
- 语音克隆听起来缓慢平坦 → 05 中的修复方法。
- SFX 延迟或埋没 → 06 中的测量命中偏移 + 峰值归一化。
不可协商项(即使未询问也要强制执行)
- 诚实数据。 固定数据必须真实:真实物品、打印价格、对账 总计。永远不要编造更整齐的数字。
- 无淡入淡出。 所有元素都是盖章、滑动、撕裂或快切。淡入淡出 读起来像道歉。缓动最多存在于 3 个共享辅助函数中。
- 永不屏幕录制。 通过寻址合约逐帧渲染(04)。
- 没有声音胜过强迫的声音。 每分钟最多约 10 个提示,每 个故事转折一个,不要连续重复。
- 两个母版。 字幕内嵌版 + 纯净版,通过
window.__NO_CAPTIONS标志从同一合成生成。 - 无纯黑背景。 每个黑暗场景都位于产品自己的艺术品或 壁纸上,模糊并调暗;第一帧就是缩略图。 纯黑色仅在产品真实表面为黑色时使用(03)。
模板
工作脚本位于 templates/:record.mjs(确定性
Playwright 帧渲染器,可恢复)、mix-audio.mjs(基于提示的 ffmpeg
混音器;--vo 用于重定时的画外音音轨,--bgm 用于背景音乐)、
retime-vo.mjs(在静音处剪切生成的朗读内容,并将每个
短语放置在其作者时间码上)、sfx-cues.example.json(真实的 10 提示乐谱)、
package.json(npm 脚本)。将它们复制到目标仓库的 demo/ 目录中,并根据需要调整
路径;每个配方都会说明何时执行此操作。
互补技能
如果目标仓库使用 Remotion 或 ElevenLabs,也安装它们的官方 技能;本技能涵盖流水线和品味,它们涵盖各自的 API:
npx skills add remotion-dev/skills
npx skills add elevenlabs/skills
用户收到的内容(除视频外)
两个可粘贴的产物,因此人工工作量正好是两个粘贴 作业:用于语音工具的带标签画外音块(05)和用于音乐 生成器的风格提示(07)。永远不要让用户编写其中任何一个。
参考输出
四个演示证明了流水线在无关产品上的有效性:Vouch 演示
(54.3 秒,收据拆分)、一个 Excalidraw 演示(35.5 秒,使用真实的 @excalidraw/excalidraw npm 组件拍摄,源代码在此仓库的 examples/excalidraw 下)、Asakiri Studio(54 秒,一个 Tauri+React 课程编辑器,使用 esbuild 捆绑的真实组件)、以及 Colosseum(54 秒,一个 Qt/QML Windows 媒体应用,根据其令牌及其自身截图重建的界面;参见 02 中的原生应用路径)。Vouch 仓库
github.com/Anshgrover23/vouch 包含
完整的可运行 demo/ 目录、合成、供应商运行时、提示文件、
字幕,作为参考实现。包含每个数字和失败的手册:https://anshgrover23.github.io/product-demo-playbook/