端到端视频制作指南
一个运行指南:“下一步做什么”,按顺序列出,并附每条规则背后的失败原因,以便你可以质疑而非盲从。流程顺序对所有主题相同;模式决定具体实现。
0 · 选择模式
在开始任何工作之前决定,并在视频的 STATUS.md 中记录为 mode:。模式决定参考来源的选取以及画面的构成。
屏幕教程 tutorial | 插画讲解 illustrated | 混合模式 hybrid | 运动讲解 motion | |
|---|---|---|---|---|
| 教学内容 | 如何使用某个应用或工具 | 一个概念:病理学、生理学、任何科学 | 一个概念,以及应用该概念的工具 | 新闻事件、事故或案例及其教训 |
| 步骤 3 | 应用界面的侦察捕获 | 参考研究:图谱、显微照片、实物 | 根据每个 beat 同时进行 | 带来源的事实清单(屏幕上每个数字都有引用) |
| 步骤 9 | 最终捕获 | 无 | 仅针对应用相关的 beat | 无 |
| 画面 | 基于捕获参考构建的应用截图 | 通过 remotion-whiteboard 绘制的图画 | 每个 beat 使用其对应模式 | 排版、地图、报纸页面、仪表盘,通过 remotion-motion-explainer |
motion 模式不替代任何事物:任何 绘制 的内容(笔、手、逐笔绘制的图画)仍属于 illustrated 模式,并仍通过 remotion-whiteboard 处理。motion 的关卡 2 是负责人批准带有临时字幕的静音预览。
根据观众必须看到的内容来选择模式,而不是按习惯。 如果某个 beat 不需要真实界面,就使用插画模式。在没有模式区分的情况下,曾有人为不显示应用的病理教学视频准备了应用捕获素材。
流程顺序及其原因
0 选择模式 教程、插画或混合模式;以及风格
1 确定选题 角度、受众、一个核心观点
2 验证所有主张 在动笔写脚本之前完成
3 参考收集 捕获应用界面,或研究需要绘制的素材
4 撰写脚本 然后进行脚本检查
5 ── 关卡 1 ── 在开始任何录制之前,必须有人阅读脚本
5a 故事板 插画模式:每个 beat 一张图,在关键提示词处标记事件
5b 关键帧 ── 关卡 2 ── 负责人审批静态画面效果
6 录制旁白 sarvam-tts.py:克隆声音,每个 beat 录制一次
7 合成母版 输出到最终交付目标
8 测量 → 网格 → 文字 根据录制的旁白决定所有时间点,精确到每个字
9 最终捕获 教程和混合模式:脚本所需的精确操作流程
10 构建 在网格基础上构建插画(插画模式)或应用截图(教程模式)
10b 音效 根据画面添加音效,背景音乐,在旁白下方降低音量
11 视觉质量检查 检查是否存在探测问题、焦点单一、画面填充、事件间隔、2 秒规则、静音审查
12 渲染
13 发布 元数据、章节、上传、排期
语音优先于画面。 录制是时钟:每个 beat、动画和剪辑的定位都基于 测量的 音频,再根据每个单词转录的时间。此前曾出现单词计数估计在整段脚本上有 25% 的误差,且每个单词的中位数时间偏移达 1.3 秒。详见 references/mistakes.md。
捕获两次(教程、混合模式):在脚本之前进行侦察捕获,确保脚本只承诺应用能做到的事情;在流程明确后,进行最终的录制。
一次只聚焦一个内容。 按阅读顺序,一次只绘制或书写一个地方:笔记、图画、标签,然后是指针。视频必须能在静音状态下教学:focus-check.py 会测量这一点,并由新的智能体在静音状态下观察测试(09-motion.md, 11-visual-qa.md)。
两道人工关卡。 关卡 1:脚本检查,修改成本极低,而录制则不然。关卡 2:视觉效果检查,在构建每个 beat 之前,基于关键帧静态画面:没有它,v2 版本只能在空白的暗色背景上显示文字。
首先明确当前位置:通过 scripts/video-status.py 检查视频的 STATUS.md(status-and-resuming.md);在停止工作前,最后更新此文件。
不可妥协的原则
- 在写出一个句子之前,必须先有原始出处。 二手来源错误的频率很高,这一点没有商量余地。
- 模拟界面必须基于捕获的参考构建,绝不能凭记忆(教程、混合模式)。一个应用的 composer 在重建三次后仍然错误,直到测量了真实应用后才修正。
- 虚构的输出必须在屏幕上标明(
模拟 — 仅供示意);示意图需标注简化图。 - 任何帧中不得出现任何私人信息:演示、侧边栏、真实账户引用或幻灯片标签中均不允许(12-pathology-visuals.md)。
- 在采信之前,必须重新读取书面表单字段的内容。 键入的值可能静默出错。
- 绝不手动编辑时间文件(
beats.json,lines.json)。它们是由工具生成的。
该技能编排的其他技能
| 技能或工具包 | 在视频制作中的职责 |
|---|---|
| 本技能的工具包 | node <skill>/scripts/install-kit.mjs <project> --style paper-notes:安装组件、样式、字体、QA 和构建工具。首先安装 remotion-whiteboard 的工具包。 |
remotion-whiteboard | 任何绘制或手写的内容必需:笔画、手写文字、画笔。 |
motion-design | 为非绘制元素提供缓动和编排 |
remotion-best-practices | Remotion API 使用最佳实践 |
remotion-motion-explainer | motion 模式:其自身的模板、组件、语音/字幕/音效脚本及工作示例 (fridge-hack) |
video-promo-kit | 步骤 13(所有模式):缩略图变体(负责人挑选)、1:1 轮播 + LinkedIn PDF、YouTube 描述/章节/标签、LinkedIn/Instagram/WhatsApp 文案 |
youtube-uploader | 步骤 13:通过 Data API 上传(先试运行,负责人确认后使用 --confirm)、缩略图、字幕、播放列表、排期 |
如果没有 remotion-whiteboard,请在构建步骤停止并说明原因;绝不要临时拼凑绘制组件。install-kit.mjs 会强制执行此检查。
详细文档存放位置:在对应阶段阅读相应文件,不要提前
| 文件 | 对应阶段 |
|---|---|
references/01-plan-and-validate.md | 1–2 |
references/02-capture-reference.md | 3 和 9:捕获,或插画模式下的参考研究 |
references/03-script.md | 4–5,包括频道要求 |
references/07-art-direction.md | 0(风格)和 5a–10:作为数据存储的 house style |
references/08-storyboard.md | 5a–5b,关卡 2 |
references/04-voice.md | 6–8 |
references/09-motion.md | 8(单词时间)和 10:元素入场,每 2–4 秒的事件 |
references/05-build.md | 10:教程截图、白板画笔和绘图库 (objects.tsx) |
references/10-sound.md | 10b |
references/11-visual-qa.md, references/rubric.md | 11 |
references/12-pathology-visuals.md | 3 和 10,用于医学图像 |
references/13-longform.md | 超过 12 分钟的视频和章节 |
references/06-publish.md | 12–13:渲染、ready-to-upload/ → youtube-uploader → _uploaded/(以及 video-promo-kit 的推广材料) |
references/14-lessons-2026-10.md | 任何模式:测量的语音数据、Whisper 录制检查、单词提示、组件触发音效、来自 fridge-hack 构建的 QA 规则(E01 的经验教训已融入 04、05、06、09、11 和 mistakes.md) |
references/status-and-resuming.md | 恢复视频制作或记录决策 |
references/mistakes.md | 出现异常行为时:调试前先阅读 |
随技能提供的脚本:每个脚本都支持 --help,且仅读取指定的项目
| 阶段 | 脚本 |
|---|---|
| 状态检查 | video-status.py(根据模式显示视频当前步骤) |
| 4–5a | check-script.py(TTS 陷阱检查),check-storyboard.py(每个 beat 一张图、提示词、间隔) |
| 5b | draft-takes.py(在录制前生成草稿网格,仅用于关键帧) |
| 6 | sarvam-tts.py(通过 API 录制克隆声音;需要 SARVAM_API_KEY 环境变量;--respell 可指定一系列口语形式的映射) |
| 7–8 | check-takes.py(用 Whisper 检查每个录制是否与脚本一致),master-audio.py,build-audio-grid.py,word-timestamps.py(精确的单词时间) |
| 10 | install-kit.mjs <project>(安装工具包、样式、字体、工具、Python 虚拟环境),make-paper.py;工具包中还有 makeBeat/HL (beatspec.tsx) 和对象库 (objects.tsx, 静态测试 kit-objects) |
| 10b | sound-design.py |
| 11 | focus-check.py,frame-fill.py,event-gaps.py,gap-words.py(每个静态间隔中说的词),contact-sheet.py;工具包中的 tools/qa.mjs,tools/stills.mjs(中点、结尾、每 N 秒截图),tools/build-all.sh(如果画面过于静态则停止渲染) |
| 13 | chapters.py(从网格生成 YouTube 章节),captions-srt.py(根据单词时间生成上传字幕) |
模板:templates/ 目录下的 STATUS.md、STORYBOARD.md、MUTE-REVIEW.md。样式:styles/*.json。
格式
短视频:1080×1920,以 2160×3840 分辨率交付(使用 build-all.sh --deliver-4k)。时长 26–56 秒,一个核心观点;第一行和第一帧决定一切。底部 360 像素区域保持空白以放置 UI 元素。
长视频:1920×1080,30fps;时长 7 到 12 分钟,插画讲解授课模式为 15–30 分钟,以 3–5 分钟为章节构建(13-longform.md)。可选第二语言作为备用音轨。
过时内容
参考文件中的价格、模型名称、层级边界和法规定期日期均以头顶部的 measuredOn 日期为准。任何标记为 VERIFY 的内容在摄像机前说出之前,必须与其原始出处重新核对。切勿将本技能中的任何数字直接继承到脚本中。