Communitygithub.com

motion-storyboard

在编写任何代码之前,为纸艺风格脚本制作故事板。为每个场景编写摄像机/剪辑表、带帧级事件的分镜块、音效计划和证明节拍。用于“为该脚本制作故事板”或“规划摄像机运动与剪辑”。

motion-storyboard 是什么?

motion-storyboard 是一种 AI 助手技能,专为基于纸艺动画风格的脚本生成高质量故事板。它强制要求在执行任何代码之前,先通过结构化的故事板文档规划每个场景的摄像机运动、剪辑方式、帧级事件和音效,确保视觉叙事的一致性和创意控制。该技能支持在所有主流 AI 编码代理平台上运行,如 Claude Code、Cursor 和 Codex,通过读取 `narration/script.json` 和 `video/STORYBOARD.md` 等本地文件来驱动工作流。其核心机制包括生成一个详细的“摄像机/剪辑表”(Camera / Cut table),该表列出每个场景使用的摄像机组件(如 OrbitCamera、SnapZoom 等)和剪辑类型(如 whip、tearAway),并为每个重读单词分配帧级事件。技能还内置了严格的校验清单,以确保最多三分之一的场景使用普通推镜头、每个重读单词都有对应事件、并控制音效数量以避免干扰。最终,`STORYBOARD.md` 会被传递给 `motion-build` 工具,自动生成项目脚手架和 `episode.json` 配置文件。对于需要快速迭代且风格统一的纸艺动画项目,该技能是提升工作流效率的关键工具。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/boytegar/motion-skills/tree/HEAD/skills/motion-storyboard

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

纸艺动画故事板

故事板是构建每个场景的蓝图。它指定了每个场景的摄像机运动与剪辑方式,避免场景智能体自行发明。如果简报中写的是“CameraPush 或你自己定义的变换”,则每个场景都会得到一个简陋的推镜头或自制的缩放效果,而工具包中的摄像机运动将不会被使用。

预检

  • 安装:最低配置即可。如果有库,请检查 style/$MOTION_STYLE/remotion/CATALOG.md(“paper/camera.tsx”和“paper/transitions.tsx”章节),查看每个运动所需的属性及其适用场景。如果文件缺失或已过时,请运行 python3 $MOTION_LIB/core/tools/catalog.py。从环境变量中解析 $MOTION_LIB,否则从 ~/.config/motion-explainer/config.env 中的 MOTION_LIB= 行获取,若仍未找到则询问用户。
  • 需要 narration/script.json 和包含 HOOK 块及舞台表(每一行包括横幅、场景、道具、UI 时刻、吉祥物、笑点)的 video/STORYBOARD.md。如果缺失,请运行 motion-hook 和 motion-script。
  • 背景幕布用于选择场景:style/$MOTION_STYLE/remotion/public/bg/backdrops/_sheet.jpg。仅打开当前步骤所需的内容。

1. 全局规则

将以下内容放在 STORYBOARD.md 顶部,位于 HOOK 块下方。按角色分配调色板(每个场景轮换背景颜色):请参考 $MOTION_LIB/style/$MOTION_STYLE/docs/style-guide.md 第 5 节。字体:第 6 节。画布与区域:第 4 节。适合单一扩展隐喻的功能解锁可使用第 12 节。

  • 1080x1920,30 fps。横幅位于 14-21% 高度,字幕区域 68-80%(根据场景上下移动以避免遮挡脸部),底部 20% 留空。
  • 光源来自左上角。仅角色、字幕和信号使用高饱和度。

2. 摄像机/剪辑表

每行对应一个场景,位于场景分镜块之前。每一行指定了来自工具包 paper/camera.tsx 的一个摄像机组件,以及用于切入该场景的 CutSeries 类型(来自 paper/transitions.tsx)。

场景摄像机 (paper/camera.tsx)切入 (CutSeries 类型)
S01HookOrbitCamera + Depth,在 <词> 上 SnapZoom无
S04NameCrane 上升至 <焦点道具>tearAway
S09PeakCrabTrack 沿 <队列> 移动whip
S10CTARackFocus 从 <道具> 转移到手机tapePull
  • 摄像机选项:OrbitCamera + Depth,SnapZoom,Crane,CrabTrack,DollyZoom,RackFocus,ForegroundPass,DutchTilt,FocusPulse,FreezeFrame,PullBack,PovMask,TimeRamp,TiltShift,FocusHunt,Handheld 和 CameraPush(来自 paper/kit.tsx)。目录中的 paper/camera.tsx 章节说明了各自适用场景。
  • 剪辑选项:hard,whip,zoomThrough,pageTurn,tearAway,tapePull,stampCut,infiniteZoom,popUpBook,keyhole,burnAway。
  • 普通 CameraPush 最多允许出现在三分之一的场景中。
  • 将每行的摄像机复制到其场景分镜块标题中。剪辑列将写入 episode.json,格式为 "cuts": {"S04Name": {"kind": "tearAway"}}(无条目表示硬切),由 motion-build 填充。

