Leap’s dark-corridor app launch
A 40-second trading-app announcement that delays the logo, widens its claims, then reveals the phone UI.
By @leapxyz for LeapSource onlineOriginal post ↗
Copies get_blueprint("REF-5319") for Claude. Connect Claude
Why it works
One opening word gives way to the mark inside a moving corridor before the first shot boundary at 4.56 s. Hidden cuts at f227, f272, f442 and f502 refresh long abstract sections, and the 12.08 s product-proof shot supplies real UI before the final destination card.
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
(inferred) A wordless product launch turns a dark, moving architectural surface into a chain of short claims, then makes those claims tangible with a real phone interface. The delayed identity reveal, sudden white flashes and late product proof create the pull.
Why it works
- The opening spends its first 1.5 s on one word while the surrounding ribs brighten; the identity appears before the first shot boundary.
- At f227, f272, f442 and f502, hidden cuts refresh the picture inside long measured shots (plates 4–5).
- The real UI takes over in shot 6; shot 7 gives the destination a separate card.
Plate 02
Format card
| Platform · aspect · length | X · 16:9 · 40 s · source 1280×720 · 25 fps; deliver 1920×1080 |
| Pace | 7 shots; median 4.56 s; internal picture changes break up the long shots |
| Script | Picture-led · wordless; surfaces, text reveals and cue frames set timing; beat grid is secondary |
| Voice | None |
| On screen | Abstract metallic spaces, sparse type, actual product capture, end card |
| Type | Five measured cap-height levels, from 21–23 px detail to 146 px mark; sentence case |
| Sound | Tonal electronic bed, 99.38 BPM measured; cuts mostly off beat; X target −14 LUFS |
| Structure | 7 beats; product proof in beat 6; text destination in beat 7 |
Tools you'll need: Blender for 3D · screen recordings of the product · Remotion for motion graphics · a licensed or generated music track · Claude alone: partly
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–1.5 s | Almost black radial ribs brighten around an empty centre | A single opening word | No speech; low bed | Creates a question |
| 1.75–3 s | Rib highlights extend toward the centre | {{LOGO}} | Tonal bed grows | Answers with identity |
Hook formula (inferred): one-word announcement → {{LOGO}} inside an accelerating dark surface.
Why it holds (inferred): the type stays calm while the environment grows more active. The logo replacement is visible on the hook sheet within shot 1; it is an element change, not a measured shot cut.
Plate 04
Structure (beat sheet)
| # | Time | Shots | Beat | What happens | Technique |
|---|---|---|---|---|---|
| 1 | 0–4.56 s | 1 | Identity | Opening word gives way to mark inside a radial corridor | Delayed mark, growing highlights |
| 2 | 4.56–6.60 s | 2 | Category | Product category appears over folded dark ribs | Short reset; dark dip |
| 3 | 6.60–13.92 s | 3 | Foundation and reach | Claims move across a performance corridor, foundation emblem and network surface | White flash, hidden cuts, sparse text |
| 4 | 13.92–21.96 s | 4 | Breadth | Abstract radial geometry narrows into familiar and new use contexts | Flashes and hidden cuts |
| 5 | 21.96–23.64 s | 5 | Fast counterpart | A short category card lands over dense ribs | Pace jolt |
| 6 | 23.64–35.72 s | 6 | Product proof | Content tiles, phone, precision statement and real chart provide evidence | UI compositing and graph motion |
| 7 | 35.72–40 s | 7 | Access and destination | Access line resolves to mark and URL | Brief flash, clean end card |
Retention map (inferred): identity at about 1.75 s; visual refreshes in beats 3–4; proof in beat 6; destination in beat 7; hard end.
At a glance
- Shots: 7 shots · 6 transitions · 40.00 s = 1000 frames at 25 fps · shot length median 4.56 s (shortest 1.68, longest 12.08)
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)
7 shots · 6 transitions · 40.00 s = 1000 frames at 25 fps · shot length median 4.56 s (shortest 1.68, longest 12.08). Frames are at 25 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 @25 (first–last · count) | dur (s) | transition in | changes inside | scales (inferred) |
|---|---|---|---|---|---|---|
| 1 | 0.00–4.56 | 0–113 · 114 f | 4.56 | start | – | fixed |
| 2 | 4.56–6.60 | 114–164 · 51 f | 2.04 | fade from black · 3 f | f119 dip to dark over 7 f | scales |
| 3 | 6.60–13.92 | 165–347 · 183 f | 7.32 | flash · 1 f | f227 cut · f272 cut | scales |
| 4 | 13.92–21.96 | 348–548 · 201 f | 8.04 | flash · 2 f | f442 cut · f502 cut | scales |
| 5 | 21.96–23.64 | 549–590 · 42 f | 1.68 | flash · 2 f | – | optional |
| 6 | 23.64–35.72 | 591–892 · 302 f | 12.08 | cut | f738 cut | scales |
| 7 | 35.72–40.00 | 893–999 · 107 f | 4.28 | 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: 6 hidden cuts / dips / reframes found inside v1 shots (luma-normalised frame difference): S2 dip_to_dark at 4.760 s (f119), S3 cut at 9.080 s (f227), S3 cut at 10.880 s (f272), S4 cut at 17.680 s (f442), S4 cut… · S6: 84 text items read; the 40 largest are kept · key low confidence (0.12): A major vs F# minor · cue sheet keeps 40 of 93 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>), 4 pages · close-up strips, 14 frames around each cut and change: f114 fade from black, f119 dip to dark, f165 flash, f227 cut, f272 cut, f348 flash, f442 cut, f502 cut, f549 flash, f591 cut, f738 cut, f893 flash (sheet "transitions", 4 pages; labels S<n> m:ss.sss f<frame>): call get_frames('2118387847853908115'), or see them on the film page (Pro, or free films).
Plate 05
Shot grammar
Mix (inferred): shots 1–5 use dimensional motion graphics; shot 6 mixes product capture and graphics; shot 7 is a brand card.
Rhythm: the measured external transitions are four flashes, one fade from black and one hard cut. The hidden changes inside shots matter as much as the six shot boundaries.
Rules this editor follows (inferred)
- Keep one phrase near the centre while the background makes the movement.
- Use a 1–2 frame white flash for major visual resets; hide five internal cuts in dark frames.
- Hold the actual UI until beat 6.
At a glance
- Transitions: 6 transitions: 4 flashes (1–2 f) · 1 fade from black (3 f) · 1 cut
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 1920×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 7 of 7 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 | ▁▁▁▁▁▁▁▁▁ | ~21 fps | 0.74 | 0.12 | 0.48 |
| 2 | static? · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁ | ones | 0.72 | 0.19 | 0.44 |
| 3 | static? · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ | ones | 0.74 | 0.11 | 0.49 |
| 4 | static · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ | ~22 fps | 0.78 | 0.14 | 0.60 |
| 5 | static · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁ | ones | 0.86 | 0.22 | 0.51 |
| 6 | static? · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ | ones | 0.60 | 0.07 | 0.46 |
| 7 | static · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁▁▁▁▁▁ | ~17 fps | 0.71 | 0.07 | 0.54 |
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 | 34 · 45 · 31 · 7 → 40 · 41 · 23 · 31 | scale down | −0.1 · −0.2 | ×0.855 | y −0.8% (−9 px) · ×0.49 scale · roll −1.5° in 4.5 s | ease-out | ▃▂▁▄▂▂▂▁▂ · 45%/s | 0.98 | 0.75 |
| ↳ 0.00–4.48 s: scale down | −0.1 · −0.2 | ×0.855 | y −0.8% (−9 px) · ×0.49 scale · roll −1.5° | ease-out | |||||
| 2 | 32 · 46 · 36 · 7 → 32 · 46 · 36 · 7 | slide left | −1.5 · +0.1 | ×1.003 | x −2.5% (−47 px) in 1.7 s | ease-out | █▂▁▁ · 17%/s | 0.82 | 0.70 |
| ↳ 4.80–4.96 s: complex | −12.6 · +1.5 | ×1.258 | x −2.0% (−39 px) · ×1.04 scale | linear | |||||
| ↳ 5.04–6.56 s: scale down | −0.3 · +0.0 | ×0.979 | ×0.97 scale | ease-out | |||||
| 3 | 25 · 46 · 49 · 6 → 59 · 32 · 13 · 7 | complex | −3.9 · +5.2 | ×0.969 | x −25.9% (−496 px) · y +34.6% (+374 px) · ×0.81 scale · roll −24.6° in 6.6 s | ease-out | █▂▁▁▁▁▁▁▁▁▁▂▄▃▁ · 84%/s | 0.91 | 0.63 |
| ↳ 6.84–9.00 s: scale down | +0.0 · +0.3 | ×0.806 | y +0.7% (+8 px) · ×0.63 scale · roll −1.2° | ease-out | |||||
| ↳ 9.24–9.64 s: complex | −4.7 · +0.0 | ×0.870 | x −1.9% (−36 px) · ×0.95 scale | ease-in-out | |||||
| ↳ 9.64–10.84 s: rotate | +0.0 · −0.6 | ×1.002 | y −0.7% (−8 px) · roll +2.0° | ease-in | |||||
| ↳ 10.92–11.24 s: slide left | −10.8 · +0.9 | ×0.998 | x −3.5% (−67 px) · roll +0.6° | linear | |||||
| ↳ 11.24–11.64 s: complex | −0.5 · +2.0 | ×0.933 | y +0.8% (+9 px) · ×0.97 scale · roll −1.1° | ease-out | |||||
| ↳ 11.64–12.36 s: slide left | −6.9 · +1.5 | ×1.062 | x −5.0% (−96 px) · y +1.1% (+12 px) · ×1.04 scale · roll +1.2° | ease-in-out | |||||
| 4 | 36 · 46 · 27 · 6 → 19 · 44 · 59 · 8 | scale down | −0.3 · −1.0 | ×0.970 | x −1.3% (−26 px) · y −5.0% (−54 px) · ×0.86 scale · roll −1.9° in 4.9 s | irregular | ▁▁▃▁▄▃▁▂▂▁▂▂▃▁▁▁ · 34%/s | 0.61 | 0.70 |
| ↳ 14.16–14.80 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 14.80–15.60 s: slide left | −6.1 · +0.6 | ×0.986 | x −4.9% (−94 px) · ×0.99 scale | ease-in-out | |||||
| ↳ 15.60–16.32 s: complex | +9.3 · −1.1 | ×0.885 | x +6.7% (+129 px) · y −0.8% (−8 px) · ×0.92 scale · roll +1.1° | ease-in | |||||
| ↳ 16.40–17.04 s: slide left | −5.6 · −0.5 | ×1.005 | x −3.6% (−69 px) | ease-out | |||||
| ↳ 17.04–17.60 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 17.76–18.16 s: complex | −6.2 · −0.1 | ×0.832 | x −2.5% (−48 px) · ×0.93 scale | irregular | |||||
| 5 | 1 · 36 · 56 · 17 → 2 · 28 · 52 · 24 | scale down | −0.8 · −0.2 | ×0.904 | x −1.1% (−22 px) · ×0.87 scale · roll +1.7° in 1.4 s | ease-out | █▂▁▃ · 23%/s | 0.81 | 0.61 |
| ↳ 22.20–23.56 s: scale down | −0.8 · −0.2 | ×0.904 | x −1.1% (−22 px) · ×0.87 scale · roll +1.7° | ease-out | |||||
| 6 | 42 · 26 · 25 · 45 → 29 · 45 · 41 · 8 | scale down | −1.0 · +1.5 | ×0.932 | x −8.9% (−171 px) · y +14.2% (+153 px) · ×0.53 scale · roll +1.7° in 9.2 s | irregular | ▄▁▂▂▂▂▃▁▂▁▄▁▁▄▁▁ · 44%/s | 0.76 | 0.71 |
| ↳ 23.64–24.68 s: complex | +10.9 · +11.1 | ×0.944 | x +11.3% (+217 px) · y +11.6% (+125 px) · ×0.94 scale | ease-out | |||||
| ↳ 24.68–28.12 s: scale down | −2.2 · +1.5 | ×0.915 | x −7.6% (−146 px) · y +5.2% (+56 px) · ×0.74 scale · roll +3.2° | irregular | |||||
| ↳ 28.12–28.60 s: slide left | −7.9 · +0.0 | ×0.992 | x −3.8% (−72 px) | ease-in | |||||
| ↳ 28.60–28.92 s: scale down | −3.1 · −0.1 | ×0.775 | x −1.0% (−19 px) · ×0.92 scale | irregular | |||||
| ↳ 28.92–29.48 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 29.56–32.68 s: scale down | +0.0 · −0.7 | ×0.977 | y −2.3% (−25 px) · ×0.93 scale · roll −1.2° | irregular | |||||
| 7 | 34 · 35 · 33 · 18 → 37 · 36 · 26 · 36 | scale down | −0.1 · −2.2 | ×0.742 | y −2.5% (−27 px) · ×0.72 scale · roll +0.5° in 1.1 s | ease-in-out | ▁▁▁▂▆▂▁▁▁ · 38%/s | 0.26 | 0.72 |
| ↳ 35.96–37.48 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 37.56–38.68 s: scale down | −0.1 · −2.2 | ×0.742 | y −2.5% (−27 px) · ×0.72 scale · roll +0.5° | ease-out | |||||
| ↳ 38.68–39.96 s: static | +0.0 · +0.0 | ×1.000 | none | hold |
Focus (measured): shot 1: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 2: sharp inside 17 · 0 · 83 · 100, no defocus (deep focus) · shot 3 6.60–9.08 s: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 3 9.08–10.88 s: sharp inside 25 · 14 · 50 · 71, no defocus (deep focus) · shot 3 10.88–13.92 s: sharp inside 0 · 14 · 92 · 86, no defocus (deep focus) · shot 4 13.92–17.68 s: sharp inside 58 · 0 · 42 · 100, no defocus (deep focus) · shot 4 17.68–20.08 s: sharp inside 25 · 0 · 67 · 86, no defocus (deep focus) · shot 4 20.08–21.96 s: sharp inside 0 · 0 · 100 · 71, no defocus (deep focus) · shot 5: sharp inside 0 · 71 · 100 · 29, about 5 px blur outside at 1080p · shot 6 23.64–29.52 s: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 6 29.52–35.72 s: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 7: 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. Locked-off shots: 3 of 7; 4 more could not be tracked (shown as "static?" or "not measured": check the sheets). Animation cadence: about 21.9 new pictures a second: 21.9 unique frames per second of 25 while things move (held-frame share 0.12, 595 moving frames). Match it, or the motion will feel smoother or choppier than the reference.
Transitions (measured)
6 transitions: 4 flashes (1–2 f) · 1 fade from black (3 f) · 1 cut. Frames are at 25 fps; a transition of n frames lasts n ÷ 25 s. Hard cuts are reliable; the blur types (whip versus zoom) are the weakest labels, so read their confidence and check the sheets.
| into # | at (s) | frame @25 | type | length | conf |
|---|---|---|---|---|---|
| 2 | 4.56 | 114 | fade from black | 3 f · 0.12 s | 0.52 |
| 3 | 6.60 | 165 | flash | 1 f · 0.04 s | 1.00 |
| 4 | 13.92 | 348 | flash | 2 f · 0.08 s | 1.00 |
| 5 | 21.96 | 549 | flash | 2 f · 0.08 s | 1.00 |
| 6 | 23.64 | 591 | cut | 0 f | 0.93 |
| 7 | 35.72 | 893 | flash | 2 f · 0.08 s | 1.00 |
Changes inside shots (the picture changes without a cut: a reframe, a hand-off behind black, a mask):
| shot | at (s) | frame @25 | change |
|---|---|---|---|
| 2 | 4.76 | 119 | dip to dark over 7 f: drops to 8% of the light, then the next picture comes up |
| 3 | 9.08 | 227 | cut: hard cut that v1 did not split on (dark frames) |
| 3 | 10.88 | 272 | cut: hard cut that v1 did not split on (dark frames) |
| 4 | 17.68 | 442 | cut: hard cut that v1 did not split on (dark frames) |
| 4 | 20.08 | 502 | cut: hard cut that v1 did not split on (dark frames) |
| 6 | 29.52 | 738 | cut: hard cut that v1 did not split on (dark frames) |
What each shot shows (inferred from the sheets)
| # | Type | Framing | What's on screen | Text / overlay |
|---|---|---|---|---|
| 1 | Dimensional corridor | Central vanishing point | Thin black ribs acquire cool edge light | Opening word, then mark |
| 2 | Ribbed corridor | Right-side highlight | Folded bands sweep to a bright corner | Category |
| 3 | Graphic spaces | Central then upper arc | Performance ribs, foundation emblem, network arc | Short claims |
| 4 | Orb and ribs | Wide with centre gap | Circular dark field, then dense repeated curves | Context claims |
| 5 | Ribbed interlude | Wide | Curved dark stripes | Single category |
| 6 | UI composite | Wide then centred device | Content tiles, actual phone and chart | Benefit and proof |
| 7 | Flat card | Centre | Gradient field | Access line, mark, URL |
Plate 06
Visual style guide
- Look (inferred): extremely dark base, graphite dimensional surfaces, narrow cool rim lights, occasional warm UI accents. The reference's exact palette in the measured table is evidence; map those roles to
{{BRAND_BG}}and{{BRAND_ACCENTS}}. - Graphics (inferred): repeated curved fins, clipped reflections, sparse central type; capture is the only place for detailed interface content.
- Transitions: use the lengths in plate 5; the flashes are bright interruptions, while the internal cuts hide against dark frames.
- End card (inferred):
{{LOGO}}above{{CTA_URL}}as text. No badge or QR code.
At a glance
- Type scale (cap px): 146 · 106 · 71–89 · 39 · 21–23 (5 levels) among the text above.
- Phone minimum: cap height ≥ 2% of frame width = 38 px at 1920×1080
- Whole film (time-weighted):
#16161F50% ·#02020432% ·#252B3F11% ·#7173772% ·#F7F7F62% ·#6B2D1E2%. - Curve facts: average 0.09 · darkest 0.01 at 4.8 s · brightest 0.96 at 6.8 s · sudden changes at 6.75 s (brighter by 0.91), 22.00 s (brighter by 0.88), 35.75 s (brighter by 0.74) · opens from black, up by about 1.88 s.
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, 1920×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 |
|---|---|---|---|---|---|---|---|
| "Introducing" | 1 | 0.0–1.5 | 80 | 113 | 7.4 | 34 · 45 · 32 · 11 | centre, middle |
| "The trading app" | 2 | 5.0–6.5 | 72 | 101 | 6.7 | 29 · 45 · 41 · 10 | centre, middle |
| "for high performance" | 3 | 7.0–9.0 | 78 | 110 | 7.2 | 23 · 45 · 53 · 11 | centre, middle |
| "Built on Solana" | 3 | 9.5–10.5 | 79 | 111 | 7.3 | 31 · 45 · 38 · 9 | centre, middle |
| "The network" | 3 | 11.0–11.5 | 82 | 115 | 7.6 | 34 · 45 · 32 · 9 | centre, middle |
| "for every asset on earth" | 3 | 12.0–13.5 | 72 | 101 | 6.7 | 19 · 45 · 61 · 10 | centre, middle |
| "a discipline" | 4 | 17.0–17.5 | 84 | 118 | 7.8 | 64 · 44 · 30 · 12 | right, middle |
| "From Wall Street" | 4 | 18.0–18.5 | 85 | 120 | 7.9 | 28 · 45 · 44 · 9 | centre, middle |
| "The story behind" | 6 | 24.0–25.5 | 76 | 107 | 7.0 | 28 · 44 · 45 · 11 | centre, middle |
| "every move" | 6 | 26.0–27.0 | 89 | 125 | 8.2 | 34 · 46 · 31 · 9 | centre, middle |
| "Leap fees planned" | 6 | 32.5–33.5 | 72 | 101 | 6.7 | 26 · 45 · 48 · 10 | centre, middle |
| "to buy & burn SOL" | 6 | 34.0–35.5 | 106 | 149 | 9.8 | 25 · 42 · 49 · 15 | centre, middle |
| "Early access" | 7 | 36.0–36.5 | 71 | 100 | 6.6 | 34 · 45 · 32 · 10 | centre, middle |
| "starts now" | 7 | 37.0–37.5 | 74 | 104 | 6.9 | 36 · 45 · 27 · 8 | centre, middle |
| "( Leap" | 7 | 38.0–39.5 | 146 | 206 | 13.5 | 34 · 34 · 32 · 19 | centre, middle |
| "leap.xyz" | 7 | 38.0–39.5 | 39 | 55 | 3.6 | 43 · 69 · 14 · 6 | centre, lower third |
| "Leap is a self-custodial trading app. Trading i…" | 7 | 39.0–39.5 | 23 | 32 | 2.1 | 20 · 89 · 59 · 3 | centre, bottom |
| "Asset availability varies by jurisdiction. See…" | 7 | 39.0–39.5 | 21 | 30 | 1.9 | 28 · 93 · 43 · 3 | centre, bottom (inside 5% of the edge) |
Plus 25 smaller or briefer text items, cap 17–125 px, mostly labels inside interfaces: all in the timeline JSON.
Type scale (cap px): 146 · 106 · 71–89 · 39 · 21–23 (5 levels) among the text above.
Left out: 12 reads that are not clean words or were seen in a single frame ("Tokenized Stocks", "Tokenized Commodi…", "Crypto"…): 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 = 38 px at 1920×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. Below it in the reference: "Leap is a self-custodial…" (23 px, shot 7), "Asset availability varies by…" (21 px, shot 7) and 19 of the smaller items. Size these up in your version, or treat them as decoration.
Type spec (inferred)
Assume cap height = 0.71 × CSS font size. {{BRAND_FONT}} takes precedence; Inter is a free fallback only. All essential copy clears the 38 px cap phone minimum in this aspect.
| Level | Cap px at 1080p | Font size | Weight · case · tracking | Colour pair | Motion |
|---|---|---|---|---|---|
| Mark | 146 | 206 px | brand mark · original case · 0 em | light mark / {{BRAND_BG}} | reveal over 5 f, ease-out |
| Emphasis | 106 | 149 px | 600 · sentence · −0.02 em | light text / {{BRAND_BG}} | 5 f opacity and 8 px rise, cubic-bezier(.22,1,.36,1) |
| Claim | 71–89 | 100–125 px | 500 · sentence · −0.015 em | light text / {{BRAND_BG}} | 5 f opacity, same ease |
| Destination | 39 | 55 px | 500 · lower case or URL · 0 em | light text / {{BRAND_BG}} | 5 f opacity, same ease |
| Detail | 21–23 measured; use ≥38 | ≥54 px | 400 · sentence · 0 em | light text / {{BRAND_BG}} | static; enlarge readable legal or omit it |
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–2 | 0.04 · 0.16 | #020204 90% · #1A1C20 5% · #3A3E44 3% · #6C7075 2% · #ACB1B6 0% | #CED4D8 ≈6930 K 52% · #81858C ≈7330 K 36% · #2D3034 ≈7730 K 12% |
| 3–7 | 0.12 · 0.33 | #16161F 68% · #252B3F 24% · #6B2D1E 5% · #5F6D73 2% | #3E4550 ≈9550 K 46% · #B5BAC4 ≈7300 K 41% · #A66549 hue 49° ≈2520 K 13% |
Whole film (time-weighted): #16161F 50% · #020204 32% · #252B3F 11% · #717377 2% · #F7F7F6 2% · #6B2D1E 2%.
Brightness curve (measured)
Mean luma per 1 s, one character each, grouped in tens; p95 = the bright highlights. Scale: ▁ = 0 (black) → █ = 0.5 (nothing in this film is brighter); luma runs 0–1.
0s 10s 20s 30s
mean ▁▁▁▁▁▁▅▁▁▁ ▁▁▁▁▂▂▂▁▂▂ ▁▁▅▂▃▃▃▂▂▂ ▂▂▂▃▃▅▃▃▃▃
p95 ▁▁▅▃▄▄▆▃▃▁ ▂▂▂▂██▆▃▃▃ ▃▃▇▅▆▆▄▃▃▂ ▂▃▄▃▃▆▄▄▄▄
Curve facts: average 0.09 · darkest 0.01 at 4.8 s · brightest 0.96 at 6.8 s · sudden changes at 6.75 s (brighter by 0.91), 22.00 s (brighter by 0.88), 35.75 s (brighter by 0.74) · opens from black, up by about 1.88 s.
Layout boxes (inferred)
| Element | Shots | Box x · y · w · h (%) | Source · confidence | Notes |
|---|---|---|---|---|
| Opening word | 1 | 34 · 45 · 32 · 11 | measured text box · high | central negative space |
| Category title | 2 | 29 · 45 · 41 · 10 | measured text box · high | keep centre clear |
| Performance claim | 3 | 23 · 45 · 53 · 11 | measured text box · high | single line |
| Foundation claim | 3 | 31 · 45 · 38 · 9 | measured text box · high | single line |
| Familiar context | 4 | 28 · 45 · 44 · 9 | measured text box · high | centre |
| Content title | 6 | 28 · 44 · 45 · 11 | measured text box · high | overlay on capture |
| Device / moving region | 6 | 42 · 26 · 25 · 45 | measured element region · high | initial product region |
| Closing mark | 7 | 34 · 34 · 32 · 19 | measured text box · high | replace with {{LOGO}} |
| Closing URL | 7 | 43 · 69 · 14 · 6 | measured text box · high | {{CTA_URL}} as text |
End card: dark {{BRAND_BG}} field; {{LOGO}} at 34 · 34 · 32 · 19%, {{CTA_URL}} at 43 · 69 · 14 · 6%; shot 7 is 107 f, with the final mark and URL visible on the later sheet tiles.
Material card (inferred)
:root { --brand-bg: {{BRAND_BG}}; --brand-accent: {{BRAND_ACCENTS}}; }
.corridor { background: var(--brand-bg); perspective: 1100px; overflow: hidden; }
.fin { border: 1px solid color-mix(in srgb, var(--brand-accent) 32%, transparent); border-radius: 24px; box-shadow: inset 0 1px 4px rgba(255,255,255,.15), 0 0 28px color-mix(in srgb, var(--brand-accent) 20%, transparent); transform-style: preserve-3d; }
.rim { background: linear-gradient(90deg, transparent 0%, color-mix(in srgb, var(--brand-accent) 65%, white) 50%, transparent 100%); filter: blur(3px); }
.vignette { background: radial-gradient(ellipse 68% 62% at 50% 50%, transparent 25%, rgba(0,0,0,.72) 100%); }
Blender · repeated curved fins: Principled BSDF metallic 0.85, roughness 0.22, transmission 0, IOR 1.45, coat 0.35, emission 0.02. World strength 0.03. EEVEE, 64 temporal samples, 25 fps; 50 mm lens, f/5.6. Narrow strip area lights sweep across the fins.
2D / CSS equivalent · 3 px rim blur, 28 px glow at 20% opacity, 72% edge vignette over a 68% × 62% radius. Most shots use deep focus; shot 5 uses 5 px blur outside 0 · 71 · 100 · 29% (plate 5). Emulate the Blender strip lights with animated gradients and the same 28 px glow.
Plate 07
Voice and delivery
Measured: no speech detected.
Voice direction (inferred): no voice; the picture and text carry the story. Keep UI labels legible on mute.
Plate 08
Sound design
- Music (inferred): restrained electronic bass, air and short metallic tones; build in shot 1, broad middle, more space under the closing card.
- Sound effects (inferred): make the white flashes and product reveal distinct, but follow the cue sheet rather than forcing every cut onto a beat.
- Silence and space (inferred): no spoken words to protect; let the centre titles breathe.
At a glance
- Tempo: 99.38 BPM, confidence 1.00 · first downbeat 1.846 s (bar start confidence 1.00) · beat 0.6037 s · bar of 4 = 2.415 s.
- Key: unclear: A major or F# minor (confidence 0.12); pick your own.
- Loudness of the reference (measured): −12.7 LUFS integrated, true peak −1.0 dBTP, range 4.1 LU. That is how this film was mastered, not a target.
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: 99.38 BPM, confidence 1.00 · first downbeat 1.846 s (bar start confidence 1.00) · beat 0.6037 s · bar of 4 = 2.415 s.
Beat grid in frames. Tracked beats, not a constant grid (the tempo drifts): use the listed times, not a formula.
| per beat | per bar | first downbeat (frame) | downbeats (frame), first 8 | |
|---|---|---|---|---|
| 25 fps (this film) | 15.09 f | 60.37 f | 46 | 46 · 106 · 170 · 234 · 293 · 353 · 413 · 473 … |
| 30 fps | 18.11 f | 72.44 f | 55 | 55 · 127 · 203 · 280 · 352 · 424 · 496 · 568 … |
| 60 fps | 36.22 f | 144.89 f | 111 | 111 · 254 · 407 · 560 · 704 · 848 · 992 · 1135 … |
Beats in seconds: 1.236 · 1.846 · 2.438 · 3.042 · 3.646 · 4.238 · 4.836 · 5.433 · 6.026 · 6.780 · 7.448 · 8.127 … (54 in all, audio.tempo.beats in the timeline JSON).
Cuts on the beat: 1 of 6 land within ±1.5 frames of a beat; chance alone would give about 1.2, so the edit does not follow the beat.
Key: unclear: A major or F# minor (confidence 0.12); pick your own.
Sections (by energy of the whole mix):
| section | time (s) | shots | level (RMS) |
|---|---|---|---|
| build | 0.0–5.0 | 1–2 | −14 dB |
| drop | 5.0–26.0 | 2–6 | −10 dB |
| steady | 26.0–34.5 | 6 | −10 dB |
| outro | 34.5–40.0 | 6–7 | −14 dB |
Energy map (RMS per 1 s, ▁ = −37 dB → █ = −8 dB):
▇▇▇▇▇▇▇███ █████████▇ ███▇█▇████ ███████▆▃▁
Cue sheet (40 cues: 3 at a cut, 22 on a beat; the 24 strongest shown). "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 @25 | shot | kind | strength | on screen (±3 f) | on beat |
|---|---|---|---|---|---|---|
| 0.23 | 6 | 1 | whoosh | 1.00 | no visible event | |
| 8.13 | 203 | 3 | tonal | 1.00 | no visible event | ✓ |
| 11.42 | 286 | 3 | tonal | 1.00 | no visible event | |
| 12.91 | 323 | 3 | tonal | 1.00 | element complex starts (shot 3) | ✓ |
| 16.23 | 406 | 4 | tonal | 0.92 | picture gets darker | |
| 17.72 | 443 | 4 | tonal | 1.00 | shot 4: cut: hard cut that v1 did not split on (dark frames) | ✓ |
| 18.62 | 466 | 4 | tonal | 0.91 | element slide left starts (shot 4) | |
| 18.76 | 469 | 4 | tonal | 0.92 | element slide left starts (shot 4) | |
| 18.92 | 473 | 4 | unknown | 1.00 | no visible event | ✓ |
| 21.32 | 533 | 4 | unknown | 0.97 | no visible event | ✓ |
| 22.52 | 563 | 5 | tonal | 1.00 | no visible event | ✓ |
| 23.57 | 589 | 5 | tonal | 0.89 | picture gets brighter | |
| 25.22 | 630 | 6 | unknown | 0.99 | ""(adde disinflation"" appears | |
| 27.31 | 683 | 6 | tonal | 0.95 | "Tracked with precision" appears | ✓ |
| 28.51 | 713 | 6 | tonal | 1.00 | "Profit & Loss" appears | ✓ |
| 29.12 | 728 | 6 | tonal | 1.00 | no visible event | ✓ |
| 29.42 | 736 | 6 | tonal | 0.91 | shot 6: cut: hard cut that v1 did not split on (dark frames) | |
| 29.72 | 743 | 6 | tonal | 1.00 | element scale down starts (shot 6) | ✓ |
| 30.02 | 751 | 6 | tonal | 0.93 | "ALL" appears | |
| 30.77 | 769 | 6 | tonal | 1.00 | no visible event | |
| 30.93 | 773 | 6 | tonal | 0.94 | no visible event | ✓ |
| 32.11 | 803 | 6 | tonal | 1.00 | no visible event | ✓ |
| 33.02 | 825 | 6 | tonal | 0.79 | element slide left starts (shot 6) | |
| 33.32 | 833 | 6 | tonal | 0.90 | element slide left starts (shot 6) | ✓ |
Loudness of the reference (measured): −12.7 LUFS integrated, true peak −1.0 dBTP, range 4.1 LU. That is how this film was mastered, not a target.
Loudness targets for your version (common practice per platform; the brief overrides them):
| where it plays | integrated | true peak max | note |
|---|---|---|---|
| YouTube | −14 LUFS | −1 dBTP | louder masters are turned down; quieter ones are not turned up |
| X, LinkedIn (this reference) | −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)
Use 99.38 BPM, F# minor as an original choice; the measured key is uncertain. Shots 1–2: filtered low pulse and air. Shots 3–5: sustained synth, metal plucks and sub bass. Shot 6: add warm harmonic layer but leave room for UI detail. Shot 7: reduce to pad and a clean final tone. Put cues on f203, f323, f443, f683, f713, f743 and f803; the JSON carries the complete cue list. Music-model prompt: “Original instrumental electronic launch cue, 99.38 BPM, F# minor, dark restrained pulse, metallic glints, spacious product reveal, no vocals, clean resolved ending.”
Plate 09
Packaging
- Title (inferred): “Introducing
{{PRODUCT}}:{{BENEFIT}}.” - Cover (inferred): one short line centred over an almost-black dimensional surface; brand mark can be held for the first post frame.
- Post copy (inferred): category, one verifiable benefit, access invitation and
{{CTA_URL}}. - Audience signals: source context records 294,754 views at capture; it does not establish replay or comment sentiment.
Plate 10
Script template
(inferred) On-screen words only. Keep each claim under six words; let the picture determine entrances, with cue accents where the grid happens to coincide.
Beat 1 · shot 1: one opening word → {{LOGO}}
Beat 2 · shot 2: “The {{CATEGORY}}”
Beat 3 · shot 3: “Built on {{FOUNDATION}}” → one short reach claim
Beat 4 · shot 4: “From {{USE_CASE}}” → one truthful counterpart
Beat 5 · shot 5: one short category noun
Beat 6 · shot 6: “{{BENEFIT}}” → actual {{UI_CAPTURE}} with a readable proof state
Beat 7 · shot 7: access line → {{LOGO}} and {{CTA_URL}}
Plate 11
Production plan
Two routes (inferred)
Minimum: Claude alone. Remotion with CSS 3D builds the fins, masked depth, gradient light sweeps, typography, phone frame and chart motion; code-synthesised music supplies an original bed. It simplifies physical reflections and fine geometry, giving up some of the reference's material realism. The user supplies a real {{UI_CAPTURE}}; that input means the entire film is only partly Claude-made.
Full: with the toolkit. Blender Python builds the dimensional corridor and orb. Export 1920×1080 PNG sequences with alpha at 25 fps and camera keyframes as JSON. Supply a real 1920×1080 screen recording or high-resolution capture of {{PRODUCT}}; Remotion composites it with type and device framing. Compose or license an original track, delivering 48 kHz WAV plus click track to Remotion. Export 1920×1080 H.264 at 25 fps.
Asset honesty: use real product captures or UI rebuilt accurately in code; where a state does not exist, use a plain type tile. Never generate product UI, screenshots, results, metrics or reviews. For beat 6, the graph must correspond to the supplied capture, not an invented trading outcome.
Plate 12
Prompts
Script prompt
Write seven wordless launch-film text beats for {{PRODUCT}}. Use the timing and shot ownership in plate 4. The truthful foundation is {{FOUNDATION}}, the use case is {{USE_CASE}}, and the benefit is {{BENEFIT}}. Each card must be short enough to read on a phone. End with {{LOGO}} and {{CTA_URL}} as text. Return the claim and the real product evidence that supports it; reject any claim without proof.
Music prompt
Original 99.38 BPM instrumental cue for a picture-led dark product launch. Filtered pulse and metallic glints; widen for beat 6, resolve in beat 7. No vocals and no copied melody.
Plate 13
Edit recipe
How it's built (inferred)
Signature move — the static camera, moving corridor: lock the camera. Duplicate curved fins in depth, alternate matte dark faces with narrow reflective strips, then translate and rotate the fin group while a light sweep travels across it. In shot 1, f0–113, the measured moving region scales to ×0.49 with y −0.8% and roll −1.5°; use cubic-bezier(.22,1,.36,1). Keep central copy on a separate flat layer so it does not inherit the corridor transform. The sheet reads as an expanding tunnel even though plate 5 says the camera is static or uncertain. Render at 25 fps with the measured roughly 21.9 unique pictures per second; use 8 subframe samples and a 180° shutter for fast highlight sweeps. Avoid overblurring the title.
Other motion: shot 2's title region slides −2.5% across its moving span. Shot 3's element region travels left and down with ×0.81 scale overall; the background changes at f227 and f272, so do not force one continuous camera tween across them. Shot 4 uses its segmented slides in plate 5; the sheet's orb and rib pictures change at f442 and f502. Shot 5's region contracts to ×0.87. Shot 6's picture region contracts to ×0.53 across its moving spans; the phone and chart are separate layers so the words stay readable. Shot 7's mark contracts to ×0.72 only in the measured 37.56–38.68 s segment, then remains static.
Hand-offs: f114 uses the measured 3 f fade from black; f119 dips the light to 8% over 7 f and reveals the next rib picture. f165 uses a 1 f white flash. f227 and f272 are zero-length dark-frame cuts inside shot 3. f348 and f549 use 2 f flashes. f442 and f502 are zero-length dark-frame cuts inside shot 4. f591 and f738 are hard cuts; f738 changes the product-proof picture inside shot 6. f893 uses a 2 f flash. Keep each shot boundary exactly where plate 4 places it. The closing card has no fade to black.
Sheet qualification: (inferred) the f114 strip shows bright white frames even though plate 5 labels the boundary a 3 f fade from black; keep the measured boundary and build the flash-like white exposure as a surface/light event. The supplied sheets also show text and picture builds between listed changes, including around 1.75 s, 11–12.5 s, 26–28.5 s and 32.5–37.5 s; treat these as layer or text animation within their measured shots, not additional shot cuts.
Build order
- Lock 1000 frames at 25 fps and place beats 1–7 on the measured shot spans.
- Build the corridor move for beat 1, then reuse its material and light rig in beats 2–5.
- Add the exact internal changes and hand-offs from plate 5.
- Composite
{{UI_CAPTURE}}and chart evidence in beat 6; size its required labels above the phone minimum. - Build the end card in beat 7; mix to the platform target in plate 8; export.
Plate 14
QA checklist
- Seven shots occupy the frame spans in plate 4, ±1 f; internal changes occur at f119, f227, f272, f442, f502 and f738.
- Shot 1's moving region reaches the measured ×0.49 scale while the type layer stays steady.
- Transitions match plate 5: 3 f fade, 1 f flash, three 2 f flashes and one hard cut.
- Essential words are at least 38 px cap at 1920×1080; destination text is at least 39 px cap.
- Audio cue accents hit chosen measured cue frames within ±1 f; do not move cuts onto beats.
- X/LinkedIn master measures about −14 LUFS integrated and ≤−1 dBTP; check in the final MP4.
- Beat 6 uses a real product capture; the end has
{{LOGO}}and{{CTA_URL}}as readable text, with no fade to black.
Plate 15
Make it yours
Brand slots
| Slot | Replaces in the reference | Notes |
|---|---|---|
{{PRODUCT}} | Product name | Use the new name only |
{{BRAND_FONT}} | Reference typeface | Brand font first; Inter fallback |
{{BRAND_BG}} | Near-black and slate fields | Choose your own hue |
{{BRAND_ACCENTS}} | Silver rim and warm UI accents | Supply an original accent system |
{{LOGO}} | Reference mark | Supply vector or transparent asset |
{{CTA_URL}} | Reference URL | Render as readable text |
{{CATEGORY}} | Trading app category | Truthful product category |
{{FOUNDATION}} | Technical ecosystem claim | Only if verifiable |
{{USE_CASE}} | Familiar market example | Concrete user context |
{{BENEFIT}} | Performance/precision promise | Evidence-backed |
{{UI_CAPTURE}} | Reference phone and chart | Real product screen or accurate code reconstruction |
What this film avoids (inferred): no voiceover, presenter, stock footage, long feature list, floating UI chrome, QR code or app-store badges.
Brand-distance warning (inferred): the reference mark plus its near-black silver turbine corridor and original product language would read as the same brand. Change the geometry of the repeated fins into your own signature surface.
Adapt the aspect (inferred)
- 9:16: re-lay out; the measured centre crop loses most text boxes. Centre the device beneath the claim, keep text at least 22 px cap at 1080×1920, and reserve top/bottom platform UI zones.
- 1:1: re-lay out; shorten long claims, keep the corridor as a surrounding frame, and retain at least 22 px cap with clear edge margins.
Adapt the length (inferred)
- 15 s: keep beats 1, 6 and 7, compress claim beats, drop optional beat 5. Preserve the signature move and real UI evidence.
- 30 s: keep all core beats, shorten the abstract middle and the proof sequence without speeding up the end-card read.
- 60 s: add new verified use contexts and a second real UI proof inside beats 4 and 6; preserve the hook and closing cadence.
The creator's signature (don't copy): the reference logo, colour combination, copy, interface and soundtrack.
The transferable format (do copy): sparse picture-led claims, moving dimensional surfaces under fixed type, bright hand-offs, a real product-proof section and a plain destination card.
Source: https://x.com/leapxyz/status/2118387847853908115 · measured with timeline v2 on 2026-11-06 · (inferred) = construction reading
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 |
|---|---|---|---|---|---|---|
| 9:16 | 1080×1920 | middle 31.6% of the width (cut 34.2% each side) | 9 of 50 | "The trading app", "for high performance", "Built on Solana", "The network" … | 22 px cap | re-lay out: a crop loses too much |
| 1:1 | 1080×1080 | middle 56.2% of the width (cut 21.9% each side) | 30 of 50 | "for every asset on…", "Engineered to make trad…", "o make trading disci", "a discipline" … | 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 25 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 @25) | 15 s cut | 30 s cut | 60 s cut |
|---|---|---|---|---|---|
| 1 | fixed | 114 | 114 | 114 | 114 |
| 2 | scales | 51 | 11 | 37 | 82 |
| 3 | scales | 183 | 38 | 131 | 293 |
| 4 | scales | 201 | 42 | 144 | 322 |
| 5 | optional | 42 | drop | drop | 42 |
| 6 | scales | 302 | 63 | 217 | 483 |
| 7 | fixed | 107 | 107 | 107 | 107 |
| total | 1000 f · 40.0 s | 375 f · 15.0 s | 750 f · 30.0 s | 1442 f · 57.7 s + 2.3 s new beats |
15 s: scaling shots shrink to ×0.21, too fast: drop a beat instead · 60 s: stretching tops out at ×1.6 (57.7 s); add 2.3 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 40 s 16:9 film for {{PRODUCT}} in the format of 2118387847853908115 (dark corridor to product proof). Brand: font {{BRAND_FONT}}, background {{BRAND_BG}}, accents {{BRAND_ACCENTS}}, logo {{LOGO}}, call to action {{CTA_URL}}. Use truthful {{CATEGORY}}, {{FOUNDATION}}, {{USE_CASE}}, {{BENEFIT}} and real {{UI_CAPTURE}}. First load get_blueprint("2118387847853908115", format: "json") and build to its shot frames, camera, type, changes, cues and beats. Picture-led and wordless: shot 1 introduces the mark; shots 2–5 place claims over surfaces; shot 6 supplies real product proof; shot 7 closes with access and destination. Lock the camera while fins and travelling light move beneath steady type; shot 1's moving region contracts to ×0.49. Place cuts and flashes on the JSON frames. Build original surfaces in Blender Python and hand 1920×1080 alpha PNG sequences at 25 fps to Remotion for compositing; or use Remotion with CSS 3D as the minimum route. Keep essential type at least 38 px cap. Compose an original 99.38 BPM tonal electronic bed; cues hit JSON frames, while cuts follow picture. Master for X near −14 LUFS and ≤−1 dBTP. Export 1920×1080 H.264 MP4 at 25 fps, about 40 s. End on {{LOGO}} and {{CTA_URL}} as text. No QR codes or store badges. Use real product capture or rebuilt UI; never generate UI, fake results or screenshots. Never reuse the reference's colours, font, logo, slogans or music.Films like this
Tagged product launchmotion graphicsdark uiwidescreenkinetic typemobile apptradingphone mockup