A Code-Drawn Story Trailer That Shows Its Proof
A 15-second square trailer sells a code-drawn children's film with kinetic claims, animated payoff, and a test-result card.
By Augusto Builds for kids-story-studio
get_blueprint("REF-6269") paste it into Claude to read this blueprint. Connect Claude
All 10 shots, with timecodes
Why it works
Three fast claim cards resolve their visual puzzle by frame 75, then shot 4 spends 120 frames showing the code-drawn result. The preview-to-scene enlargement makes the promise tangible; genuine test output and a 93-frame final destination make the claim checkable and actionable. These are design readings, not measured audience performance.
Look and sound
Read from the frames and the soundtrack.
Palette
Sampled from the opening frames.
Sound
- Voice
- None
- Tempo
- No steady pulse
- Loudness
- -14.4 LUFS
Continuous tonal electronic bed with no steady pulse; sparse accents follow picture events rather than a beat grid.
Motion and type
- Pace
- 36.0 cuts a minute
- First 10 s
- 7 cuts
- Longest shot
- 4.00 sec
Likely made with
- Motion
- Remotion
- Music
- A licensed or generated music track
Estimated from the frames and sound, not confirmed by the maker.
Claude can make this
Hook sheet
The first 3 seconds, every quarter second.
Cut from the film’s hook sheet. Claude reads the same sheet over MCP.
Blueprint
15 plates that take the film apart, from its format to a recipe you can run. Claude reads the same plates over MCP.
Plate 01
The format in one breath
A short type argument makes a surprising creation claim, then a small preview expands into the thing actually made. Story stakes and genuine build proof lead to a plain-text destination.
Why it works (inferred): The first three cards resolve their claim by frame 75. Shot 4 gets 120 frames to show the result. Shot 10 gives the destination 93 frames, with no end fade.
Plate 02
Format card
| Reference | |
|---|---|
| Platform · aspect · length | YouTube · 1:1 · 360×360 source · 15 s · 30 fps |
| Pace | 10 shots · 8 hard cuts plus one 2 f flash · 0.9 s median shot |
| Script | Picture-led · wordless; type and the preview carry the claim; cue hits follow picture events, not beats |
| Voice | None |
| On screen | Claim cards, code-drawn result, character image, maker and test proof, end card |
| Type | Ten measured levels, 34–338 px cap at 1080; bold display and smaller labels |
| Sound | Tonal bed, no steady pulse; picture cues; reference −14.4 LUFS integrated |
| Structure | Five beats; visual payoff in shot 4, text CTA in shot 10 |
Tools you'll need: Remotion for motion graphics · a licensed or generated music track · Claude alone: yes
Frame sheets
Frame by frame
Stills taken at measured moments, each labelled with its time. Claude gets the same sheets over MCP.
Plate 03
The hook, frame by frame (first 3 seconds)
| Time | Picture | On-screen text | Words and sound | What it does |
|---|---|---|---|---|
| 0–0.9 | Dark card; broad strike crosses the giant word | The reference uses “IMAGES” | No voice; tonal events at f3, f17, f26 | Negates an expected ingredient |
| 0.9–1.7 | Warm card, oversized numeral-word with echo outlines | The reference uses “ZERO.” | Accent near f31 | Answers the negation |
| 1.7–2.5 | Light card, letters assemble under a small label | The reference uses “CODE.” | Hit at f54 | Names the method |
| 2.5–3.0 | Small tilted preview rapidly grows | Local-play label | Hit later at f100 | Converts claim into evidence |
Hook formula (inferred): cross out {{CLAIM}}’s expected ingredient → quantify the surprise → name {{METHOD}} → show {{RESULT_SCENE}}.
Plate 04
Structure (beat sheet)
| # | Time | Shots | Beat | What happens | Technique |
|---|---|---|---|---|---|
| 1 | 0–2.5 | 1–3 | Claim | Negation, quantity and actual method | Full-frame type cards, abrupt palette changes |
| 2 | 2.5–6.5 | 4 | Visible result | The preview grows into a moving world and a light payoff | Panel-to-scene push; overlay line |
| 3 | 6.5–9.1 | 5–7 | Mechanism and stakes | A code rule, a missing state and a group answer | Formula card, dark character frame, warm poster |
| 4 | 9.1–11.9 | 8–9 | Maker and verification | Creation method followed by actual test output | Kinetic type then terminal-style proof |
| 5 | 11.9–15 | 10 | Destination | Title, descriptor and text link over result imagery | Dark veil and sustained card |
Retention map (inferred): re-hooks in shots 2, 3, 5 and 8; result in shot 4; CTA in shot 10; hard stop.
At a glance
- Shots: 10 shots · 9 transitions · 15.00 s = 450 frames at 30 fps · shot length median 0.90 s (shortest 0.80, longest 4.00)
For agents: Shots
The measured data and build specs agents work from. Over MCP they get it all, with the full timeline as JSON.
Shots (measured)
10 shots · 9 transitions · 15.00 s = 450 frames at 30 fps · shot length median 0.90 s (shortest 0.80, longest 4.00). Frames are at 30 fps, first and last inclusive: a shot "33–70 · 38 f" is a Remotion <Sequence from={33} durationInFrames={38}>; at another frame rate, use the seconds.
| # | in–out (s) | frames @30 (first–last · count) | dur (s) | transition in | scales (inferred) |
|---|---|---|---|---|---|
| 1 | 0.00–0.90 | 0–26 · 27 f | 0.90 | start | fixed |
| 2 | 0.90–1.70 | 27–50 · 24 f | 0.80 | cut | fixed |
| 3 | 1.70–2.50 | 51–74 · 24 f | 0.80 | cut | fixed |
| 4 | 2.50–6.50 | 75–194 · 120 f | 4.00 | cut | scales |
| 5 | 6.50–7.40 | 195–221 · 27 f | 0.90 | cut | optional |
| 6 | 7.40–8.30 | 222–248 · 27 f | 0.90 | cut | optional |
| 7 | 8.30–9.10 | 249–272 · 24 f | 0.80 | cut | optional |
| 8 | 9.10–10.67 | 273–319 · 47 f | 1.57 | cut | optional |
| 9 | 10.67–11.90 | 320–356 · 37 f | 1.23 | cut | scales |
| 10 | 11.90–15.00 | 357–449 · 93 f | 3.10 | flash · 2 f | fixed |
scales: fixed = keep this shot's length when the film gets longer or shorter · scales = stretch or shrink it with the length · optional = drop it for the 15 s cut.
Measurement notes: tempo low confidence (0.20): no steady pulse; beats are given but should not drive edits · key low confidence (0.00): D major vs A major · cue sheet keeps 15 of 17 sound events (all near cuts, then the strongest)
Frame sheets (measured): shots, one labelled frame per shot (labels S<n> m:ss.s; + = just after a change inside the shot) · the full-length timeline, the whole film at fixed steps (labels S<n> m:ss.s f<frame>), 2 pages · close-up strips, 14 frames around each cut and change: f27 cut, f51 cut, f75 cut, f195 cut, f222 cut, f249 cut, f273 cut, f320 cut, f357 flash (sheet "transitions", 5 pages; labels S<n> m:ss.sss f<frame>): call get_frames('yt-n4TgQHLmfVA'), or see them on the film page (Pro, or free films).
Plate 05
Shot grammar
Mix (inferred): Six type or proof cards, one expanding result shot, two story or poster shots, one end card. Fast cards surround the longer result and destination.
Rules this editor follows (inferred): Advance one idea per cut. Give the demonstration more time than the setup. Keep the moving image legible under text.
At a glance
- Biggest moves: shot 4: push in ×5.25 over 4.00 s, ease-out · shot 2: pull out ×0.57 over 0.80 s, ease-out · shot 7: pull out ×0.67 over 0.80 s, ease-out.
- Transitions: 9 transitions: 8 cuts · 1 flash (2 f)
For agents: Camera and motion · Transitions
The measured data and build specs agents work from. Over MCP they get it all, with the full timeline as JSON.
Camera and motion (measured)
Per shot, measured on the frames. "Camera move" names the camera's move; the numbers are the image's motion: pan in % of frame width (x) or height (y) per second, +x = content moves right (so a pan left), +y = content moves down; zoom per second > 1 = content grows (push in). "Over the shot" is the total, with px at 1080×1080. Speed is the move through the shot, about one character per 0.5 s (▁ still → █ its peak), then the peak in % of width per second. Cadence: "ones" = a new picture every frame, "twos" = each picture held two frames. Blur is relative to this film (0 = its sharpest shots, 1 = its blurriest); motion = share of the frame changing, 0–1. "?" = confidence under 0.5: a hint, check the sheets. The labels describe how the image moves, not where a 3D camera went: an object flying toward a still camera can read as a push in.
In 4 of 10 shots the camera holds still and something inside the frame moves: see Element motion right under this table.
| # | camera move | pan x · y (%/s) | zoom (/s) | over the shot | ease | speed · peak | cadence | blur | motion | conf |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | static? · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁ | ones | 0.79 | 0.06 | 0.35 |
| 2 | pull out (shake 3.9%/s) | +0.1 · +1.9 | ×0.493 | y +1.6% (+17 px) · ×0.57 scale · roll +6.2° | ease-out | ▆▁▁▁ · 176%/s | still | 0.36 | 0.07 | 1.00 |
| 3 | static? · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁ | ones | 0.65 | 0.12 | 0.49 |
| 4 | push in (shake 32.4%/s) | −2.7 · −9.4 | ×1.514 | x −10.8% (−116 px) · y −37.7% (−407 px) · ×5.25 scale · roll −12.2° | ease-out | ▃▁▁▁▁▁▁▁ · 461%/s | ones | 0.55 | 0.26 | 0.66 |
| ↳ 2.50–2.97 s: complex | −11.3 · −103.7 | ×8.857 | x −5.3% (−57 px) · y −48.4% (−522 px) · ×2.77 scale · roll −11.3° | ease-out | ||||||
| ↳ 2.97–3.70 s: static | +0.0 · +0.0 | ×1.000 | none | hold | ||||||
| ↳ 3.70–5.83 s: push in | +0.1 · +5.7 | ×1.343 | y +12.2% (+131 px) · ×1.87 scale | ease-out | ||||||
| ↳ 5.83–6.10 s: pan right | −21.1 · −5.6 | ×1.044 | x −5.6% (−61 px) · y −1.5% (−16 px) · ×1.01 scale · roll −0.9° | irregular | ||||||
| ↳ 6.10–6.43 s: static | +0.0 · +0.0 | ×1.000 | none | hold | ||||||
| 5 | pull out (shake 3.6%/s) | −0.1 · −1.7 | ×0.617 | y −1.5% (−16 px) · ×0.65 scale | ease-out | ▅▁▁▁ · 135%/s | ~26 fps | 0.48 | 0.08 | 1.00 |
| 6 | static | +0.0 · +0.0 | ×1.000 | none | hold | ▁▂▆▃ · 0%/s | still | 0.40 | 0.00 | 1.00 |
| 7 | pull out (shake 8.3%/s) | +1.4 · −2.9 | ×0.602 | x +1.1% (+12 px) · y −2.3% (−25 px) · ×0.67 scale · roll +7.5° | ease-out | ▆▁▁▁ · 122%/s | ones | 0.77 | 0.38 | 0.72 |
| 8 | static? · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁ | ones | 0.62 | 0.24 | 0.35 |
| 9 | static? · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁ | ones | 0.34 | 0.07 | 0.47 |
| 10 | static | −0.1 · +0.0 | ×0.987 | ×0.96 scale | hold | ▅▁▁▁▁▁ · 15%/s | ones | 0.26 | 0.14 | 0.95 |
Element motion (measured): in these shots the frame holds still and something inside it moves: a card, a UI panel, a product, a word. Region = where it moves (x · y · w · h % of the frame); numbers as above, for the moving region; "moving" = share of the shot in motion; ↳ = the move changes direction.
| # | region x·y·w·h % | element move | x · y (%/s) | zoom (/s) | total while moving | ease | speed · peak | moving | conf |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 14 · 51 · 71 · 6 → 14 · 51 · 71 · 6 | complex | +0.0 · +10.1 | ×0.872 | y +2.7% (+29 px) · ×0.96 scale · roll −3.5° in 0.3 s | ease-out | ▆▁▁▁ · 25%/s | 0.30 | 0.80 |
| ↳ 0.00–0.27 s: complex | +0.0 · +10.1 | ×0.872 | y +2.7% (+29 px) · ×0.96 scale · roll −3.5° | ease-out | |||||
| ↳ 0.27–0.87 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| 3 | 10 · 47 · 24 · 19 → 14 · 37 · 53 · 28 | slide down | +1.9 · +11.7 | ×0.997 | x +1.3% (+14 px) · y +8.2% (+88 px) · roll +1.3° in 0.7 s | ease-out | ▇▁▁▁ · 86%/s | 0.87 | 0.63 |
| ↳ 1.77–2.47 s: slide down | +1.9 · +11.7 | ×0.997 | x +1.3% (+14 px) · y +8.2% (+88 px) · roll +1.3° | ease-out | |||||
| 8 | 9 · 31 · 9 · 12 → 15 · 24 · 71 · 54 | complex | +29.2 · +26.8 | ×2.159 | x +27.2% (+294 px) · y +25.1% (+271 px) · ×2.05 scale · roll +4.5° in 0.9 s | ease-in-out | ▂▆▁▁ · 312%/s | 0.60 | 0.55 |
| ↳ 9.17–9.43 s: slide down | −3.1 · +43.4 | ×1.006 | x −0.8% (−9 px) · y +11.6% (+125 px) · roll +3.0° | ease-out | |||||
| ↳ 9.43–10.10 s: complex | +42.1 · +20.2 | ×2.931 | x +28.1% (+303 px) · y +13.5% (+146 px) · ×2.05 scale · roll +1.5° | ease-in-out | |||||
| ↳ 10.10–10.63 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| 9 | 12 · 12 · 10 · 11 → 29 · 12 · 29 · 22 | slide down | +2.5 · +5.0 | ×1.035 | x +1.0% (+11 px) · y +2.0% (+21 px) · ×1.01 scale in 0.4 s | ease-out | ▆▂▁▁ · 21%/s | 0.32 | 0.76 |
| ↳ 10.73–11.13 s: slide down | +2.5 · +5.0 | ×1.035 | x +1.0% (+11 px) · y +2.0% (+21 px) · ×1.01 scale | ease-out | |||||
| ↳ 11.13–11.87 s: static | +0.0 · +0.0 | ×1.000 | none | hold |
Focus (measured): shot 1: sharp inside 0 · 29 · 100 · 43, no defocus (deep focus) · shot 2: sharp inside 0 · 14 · 100 · 86, no defocus (deep focus) · shot 3: sharp inside 0 · 14 · 100 · 57, no defocus (deep focus) · shot 4: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 5: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 6: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 7: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 8: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 9: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 10: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus). Box = x · y · w · h % of the frame. In 2D, blur the layers outside the box by that many px; in 3D, set the focus distance on the box and open the aperture until the background blur matches.
Biggest moves: shot 4: push in ×5.25 over 4.00 s, ease-out · shot 2: pull out ×0.57 over 0.80 s, ease-out · shot 7: pull out ×0.67 over 0.80 s, ease-out. Locked-off shots: 2 of 10; 4 more could not be tracked (shown as "static?" or "not measured": check the sheets). Animation cadence: a new picture every frame (on ones): 28.6 unique frames per second of 30 while things move (held-frame share 0.05, 228 moving frames). Match it, or the motion will feel smoother or choppier than the reference.
Transitions (measured)
9 transitions: 8 cuts · 1 flash (2 f). Frames are at 30 fps; a transition of n frames lasts n ÷ 30 s. Hard cuts are reliable; the blur types (whip versus zoom) are the weakest labels, so read their confidence and check the sheets.
Hard cuts (0 frames), at frames 27, 51, 75, 195, 222, 249, 273, 320 (@30).
| into # | at (s) | frame @30 | type | length | conf |
|---|---|---|---|---|---|
| 10 | 11.90 | 357 | flash | 2 f · 0.07 s | 1.00 |
What each shot shows (inferred from the sheets)
| # | Type | Framing | What's on screen | Text / overlay |
|---|---|---|---|---|
| 1 | Strike card | Full square | Oversized word | Crossbar |
| 2 | Quantity card | Full square | Echoed display type | Small premise |
| 3 | Method card | Full square | Building letters | Small qualifier |
| 4 | Result composite | Small panel to close scene | Code-drawn garden and glowing object | Local-play and payoff labels |
| 5 | Mechanism card | Full square | Large function notation | Constraints |
| 6 | Stakes image | Character close view | Dim world | Short headline |
| 7 | Answer poster | Framed scene | Group in brighter world | Large answer word |
| 8 | Maker card | Full square | Angled maker typography | Small setup |
| 9 | Verification card | Terminal inset | Test output | Status counts |
| 10 | End card | Result image under veil | Title and destination | Text URL |
Plate 06
Visual style guide
Look (inferred): Alternate dark background, warm accent and light paper roles; reserve rich, softly layered colour for the code-drawn result. The reference uses navy, orange and cream, but map roles to {{BRAND_BG}} and {{BRAND_ACCENTS}}. Use {{LOGO}} and {{CTA_URL}} as text on the last card.
At a glance
- Type scale (cap px): 338 · 217 · 183 · 156 · 96 · 76–80 · 64 · 50–55 · 39–43 · 34 (10 levels) among the text above.
- Phone minimum: cap height ≥ 2% of frame width = 22 px at 1080×1080
- Whole film (time-weighted):
#0F163345% ·#F2ECD618% ·#2F333012% ·#FCAE2D7% ·#9285633% ·#2D34693%. - Curve facts: average 0.36 · darkest 0.08 at 2.5 s · brightest 0.93 at 9.2 s · sudden changes at 1.00 s (brighter by 0.46), 1.75 s (brighter by 0.29), 2.50 s (darker by 0.78), 5.50 s (brighter by 0.21), 6.50 s (darker by …
For agents: Type · Type spec · Palette by shot · Brightness curve · Layout boxes · Material card
The measured data and build specs agents work from. Over MCP they get it all, with the full timeline as JSON.
Type (measured)
Sizes are cap height (the height of a capital letter) in px at the 1080p deliverable, 1080×1080. Font size ≈ cap ÷ 0.71 for a typical sans (Inter 0.73, Geist 0.71, SF Pro 0.70, Instrument Sans 0.72): check your own font's cap-height ratio. Cap heights are estimated from text-recognition boxes (median error about 11% on real text; text under about 13 px at 1080p and non-Latin scripts are not read). Box = x · y · w · h as % of the frame, from the top-left.
| text | shot | on screen (s) | cap px | ≈ font px | cap % of height | box x·y·w·h % | position |
|---|---|---|---|---|---|---|---|
| "IMAGES" | 1 | 0.0–0.8 | 217 | 306 | 20.1 | 0 · 39 · 95 · 23 | centre, middle (inside 5% of the edge) |
| "ZERO." | 2 | 1.0–1.5 | 338 | 476 | 31.3 | 7 · 40 · 92 · 34 | centre, middle (inside 5% of the edge) |
| "Run it locally." | 4 | 2.8–3.8 | 55 | 77 | 5.1 | 27 · 6 · 48 · 9 | centre, top |
| "Illustration • real frames from the film" | 4 | 2.8–4.0 | 34 | 48 | 3.1 | 15 · 93 · 70 · 4 | centre, bottom (inside 5% of the edge) |
| "IT GLOWS." | 4 | 4.5–5.3 | 183 | 258 | 16.9 | 4 · 47 · 93 · 19 | centre, middle (inside 5% of the edge) |
| "and then" | 4 | 4.5–5.0 | 50 | 70 | 4.6 | 38 · 32 · 23 · 6 | centre, upper |
| "WENT OUT." | 6 | 7.5–8.3 | 96 | 135 | 8.9 | 25 · 20 · 52 · 10 | centre, upper |
| "THE GLOW" | 6 | 7.5–8.3 | 80 | 113 | 7.4 | 25 · 12 · 49 · 8 | centre, top |
| "One night..." | 6 | 7.5–8.3 | 39 | 55 | 3.6 | 37 · 4 · 27 · 6 | centre, top (inside 5% of the edge) |
| "AI AGENTS" | 8 | 10.0–10.5 | 156 | 220 | 14.4 | 6 · 40 · 88 · 17 | centre, middle |
| "i tests 27" | 9 | 11.0–11.8 | 50 | 70 | 4.6 | 10 · 42 · 34 · 6 | left, middle |
| "$ npm test" | 9 | 11.0–11.8 | 43 | 61 | 4.0 | 9 · 34 · 35 · 6 | left, upper |
| "i fail 0" | 9 | 11.3–11.8 | 50 | 70 | 4.6 | 10 · 59 · 28 · 6 | left, lower third |
| "Pip and the Missing Glow" | 10 | 12.3–14.8 | 64 | 90 | 5.9 | 6 · 18 · 88 · 9 | centre, upper |
| "A short drawn entirely by code." | 10 | 12.5–14.8 | 39 | 55 | 3.6 | 13 · 30 · 75 · 6 | centre, upper |
| "kids-story-studio" | 10 | 12.8–14.8 | 76 | 107 | 7.0 | 7 · 70 · 87 · 11 | centre, lower third |
| "augustobuilds/" | 10 | 12.8–14.8 | 43 | 61 | 4.0 | 32 · 61 · 37 · 6 | centre, lower third |
| "Get it on GitHub" | 10 | 12.8–14.8 | 40 | 56 | 3.7 | 33 · 53 · 33 · 4 | centre, middle |
Plus 16 smaller or briefer text items, cap 31–260 px, mostly labels inside interfaces: all in the timeline JSON.
Type scale (cap px): 338 · 217 · 183 · 156 · 96 · 76–80 · 64 · 50–55 · 39–43 · 34 (10 levels) among the text above.
Left out: 8 reads that are not clean words or were seen in a single frame ("Localhost: 8000/c…", "NO 3D.", "renderAt (t)"…): blurred, moving or partly hidden text the recognizer misread. They stay in the timeline JSON, not in the type scale.
Phone minimum: cap height ≥ 2% of frame width = 22 px at 1080×1080. Why: in a phone feed the film fills the screen width, about 390 pt, and 2% of that is 7.8 pt, the cap height of 11 pt text, Apple's smallest recommended text size. Words the viewer must read go at or above it; smaller text can only be decoration. Every measured text item in the reference clears it.
Type spec (inferred)
Assume cap height = 0.71 × CSS font size. Every readable level exceeds the 22 px square phone minimum. Use {{BRAND_FONT}}; Inter Black is a free fallback for the reference’s heavy sans. Each row uses a background/text role pair from {{BRAND_BG}} and {{BRAND_ACCENTS}}.
| Level | Cap px · font px | Weight · case · tracking | Colour pair | Motion |
|---|---|---|---|---|
| 1 | 338 · 476 | 900 · upper · −.05em | accent / dark | 8 f scale, ease-out |
| 2 | 217 · 306 | 900 · upper · −.045em | dark / light | 8 f slide, ease-out; strike follows |
| 3 | 183 · 258 | 900 · upper · −.04em | image / light | 10 f opacity and y, ease-out |
| 4 | 156 · 220 | 900 · upper · −.04em | dark / light | 12 f angled rise, ease-out |
| 5 | 96 · 135 | 850 · upper · −.025em | image / light | 6 f opacity, ease-out |
| 6 | 76–80 · 107–113 | 850 · upper · −.025em | accent / dark | 8 f slide, ease-out |
| 7 | 64 · 90 | 800 · title case · −.02em | image / light | 8 f fade, ease-out |
| 8 | 50–55 · 70–77 | 750 · sentence/mono · 0em | dark / light | 6 f fade, ease-out |
| 9 | 39–43 · 55–61 | 700 · sentence/mono · 0em | image / light | 6 f fade, ease-out |
| 10 | 34 · 48 | 700 · sentence · 0em | dark / light | 6 f fade, ease-out |
Palette by shot (measured)
Colours measured on the frames, with their share of the frame; luma 0 = black, 1 = white. These are the reference's brand colours: map them onto {{BRAND_BG}} and {{BRAND_ACCENTS}} by role (background, surface, accent), don't reuse them as the format. Neighbouring shots with the same palette share a row.
| # | luma mean · p95 | colours (share of frame) | highlights (bright pixels) |
|---|---|---|---|
| 1 | 0.15 · 0.82 | #0B1230 88% · #EFE9D4 5% · #8C8A8B 3% · #F5AF3A 2% · #484857 2% | #F9F4E0 hue 99° ≈5680 K 53% · #F9F4DC hue 102° ≈5580 K 27% · #F8F6EB ≈6020 K 20% |
| 2 | 0.63 · 0.72 | #FCAE2D 80% · #101430 9% · #D2932F 6% · #8B6430 3% · #533F2F 2% | #FDB331 hue 77° ≈2750 K 68% · #F7B443 hue 78° ≈2900 K 25% · #EFB65A hue 79° ≈3160 K 7% |
| 3–5 | 0.49 · 0.95 | #0F1633 39% · #F2ECD6 21% · #41462C 16% · #928563 13% · #2D3469 12% | #F9F5E3 hue 100° ≈5780 K 86% · #EAE2A6 hue 102° ≈4720 K 8% · #575C4E hue 111° ≈5750 K 6% |
| 6 | 0.22 · 0.62 | #16212C 39% · #0B1333 26% · #4A5C5E 21% · #589260 7% · #AEAEA4 6% | #F8F5E2 hue 104° ≈5780 K 45% · #F7F6D8 hue 107° ≈5520 K 31% · #F7F6F0 ≈6240 K 24% |
| 7 | 0.50 · 0.72 | #FBAE2E 49% · #4E5135 24% · #1A1D2F 15% · #9D7D3F 10% · #9C7FB1 2% | #F8B744 hue 79° ≈2950 K 53% · #CBCB5D hue 105° tinted 33% · #DEBEAC hue 57° ≈4650 K 14% |
| 8–9 | 0.44 · 0.95 | #0D1330 48% · #F7F1DC 44% · #979494 4% · #3E3B46 3% · #8D6632 1% | #FAF4E0 hue 99° ≈5650 K 58% · #FAF6EA ≈5960 K 28% · #F9F7F5 ≈6350 K 14% |
| 10 | 0.21 · 0.65 | #141627 45% · #2F3330 34% · #646445 11% · #A5A797 6% · #BE8F3B 5% | #F0F0E1 ≈5950 K 88% · #C6D571 hue 112° tinted 7% |
Whole film (time-weighted): #0F1633 45% · #F2ECD6 18% · #2F3330 12% · #FCAE2D 7% · #928563 3% · #2D3469 3%.
Brightness curve (measured)
Mean luma per 1 s, one character each, grouped in tens; p95 = the bright highlights. Scale: ▁ = 0 (black) → █ = 1.0 (white); luma runs 0–1.
0s 10s
mean ▂▆▄▂▃▅▅▂▃▆ ▂▄▂▂▂
p95 ▇▇▆▇▇██▇▆█ ██▅▆▆
Curve facts: average 0.36 · darkest 0.08 at 2.5 s · brightest 0.93 at 9.2 s · sudden changes at 1.00 s (brighter by 0.46), 1.75 s (brighter by 0.29), 2.50 s (darker by 0.78), 5.50 s (brighter by 0.21), 6.50 s (darker by 0.57), 8.50 s (brighter by 0.29), 9.25 s (brighter by 0.43), 10.00 s (darker by 0.54) · opens from black, up by about 0.88 s.
Layout boxes (inferred)
| Element | Shots | Box x · y · w · h (%) | Source · confidence | Notes |
|---|---|---|---|---|
| Claim headline | 1 | 0 · 39 · 95 · 23 | measured text box · high | Crossbar traverses it |
| Quantity headline | 2 | 7 · 40 · 92 · 34 | measured text box · high | Near full width |
| Result payoff | 4 | 4 · 47 · 93 · 19 | measured text box · high | Over image |
| Moving preview | 4 | 0 · 0 · 100 · 100 | measured focus region · high | Deep focus after enlargement |
| Stakes headline | 6 | 25 · 12 · 49 · 8 | measured text box · high | Upper band |
| Maker headline | 8 | 6 · 40 · 88 · 17 | measured text box · high | Angled build |
| Terminal line | 9 | 9 · 34 · 35 · 6 | measured text box · high | Left align |
| End title | 10 | 6 · 18 · 88 · 9 | measured text box · high | Over veil |
| End CTA URL | 10 | 7 · 70 · 87 · 11 | measured text box · high | Replace reference repo path |
| End CTA lead-in | 10 | 33 · 53 · 33 · 4 | measured text box · high | Above URL |
End card (inferred): Put {{LOGO}} near the measured title region if it is textual; keep {{CTA_URL}} in the lower measured URL region at level 6 or larger. Shot 10 occupies f357–449; it darkens at f364, then remains a readable card without a fade to black.
Material card (inferred)
:root { --brand-bg: {{BRAND_BG}}; --brand-accent: {{BRAND_ACCENTS}}; --brand-ink: #f7f4ec; }
.card { background: var(--brand-bg); color: var(--brand-ink); }
.echo { -webkit-text-stroke: 1px var(--brand-accent); color: transparent; opacity: .42; transform: translateY(12px); }
.preview { border-radius: 22px; border: 2px solid color-mix(in srgb, var(--brand-ink) 35%, transparent); box-shadow: 0 20px 46px #0008; overflow: hidden; }
.glow { filter: drop-shadow(0 0 28px color-mix(in srgb, var(--brand-accent) 70%, transparent)); }
.end-veil { background: linear-gradient(180deg,#0005 0%,#0009 100%); }
No 3D is needed: draw {{RESULT_SCENE}} in 2D Canvas or SVG, with layered foliage, gradients, a 28 px glow at 1080p and no synthetic depth-of-field blur; plate 5 measures deep focus. Keep result imagery original and demonstrably generated by the project’s own drawing code.
Plate 07
Voice and delivery
Measured: No speech. Voice direction (inferred): none; all essential meaning is on-screen. Keep each headline short enough to scan during its shot.
Plate 08
Sound design
Music (inferred): A continuous warm electronic tone supports the cards and grows more textural over the result. The cue frames, not a beat grid, determine accents. Leave a pocket around the visual result before the later proof hits.
At a glance
- Tempo: no steady pulse. The best guess, 92.29 BPM, has confidence 0.20, too low to build on: time the edit to the cue sheet below, not to a BPM.
- Key: unclear: D major or A major (confidence 0.00); pick your own.
- Loudness of the reference (measured): −14.4 LUFS integrated, true peak 2.8 dBTP, range 4.7 LU. That is how this film was mastered, not a target (its peak is above −1 dBTP: don't copy that).
For agents: Sound grid · Original music bed
The measured data and build specs agents work from. Over MCP they get it all, with the full timeline as JSON.
Sound grid (measured)
Tempo: no steady pulse. The best guess, 92.29 BPM, has confidence 0.20, too low to build on: time the edit to the cue sheet below, not to a BPM.
Key: unclear: D major or A major (confidence 0.00); pick your own.
Sections (by energy of the whole mix):
| section | time (s) | shots | level (RMS) |
|---|---|---|---|
| steady | 0.0–3.0 | 1–4 | −12 dB |
| steady | 3.0–6.5 | 4 | −12 dB |
| build | 6.5–15.0 | 5–10 | −15 dB |
Energy map (RMS per 1 s, ▁ = −55 dB → █ = −10 dB):
██▇███▇▁██ █▇█▇▆
Cue sheet (15 cues: 3 at a cut, 0 on a beat). "On screen" names the picture event the cue hits within ±3 frames (a cut, a jump, a move starting, a line of text appearing, a brightness step), or says there is none:
| t (s) | frame @30 | shot | kind | strength | on screen (±3 f) | on beat |
|---|---|---|---|---|---|---|
| 0.12 | 3 | 1 | tonal | 1.00 | element complex starts (shot 1) | |
| 0.56 | 17 | 1 | unknown | 0.98 | no visible event | |
| 0.88 | 26 | 1 | tonal | 0.49 | picture gets brighter | |
| 1.02 | 31 | 2 | tonal | 1.00 | "ZERO." appears | |
| 1.81 | 54 | 3 | hit | 0.92 | "every pixel is" appears | |
| 3.32 | 100 | 4 | hit | 1.00 | no visible event | |
| 6.62 | 199 | 5 | hit | 1.00 | "no memory of the…" appears | |
| 8.41 | 252 | 7 | hit | 0.63 | picture gets brighter | |
| 8.54 | 256 | 7 | tonal | 0.50 | "TOGETHER." appears | |
| 9.12 | 274 | 8 | unknown | 0.30 | picture gets brighter | |
| 9.22 | 277 | 8 | tonal | 1.00 | element slide down starts (shot 8) | |
| 9.75 | 293 | 8 | hit | 0.33 | picture gets darker | |
| 10.63 | 319 | 8 | tonal | 0.43 | picture gets brighter | |
| 10.77 | 323 | 9 | tonal | 1.00 | element slide down starts (shot 9) | |
| 12.02 | 361 | 10 | whoosh | 0.86 | picture gets darker |
Loudness of the reference (measured): −14.4 LUFS integrated, true peak 2.8 dBTP, range 4.7 LU. That is how this film was mastered, not a target (its peak is above −1 dBTP: don't copy that).
Loudness targets for your version (common practice per platform; the brief overrides them):
| where it plays | integrated | true peak max | note |
|---|---|---|---|
| YouTube (this reference) | −14 LUFS | −1 dBTP | louder masters are turned down; quieter ones are not turned up |
| X, LinkedIn | −14 LUFS | −1 dBTP | no published normalisation: the file plays as mastered |
| TikTok, Reels, Shorts | −14 to −10 LUFS | −1 dBTP | played on phone speakers; short-form is often mastered hotter |
| Website or app (autoplay) | −16 LUFS | −1 dBTP | often starts muted; keep the unmuted level comfortable |
| Broadcast (EBU R128) | −23 LUFS | −1 dBTP | only when the brief asks for it |
Original music bed (inferred)
Choose 90 BPM in D minor as a compositional grid only: the reference has no reliable pulse, so the grid must not dictate cuts. Use soft synth pad, glassy pluck, low sine bass and restrained noise ticks. Shots 1–3: sparse tonal pulse; shot 4: wider sustained harmony and shimmering overtone; shots 5–7: low note and sparse hits; shots 8–9: dry percussive accents; shot 10: resolve to a held chord. Place transients at f3, f26, f31, f54, f199, f252, f277, f323 and f361; let the other measured cues remain quieter texture. Music-model prompt: “Original wordless electronic miniature, warm glass tones, quiet suspense to luminous reveal, sparse picture-synced accents, no drum loop, clean ending.”
Plate 09
Packaging
Title (inferred): {{PRODUCT}}: how {{METHOD}} made {{RESULT_SCENE}}. Cover: one strong result image, a very short claim, and {{BRAND_ACCENTS}} used for a single emphasis. Post copy: one verifiable claim, one line of context and {{CTA_URL}}. The capture records zero views, so replay or comment performance is unavailable.
Plate 10
Script template
Picture-led: each line is on-screen text; there is no spoken word budget. Keep short labels within their measured display window and proof text genuine.
[beat 1 · shots 1–3] {{CLAIM}} / a verified quantity / {{METHOD}}
[beat 2 · shot 4] one local-play label / one payoff phrase for {{RESULT_SCENE}}
[beat 3 · shots 5–7] one actual mechanism / one problem / one answer
[beat 4 · shots 8–9] one maker line / {{PROOF}} exactly as observed
[beat 5 · shot 10] {{PRODUCT}} / one descriptor / {{LOGO}} / {{CTA_URL}}
Plate 11
Production plan
Two routes (inferred)
Minimum: Claude alone. Remotion with CSS and Canvas draws cards, original {{RESULT_SCENE}}, panel movement and proof from supplied real test output; Claude synthesises the original music bed as WAV in code. This gives roughly 80% of the look and simplifies illustrated character motion and soft environment detail. The user supplies actual {{PROOF}} and any real {{PRODUCT}} assets.
Full: with the toolkit. Build all cards and code-drawn world in Remotion at 1080×1080, 30 fps; export the shot timing and panel transforms as JSON. Generate or license an original music WAV, with a cue click-track WAV aligned to the JSON frames, then mix it in Remotion. Handoffs: drawing code → Remotion as SVG/Canvas modules at 1080×1080; timing JSON → Remotion at 30 fps; music and click WAV → edit at 48 kHz; Remotion → H.264 MP4, 1080×1080, 30 fps.
Asset honesty: Use real product captures or UI rebuilt in code. Never invent screenshots, tests, results or endorsements. For this film, the terminal card must come from an actual run of {{PRODUCT}}, and {{RESULT_SCENE}} must be the project’s own drawn output.
Plate 12
Prompts
Script prompt (inferred):
Write five beats for a picture-led 15 s square trailer for {{PRODUCT}}. Use a surprising, verifiable {{CLAIM}}, name {{METHOD}}, and show {{RESULT_SCENE}} before {{PROOF}}. Give each shot one short on-screen line at most, except the genuine proof card. End with {{LOGO}} and {{CTA_URL}} as text. No narration, imitation of the reference's words, or invented result.
Music prompt (inferred): Use plate 8's original-bed prompt and the JSON cue frames; supply a 48 kHz WAV.
Plate 13
Edit recipe
How it's built (inferred)
Signature move, shot 4: At f75, place a small tilted rounded preview on a dark card. Animate the panel and its contents as one nested transform through the early f75–89 segment: the measured ×2.77 scale, x −5.3%, y −48.4%, roll −11.3° gives the fast launch. Hold the panel framing through the measured f89–110 static segment. Over f111–174, scale the nested scene ×1.87 and translate y +12.2%; use cubic-bezier(.18,.7,.2,1) and a CSS mask that relaxes from rounded panel to scene. The brief f175–182 shift moves x −5.6% before the static final segment. The whole-shot ×5.25 is the combination of these segments, not a single linear zoom. Animate the lamp/glow inside the scene separately; a strong white flash-like stage of the result is visible in the timeline near 5.5 s, while plate 6 records a brightness rise at 5.50 s. Keep type above the scene, darken locally behind white text, and use 2–3 shutter subframes of directional blur on the fast first move. Do not blur the terminal text or scale a low-resolution scene bitmap: render the Canvas at output resolution. Plate 5's shot-4 camera reading has moderate confidence; the sheet plainly shows a panel enlarging into the picture rather than physical camera travel.
Other movement: Shot 1's strike and headline settle over f0–8 (element y +2.7%, scale ×0.96, roll −3.5°), then remain stable to its cut at f27. Shot 2 scales the echoed word down to ×0.57 over f27–50. Shot 3 builds its letters on ones and moves the tracked region x +1.3%, y +8.2% over its active span before the cut at f75. Shot 5 pulls formula type to ×0.65 over f195–221. Shot 7 pulls its framed group to ×0.67 over f249–272. Shot 8's maker word moves down in the first f275–283 phase, then across and up to ×2.05 during f283–303, before its static tail; the measured region totals are in plate 5. Shot 9's proof panel travels x +1.0%, y +2.0% over f322–334, then stabilises. Use cubic-bezier(.2,.75,.2,1) for the measured ease-outs and cubic-bezier(.45,0,.2,1) for shot 8's ease-in-out. Render on ones at 30 fps; use 180° shutter equivalent for the quick transforms, with 2× temporal samples. All eight boundaries listed as hard cuts in plate 5 are zero-frame switches; f357 is the sole 2 f flash into shot 10. There are no measured internal cut, dip or focus-pull boundaries. The sheets show letter builds and overlay appearances inside shots 3, 4, 7 and 8; treat these as layered element animations, not additional cuts.
Build order
- Set up brand tokens and the exact shot sequences from plate 4.
- Build beat 2 first, with shot 4's nested preview, high-resolution world and separately controlled glow.
- Build beat 1 cards and the shot 3 letter build; preserve the palette jumps.
- Build beats 3 and 4 using real
{{PROOF}}and the measured element motions. - Build beat 5 with
{{LOGO}}and{{CTA_URL}}; apply the 2 f flash and measured darkening. - Lay cue-aligned original sound, export and check plate 14.
Plate 14
QA checklist
- Shot boundaries match plate 4 within ±1 f; f357 is a 2 f flash, not a hard cut.
- Shot 4's initial ×2.77 segment and later ×1.87 segment reproduce the observed panel-to-scene enlargement.
- All required words have cap height ≥22 px at 1080×1080; verify at phone width.
- The reference has no steady pulse: spot-check the cue frames in plate 8 within ±3 f, without forcing cuts to beats.
- YouTube master is −14 LUFS integrated, true peak ≤−1 dBTP; no clipping.
- Shot 10 ends visibly at f449, without a fade to black.
- The proof card matches an actual test run and the scene is rendered from the project’s drawing code.
Plate 15
Make it yours
Brand slots
| Slot | Replaces in the reference | Notes |
|---|---|---|
{{PRODUCT}} | Story/project title | New work being promoted |
{{BRAND_FONT}} | Heavy display sans | Supply licensed or free type |
{{BRAND_BG}} | Navy/dark fields | Choose your dark background role |
{{BRAND_ACCENTS}} | Orange/cream emphasis | Choose distinct accent and light roles |
{{LOGO}} | Project identity | Plain text or original mark |
{{CTA_URL}} | Repository path | Text, no code badge |
{{CLAIM}} | No-image claim | Must be verifiable |
{{METHOD}} | Code-drawn method | Name your actual method |
{{PROOF}} | Test terminal results | Supply real output |
{{RESULT_SCENE}} | Animated garden and characters | Your project's own output |
What this film avoids (inferred): voiceover, stock footage, a feature list, UI chrome around the whole film, fake test results, QR codes and store badges.
Brand-distance warning (inferred): A dark navy/orange/cream palette combined with a green childlike mascot and the reference’s three opening words would read as the original. Replace the central result world with {{RESULT_SCENE}} from a clearly different product and visual language.
Adapt the aspect (inferred):
- 16:9: Re-lay out; a centre crop of the square loses top and bottom labels. Move the proof panel beside its headline and place end title/CTA in a centred safe column; use ≥38 px cap for required text, with 5% outer UI margin.
- 9:16: Re-lay out; a centre crop loses the wide claim words. Stack the three claim levels, keep result art in the middle, and move CTA above the bottom platform controls; use ≥22 px cap and keep text out of the top 10% and bottom 20% UI zones.
Adapt the length (inferred):
- 15 s: Keep all five beats and the signature move; drop optional supporting explanation first if new content crowds the cut.
- 30 s: Keep the hook and destination compact; expand beat 2 with another actual state change, and add one specific proof detail to beat 4.
- 60 s: Add fresh result and making-of scenes inside beats 2 and 4; retain short claim cards and a concise end card rather than stretching them.
The creator's signature (don't copy): the particular mascot, title, exact slogan, repo name and palette. The transferable format: bold visual claim → growing preview → brief stakes → genuine maker and test evidence → text destination.
Source: https://www.youtube.com/watch?v=n4TgQHLmfVA · measured 2026-11-11 · (inferred) marks construction readings
For agents: Aspect conversions · Length cuts
The measured data and build specs agents work from. Over MCP they get it all, with the full timeline as JSON.
Aspect conversions (computed from the measured boxes)
Aspect conversions (computed from the measured boxes): a centre crop of the reference frame, checked against its text boxes and moving elements.
| to | deliver at | a centre crop keeps | measured boxes kept | boxes a crop loses | phone minimum | so |
|---|---|---|---|---|---|---|
| 16:9 | 1920×1080 | middle 56.2% of the height (cut 21.9% top and bottom) | 22 of 38 | "Run it locally.", "Illustration • real fra…", "a 2D canvas and…", "no memory of the…" … | 38 px cap | re-lay out: a crop loses too much |
| 9:16 | 1080×1920 | middle 56.2% of the width (cut 21.9% each side) | 12 of 38 | "IMAGES", "image files in this…", "ZERO.", "CODE." … | 22 px cap | re-lay out: a crop loses too much |
Length cuts (computed from the scales flags)
Length cuts (computed from the scales flags): frames per shot at 30 fps; fixed shots keep their length, optional shots go first when the cut is shorter, the scaling shots share what is left. Snap each cut to the nearest beat when plate 8 has a steady pulse.
| # | flag | reference (f @30) | 15 s cut | 30 s cut | 60 s cut |
|---|---|---|---|---|---|
| 1 | fixed | 27 | 27 | 27 | 27 |
| 2 | fixed | 24 | 24 | 24 | 24 |
| 3 | fixed | 24 | 24 | 24 | 24 |
| 4 | scales | 120 | 120 | 192 | 192 |
| 5 | optional | 27 | 27 | 27 | 27 |
| 6 | optional | 27 | 27 | 27 | 27 |
| 7 | optional | 24 | 24 | 24 | 24 |
| 8 | optional | 47 | 47 | 47 | 47 |
| 9 | scales | 37 | 37 | 59 | 59 |
| 10 | fixed | 93 | 93 | 93 | 93 |
| total | 450 f · 15.0 s | 450 f · 15.0 s | 544 f · 18.1 s + 11.9 s new beats | 544 f · 18.1 s + 41.9 s new beats |
15 s is the reference length: keep the measured lengths · 30 s: stretching tops out at ×1.6 (18.1 s); add 11.9 s of new beats (more of the scaling beats' pattern with new content), never a longer hold on the fixed shots · 60 s: stretching tops out at ×1.6 (18.1 s); add 41.9 s of new beats (more of the scaling beats' pattern with new content), never a longer hold on the fixed shots.
Recipe
One prompt that makes a film like this with Claude. Use the method; make the footage, words and brand your own.
Make a 15 s 1:1 film for {{PRODUCT}} in the format of yt-n4TgQHLmfVA (code-claim to visible-world trailer). Brand: font {{BRAND_FONT}}, background {{BRAND_BG}}, accents {{BRAND_ACCENTS}}, logo {{LOGO}}, call to action {{CTA_URL}}. Supply a {{CLAIM}}, {{METHOD}}, genuine {{PROOF}}, and {{RESULT_SCENE}}. Load get_blueprint("yt-n4TgQHLmfVA", format: "json") first; build to its shot frames, camera numbers, type boxes and cues. This is picture-led, without narration. Beat 1, shots 1–3, negates an expectation, quantifies the surprise and names the method. Beat 2, shot 4, expands a tilted preview into the real result. Beat 3, shots 5–7, shows mechanism, stakes and answer. Beat 4, shots 8–9, shows making and proof. Beat 5, shot 10, gives the destination. Combine shot 4’s measured ×2.77 launch and ×1.87 later push with ease-out. Render cards, result and proof in Remotion with CSS and Canvas; mix an original or licensed music WAV. Minimum route: Remotion alone with Claude-synthesised music and simpler scene detail. There is no steady pulse: hit the JSON cue frames. Keep required text ≥22 px cap at 1080 square. Deliver 1080×1080, 30 fps, H.264 MP4, 15 s; master for YouTube at −14 LUFS and ≤−1 dBTP. End on {{LOGO}} plus {{CTA_URL}} as text. Use real product captures or UI rebuilt in code; never fake screenshots, generated product UI or results. Do not reuse the reference’s colours, font, logo, mascot, slogans or music. No QR code or store badges unless requested.Films like this
Tagged claudesquare videokinetic typecreative codinganimated trailerproof cardhard cutsgithub cta