motion-showreel
Design and build a 10-30 second motion-design showreel or brand reel in the style of Nate's Opus 5.5 "CLAUDE / MOTION REEL": one brand motif transformed through labeled craft chapters, a persistent HUD, cuts locked to a 120-130 BPM grid, a sub-second flurry, and a held logo lockup that answers the opening. Use when asked for a showreel, sizzle reel, brand reel, motion reel, "a reel like the Opus one", "show off motion design for <brand>", a 15-second brand film cut to music, or to study why a reference reel works and rebuild that energy for another brand.
1How It Works & Mechanism
Deconstruct a "portfolio-grade showreel" into a reproducible architecture: a single motif running through 6–7 craft chapters labeled by a HUD, ending back at the motif, rather than stacking disparate effects shot-by-shot.
A showreel promises that every frame was a decision. … Hard cuts are reserved for the flurry.
The HUD is a persistent layer: crop marks, title line, spec line (resolution/framerate/measured BPM), timecode, chapter ruler, and chapter titles, dynamically inverting ink/paper tones against background luminance.
**Persistent HUD.** Corner crop marks … It flips ink/paper with the background.
Cuts are locked to a 120–130 BPM grid: hard cuts, flash frames, and color inversions strictly land within ±2 frames of grid lines, leaving a "pre-drop pause" gap right before the midpoint.
**Cut on the beat, animate on the off-beats.** … comes before the midpoint hit.
Structure is allocated by beats: roughly 75% progression / 13% flurry / 12% resolve, accelerating before sustaining; visual density breathes organically (single object → text wall → 100-cell grid → thousands of particles → flurry → single word).
**Accelerate, then hold.** … and 12% resolve.
Style originates not from adjectives, but from a second-by-second quantitative breakdown: BPM, beat anchors, every hard cut timestamp, luminance rhythm, and audio levels.
- **Tempo:** 128 BPM … Grid anchor about 0.51s. … - **Hard cuts land on beats:** 1.77 (flash) … within 2 frames of a grid line.
Analyze musical phase before cutting: align phase using the kick band (120Hz low-pass filter) rather than the full frequency spectrum, preventing every splice from lagging by half a beat.
`music-grid` prints the period, the **kick-band phase** (use it) … the script warns when the two disagree.
Animations are driven by frame-by-frame pure functions (time → complete state), with canvas effects rendered from deterministic seed values to guarantee seek reproducibility.
Put a **per-frame driver** on the timeline … never from `Math.random()` at draw time.
Verification applies the same measuring tape: cut points deviate from beat markers by ≤ 35ms, luminance alternates by chapter, audio features a pre-drop gap, and 10-frame continuous filmstrips inspect every transition; brand testing requires brand recognition even with the HUD occluded.
- Run `analyze-reference.mjs` on your own render with `--bpm` and `--phase`: cut … luminance must alternate by chapter … Brand test: pick 6 random frames. … read as the brand with the HUD covered.
2Core Capabilities
3External Dependencies
| Kind | Dependency / Endpoint |
|---|---|
| cli | FFmpeg / ffprobe(接触表、亮度/RMS 分析、音乐拼接、premix) |
| api | Kie.ai 任务 API(Suno 音乐 / Seedream 图 / Kling 视频;付费、消耗本人额度) |
| api | Kie.ai 文件上传(把本地参考图以 base64 上传换 downloadUrl) |
| api | ElevenLabs 音效生成(付费) |
| cli | HyperFrames CLI(lint / Studio 预览 / draft render / 最终 render) |
| package | 兄弟 skill 依赖:hyperframes、gsap,与仓库根 MOTION_PHILOSOPHY.md / video-storytelling |
| network | 字体:要求下载到项目 assets/fonts/ 用 @font-face(远端拉取发生在取材期,不在渲染期) |
4Recommended Governance & Evidence
- scripts/: Executes local scripts and commands: node scripts/analyze-reference.mjs <video> <out> (invoking spawnSync with ffmpeg/ffprobe)
- 网络端点: Declares external network access: https://api.kie.ai/api/v1/jobs/createTask (initiating generation tasks)
- 本地工作目录: File I/O and artifact output: writes to video-projects/<slug>/: BRAND.md, STORYBOARD.md, assets/{audio,img,video,fonts}
5Second-Pass Verification
- [ok] KIE_API_KEY 是否真的被读取并外发(橙档关键证据) — kie.mjs:19 `if (process.env.KIE_API_KEY) return process.env.KIE_API_KEY;`,随即 loadKey() 向上 8 层找 .env 并抓 KIE_API_KEY,无 key 抛 'KIE_API_KEY is not set. Add it to .env (see docs/TOOLS-AND-API-KEYS.md).';带 Authorization: Bearer 调 createTask/recordInfo/credit。调用点真实存在。
- [ok] ELEVENLABS_API_KEY 读取与外发是否属实 — sfx.mjs:15 `if (process.env.ELEVENLABS_API_KEY) return process.env.ELEVENLABS_API_KEY;`(无 key 抛错);文件头注释声明 PAID 并要求先确认。
- [ok] 是否存在文档未提及的隐藏网络调用或脚本 — 全目录 URL/网络 token 扫描只命中上述网络点与 docs.kie.ai 文档链接;beatgrid.mjs 纯计算,其余 mjs 仅 ffmpeg 子进程。未发现混淆代码、动态 eval 或静默外发。
- [unlocatable] 参考片量化数字能否在源码内复现 — references/reference-breakdown.md 的 128 BPM、各切点时间、亮度序列与 RMS 值,是作者对一条私有样片(Opus 5.5 的 CLAUDE / MOTION REEL)跑 analyze-reference.mjs 的结果;pin 仓库内既无该样片也无原始报告输出,本次只读侦查不运行分析,故这些数值仅作「文档声明」记录,不当已核事实使用(分析器能力本身已可读验证)。
- [discrepancy] 「付费调用先确认」是技术门禁还是提示层约束 — [判定:提示层,非技术强制]脚本头注释显式声明 PAID,SKILL.md 在音乐与 SFX 两处也写 paid call / confirm before running;但脚本没有任何交互式确认开关或 --dry-run,门禁靠 agent 遵守。已在 risks 中如实标注。
- [ok] HUD 模板与 SKILL.md 的 HUD 规格是否一致(文档/资产是否脱节) — templates/hud.html 头注释要求把 <style> 粘进合成、#hud 作为 #root 最后子节点、由 hudFrame(t)(t 的纯函数)驱动,并提供 --hud-acc / .hud-tl / .hud-tr / #ptime / CH / SEGB / paperRanges 的品牌替换清单,与 SKILL.md 第 4 条规格一一对应。
6Verdict & Scenarios
cc870e83245405bd…