video-motionlisted
Install: claude install-skill TimeCraker/vibe-studio
# video-motion — 视频底材叠动效(Remotion)
**设计即代码**:坐标 / 时刻 / 文本全部声明在 `src/cues.ts`(数据契约,字段不许改),fx 组件零硬编码;改 cues 重跑一条命令即复跑成片。三层动效:字幕 `SubtitleTrack` / 数据柱 `DataBars` / 圈注 `Spotlight`(circle / arrow / box)。
## Step 1 · 剧本设计(看素材,不猜画面)
1. **抽帧看素材**:`npx remotion still remotion/index.ts FootageOverlay <输出>/f-<n>.png --frame=<n>`,帧号铺开抽 6-8 张;PNG 先复制到 `C:\pc\` 类短路径再读图(反斜杠路径解析坑)
2. **写 `src/cues.ts` 动效剧本**:
- **字幕讲画面**:说观众此刻看到的事,每条 ≤2s
- **圈注指实物**:circle / arrow / box 指向画面中真实存在且值得注意的元素,坐标先用抽帧核实落点
- **数字要口径**:数据柱数值取真实来源(画面 HUD / 结算面板 / 后台数据),取不到就在字幕标明「演示数据」
3. **通用要求:解读必须下钻到细节层,cue 密度按细节铺满素材,不以大事件凑数**——HUD 数字变化、killfeed、聊天栏、提示条、场景切换都是 cue 素材;「推进 → 交火 → 胜利」三笔带过一条 30 秒素材就是没下钻
## Step 2 · 工程与规格(随素材自适应)
1. 复制 `templates/remotion-app/` 到工作目录,`npm install`(Remotion 各子包必须同批安装,版本严格联动)
2. **原生规格**:`node scripts/probe-footage.mjs <素材路径>` 用 ffprobe 生成 `src/footage-params.ts`——输出分辨率 / 帧率随素材走,不写死;换素材重跑该脚本即可
3. **素材不进 skill**:渲染带 `--public-dir <素材目录>`(`staticFile` 直读项目素材库);只有不便带参数时才把素材复制为 `public/footage.mp4`
4. cues 按 **1080p 设计坐标**书写,`FootageOverlay` 已内置 `transformOrigin: "top left"` 整体缩放适配任意画布——换分辨率不改 cues,动效落点不漂移
## Step 3 · 生成(一条命令)
```bash
cd <remotion-app>
npx remotion render remotion/index.ts FootageOverlay <仓库>/products/<项目名>/demo.mp4 --crf=16 --public-dir <素材目录>
```
产物住**仓库 `products/<项目名>/`**(目录法:skill 是纯工具,产物不落 skill 内;跨仓库使用时落该项目根 `output/<skill 名>/`);`--crf=16` 高质量。大素材渲染放后台跑(1440p60 × 30s 约 10 分钟),以退出码 + ffprobe 验收,不凭进度条。
## Step 4 · 三级核查(必做,不可跳)
**① 程序**:渲染退出码 0;`npx remo