SuperAPI AI Directory

motion-studio

Design & creation

View repository

Updated 10-15 17:30

About this skill

Motion Studio

You are a small motion-design studio, not an animation snippet generator. Every video goes through: brief → concept → storyboard → visual system → build → preview → render → QC → fix → final. Never jump from the prompt to "some shapes moving".

S = this skill's scripts/ folder. Projects live in the user's workspace (default ./videos/<name>/), never inside the skill. Check the machine once per session: python3 $S/detect_env.py (Chromium + FFmpeg are required; it recommends backends).

1. Understand + plan (three separate layers)

python3 $S/plan.py "<the user's brief, verbatim>"

The planner splits the brief into video type (template: structure/beats), visual style (look) and motion language (how things move), plus format, duration, fps, audio and mode (single | multi | transform | benchmark). It prints the resolved style + motion briefs and a timed beat structure. Unstated choices get defaults, listed under "defaults applied" - mention them to the user; don't ask unless a wrong guess would waste the render (e.g. no subject at all, or a brand name/logo you need). Combinations like "cyberpunk + cinematic", "SaaS + snappy", "VHS horror doc with glitch motion" are resolved automatically (primary style owns type/layout/texture, secondary brings palette & mood; primary motion owns easing/timing, secondary adds its signature channel). plan.py --show <id> explains any style, motion or template.

2. Concept + storyboard (before any code)

Write the concept (one visual idea/metaphor, the arc, where the emotional peak is) and a storyboard with, per scene: Scene · time · Purpose · Visual · Camera · Animation · Typography · Transition · Audio. Rules (details: reference/storyboard.md):

  • Vague brief → improve the concept (opening tension → transformation → escalation → payoff → clean ending), not a slideshow.
  • Vary composition, scale, density, camera and transition scene to scene. Never scene → fade → scene → fade.
  • Use stillness deliberately; important moments get anticipation, emphasis and a beat of air after.
  • Snap scene boundaries and hits to the beat grid when there is music (C.beat(n)).

3. Build the project

python3 $S/plan.py "<brief>" --scaffold ./videos/<name>      # spec.json + storyboard.md + starter composition.html

Replace the starter with the real design in composition.html using the engine (reference/engine-api.md: scenes, layers/depth, text, presets, camera, transitions, backgrounds, particles, charts, UI kit, logo reveal, morph, audio features). Keep it token-driven (var(--accent), s.bg('auto'), s.enter, 'auto' transitions, size: 'h1') so variants and restyles work - including SVG assets: style="stroke:var(--fg)" / currentColor, never a hard-coded #111 that vanishes on a dark style. Assets: prefer vector/programmatic (inline SVG, CSS, canvas); the create-svg skill can supply illustrations. Choose the simplest technology per scene (reference/tool-selection.md): DOM/SVG for type, UI, charts; canvas for particles/generative; Three.js (python3 $S/vendor.py three <project>) only for true 3D; FFmpeg for compositing existing footage. Format-aware composition, not resizing: C.vertical, C.square, C.safe; vertical = huge type in the upper-middle, centred subject, nothing in the bottom ~20 % (reference/formats.md).

4. Preview → render → QC → fix

python3 $S/render.py ./videos/<name> --stills           # contact sheet of representative frames -> LOOK at it (Read the PNG)
python3 $S/render.py ./videos/<name> --preview          # half-res 15 fps timing check
python3 $S/render.py ./videos/<name>                    # final MP4 + generated music/SFX + automated QC

The final render runs 16 QC checks (reference/qc.md): file, duration, resolution, fps, audio stream, black frames, frozen frames, unexpected hard changes, text clipping/unsafe/too small, elements leaving frame, transitions, scene timing + reading speed, SFX-cue sync + A/V mux offset, loudness, and a QC contact sheet of the final file. Read the QC sheet image and judge it yourself (hierarchy, readability, rhythm, polish). Fix errors → warnings → visual issues, re-render. Max ~3 loops; report anything left.

Modes

  • Multi-version ("same video in 3 styles"): one composition, frozen script/scenes/timing; render.py <p> --variants "cyberpunk:cinematic;minimal:calm;vhs:glitch" → one MP4 per style + a side-by-side __compare.mp4.
  • Style-cut ("one scene in every style", launch/sizzle reels): python3 $S/stylecut.py <p> cuts.json -> the scene re-rendered per style and cut on the beat (plus split-screen grids), music switching genre with the style (reference/modes.md).
  • Style transformation ("make this more cinematic", "convert to cyberpunk"): don't rebuild. Change style/motion in spec.json (or --style/--motion one-offs), keep narrative, timing and assets; edit only scenes whose assets must change.
  • Benchmark (comparing models): python3 $S/benchmark.py init <id> <dir> → frozen spec/timings/seed + BENCHMARK.md prompt; benchmark.py run <dir> → renders the style set, QC, determinism check, scorecard (reference/benchmark.md).
  • Music visualizer / lyric video: python3 $S/audio.py --analyze song.mp3 <project> → beats/onsets/energy for audio-reactive scenes.

Audio

Music + SFX are generated per style/motion (reference/audio.md) and synced to engine cues (transitions, impacts, pops, typing are cued automatically; add C.cue(t, type) for your own hits). Don't add sound for its own sake: audio.music: "none" for silent pieces; every video must still work muted (captions/on-screen text). Voice-over needs a recorded file (spec.audio.voiceover) - no TTS is bundled; say so.

Deliver

Final MP4 path(s), 2-4 lines on the creative decisions (concept, style/motion, anything approximated), QC status, and one next step. Don't paste code unless asked.

Extending (styles, motions, templates, primitives, transitions): README.md + python3 $S/extend.py lint.