Burton Method Motion Videos
End-to-end pipeline for 14-second, 30fps, 1080×1920 animated explainers in the Burton
Method brand. Everything below was learned by building and shipping these with the
brand owner; the do/don'ts encode real defects that were found and fixed. Follow the
stages in order — each has a human approval gate because rework after animation is
10× the cost of rework at stills.
The brand system
- Palette (flat matte, no gradients on objects): soft honey
#FFE3A8, dusty navy
#5E6C88 / deep navy #3D4E6C, hand gold #F2C87E, accent amber #F5B95F, blush
#F5A9A0, cream text #FFF6E5, muted red #CC6B52 (see typography rules), urn/prop
orange #E8833A/#C4632A, brass #D9B36A, rope red #B23A48.
- Scene palettes live in
scripts/museum_scene.py (PAL): warm / cool / invert / lesson.
Every video runs a color journey: warm hook → cool claim → cream alarm flip on the
interrupt → deep-navy lesson → warm CTA that matches frame one (invisible loop).
- Gradients are reserved for light (spot cones, glow blooms) and shadows only.
- Tone: dry tutor. Deadpan over hype. The joke is that the logic is bad, not that the
video is loud.
- Burt the bee is the mascot: "Storybook" design — pastel honey, oversized squircle
navy glasses, bow tie, tiny book, blush. Canonical rig in
assets/burt-character-sheet-v2.svg. Never redesign him casually; the user approved
this exact look after rejecting a shinier/sharper v1 ("cuter, softer, less shiny").
The 5-beat structure (14s)
- HOOK (0–2s) — question on frame one, Burt flies in. Frame one must work as a
thumbnail.
- CLAIM (2–5.5s) — the flawed argument, presented straight (speech card / plaque).
Burt jaw-drops.
- INTERRUPT (5.5–7s) — full palette flip, physical scene reaction (urn wobble, lamp
stutter), Burt facepalm. This is the retention spike; make it physical.
- LESSON (7–11.5s) — the argument written into the scene, the leap marked once in
red, Burt points. Text rules below are strictest here.
- CTA (11.5–14s) — comment bait, Burt smug, final frame pixel-matches frame one.
Pipeline stages and gates
Stage 0 — Prerequisites. Confirm: which video/argument, VO status (script text is
enough to start; audio file needed before final mix), any reference files. VO scripts are
15 lines (5 per video) in the dry-tutor voice; the user's brother Sammy recording them on
a phone beats any TTS.
Stage 1 — Assets. New character/prop? Build a variant lineup first (3 styles on
one sheet), get a pick, then build the full sheet: expressions + poses on ONE rig
(shared body symbols, swappable face/arm layers — that construction is what makes
animation cheap). Read references/asset-design.md before drawing anything.
GATE: user approves the sheet.
Stage 2 — Beat boards. Build the scene as a Python generator (copy the architecture
of scripts/museum_scene.py: every element is a function taking palette/params). Emit 5
stills, one per beat, QA them (see gates below), present as a contact sheet.
GATE: user approves boards. Never animate unapproved boards.
Stage 3 — Motion. Time-parameterize the same functions (the generator IS the
animation engine — same code, t argument). Design entrances, morphs, and slides from
references/motion-language.md. Render a keyframe strip (6–8 sampled moments) and
inspect before committing to full renders.
Stage 4 — Render + sound. Pure Python: cairosvg per frame → ffmpeg. No browsers,
no HTML runtime — this removed an entire class of environment pain. Synthesize SFX with
scripts/sfx_kit.py; every motion event gets a sound. Read
references/render-pipeline.md for commands, performance numbers, and mix levels.
GATE: user watches the MP4.
Stage 5 — Data loop. After posting, ask for TikTok retention graphs (screenshots),
read the drop-off seconds, target them in the next revision.
QA gates (run before every presentation)
- Static render + look. Render the SVG/frame to PNG and actually view it. Every
defect below was caught this way.
- 2× zoom pass on faces, hands, and any reworked region.
- Text-zone map: no text over figures, lamps, or props. Keep a headline zone
(top ~450px) that scene objects stay out of.
- Unified props: an object referenced twice must be the same drawing (one function).
- User sign-off before the next stage.
Do / Don't (each one is a scar)
- DO draw glasses in two layers: lens fills UNDER the eyes, frames OVER. A single
glasses group drawn after the eyes washes them out (translucent lens over dark eyes).
- DON'T use
tspan for inline emphasis with cairosvg — it breaks text-anchor="middle"
centering and words overlap. Emphasize with caps, color on a whole line, or layout.
- DO put CSS animations only on dedicated wrapper
<g> elements. A CSS transform on a
node that has an SVG transform attribute REPLACES it (the plant-out-of-pot bug).
- DON'T center long text. Left-align multi-line body text; center only short headlines.
- DO reserve red for exactly one mark per frame (the slash on the leap). Red paragraphs
read as noise; one red mark reads as a verdict. Muted red
#CC6B52, never pure red.
- DO write arguments INTO the scene (on the wall, on a plaque) instead of floating
overlay cards. Cards over scenes read as PowerPoint; the user explicitly rejected this.
- DO ghost the conclusion (40% opacity) in lesson layouts — the visual says "doesn't
follow" before the words do.
- DON'T let big soft shadow/spotlight pool ellipses sit behind rescaled objects — they
read as slabs. Scale shadows with their objects; give spotlights a
pool=False option.
- DO give hands/arms a darker outline (
#C9A05C) when they cross the face — same-value
fills disappear against the body.
- DO end every video on a frame matching frame one; DO make blinks land on pauses,
never mid-line.
- DON'T animate anything that hasn't been approved as a still.
Bundled resources
references/asset-design.md — character workflow, rig construction, cute-style rules,
typography standards. Read before designing any asset.
references/motion-language.md — easing library, entrance choreography tables, the
morph recipe, slide+parallax recipe, Burt acting rules, SFX event mapping. Read before
animating.
references/render-pipeline.md — exact commands, perf numbers, chunking, audio
synthesis and mix levels. Read before rendering.
scripts/museum_scene.py — the approved museum scene generator + Burt rig as code.
Copy its architecture for new scenes (court, desk); reuse burt() directly.
scripts/transitions_test.py — the approved motion test: assembly, morph, slide.
This is the animation engine pattern.
scripts/sfx_kit.py — whoosh/pop/thunk/tick/riser/buzz synths + mixdown helper.
assets/burt-character-sheet-v2.svg — canonical Burt (3 expressions, 4 poses).
assets/burt-motion-library.svg — his 6 motions as live CSS animation (browser demo).
assets/burt-wing-buzz.wav — his buzz loop (mix at ~0.3 gain under everything).
Known open items
- Court and desk videos: rebuild from scratch at this standard (museum is the pilot).
- Desk video needs a sleeping Burt (closed eyes + Zzz) — not yet designed.
- VO recording from Sammy still pending; scripts are written (15 lines, in the old
session transcript and recoverable from the user).
1---2name: burton-motion-videos3description: Produce Burton Method short-form animated videos (TikTok/Reels/Shorts, 9:16) in the house style: flat-matte vector museum/court/desk scenes, Burt the bee mascot acting beat-synced reactions, Kurzgesagt-style choreographed transitions (self-assembling scenes, object morphs, scene slides), rendered via the Python-SVG-frames pipeline with synthesized sound design. Use this skill whenever the user mentions Burton Method videos, Burt the bee, LSAT/logic short videos, scene videos, motion tests, beat boards, or wants to create/refine/extend any animated explainer in this brand — even if they just say "make another video" or "the desk one next". Also use it for partial tasks: designing a new character pose, adding a transition, re-rendering, or fixing motion/text issues in existing Burton videos.4---56# Burton Method Motion Videos78End-to-end pipeline for 14-second, 30fps, 1080×1920 animated explainers in the Burton9Method brand. Everything below was learned by building and shipping these with the10brand owner; the do/don'ts encode real defects that were found and fixed. Follow the11stages in order — each has a human approval gate because rework after animation is1210× the cost of rework at stills.1314## The brand system1516- **Palette (flat matte, no gradients on objects):** soft honey `#FFE3A8`, dusty navy17 `#5E6C88` / deep navy `#3D4E6C`, hand gold `#F2C87E`, accent amber `#F5B95F`, blush18 `#F5A9A0`, cream text `#FFF6E5`, muted red `#CC6B52` (see typography rules), urn/prop19 orange `#E8833A`/`#C4632A`, brass `#D9B36A`, rope red `#B23A48`.20- Scene palettes live in `scripts/museum_scene.py` (`PAL`): warm / cool / invert / lesson.21 Every video runs a **color journey**: warm hook → cool claim → cream alarm flip on the22 interrupt → deep-navy lesson → warm CTA that matches frame one (invisible loop).23- Gradients are reserved for light (spot cones, glow blooms) and shadows only.24- Tone: dry tutor. Deadpan over hype. The joke is that the logic is bad, not that the25 video is loud.26- **Burt the bee** is the mascot: "Storybook" design — pastel honey, oversized squircle27 navy glasses, bow tie, tiny book, blush. Canonical rig in28 `assets/burt-character-sheet-v2.svg`. Never redesign him casually; the user approved29 this exact look after rejecting a shinier/sharper v1 ("cuter, softer, less shiny").3031## The 5-beat structure (14s)32331. **HOOK (0–2s)** — question on frame one, Burt flies in. Frame one must work as a34 thumbnail.352. **CLAIM (2–5.5s)** — the flawed argument, presented straight (speech card / plaque).36 Burt jaw-drops.373. **INTERRUPT (5.5–7s)** — full palette flip, physical scene reaction (urn wobble, lamp38 stutter), Burt facepalm. This is the retention spike; make it physical.394. **LESSON (7–11.5s)** — the argument written into the scene, the leap marked once in40 red, Burt points. Text rules below are strictest here.415. **CTA (11.5–14s)** — comment bait, Burt smug, final frame pixel-matches frame one.4243## Pipeline stages and gates4445**Stage 0 — Prerequisites.** Confirm: which video/argument, VO status (script text is46enough to start; audio file needed before final mix), any reference files. VO scripts are4715 lines (5 per video) in the dry-tutor voice; the user's brother Sammy recording them on48a phone beats any TTS.4950**Stage 1 — Assets.** New character/prop? Build a **variant lineup first** (3 styles on51one sheet), get a pick, then build the full sheet: expressions + poses on ONE rig52(shared body symbols, swappable face/arm layers — that construction is what makes53animation cheap). Read `references/asset-design.md` before drawing anything.54GATE: user approves the sheet.5556**Stage 2 — Beat boards.** Build the scene as a Python generator (copy the architecture57of `scripts/museum_scene.py`: every element is a function taking palette/params). Emit 558stills, one per beat, QA them (see gates below), present as a contact sheet.59GATE: user approves boards. Never animate unapproved boards.6061**Stage 3 — Motion.** Time-parameterize the same functions (the generator IS the62animation engine — same code, `t` argument). Design entrances, morphs, and slides from63`references/motion-language.md`. Render a keyframe strip (6–8 sampled moments) and64inspect before committing to full renders.6566**Stage 4 — Render + sound.** Pure Python: cairosvg per frame → ffmpeg. No browsers,67no HTML runtime — this removed an entire class of environment pain. Synthesize SFX with68`scripts/sfx_kit.py`; every motion event gets a sound. Read69`references/render-pipeline.md` for commands, performance numbers, and mix levels.70GATE: user watches the MP4.7172**Stage 5 — Data loop.** After posting, ask for TikTok retention graphs (screenshots),73read the drop-off seconds, target them in the next revision.7475## QA gates (run before every presentation)76771. **Static render + look.** Render the SVG/frame to PNG and actually view it. Every78 defect below was caught this way.792. **2× zoom pass** on faces, hands, and any reworked region.803. **Text-zone map:** no text over figures, lamps, or props. Keep a headline zone81 (top ~450px) that scene objects stay out of.824. **Unified props:** an object referenced twice must be the same drawing (one function).835. **User sign-off** before the next stage.8485## Do / Don't (each one is a scar)8687- DO draw glasses in two layers: lens fills UNDER the eyes, frames OVER. A single88 glasses group drawn after the eyes washes them out (translucent lens over dark eyes).89- DON'T use `tspan` for inline emphasis with cairosvg — it breaks `text-anchor="middle"`90 centering and words overlap. Emphasize with caps, color on a whole line, or layout.91- DO put CSS animations only on dedicated wrapper `<g>` elements. A CSS transform on a92 node that has an SVG `transform` attribute REPLACES it (the plant-out-of-pot bug).93- DON'T center long text. Left-align multi-line body text; center only short headlines.94- DO reserve red for exactly one mark per frame (the slash on the leap). Red paragraphs95 read as noise; one red mark reads as a verdict. Muted red `#CC6B52`, never pure red.96- DO write arguments INTO the scene (on the wall, on a plaque) instead of floating97 overlay cards. Cards over scenes read as PowerPoint; the user explicitly rejected this.98- DO ghost the conclusion (40% opacity) in lesson layouts — the visual says "doesn't99 follow" before the words do.100- DON'T let big soft shadow/spotlight pool ellipses sit behind rescaled objects — they101 read as slabs. Scale shadows with their objects; give spotlights a `pool=False` option.102- DO give hands/arms a darker outline (`#C9A05C`) when they cross the face — same-value103 fills disappear against the body.104- DO end every video on a frame matching frame one; DO make blinks land on pauses,105 never mid-line.106- DON'T animate anything that hasn't been approved as a still.107108## Bundled resources109110- `references/asset-design.md` — character workflow, rig construction, cute-style rules,111 typography standards. Read before designing any asset.112- `references/motion-language.md` — easing library, entrance choreography tables, the113 morph recipe, slide+parallax recipe, Burt acting rules, SFX event mapping. Read before114 animating.115- `references/render-pipeline.md` — exact commands, perf numbers, chunking, audio116 synthesis and mix levels. Read before rendering.117- `scripts/museum_scene.py` — the approved museum scene generator + Burt rig as code.118 Copy its architecture for new scenes (court, desk); reuse `burt()` directly.119- `scripts/transitions_test.py` — the approved motion test: assembly, morph, slide.120 This is the animation engine pattern.121- `scripts/sfx_kit.py` — whoosh/pop/thunk/tick/riser/buzz synths + mixdown helper.122- `assets/burt-character-sheet-v2.svg` — canonical Burt (3 expressions, 4 poses).123- `assets/burt-motion-library.svg` — his 6 motions as live CSS animation (browser demo).124- `assets/burt-wing-buzz.wav` — his buzz loop (mix at ~0.3 gain under everything).125126## Known open items127128- Court and desk videos: rebuild from scratch at this standard (museum is the pilot).129- Desk video needs a **sleeping Burt** (closed eyes + Zzz) — not yet designed.130- VO recording from Sammy still pending; scripts are written (15 lines, in the old131 session transcript and recoverable from the user).