Skip to main content

Motion Studio: turn a brief into motion graphics

A motion graphics workflow that separates the video’s structure, visual style and movement, then builds an HTML, SVG or Canvas composition and renders an MP4 through Chromium and FFmpeg.

Source facts

Repository
buildfastwithai/buildfast-skills
Last source activity
September 29, 2026 at 10:33
Detected SKILL.md language
English
Stars
4
Forks
2

Examples

Build Fast with AI’s Reddit-themed video post describes a 30-second brief with Snoo, kinetic typography, an upvote counter and a feed montage. Its author reply links this repository. The post is an author demonstration, not a SkillsMP benchmark.

Uses

The source covers product ads, explainers, logo reveals, typography and social clips. It also supports rendering one composition in several styles, restyling an existing project, and using a song’s beats for a visualizer or lyric video.

Prerequisites

Python 3.9 or later with Playwright and Chromium, NumPy, SciPy and Pillow, plus FFmpeg and ffprobe. Node and npm are optional for the Three.js route. Keep the complete Skill folder so its engine, scripts, fonts and references remain available.

How to use

Start with the README’s request: “Create a 30 second cinematic video explaining how AI agents work.”

The workflow writes a concept and timed storyboard, builds the composition, reviews still frames and a reduced preview, then renders and checks the final MP4. It calls for looking at the contact sheet and fixing remaining issues before delivery.

Limitations

No text-to-speech is bundled; voice-over requires a recorded file. Generated music is loop-based synth music. The README warns that WebGL scenes use software GL in headless Chromium and can render slowly. Automated QC checks technical issues; the model must still judge the visual contact sheet. The repository is MIT licensed.

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
100 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
motion-studio
description
Motion Studio - motion designer, art director, animator, editor and sound designer in one skill. Produces polished motion-graphics MP4s from a brief - product ads, demos, explainers, tech news, trailers, logo reveals, kinetic typography, infographics, documentaries, music visualizers, lyric videos, UI promos, social shorts - in 51 visual styles (minimal, Apple-style, luxury, SaaS, cinematic, horror, cyberpunk, HUD, glitch, VHS, 80s, Y2K, pixel, anime, comic, paper cutout, blueprint, data viz, generative...) and 10 motion languages (cinematic, snappy, elastic, mechanical, organic, glitch, energetic, calm, stop-motion, smooth), any aspect ratio (16:9, 9:16, 1:1, 4:5, custom). Use for any request to make, restyle or compare an animated/motion-graphics video, including "same video in 3 styles", "make this more cinematic" and reproducible benchmark renders. Plans concept + storyboard first, renders deterministic frames, generates beat-synced music/SFX, and runs automated video QC.
# 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) ```bash 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 ```bash 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 ```bash 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`.
View on GitHub