纸片动画解释器 是做什么的?
一个约 20-45 秒的竖屏解释性视频,看起来像是由多层手工纸拼贴而成,栩栩如生:带有投影的颗粒质感纸道具、刚性剪纸动画、带有定格纸颤效果的缓慢镜头推近、每拍一个的胶带标题横幅,以及逐字出现的撕纸标签字幕。基于 Remotion 构建,支持可选的 AI 生成纹理资产,以及任意 TTS 引擎。
每一拍都运行三条轨道:
- 画外音讲述故事
- 胶带横幅补充画外音跳过的硬事实
- 一组全新的纸道具场景演示画外音的内容,并用粗糙的纸拼贴风格重建产品 UI 进行演示
重用风格和叙事方式,不要使用示例中的内容。每个产品、公司和示例中的数字都是虚构的。风格规则位于 $MOTION_LIB/style/$MOTION_STYLE/docs/style-guide.md(第 2 节是风格 DNA)。
前置检查
- 库路径。 解析
$MOTION_LIB,否则使用${XDG_CONFIG_HOME:-~/.config}/motion-explainer/config.env中的MOTION_LIB=行,否则询问一次。切勿硬编码机器路径。阶段 1 到 4 不需要库。 - 安装模式。 在承诺某个阶段之前探测它(参见下面的安装模式)。
- 系列文件夹。 找到系列文件夹(它包含
episodes/)。如果存在,读取其中的SERIES.md。
运行模式(先询问)
- 完整视频,从创意到 mp4:阶段 1 到 8,然后在发布后执行阶段 9。
- 仅脚本:策略、钩子、脚本(在分镜表之后停止)。
- 基于现有脚本的故事板:
motion-storyboard。询问脚本、事实和 HOOK 块。 - 为其他工具提供风格提示:提供
$MOTION_LIB/style/$MOTION_STYLE/docs/style-prompt.md中的正确块并停止。 - 修复或重建一个场景:
motion-build(场景步骤),然后motion-qa。
信息收集(只询问缺失的信息)
- 来源:通常是一个链接(仓库、产品网站、公告)。其他所有内容都基于此进行研究。
- 视频要证明的一个主张,以及主题。
- 角色框架:谁或什么执行工作,谁提供建议或批准。与用户确认,切勿虚构产品行为。
- CTA 关键词以及观众获得什么(交付物)。
- 时长:默认 22-30 秒。
- 观众水平(来自
SERIES.md)以及任何强调色或吉祥物。
将答案作为 BRIEF 块写入 episodes/NN-slug/research/facts.md 顶部(格式见 motion-strategy)。
阶段
| # | 阶段 | 技能 | 读取 | 写入 |
|---|---|---|---|---|
| 1 | 策略 | motion-strategy | SERIES.md,来源 | research/facts.md 中的 BRIEF,SERIES.md |
| 2 | 钩子 | motion-hook | BRIEF | video/STORYBOARD.md 顶部的 HOOK 块 |
| 3 | 脚本 | motion-script | BRIEF,HOOK | research/facts.md,narration/script.json,STORYBOARD.md 中的分镜表 |
| 4 | 故事板 | motion-storyboard | script.json,STORYBOARD.md | STORYBOARD.md 中的镜头/剪辑表、场景块、音效计划 |
| 5 | 框架与计划 | motion-build | STORYBOARD.md | 项目,episode.json |
| 6 | 配音与时间线 | motion-voice | script.json,voice/voice.json | narration/ 录音,public/vo/captions.json,src/plan.json |
| 7 | 场景、音效、渲染 | motion-build | plan.json,STORYBOARD.md | src/scenes/*,tools/cues.json,out/*.mp4 |
| 8 | 质量检查 | motion-qa | 静帧,STORYBOARD.md | 修复,交付摘要 |
| 9 | 发布后 | motion-strategy(分析),motion-build(收集) | 平台数据,项目 | research/analytics/,库推广 |
项目文件
整个流水线基于文件,而非聊天会话。每个阶段读取上方列出的文件并写入自己的文件,因此新会话可以从任何阶段恢复。
<系列>/
SERIES.md 可选:观众、声音、调色板、吉祥物、关键词日志
voice/voice.json 可选:语音设置(复制 library/voice/voice.example.json)
video-assets/ 可选:叠加纹理和道具
research/analytics/ 可选:竞品研究和发布后分析
episodes/NN-别名/
research/facts.md BRIEF + 事实与来源
narration/script.json [{"id": "l1_hook", "text": "..."}, ...]
video/
episode.json 场景、横幅、钩子、间隙、背景音乐、剪辑
STORYBOARD.md HOOK、分镜表、镜头/剪辑表、场景块
库目录:style/$MOTION_STYLE/remotion/CATALOG.md(每个套件组件)和 $MOTION_LIB/core/audio/CATALOG.md(每个音效和背景音乐)。它们是自动生成的,因此新检出可能缺少它们或包含过时版本。运行 python3 $MOTION_LIB/core/tools/catalog.py 以重建。代理应读取目录,而不是套件源码。
重用优先于编写:套件组件、道具集或场景模板优于新的绘制代码。通过名称选择音效和背景音乐。
安装模式
- 最小化(仅技能):策略、钩子、脚本、故事板、风格提示。无渲染。
- 标准:最小化 + 使用占位语音(静音,或 macOS
say)通过$MOTION_LIB/core/tools/placeholder_vo.py进行构建和渲染,静帧 QA,音效和背景音乐音频,完整 mp4。 - 完整:标准 + 使用本地 Qwen3-TTS 画外音和基于真实音频的字幕。
探测(只读):
. "$(grep '^MOTION_LIB=' "${XDG_CONFIG_HOME:-$HOME/.config}/motion-explainer/config.env" | cut -d= -f2-)/env.sh" # 填充 MOTION_PY,QWEN_TTS_PY
node -v; ffmpeg -version | head -1
"$MOTION_PY" -c 'import numpy, PIL, soundfile'
"$QWEN_TTS_PY" -c 'import qwen_tts'
前三行通过表示标准模式。qwen_tts 导入也通过表示完整模式。如果一个阶段需要的条件超出安装模式提供的内容,用一行说明,从仓库根目录运行 ./install.sh --doctor,然后交给 motion-setup 而不是自行处理。使用 readlink 在已安装的技能文件夹(位于 .claude/skills、.agents/skills、.config/opencode/skills 或其他框架的技能文件夹下)或配置文件中的 MOTION_HOME 查找仓库根目录。
跨阶段规则
- 策略说明优先于风格说明:22-30 秒,不使用新闻框架的钩子。
- 并行化独立工作(场景组、背景与道具、重新渲染),一次使用多个代理。
- 仅在要求时渲染。在 Remotion Studio 中预览。
共享参考
$MOTION_LIB/style/$MOTION_STYLE/docs/style-guide.md:风格 DNA、纸片绘制方法、调色板、字体、纹理、相机与抖动、运动时间线、字幕、声音。$MOTION_LIB/style/$MOTION_STYLE/docs/style-prompt.md:为其他代理和生成器提供的便携提示。$MOTION_LIB/style/$MOTION_STYLE/docs/motion-principles.md:12 条动画原则映射到套件组件和辅助方法,并附有每个阶段的使用说明。$MOTION_LIB/style/$MOTION_STYLE/remotion/RECIPES.md:Remotion 组件草图,用于没有套件时。$MOTION_LIB/style/$MOTION_STYLE/docs/asset-prompts.md:生成什么与用代码构建什么,附带提示模板。$MOTION_LIB/style/$MOTION_STYLE/docs/frame-breakdown.md:一个约 28 秒的示例,以 0.2 秒为分辨率。复制其事件密度,而非内容。
交接
对于完整视频从阶段 1 开始,或根据运行模式从指定的阶段开始。信息收集后,运行 motion-strategy;它读取 SERIES.md 和 BRIEF,然后交给 motion-hook。每个阶段技能会命名下一个阶段。