Brand reflection
The capture-first workflow for turning a real website into an on-brand video, studying the site before authoring a single layer.
The best way to make a video for a real brand is not to describe the brand from memory. It is to study the actual site, capture its real sections, and reflect its taste. The taste is already on the page; your job is to carry it into motion.
Study before you author
Run the study first, in this order. Generic questions waste time; the site answers most of them.
make brandspec URL=https://example.com # read the real CSS
make sections URL=https://example.com NAME=example # screenshot every section
make lookbook URL=https://example.com NAME=example # full-page study shots
make palette IMG=assets/brands/example/sections/01-hero.pngEach tool does one thing:
make brandspecreads the site's real CSS: the one to three font families and the weights actually used, the colour tokens, and the contrast of each pair. This is the source of truth for type and declared colours, more accurate than eyedropping a screenshot.make sectionsinventories the page as sections. It saves a screenshot per block and asections.jsonwith a stable selector and a readymake capturecommand for each. Storyboard one beat per section, in the site's order.make paletteeyedrops the hero pixels and reports the dominant colours and whether the brand is light-first or dark-first.make lookbookgrabs full-page and viewport shots for art-direction study.
Dominance is decided by looking
Whether a video is white-first or dark-first is read from the hero, not assumed. A white site gets a white video. Confirm the dominance by looking at the hero yourself before you author the theme.
Author the theme from pixels
From the study, hand-author themes/<brand>.json: background is the site's dominant colour, accent is its vivid colour, text is its body colour. Use only the site's colours, at the measured font weights. The theme contract lists every key. Then persist the design read so the next video starts from it:
make house-style NAME=<brand>Capture the real sections
Never retype a site's copy or redraw its UI. Capture the live block into an animatable component layer:
make capture URL=https://example.com SEL="section:nth-of-type(2)" NAME=hero LABEL="Hero"
make preview HTML=hero.json THEME=example # check it standalone → /tmp/preview.pngReal logos, gradients, and copy come for free, and the fonts stay faithful. Only a true <canvas> or WebGL section that cannot be captured falls back to a screenshot used as a clipped image with ken. Animate it the Vawe way (a window, a cut, a camera move, staggered parts), and retype copy with an overlaid text layer rather than editing captured glyphs.
Hand-write HTML only for connective tissue: the hook, the CTA, counters. Preview every hand-written fragment before rendering.
The fidelity gate
Before shipping, prove the video reads as the same brand as the site:
make beats D=formats/scene/example.json VS=exampleThis stacks each beat beside its source section. Wrong dominance, off colours, and untasteful imagery all show up here. It is exactly the check that catches a white site rendered dark. The rest of the checks are in Quality gates.