-
Notifications
You must be signed in to change notification settings - Fork 0
Style Library
English · 中文
Left alone, AI-made videos drift toward one look: dark background, glow, glass cards, busy animated UI. The style library gives the agent 31 real alternatives to borrow from. Each preset distils the grammar of well-known work (palette, type, composition, motion, transitions, sound) into instructions an agent can follow, and each comes with a 5-second swatch rendered by this repo, with a soundtrack of its own. They are references, not templates: a film's look follows from its concept, which may borrow from one preset, mix several or use none. All 31 swatches show the same content, the title "每一帧,都是代码。" ("every frame is code") and the three steps outline → storyboard → first draft, so the only difference is the style.

Watch them in a row in styles-gallery.mp4 (in the media release), about 1.5 s per style, each with its own sound and a short crossfade at every cut. The full list, with the works each style learned from and a line on what each one sounds like, is in styles/README.md.
A folder styles/<slug>/ with:
-
STYLE.md: the works studied; visual, motion and sound grammar; what it suits and doesn't; bans; a prompt block; an engine recipe; self-checks; -
tokens.json: the numbers, machine-readable; -
swatch.js(swatch.pyfor a scene rendered in Blender),score.jsonandevents.json: the swatch's picture, its music and the timing of its sound effects, as code; -
media/:swatch.mp4and a poster frame.
| Family | Presets |
|---|---|
| Film and title design |
cutout-jazz · scratched-type · monumental-scifi · symmetry-pastel · neon-step-print · archival-pan-zoom · clockwork-map · tabletop-miniature
|
| Brand and launch |
product-keynote · swiss-grid-type · brutalist-meme
|
| Data and explainers |
dark-math · editorial-data · bubble-chart-story · fui-hud · isotype · pastel-ui
|
| Illustration and print |
bouncy-flat-2d · halftone-comic · risograph · silhouette-papercut · watercolor-pastoral
|
| Chinese aesthetics |
ink-wash · dunhuang-mural · shadow-puppet · guochao-festive
|
| Retro and tech |
blueprint · crt-terminal · synthwave-outrun · pixel-16bit · y2k-chrome
|
The sources include Saul Bass's title sequences, Se7en, Blade Runner 2049, Wes Anderson's symmetry, Wong Kar-wai's step-printing, Aardman's and Laika's stop-motion miniatures, the Swiss grid, 3Blue1Brown, New York Times data graphics, Otto Neurath's Isotype, Material You, the halftones of Spider-Verse, 16-bit Super Nintendo pixel art, Wipeout and Mac OS X's Aqua, ink wash painting, the Dunhuang murals, shadow puppetry and guochao.
Every swatch has a score written for it: its own genre, signature instruments, groove and room, all synthesised by bin/vh music with no samples, in stereo (crt-terminal is mono, as its one small terminal speaker would be). cutout-jazz is a swing big band with muted brass; scratched-type is industrial noise with anvils; symmetry-pastel a balalaika march; dark-math a quiet felt piano under the narration; ink-wash a guqin and xiao; shadow-puppet banhu, clappers and a gong-and-drum score; guochao-festive suona over trap drums; tabletop-miniature one upright piano where each of the puppet's actions is a note. Each style's STYLE.md describes its sound, and styles/README.md has one line per style.
How different are they? Nobody on the agent's side can listen, so it measured: seven audio features (spectral centroid, onset rate, low, mid and high energy shares, stereo width, percussive share) and the distance between every pair. Measured on the 28 swatches of the time, the median pair distance went from 2.27 to 3.71 and the closest pair from 0.52 to 1.22, with none of the 378 pairs under 1.2; the three swatches added since haven't been measured. That ruler has only seven numbers: it can't hear a melody or a harmony, and whether the scores are good still takes a person (research note 02).
A swatch's transitions use a sound family chosen for its style (paper, air, whip, a tonal swoosh, a tape stop and others), shaped to the move, and every event gets its own variant, so the reel no longer plays the same whoosh in swatch after swatch. The sound effects are mixed with the swatch profile, and every swatch passes bin/vh qa on the WAV and on the mp4, sits at about −14 LUFS and stays under −1.5 dBTP after the AAC encode. Rendering runs on the CPU (Cycles on the CPU for the Blender scene) with a single-threaded encode, so repeated renders give the same bytes.
The look follows from the concept (playbook/12). Each concept card at gate ① has a line for the picture it leads to: a look of its own, or one or more presets from here, with their swatches; at effort studio each card comes with a 10–20 s sketch. If you want to see more looks, the agent picks 2–3 presets that are far apart and shows them side by side (bin/vh style compare a,b,c makes that picture). You can also name a preset in your request ("in the ink-wash style") or name a film you want it to feel like, and swap a card's preset in your reply.
Mixing is allowed: the palette of one preset, the transitions of another. Stacking two textures, such as halftone with ink wash or scanlines with paper grain, easily turns to mud, so render a short stretch first.
In the project, a preset is a reference, not a template. The project's STYLE.md starts from the concept; what the film borrows (palette, type, transitions, sound, texture) is one line in DECISIONS.md, and where it differs needs no explanation. A preset's numbers are its swatch's; a new scene sets its own.
bin/vh style list # the 31 presets, their family, whether a swatch exists
bin/vh new promo launch-film --style cutout-jazz # copies the preset into style-refs/ and lists it on the BRIEF's Style refs line (several: --style a,b)
bin/vh style compare cutout-jazz,ink-wash,blueprint # presets side by side: posters, or the same swatch moment with --frame t
bin/vh style apply <slug[,slug]> <project> # attach presets to a project that already exists, as references (attaching one again adds nothing)
bin/vh style <slug> --draft # render a swatch at draft quality (the published one is left alone)
bin/vh style check <slug> # determinism: lossless frames from different worker counts must match (a Blender scene: 12 frames re-rendered out of order in fresh processes)
bin/vh style gallery --mp4 # rebuild styles/gallery.jpg and styles/gallery.mp4- Learn the grammar, don't copy the work. No original characters, logos, shots or footage. Living directors' names appear only in the "learned from" column, never in a prompt as "in the style of".
- Treat cultural subjects accurately. No mixing of dynasties or regions into one pot, no bundle of "oriental elements"; flying apsaras have no wings; Chinese shadow puppetry is not wayang kulit.
-
Sound is half the style. Every swatch has its own score, written for
bin/vh musicin that style's sound grammar, with sound effects placed on its picture. A "silence" is a held breath over a quiet bed, never digital silence. -
Local fonts only. Fonts are referenced with
@font-face local()and never shipped. Missing fonts fall back, and eachSTYLE.mdnotes which fonts the swatch actually used. - Facts are checked. Years, authors and sources were verified; anything uncertain is marked as such.
An independent reviewer, a "harsh motion director" who didn't make the swatches, scored every swatch on the 7-dimension layer twice, with three rounds of fixes in between. The median lowest score rose from about 4.5 to 6. No swatch has every score at 8 or above yet. The two presets added in v0.2.1 have lowest scores of 7 (pixel-16bit) and 6 (isotype). tabletop-miniature, the first swatch rendered in Blender, went through seven review rounds: its lowest score was 6 in the first and 7 in every round after. pastel-ui and y2k-chrome went through three, and each ended with a lowest score of 7 on the eight dimensions. The library is still being polished; it is not a finished portfolio.
Most of those reviews predate the new soundtracks, which were checked with measurements (see above) rather than scored, and the scoring layer gained its eighth dimension, the concept, on 2026-10-02. One item on the Roadmap addresses the rest: every swatch reaching 8 on every score (planned for v0.3).
The six steps are in styles/README.md ("加一个新风格"): break down 1–3 works with playbook/07; write STYLE.md from _TEMPLATE.md plus a tokens.json; copy swatch.js from _swatch/demo/ (or, for path-traced light and real depth of field, write a Blender scene swatch.py, with tabletop-miniature as the example) and add a score.json for sound; iterate with bin/vh style <slug> --draft --hud, then render with bin/vh style <slug>; run bin/vh style check <slug>; rebuild the gallery and add a row to the table. Then open a pull request, see Contributing.
A style gives a film its skin; a recipe gives one shot its bones. recipes/ holds 24 engine-agnostic recipes for how a shot or a seam moves: its phases in frames at 30 fps, a parameter table with the critical values marked, the pitfalls, the frames to check, and a canvas sketch that any preset's tokens.json can skin. Eight full-film skeletons set the energy arc, the holds and the caps for a whole film: three by energy arc (a 15 s launch, a 30 s narrated explainer, a 60 s product film) and five that start from a concept (time-dilation replay, machine-eye portrait, making-of-self, mascot style tour, workflow as story).
bin/vh recipes list --intent abundance,process --energy 4 --engine hyperframes # find a recipe by what the shot must say and how loud it is
bin/vh recipes check # validate recipes: frontmatter, links, the index, licence noticesThe agent writes the recipe id in the storyboard's recipe column and reads the whole recipe before coding the shot. When a style and a recipe disagree, the style's look wins and the recipe's critical values still hold. Part of the library is adapted from Apache-2.0 projects (video-shotcraft, HyperFrames) and keeps their licence notices (NOTICE.md). Each recipe carries a status: 9 are upstream-tested (used in the source project's films), 14 are tuned, 1 is a draft, and none is battle-tested yet, because that needs a film made in this repo that a person has watched and judged.
Read-only copies are fetched into references/repos/: lemo-opuscar's 43 styles (MIT), the designer styles in HyperFrames' creative references, and OpenMontage's styles. License verdicts for each are in references/community-skills.md.