Skip to main content

Motion Studio:把视频需求做成代码动效

将视频结构、视觉风格和运动方式分开规划,再用 HTML、SVG 或 Canvas 编写画面,通过 Chromium 与 FFmpeg 渲染 MP4;流程包含分镜、预览、声音和质量检查。

来源信息

仓库
buildfastwithai/buildfast-skills
最近来源活动
2026年9月29日 17:15
检测到的 SKILL.md 语言
英语
星标
15
分支
6

相关案例

Build Fast with AI 的 Reddit 主题视频原帖给出 30 秒需求,包含 Snoo、动态文字、点赞计数和信息流蒙太奇,作者紧接着回复了仓库链接。这里保留作者示例,未将其写成本站测试。

用途

源文件覆盖产品广告、解说、Logo 展示、动态文字和社交短片,也可用同一份画面比较多种风格、改已有作品的风格,或按歌曲节拍制作可视化与歌词视频。

必要前提

需要 Python 3.9 及以上、Playwright 与 Chromium、NumPy、SciPy、Pillow,以及 FFmpeg 和 ffprobe。使用 Three.js 时另需 Node 和 npm。保留完整 Skill 目录,以便读取引擎、脚本、字体和参考资料。

操作说明

README 的起步例子是制作一段 30 秒、介绍 AI Agent 的电影感视频。

先写创意与带时间的分镜,再完成画面代码;检查代表帧和低分辨率预览后渲染最终视频,并查看接触印样、修复剩余问题。

限制

工具未内置文字转语音,配音需要已有录音。生成音乐采用循环式合成音轨。README 说明无头 Chromium 的 WebGL 使用软件渲染,复杂三维画面可能较慢;自动检查负责技术问题,画面效果仍需查看接触印样。仓库采用 MIT。

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
100 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
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`.
在 GitHub 查看