3. 场景分镜块

每个场景一个分镜块,时长 1.5-5 秒,在句子边界处剪辑:

## S03: <节拍> (5.6-8.2 s,78 f) 横幅:<大写要点>
位置/背景:<世界位置 + 背景颜色> 摄像机:<camera.tsx 组件 + 参数,来自表格> 切入:<类型>
演员:<角色,配饰> 字幕区域:y=0.76
| 口播词 (重读) | 帧数 | 事件 | 运动规格 |
| "<词>" | +6 | <道具进入 / 状态切换 / 动作> | <弹簧/滑动/交换 + 帧数> |
环境:<LED 闪烁,空闲摆动,星星,屏幕波形>
抖动:横幅 + 标签,每 2 帧 +/-1.5 像素
音效:<弹出声,叮铃声,点击声...>
  • 将舞台表中的每一行展开为帧级事件:每个重读单词一个事件(每 0.4-0.8 秒),环境运动始终存在。帧数是相对于单词的偏移量,稍后通过 cueOf(ID)(word, n) 读取。
  • 产品 UI 是在纸制监视器或笔记本电脑上的粗略重建,带有虚假交互(光标点击,打字,进度条,波形,列表滚动)。
  • 证明: 每个一段影片中,使用源页面的真实截图(通过 $MOTION_LIB/core/tools/capture.mjs 从浏览器捕获,非重绘)粘贴在纸卡上,并用红色记号笔在关键行周围绘制圆形高亮。其余部分保持为粗略的纸艺重建。
  • 在号召性用语之前,有一次对之前场景的回调。

4. 摄像机与转场规则

  • 每个场景有一个运动。缓慢推进是基线。在灯光布景上添加视差轨道以增加深度,在重读单词上为数字和笑点添加推进或快照缩放,前景通过(模糊的纸制物体从镜头前经过)或焦点转移,拉远以显示规模,以及在挣扎吉祥物节拍上添加带有标签的定格帧。
  • 主要使用硬切配合横幅变化。在 2-3 次主题变化时使用带运动模糊的甩镜头,在“进入”屏幕、门或镜子时使用缩放穿过,每个一段影片最多一个翻页或撕裂(用于转折或前后对比),以及进入号召性用语时的胶带拉伸(一条普通的牛皮纸条,可选 label 打印一个词)。
  • 钩子的切出应携带运动连续性。将来自 motion-hook 的规则应用于 S01 和 S02。
  • 转场持续 6-12 帧,每个转场带有其音效(甩动声,缩放声,翻页声,撕裂声,胶带剥离声)。
  • 在项目库中,使用工具包的转场系列串联场景,确保每个场景起始于其 plan.json 的帧,从而保持语音同步。

5. 音效计划

  • 空气音效(嗖嗖声,滑动声,甩动声,缩放声)合计:每 2.5 秒一段影片最多一个。cues.py 会在超出此限时打印注释。例如,33 秒内有 12 个音效是可以的,但 26 秒内 24 个则显得杂乱。
  • 入场使用接触音效(弹出声,撞击声,盖章声)或静音。在音频渲染前,将其计入 tools/cues.json。
  • 在每个音效行的 SFX: 中,从 $MOTION_LIB/core/audio/CATALOG.md 命名音效。场景智能体将实际行写入 tools/cue_sheet.d/<Scene>.json。
  • 选择背景音乐预设(episode.json 中的 "bed")并设置 cutSfx 以匹配剪辑类型:tearAway 对应撕裂声,tapePull 对应胶带剥离声。

检查清单

  • 每个场景都有摄像机和切入方式,且普通 CameraPush 最多用于三分之一的场景。

  • 每个重读单词都有一个事件;环境运动已列出。

  • 包含一个证明节拍、一次回调,以及导向号召性用语的胶带拉伸或甩镜头。

  • 最多一个翻页或撕裂;空气音效在预算范围内。

  • 在每个场景分镜块的事件表中,注明预期和最夸张的一个节拍。12 项动画原则及其到工具包组件的映射,请参考 $MOTION_LIB/style/$MOTION_STYLE/docs/motion-principles.md。

交接

下一步是 motion-build,它将搭建项目脚手架,并将摄像机/剪辑表和场景边界转换为 episode.json。它会读取 STORYBOARD.md 和 narration/script.json。STORYBOARD.md 中的“时间”部分将在语音录制完成后生成,因此此处请留空。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能