Six-step payment progress header
A 16-second wide product-header animation that turns a six-step payoff into a synchronized checklist, counter, and progress ring.
By @o_labib for PayTrackSource onlineOriginal post ↗
Copies get_blueprint("REF-5069") for Claude. Connect Claude
Why it works
A large title becomes a synchronized six-row dashboard within the first 1.8 seconds, while the camera remains fixed for the entire 16.06-second shot. Sequential checks, ring growth and a changing amount sustain visible progress; the benefit line near 11 seconds and end mark near 13.5 seconds provide separate resolutions without cuts.
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 single locked canvas turns a finite goal into a compact progress interface, then a benefit line and brand mark. The viewer watches the same milestone states propagate through list checks, ring arc and central amount.
Why it works (inferred):
- The headline is legible before the dashboard appears in the first 1.5 s.
- The continuous shot has no cuts, yet the internal progress states give the eye fresh work through about 8.5 s (plate 4).
- The spacious benefit and mark separate outcome from identity near 11 s and 13.5 s in the sheets.
Plate 02
Format card
| Platform · aspect · length | X · 21:9 · 1680×720 source · 2520×1080 build · 30 fps · 16.06 s |
| Pace | One continuous shot, no cuts; staged changes inside it |
| Script | Picture-led · no intelligible narration; readable UI states set the timing, music accents reinforce them |
| Voice | None |
| On screen | Code-built headline, milestone UI, progress ring, benefit, mark |
| Type | Two measured levels, 38 and 30 px cap; enlarge essential copy to 50 px cap minimum |
| Sound | Tonal electronic bed, tracked 99.38 BPM pulse, light clicks and hits; reference −19.5 LUFS |
| Structure | Four beats: name, progress, benefit, identity |
Tools you'll need: Remotion for motion graphics · Remotion or any video editor · 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.25 s | Dark field to large heading and icon tile | {{GOAL}} | No voice; opening clicks | Names the goal immediately |
| 0.5–1.0 s | Small count joins title | {{MILESTONES}} count | Tonal bed begins building | Makes the task finite |
| 1.25–1.75 s | Heading shrinks into header; rows and ring enter | Compact labels and {{METRIC}} | Music continues | Turns promise into evidence |
| 2.0–2.75 s | First state advances | Row checks, amount changes | Accent at measured cue frame 65 | Starts the completion loop |
Hook formula (inferred): {{GOAL}} → finite {{MILESTONES}} → live progress.
Why it holds (inferred): One readable subject precedes the denser interface; the heading becomes part of the interface instead of disappearing.
Plate 04
Structure (beat sheet)
| # | Time (s) | Shots | Beat | What happens | Technique |
|---|---|---|---|---|---|
| 1 | 0–1.2 | 1 | Goal | Headline, icon and count establish a finite task | Large title reveal |
| 2 | 1.2–10.6 | 1 | Progress | Six rows, check states, ring and amount advance together | Shared progress state, title-to-header morph |
| 3 | 10.6–13.0 | 1 | Benefit | Interface gives way to one short outcome line | Clean type reset |
| 4 | 13.0–16.06 | 1 | Identity | Small mark and product name settle on dark field | Quiet end card |
Retention map (inferred): re-hooks through changing row states in beat 2 · payoff in beat 3 · identity in beat 4 · hard stop.
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)
One continuous shot, 16.06 s = 482 frames at 30 fps. 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–16.03 | 0–480 · 481 f | 16.03 | start | scales |
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.
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: call get_frames('2117372151384662283'), or see them on the film page (Pro, or free films).
Plate 05
Shot grammar
Mix: one continuous designed UI scene. Rhythm: camera remains visually locked while elements change; no cut boundary occurs.
Rules this editor follows (inferred):
- Keep a stable dark field and move interface layers, not the viewpoint.
- Couple each check, ring increment and central number to one progress variable.
- Leave a clear visual reset before beat 3 and another before beat 4.
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 2520×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 1 of 1 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.15 | 0.03 | 0.44 |
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 | 9 · 17 · 73 · 58 → 46 · 36 · 8 · 27 | complex | +3.4 · +3.7 | ×0.933 | x +21.1% (+531 px) · y +22.9% (+247 px) · ×0.65 scale · roll −3.0° in 6.2 s | ease-out | ▂▃▁▁▁▁▁▁▁▁▁▁▁▁▁▁ · 244%/s | 0.39 | 0.77 |
| ↳ 0.13–0.67 s: scale up | +0.0 · +0.3 | ×1.665 | ×1.31 scale | ease-out | |||||
| ↳ 0.67–1.00 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 1.00–1.80 s: scale down | +35.7 · −54.8 | ×0.225 | x +28.6% (+720 px) · y −43.9% (−474 px) · ×0.30 scale · roll +0.9° | ease-out | |||||
| ↳ 1.80–2.20 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 2.20–2.67 s: rotate | +0.5 · +1.7 | ×1.000 | y +0.8% (+8 px) · roll −1.2° | ease-out | |||||
| ↳ 2.67–8.33 s: static | +0.0 · +0.0 | ×1.000 | none | hold |
Focus (measured): shot 1: sharp inside 17 · 0 · 83 · 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: 0 of 1; 1 more could not be tracked (shown as "static?" or "not measured": check the sheets). Animation cadence: a new picture every frame (on ones): 27.6 unique frames per second of 30 while things move (held-frame share 0.08, 148 moving frames). Match it, or the motion will feel smoother or choppier than the reference.
Transitions (measured)
One continuous shot: no cuts. Changes happen inside the shot (camera, light, layout).
What each shot shows (inferred from the sheets)
| # | Type | Framing | What's on screen | Text / overlay |
|---|---|---|---|---|
| 1 | Motion UI | Wide, locked canvas | Goal heading → list and ring → benefit → mark | RTL title, count, rows, changing amount, outcome line |
Plate 06
Visual style guide
- Look (inferred): almost black
{{BRAND_BG}}, slightly lighter cards, pale text, one vivid role from{{BRAND_ACCENTS}}. The reference uses a navy field and green completion signal. - Graphics and overlays (inferred): six translucent rounded rows; circular stroke with bright completed arc; one small icon tile; restrained confetti only at completion in the sheets.
- Transitions (inferred): transforms and opacity changes within shot 1, with no camera cut.
- Branding and end card (inferred): centered
{{LOGO}}with{{CTA_URL}}in plain text; keep the field quiet.
At a glance
- Type scale (cap px): 38 · 30 (2 levels).
- Phone minimum: cap height ≥ 2% of frame width = 50 px at 2520×1080
- Whole film (time-weighted):
#0C152782% ·#1B293815% ·#6067732% ·#0D6E531%. - Curve facts: average 0.10 · darkest 0.08 at 0.0 s · brightest 0.12 at 8.5 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, 2520×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 |
|---|---|---|---|---|---|---|---|
| "delo quis" | 1 | 6.3–7.0 | 38 | 54 | 3.5 | 66 · 54 · 7 · 6 | right, middle |
| "P•rV gulo o" | 1 | 8.8–9.8 | 30 | 42 | 2.8 | 38 · 68 · 7 · 4 | centre, lower third |
Type scale (cap px): 38 · 30 (2 levels).
Left out: 3 reads that are not clean words or were seen in a single frame ("Juro..", "Ju Vo.", "rrV Jerio"…): 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 = 50 px at 2520×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: "P•rV gulo o" (30 px, shot 1), "delo quis" (38 px, shot 1). Size these up in your version, or treat them as decoration.
Type spec (inferred)
Assume cap height = 0.71 × CSS font size. The measured scale is evidence; essential text is enlarged for the 50 px cap phone minimum at 21:9. Use {{BRAND_FONT}}; Tajawal is a free fallback when {{LANGUAGE}} is Arabic.
| Level | Cap px at 1080p | Font size | Weight · case · tracking | Colour pair | Motion |
|---|---|---|---|---|---|
| Primary measured level | 38 reference; 50 essential | 71 px essential | 700 · script-native case · −0.01em | pale text / {{BRAND_BG}} | opacity and scale in 16 f, cubic-bezier(.2,.8,.2,1) |
| Secondary measured level | 30 reference; 50 essential | 71 px essential | 600 · script-native case · 0em | pale text or {{BRAND_ACCENTS}} / {{BRAND_BG}} | value crossfade in 8 f, cubic-bezier(.2,.8,.2,1) |
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.10 · 0.18 | #0C1527 81% · #1B2938 15% · #606773 2% · #0D6E53 1% | #B6BDC4 ≈7230 K 55% · #1A253F hue 285° tinted 23% · #059967 hue 160° tinted 22% |
Whole film (time-weighted): #0C1527 82% · #1B2938 15% · #606773 2% · #0D6E53 1%.
Brightness curve (measured)
Mean luma per 1 s, one character each, grouped in tens; p95 = the bright highlights. Scale: ▁ = 0 (black) → █ = 0.4 (nothing in this film is brighter); luma runs 0–1.
0s 10s
mean ▃▂▃▃▃▃▃▃▃▃ ▃▂▂▂▂▂▂
p95 ▅▄▄▄▄▄▅▅▆▇ ▆▃▃▃▃▃▃
Curve facts: average 0.10 · darkest 0.08 at 0.0 s · brightest 0.12 at 8.5 s.
Layout boxes (inferred)
| Element | Shots | Box x · y · w · h (%) | Source · confidence | Notes |
|---|---|---|---|---|
| Moving UI region | 1 | 9 · 17 · 73 · 58 | measured element region · high | Before title-to-UI transform |
| Final moving region | 1 | 46 · 36 · 8 · 27 | measured element region · high | Motion tracker endpoint; not full UI bounds |
| Mid-right text | 1 | 66 · 54 · 7 · 6 | measured text box · high | Reference small text; enlarge if essential |
| Lower text | 1 | 38 · 68 · 7 · 4 | measured text box · high | Reference small text; enlarge if essential |
| End-card mark | 1 | 47 · 34 · 7 · 22 | sheet tile at 13.5 s · medium | Centered symbol and name group |
End card (inferred): {{BRAND_BG}}; center {{LOGO}} in the sheet-derived box, with {{CTA_URL}} set at 50 px cap or larger. Beat 4 supplies the hold; the source has no fade to black.
Material card (inferred)
:root { --brand-bg: {{BRAND_BG}}; --brand-accent: {{BRAND_ACCENTS}}; }
.stage { background: radial-gradient(circle at 88% 5%, color-mix(in srgb, var(--brand-accent) 10%, var(--brand-bg)), var(--brand-bg) 50%); }
.row { border-radius: 16px; background: color-mix(in srgb, white 8%, var(--brand-bg)); border: 1px solid color-mix(in srgb, white 8%, transparent); box-shadow: 0 8px 24px #0004; }
.icon-tile { border-radius: 20px; backdrop-filter: blur(12px); }
.ring { filter: drop-shadow(0 0 18px color-mix(in srgb, var(--brand-accent) 45%, transparent)); }
No 3D is needed; SVG arcs and layered CSS reproduce the flat interface. Keep all readable layers in deep focus; the measured focus box in plate 5 supplies no defocus.
Plate 07
Voice and delivery
Measured: no speech detected; the v1 transcript contains only nonverbal fragments. Voice direction (inferred): no voice; the picture carries the explanation. Keep written labels short and correctly shaped for {{LANGUAGE}}.
Plate 08
Sound design
- Music (inferred): restrained tonal electronic pulse with a gradual first build, lighter middle and fuller resolution under beats 2–4.
- Sound effects (inferred): soft click at the opening cue and completion ticks; reserve stronger hits for the cue sheet's frame 246/250 and frame 397.
- Silence and space (inferred): no vocal layer; leave the benefit line free of sharp transients.
At a glance
- Speech: words cover 0% of the film (1 words, v1 transcript): little speech.
- Tempo: 99.38 BPM, confidence 0.67 · first downbeat 0.801 s (bar start confidence 0.94) · beat 0.6037 s · bar of 4 = 2.415 s.
- Key: C major (confidence 1.00; runner-up C minor).
- Loudness of the reference (measured): −19.5 LUFS integrated, true peak −5.5 dBTP, range 10.6 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)
Speech: words cover 0% of the film (1 words, v1 transcript): little speech.
Tempo: 99.38 BPM, confidence 0.67 · first downbeat 0.801 s (bar start confidence 0.94) · 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 6 | |
|---|---|---|---|---|
| 30 fps (this film) | 18.11 f | 72.44 f | 24 | 24 · 102 · 174 · 250 · 329 · 397 |
| 60 fps | 36.22 f | 144.89 f | 48 | 48 · 204 · 349 · 501 · 658 · 794 |
Beats in seconds: 0.139 · 0.801 · 1.480 · 2.206 · 2.775 · 3.408 · 3.959 · 4.609 · 5.166 · 5.811 · 6.374 · 7.007 … (22 in all, audio.tempo.beats in the timeline JSON).
Key: C major (confidence 1.00; runner-up C minor).
Sections (by energy of the whole mix, voice included):
| section | time (s) | shots | level (RMS) |
|---|---|---|---|
| build | 0.0–2.5 | 1 | −22 dB |
| build | 2.5–7.5 | 1 | −26 dB |
| outro | 7.5–16.1 | 1 | −23 dB |
Energy map (RMS per 1 s, ▁ = −90 dB → █ = −15 dB):
▄█▅▇▄▄▆▄█▇ ▇▄▁▆▁▁▁
Cue sheet (12 cues: 0 at a cut, 9 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 | click | 0.36 | element scale up starts (shot 1) | ✓ |
| 0.33 | 10 | 1 | click | 0.82 | no visible event | |
| 1.37 | 41 | 1 | impact | 0.53 | no visible event | |
| 2.18 | 65 | 1 | hit | 0.31 | element rotate starts (shot 1) | ✓ |
| 3.39 | 102 | 1 | tonal | 0.85 | no visible event | ✓ |
| 4.60 | 138 | 1 | tonal | 1.00 | no visible event | ✓ |
| 5.80 | 174 | 1 | tonal | 1.00 | no visible event | ✓ |
| 6.99 | 210 | 1 | tonal | 0.74 | no visible event | ✓ |
| 8.20 | 246 | 1 | hit | 1.00 | element complex starts (shot 1) | |
| 8.34 | 250 | 1 | tonal | 1.00 | element complex starts (shot 1) | ✓ |
| 10.96 | 329 | 1 | hit | 1.00 | no visible event | ✓ |
| 13.23 | 397 | 1 | hit | 1.00 | element scale down starts (shot 1) | ✓ |
Loudness of the reference (measured): −19.5 LUFS integrated, true peak −5.5 dBTP, range 10.6 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)
Compose at the measured 99.38 BPM in C major: muted sine bass, soft mallet pulse, airy two-note synth and short noise ticks. Beat 1 gets a filtered swell; beat 2 adds pulsing notes to checklist states; beat 3 strips back to a held chord; beat 4 resolves with a short tail. Place clicks and hits on cue frames 3, 65, 246, 250, 329 and 397; use the tracked JSON beat times rather than quantizing every cue. Music-model prompt: “Original restrained C-major electronic pulse at 99.38 BPM, soft mallets and warm pad, discrete UI ticks, gentle resolving tail, no vocals.”
Plate 09
Packaging
- Title (inferred):
{{PRODUCT}}: {{GOAL}} in progress. - Cover / thumbnail (inferred): oversized
{{GOAL}}and one icon tile on{{BRAND_BG}}, with ample empty field. - Post copy (inferred): one sentence naming the goal, then
{{CTA_URL}}. - Audience signals: 263 views at capture; no replay graph or comment contents supplied.
Plate 10
Script template
[beat 1 · shot 1 · short title] {{GOAL}}
[beat 1 · finite count] {{MILESTONES}}
[beat 2 · six short row labels and values] {{MILESTONES}}
[beat 2 · central changing value] {{METRIC}}
[beat 3 · one short benefit sentence] {{BENEFIT}}
[beat 4 · identity and text CTA] {{LOGO}} · {{CTA_URL}}
Direction (inferred): picture-led, with no narration or subtitles. Keep each required on-screen phrase at the plate 6 phone minimum and state updates readable between changes.
Plate 11
Production plan
Two routes (inferred)
Minimum: Claude alone. Remotion builds the whole piece as SVG and CSS, including layered cards, arc, number tween, blur and synthesized music via Web Audio rendered to WAV. It reaches the main motion and layout quickly; it gives up the source's fine confetti and nuanced mix texture. Supply real {{PRODUCT}} data and {{LOGO}}.
Full: with the toolkit. Write the UI and motion in Remotion, export camera and element keyframes as JSON at 30 fps, render the 2520×1080 frame sequence, then finish the edit and original music/effects in Remotion or an editor. Pass 2520×1080 PNG frames with alpha for the foreground UI and a 48 kHz WAV with click track to the final edit; export 30 fps H.264 MP4. This flat UI film needs no Blender.
Asset honesty: real product captures or your own UI rebuilt in code; where no image exists, a type tile says it plainly. Never generated product UI, invented screenshots, fake metrics, fake reviews or fake outputs. For this film, milestone amounts and completion states must come from credible {{PRODUCT}} data or be clearly labelled illustrative.
Plate 12
Prompts
Script prompt (inferred):
Write original on-screen copy for a wordless, picture-led progress header for {{PRODUCT}} in {{LANGUAGE}}. Supply a short {{GOAL}}, six credible {{MILESTONES}}, a changing {{METRIC}}, and one compact {{BENEFIT}} sentence. Use the same data for each row check, ring increment and value. Keep essential text readable at 50 px cap in a 2520×1080 frame. End with {{LOGO}} and {{CTA_URL}} as text. Avoid the reference's wording, amounts and identity.
Music prompt (inferred): “Original C-major 99.38 BPM electronic pulse, filtered opening, six light completion ticks, gentle resolve, no vocals.”
Plate 13
Edit recipe
How it's built (inferred)
The signature move is the title becoming a dashboard header while the rows and ring enter. Keep the camera fixed; put the heading, icon, rows and ring on separate layers. The measured element track in plate 5 gives 0.13–0.67 s scale-up (×1.31), 1.00–1.80 s scale-down (×0.30 with +28.6% x and −43.9% y image travel), and 2.20–2.67 s small roll (−1.2°). The tracker follows a changing region, so its aggregate ×0.65 is a hint, not a camera zoom. Drive the hero-to-header transform over frames 30–54 with cubic-bezier(.2,.8,.2,1); reveal the list with staggered masks while the ring starts from an empty track. The sheets show a clear UI build even where the tracker calls the scene static.
Use one integer completion state to update row icons, central number and SVG stroke-dashoffset; interpolate the arc between states with cubic-bezier(.33,0,.2,1). The timeline sheets show sequential checks through beat 2 and confetti near 8.5–10 s. Fade the completed UI's opacity into the benefit line around beat 3, then replace that line with the identity card around beat 4; both changes occur inside shot 1, with no cut. The measurements do not give exact transition frame counts for these later changes, so use 12-frame opacity overlaps as a build choice and keep the source's no-fade-to-black ending. Animate on ones at 30 fps; use 2 subframe samples for fast transforms and a 180° shutter equivalent. Test RTL glyph shaping and prevent digit changes from shifting the ring's center.
Build order
- Make the 2520×1080, 30 fps background and brand tokens.
- Set beat 1 type, then build the title-to-header transform of shot 1.
- Build beat 2 rows, ring and number from one state array.
- Add beat 3 and beat 4 typography and internal opacity handoffs.
- Synthesize the original cue-aligned bed, mix it, render and inspect phone-size readability.
Plate 14
QA checklist
- One continuous shot and zero hard cuts, matching plate 4.
- Primary transform follows the measured shot 1 element segments in plate 5 within ±1 frame at the stated boundaries.
- Row checks, ring fraction and
{{METRIC}}agree at each completion state. - Required type is at least 50 px cap at 2520×1080; 16:9, 9:16 and 1:1 use plate 15 minima.
- Cues align to the JSON frames within ±1 frame; use tracked beats, not a constant formula.
- X export measures about −14 LUFS integrated, true peak ≤ −1 dBTP.
- End card remains visible to the hard stop; no fade to black.
- No reference colours, exact logo, copy or music remain.
Plate 15
Make it yours
Brand slots
| Slot | Replaces in the reference | Notes |
|---|---|---|
{{PRODUCT}} | PayTrack identity | Product being promoted |
{{BRAND_FONT}} | Reference Arabic sans | Must support {{LANGUAGE}} shaping |
{{BRAND_BG}} | Dark navy field | Background role |
{{BRAND_ACCENTS}} | Green progress accent | Completion and keyword roles |
{{LOGO}} | Geometric end mark | Supply genuine vector asset |
{{CTA_URL}} | No explicit in-video URL | Add as plain text CTA |
{{GOAL}} | Car payment title | Your finite task |
{{MILESTONES}} | Six installment rows | Credible row data |
{{METRIC}} | Remaining amount | Same state as rows and ring |
{{BENEFIT}} | Final payoff sentence | Original wording |
{{LANGUAGE}} | Arabic copy | Set direction and digit style |
What this film avoids (inferred): no voiceover, stock footage, feature list, device frame or fake results. Keep the visual proof in the synchronized states.
Brand-distance warning (inferred): a car-payment example with the reference's navy/green pairing and matching Arabic closing line would read as its brand. Change the goal domain first, then map the colours and copy to {{PRODUCT}}.
Adapt the aspect (inferred):
- 16:9: Centre-crop the 21:9 sides to 1920×1080, losing 11.9% each side; move the affected interface element inward, keep essential type ≥38 px cap, and reserve bottom/right platform UI margins.
- 9:16: Re-lay out at 1080×1920: stack heading, list and ring vertically, then center the end card; keep essential type ≥22 px cap and clear top and bottom app controls.
- 1:1: Re-lay out at 1080×1080: put rows above or beside a reduced ring inside the center square; keep essential type ≥22 px cap and clear the lower caption overlay.
Adapt the length (inferred):
- 15 s: Keep all four beats; tighten beat 2's intervals while preserving the signature transform and identity hold.
- 30 s: Keep beats 1, 3 and 4 concise; add fresh, meaningful milestones in beat 2.
- 60 s: Add new goal chapters with their own verified data; do not stretch static holds or replay the same six checks.
The creator's signature (don't copy): exact mark, car-installment copy, values, palette and music. The transferable format (do copy): finite-goal title, transformation into synchronized progress UI, concise benefit and calm end card.
Source: https://x.com/o_labib/status/2117372151384662283 · measured with dissect 1.1 and timeline v2 on 2026-11-04 · (measured) = read off the film · (inferred) = our 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. This film is wider than 16:9 (21:9): at 1920×1080, centre-crop the sides (scale the 1080 px height as is) rather than letterboxing, which would leave a 823 px tall picture with bars in a feed.
| to | deliver at | a centre crop keeps | measured boxes kept | boxes a crop loses | phone minimum | so |
|---|---|---|---|---|---|---|
| 16:9 | 1920×1080 | middle 76.2% of the width (cut 11.9% each side) | 2 of 3 | moving element, shot 1 | 38 px cap | centre crop, then move the lost boxes inside |
| 9:16 | 1080×1920 | middle 24.1% of the width (cut 37.9% each side) | 1 of 3 | "delo quis", moving element, shot 1 | 22 px cap | re-lay out: a crop loses too much |
| 1:1 | 1080×1080 | middle 42.9% of the width (cut 28.6% each side) | 1 of 3 | "delo quis", moving element, shot 1 | 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 | scales | 481 | 450 | 770 | 770 |
| total | 481 f · 16.0 s | 450 f · 15.0 s | 770 f · 25.7 s + 4.3 s new beats | 770 f · 25.7 s + 34.3 s new beats |
30 s: stretching tops out at ×1.6 (25.7 s); add 4.3 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 (25.7 s); add 34.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 16.06 s 21:9 film for {{PRODUCT}} in the format of 2117372151384662283 (finite-goal progress header). Brand: font {{BRAND_FONT}}, background {{BRAND_BG}}, accents {{BRAND_ACCENTS}}, logo {{LOGO}}, call to action {{CTA_URL}}. Use {{GOAL}}, {{MILESTONES}}, {{METRIC}}, {{BENEFIT}} and {{LANGUAGE}} as original, credible product content. First load get_blueprint("2117372151384662283", format: "json") and follow its timing and motion. Make this picture-led and wordless: beat 1 names a finite goal, beat 2 transforms its headline into a six-row progress dashboard, beat 3 states the benefit, and beat 4 shows identity. All occur inside shot 1, without cuts. Keep the camera locked; follow the measured 1.00–1.80 s heading scale-down and travel, then drive row checks, ring arc and central amount from one state array. Use Remotion SVG and CSS for the interface, with a synthesized original C-major bed at 99.38 BPM. The Minimum fallback is the same single Remotion stack with simpler glow and particles. Essential text must be at least 50 px cap at 2520×1080. Map colours to brand roles; never reuse reference hexes, fonts, mark, wording or music. Use real {{PRODUCT}} data or UI rebuilt in code; never generated UI, fake screenshots or fake results. End on {{LOGO}} plus {{CTA_URL}} as text, without QR codes or store badges. Export 2520×1080 at 30 fps, H.264 MP4, about 16.06 s, mastered near −14 LUFS and below −1 dBTP for X.Films like this
Tagged claudeproduct headerdark uiarabic typographyprogress animationfinance appmotion graphicsultrawide