Characters Invade an App Store Header
A silent 15-second product-page animation uses two waves of character entrances inside a crop-safe phone header.
By @_Jabman_ for JasoosSource onlineOriginal post ↗
Copies get_blueprint("REF-5090") for Claude. Connect Claude
Why it works
The product page is legible from frame 0 while the fixed camera keeps attention on the header. Small figures accumulate before a central arrival near 3 s, then the stage clears and repeats the reveal near 10 s; all of this happens within the single measured 450-frame shot.
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 fixed phone proves the product exists while an illustrated header behaves like a tiny stage. Two waves of original characters enter, gather around a larger central silhouette, and clear without changing the product listing.
Why it works: The listing is present at frame 0; the first central arrival is visible near 3 s and a second near 10 s. The single locked camera in plate 5 makes the small cast movement readable.
Plate 02
Format card
| Platform · aspect · length | X · 4:5 · 15 s · 720×900 source · 30 fps |
| Pace | One continuous shot; no cuts |
| Script | Picture-led; wordless; character entrances set timing |
| Voice | None |
| On screen | Fixed phone and product listing; animated illustrated header |
| Type | Three measured cap-height levels in plate 6; listing copy stays static |
| Sound | Reference has no audio track |
| Structure | Six visual beats; central reveal twice; no in-video CTA in the reference |
Tools you'll need: After Effects for motion graphics · Remotion or any video editor · 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–0.75 s | Phone and empty scenic header | Product listing already visible | Silent | Establishes proof and empty stage |
| 0.75–1.25 s | First small face rises near centre | Listing unchanged | Silent | Starts the visual question |
| 1.25–2.75 s | More faces stagger across ridge | Listing unchanged | Silent | Builds expectation |
Hook formula (inferred): show {{PRODUCT}} in a real {{UI_ASSETS}} page; animate {{CHARACTER_SET}} into {{HEADER_WORLD}}.
Plate 04
Structure (beat sheet)
| # | Time (s) | Shots | Beat | What happens | Technique |
|---|---|---|---|---|---|
| 1 | 0–0.75 | 1 | Proof | Fixed page, open header | Immediate context |
| 2 | 0.75–2.75 | 1 | First wave | Small figures peek in sequence | Ridge masks |
| 3 | 2.75–5.5 | 1 | First reveal | Large central silhouette joins | Vertical rise |
| 4 | 5.5–7 | 1 | Reset | Cast sinks out | Reverse masked motion |
| 5 | 7–12.5 | 1 | Second wave | New arrangement grows to central reveal | Reordered entrances |
| 6 | 12.5–15 | 1 | Clear | Characters withdraw toward open header | Staggered exits |
Retention map (inferred): Beat 3 pays off the first wave; beat 5 repeats with a changed arrangement. The reference has no in-video call to action or fade.
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, 15.00 s = 450 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–15.00 | 0–449 · 450 f | 15.00 | 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.
Measurement notes: S1: 48 text items read; the 40 largest are kept · no audio track
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('2116743224991580519'), or see them on the film page (Pro, or free films).
Plate 05
Shot grammar
Mix: One fixed composited device shot. Rhythm: Character motion supplies all variation inside shot 1; the plate 4 boundary is start only.
Rules this editor follows (inferred):
- Keep the device, listing, moon and ridge registered; animate character layers behind the foreground ridge.
- Preserve the central faces when testing a narrower phone header crop.
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×1350. 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.
| # | camera move | pan x · y (%/s) | zoom (/s) | over the shot | ease | speed · peak | cadence | blur | motion | conf |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | static | +0.0 · +0.0 | ×1.000 | none | hold | ▂▃▂▆▅▂▂▂▂▃▄▃▄▅▃▂ · 0%/s | still | 0.67 | 0.00 | 1.00 |
Focus (measured): shot 1: sharp inside 14 · 0 · 71 · 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: 1 of 1.
Transitions (measured)
One continuous shot: no cuts. Changes happen inside the shot (camera, light, layout).
What shot 1 shows (inferred from the sheets)
| # | Type | Framing | What's on screen | Text / overlay |
|---|---|---|---|---|
| 1 | Device composite | Full phone centered | Header stage above fixed listing | Listing text only |
Plate 06
Visual style guide
(inferred) Use {{BRAND_BG}} as the outer field, a darker brand surface inside the phone, and {{BRAND_ACCENTS}} for character separation and the header light. The reference uses a dark violet ground and pale moon; those colours are evidence, not required assets. Phone bezel and product UI remain sharp while the scenic hills have soft edges. There is no separate end card in the measured film; for a new version, place {{LOGO}} and {{CTA_URL}} as text below the phone during beat 6 without a cut or fade.
At a glance
- Type scale (cap px): 18–24 · 10–12 · 8 (3 levels).
- Phone minimum: cap height ≥ 2% of frame width = 22 px at 1080×1350
- Whole film (time-weighted):
#0E0B1677% ·#41257910% ·#5750537% ·#7B5C8E6%. - Curve facts: average 0.11 · darkest 0.11 at 14.2 s · brightest 0.12 at 2.2 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, 1080×1350. 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 |
|---|---|---|---|---|---|---|---|
| "1:464" | 1 | 0.0–14.8 | 19 | 26 | 1.4 | 31 · 8 · 7 · 2 | left, top |
| "Jasoos - Party Game" | 1 | 0.0–14.8 | 18 | 25 | 1.3 | 42 · 33 · 25 · 2 | centre, upper |
| "Find the Jasoos among you" | 1 | 0.0–14.8 | 10 | 14 | 0.7 | 43 · 35 · 21 · 2 | centre, upper |
| "AGE RATING" | 1 | 0.0–14.8 | 10 | 14 | 0.7 | 29 · 47 · 8 · 1 | left, middle |
| "CATEGORY" | 1 | 0.0–14.8 | 10 | 14 | 0.7 | 42 · 47 · 8 · 1 | centre, middle |
| "DEVELOPER" | 1 | 0.0–14.8 | 10 | 14 | 0.7 | 56 · 47 · 8 · 1 | centre, middle |
| "283" | 1 | 0.0–9.3 | 21 | 30 | 1.6 | 43 · 49 · 5 · 2 | centre, middle |
| "Family" | 1 | 0.0–14.8 | 10 | 14 | 0.7 | 43 · 51 · 5 · 1 | centre, middle |
| "What's New >" | 1 | 0.0–14.8 | 20 | 28 | 1.5 | 27 · 55 · 16 · 2 | left, middle |
| "Version 1.0.5" | 1 | 0.0–14.8 | 12 | 18 | 0.9 | 27 · 58 · 10 · 1 | left, lower third |
| "Fresh content and small improvements throughout." | 1 | 0.0–14.8 | 11 | 16 | 0.8 | 27 · 61 · 39 · 2 | centre, lower third |
| "Preview" | 1 | 0.0–14.8 | 24 | 33 | 1.8 | 27 · 67 · 9 · 2 | left, lower third |
| "Pass the f" | 1 | 0.0–14.8 | 22 | 32 | 1.7 | 63 · 73 · 12 · 2 | right, lower third |
| "Find the Jasoos" | 1 | 0.0–14.8 | 20 | 28 | 1.5 | 32 · 73 · 19 · 2 | centre, lower third |
| "One phone. One secret word. One liar." | 1 | 0.0–14.8 | 8 | 11 | 0.6 | 31 · 75 · 21 · 1 | centre, lower third |
| "Everyone takes a s" | 1 | 0.0–14.8 | 8 | 11 | 0.6 | 65 · 75 · 11 · 1 | right, lower third |
| "9:41" | 1 | 0.0–14.8 | 10 | 14 | 0.7 | 33 · 79 · 2 · 1 | left, lower third |
| "Arcade" | 1 | 0.0–14.8 | 10 | 14 | 0.7 | 57 · 90 · 4 · 1 | centre, bottom |
Type scale (cap px): 18–24 · 10–12 · 8 (3 levels).
Left out: 5 reads that are not clean words or were seen in a single frame ("LANGUI", "+ 1 Ma", "YOUSIF MANSOUR"…): 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×1350. 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: "Jasoos - Party Game" (18 px, shot 1), "Find the Jasoos among…" (10 px, shot 1), "What's New >" (20 px, shot 1), "Fresh content and small…" (11 px, shot 1), "Find the Jasoos" (20 px, shot 1), "One phone. One secret…" (8 px, shot 1) and 10 more above. Size these up in your version, or treat them as decoration.
Type spec (inferred)
Assume cap height = 0.71 × font size. The measured scale has exactly three levels. Fallback for {{BRAND_FONT}}: Geist, only if no brand font exists.
| Level | Cap px at 1080p | Font px | Weight · case · tracking | Colour pair | Motion |
|---|---|---|---|---|---|
| Listing headings | 18–24; use ≥22 for required words | 31–34 for required words | 600 · sentence case · −0.015em | light text / dark surface | Static, 0 frames |
| Metadata | 10–12; raise required words to 22 | 31 for required words | 400 · mixed case · 0em | muted text / dark surface | Static, 0 frames |
| Microcopy | 8; decorative only, or raise to 22 | 31 if required | 400 · mixed case · 0em | muted text / dark surface | Static, 0 frames |
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.11 · 0.43 | #0E0B16 43% · #1A1131 35% · #412579 10% · #575053 7% · #7B5C8E 6% | #D1CACF ≈6450 K 63% · #CEB3E5 hue 312° ≈8900 K 28% · #E8BA56 hue 84° ≈3330 K 9% |
Whole film (time-weighted): #0E0B16 77% · #412579 10% · #575053 7% · #7B5C8E 6%.
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
mean ▂▂▂▂▂▂▂▂▂▂ ▂▂▂▂▂
p95 ▇██▇▇▇▇███ ▇▇▇▇▇
Curve facts: average 0.11 · darkest 0.11 at 14.2 s · brightest 0.12 at 2.2 s.
Layout boxes (inferred)
| Element | Shots | Box x · y · w · h (%) | Source · confidence | Notes |
|---|---|---|---|---|
| Focused phone region | 1 | 14 · 0 · 71 · 100 | measured element region · high | Plate 5 focus; deep focus |
| Product name | 1 | 42 · 33 · 25 · 2 | measured text box · high | Enlarge required copy in new version |
| Listing heading | 1 | 27 · 55 · 16 · 2 | measured text box · high | Static |
| Preview heading | 1 | 27 · 67 · 9 · 2 | measured text box · high | Static |
| CTA text in new end treatment | 1 | 27 · 61 · 39 · 2 | measured text box · high | Replace lower listing copy only in new version |
End card: The source has none. For the new version, beat 6 keeps the phone in place and uses the measured lower copy region for {{CTA_URL}} as text, with {{LOGO}} in the existing icon position; neither gets a new hold.
Material card (inferred)
:root { --brand-bg: {{BRAND_BG}}; --brand-accent: {{BRAND_ACCENTS}}; }
.frame { background:var(--brand-bg); }
.phone { border:2px solid color-mix(in srgb, white 65%, var(--brand-bg)); border-radius:46px; box-shadow:0 18px 44px #0009, 0 0 18px color-mix(in srgb, var(--brand-accent) 25%, transparent); overflow:hidden; }
.header { position:relative; isolation:isolate; background:radial-gradient(circle at 50% 25%, color-mix(in srgb, white 65%, var(--brand-accent)) 0 7%, transparent 14%), linear-gradient(var(--brand-bg), var(--brand-accent)); }
.hill-back { filter:blur(3px); } .ridge { filter:blur(0.5px); } .character { filter:drop-shadow(0 3px 5px #0008); }
No 3D is needed: the dimensional impression comes from layered 2D hills, overlap, and soft shadows. Use a 0 px depth blur inside the measured 14 · 0 · 71 · 100 focus box; outside it, keep only the designed 3 px hill blur. The header glow is a 24 px CSS blur at 0.28 opacity; a 20% vignette falls off from 70% radius.
Plate 07
Voice and delivery
Measured: No speech and no audio track. Voice direction: No voice; the picture carries the sequence.
Plate 08
Sound design
Measured: Silent throughout. The production default is therefore silence. If a sound-on version is commissioned, use the original bed below and keep every entrance understandable muted.
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)
No audio track: the reference plays silent. If your version needs sound, plate 8 says what fits; the platform loudness targets below still apply.
Loudness of the reference: not measured.
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)
Optional original bed: 100 BPM in D minor, muted pluck, soft sub pulse and airy pad. There is no measured steady pulse or cue frame, so 100 BPM is a composition choice, not a synchronization target. In shot 1, leave beat 1 sparse, add pluck notes for beats 2 and 5, a low swell for beats 3 and 5's central arrival, and thin back out for beats 4 and 6. Put optional accents near frames 90 and 300, aligned to the visible central arrivals rather than an invented reference cue. Music-model prompt: “Original restrained playful nocturne, 100 BPM D minor, soft plucks and airy pad, sparse reveal swells, no vocals.” Master X delivery to −14 LUFS and ≤−1 dBTP.
Plate 09
Packaging
- Title (inferred): “
{{PRODUCT}}animated header in its live product page.” - Cover (inferred): Show the complete phone with a small cast visible above the ridge; keep product identity legible.
- Post copy (inferred): Share one specific crop lesson, then place
{{CTA_URL}}as plain text. - Audience signals: 103 views at capture; no retention or replay data supplied.
Plate 10
Script template
[beat 1 · shot 1] On-screen product name: {{PRODUCT}}.
[beats 2–5 · shot 1] No new narration or captions; listing copy remains fixed.
[beat 6 · shot 1] New-version CTA: {{LOGO}} · {{CTA_URL}} as text.
Plate 11
Production plan
Two routes (inferred)
Minimum: Remotion with CSS 3D. Build the phone, listing, scenery, masks, layered characters and silent export in one code stack; Claude can synthesize optional music in code. Use supplied {{UI_ASSETS}} and original {{CHARACTER_SET}} drawings. This gives up hand-animated shape nuance and uses simple layered depth.
Full: After Effects → Remotion. Prepare original character art as transparent PNG or SVG at 1080×1350. Animate header layers in After Effects at 30 fps, then pass a 1080×1350 PNG sequence with alpha to Remotion. Remotion composites the real {{UI_ASSETS}}, phone and header, and outputs H.264. Transfer entrance coordinates and easing in JSON; if sound is chosen, pass a 48 kHz WAV and click track to the final edit.
Asset honesty: Use real captures of {{PRODUCT}} or its UI rebuilt in code; if missing, use a plainly labelled type tile. Never fabricate screenshots, ratings, reviews or results. The character designs and scenic header must be original, and faces must survive the phone crop.
Plate 12
Prompts
Storyboard prompt: “For {{PRODUCT}}, map beats 1–6 onto one locked product page. Design original {{HEADER_WORLD}} and {{CHARACTER_SET}} layers; keep the centre reveal inside the phone header. Use {{BRAND_FONT}}, {{BRAND_BG}}, {{BRAND_ACCENTS}}, {{LOGO}} and real {{UI_ASSETS}}. Output entrance positions and mask order.”
Caption spec: No captions. Required product and {{CTA_URL}} copy meet plate 6's phone minimum. Optional music follows plate 8.
Plate 13
Edit recipe
How it's built (inferred)
The signature move is a character rising through a ridge mask while the phone stays fixed. In shot 1, place sky and moon behind far hills, character layers next, then a near ridge above their lower bodies. For beat 2, keyframe each figure from 20–35 px below its resting head position to rest over 12–18 frames; use cubic-bezier(.22,1,.36,1). Stagger entrances, then add 2–4 px idle bob on a 45–60 frame cycle. For beat 3, raise the central silhouette 45–70 px over 18–24 frames with the same curve and a 3 px shadow displacement. Reverse the motion for beat 4; reorder and repeat in beat 5; withdraw in beat 6. Those are construction ranges inferred from sheet tiles, not measured motion values. The camera measurement is static, ×1.000, plate 5; do not scale the whole phone. Animate on ones at 30 fps, with optional two-sample subframe motion blur of 2 px on fast rises only. The cadence measurement in plate 5 says still with low confidence; the sheets visibly show character motion, so do not interpret that label as a frozen header. There are no measured internal step changes, hand-offs or invisible cut boundaries; these are continuous layer movements.
Build order
- Build shot 1's locked phone and real listing for beat 1; verify the plate 5 focus region.
- Draw
{{HEADER_WORLD}}, foreground mask and transparent{{CHARACTER_SET}}. - Animate beats 2–6 in the one shot, preserving the plate 4 boundary and plate 6 brightness character.
- Add the new-version text CTA in beat 6 and export the chosen sound option.
Plate 14
QA checklist
- One shot, frames 0–449 at 30 fps; zero cuts and no closing fade.
- Whole phone transform stays at scale 1.000 with zero camera pan, per plate 5.
- Every required word is ≥22 px cap at 1080×1350; smaller UI text is decorative.
- Central faces remain inside the phone header after the intended crop.
- Mean brightness stays close to plate 6's 0.11 curve; no invented flash or blackout.
- If audio is added for X, integrated loudness is −14 LUFS and true peak ≤−1 dBTP; silent version has no audio track.
- No reference name, mascot, palette, font, slogan or music remains.
Plate 15
Make it yours
Brand slots
| Slot | Replaces in the reference | Notes |
|---|---|---|
{{PRODUCT}} | Game title and app identity | Real name |
{{BRAND_FONT}} | Listing typeface | Use your licensed font |
{{BRAND_BG}} | Dark outer ground and sky | Brand colour role |
{{BRAND_ACCENTS}} | Violet and character highlights | Distinct palette |
{{LOGO}} | App icon | Real brand mark |
{{CTA_URL}} | Post link / new end text | Plain readable text |
{{HEADER_WORLD}} | Moonlit hills | Original setting |
{{CHARACTER_SET}} | Peeking game cast | Original silhouettes |
{{UI_ASSETS}} | Store listing/screenshots | Real captures or code-built UI |
What this film avoids: Voiceover, captions, stock footage, feature list, camera moves, cuts, QR codes and store badges.
Brand-distance warning (inferred): Purple moonlit hills plus the same small cast silhouettes and listing copy would read as the reference. Change the header world first; make its visual logic specific to {{PRODUCT}}.
Adapt the aspect (inferred):
- 16:9: Re-lay out the phone and bottom text; a centre crop loses too much vertical listing. Put the phone at centre and retain readable
{{CTA_URL}}within platform safe margins. Required cap text ≥38 px. - 9:16: Centre crop can retain the measured boxes, then check that character faces stay within the phone header. Keep required text ≥22 px and clear top/bottom platform UI zones.
- 1:1: Centre crop, then move any lost top and bottom listing labels inward. Keep
{{CTA_URL}}clear of the bottom platform UI zone and required text ≥22 px.
Adapt the length (inferred):
- 15 s: Keep all six beats in shot 1, with its central reveal intact.
- 30 s: Add fresh character combinations and a second header idea within the same locked shot; retain both central reveals and the reset.
- 60 s: Add new stage states and product-specific character interactions; keep the fixed product proof and avoid stretching static holds.
The creator's signature: Specific game name, icon, cast, moonlit scene, listing and palette. The transferable format: A fixed real product page with masked character entrances, reset and renewed reveal.
Source: https://x.com/_Jabman_/status/2116743224991580519 · timeline v2 · (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 |
|---|---|---|---|---|---|---|
| 16:9 | 1920×1080 | middle 45.0% of the height (cut 27.5% top and bottom) | 11 of 18 | "1:464", "Pass the f", "Find the Jasoos", "One phone. One secret…" … | 38 px cap | re-lay out: a crop loses too much |
| 9:16 | 1080×1920 | middle 70.3% of the width (cut 14.8% each side) | 18 of 18 | none | 22 px cap | a straight centre crop works |
| 1:1 | 1080×1080 | middle 80.0% of the height (cut 10.0% top and bottom) | 16 of 18 | "1:464", "Arcade" | 22 px cap | centre crop, then move the lost boxes inside |
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 | 450 | 450 | 720 | 720 |
| total | 450 f · 15.0 s | 450 f · 15.0 s | 720 f · 24.0 s + 6.0 s new beats | 720 f · 24.0 s + 36.0 s new beats |
15 s is the reference length: keep the measured lengths · 30 s: stretching tops out at ×1.6 (24.0 s); add 6.0 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 (24.0 s); add 36.0 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 4:5 film for {{PRODUCT}} in the format of REF-2116743224991580519 (character waves inside a fixed product page). Brand: font {{BRAND_FONT}}, background {{BRAND_BG}}, accents {{BRAND_ACCENTS}}, logo {{LOGO}}, call to action {{CTA_URL}}. Supply original {{HEADER_WORLD}}, {{CHARACTER_SET}} and real {{UI_ASSETS}}. First load get_blueprint("2116743224991580519", format: "json") and build to its measurements. This is picture-led and wordless: establish the fixed product page, introduce small characters, reveal a larger central silhouette, clear the stage, build a reordered second wave and reveal, then withdraw the cast. Keep this in one shot without cuts, camera movement or fades. Animate character layers behind a foreground ridge mask with eased vertical travel. Use After Effects for transparent character animation, then Remotion for the phone and real listing; pass a 1080×1350, 30 fps PNG sequence with alpha. The minimum route uses Remotion with CSS 3D and layered masks. Keep required type at least 22 px cap height. The reference is silent; optional original music should follow visible reveals and target −14 LUFS, ≤−1 dBTP for X. Finish with {{LOGO}} plus {{CTA_URL}} as text. Use real captures or code-built UI, never generated product UI, fake screenshots or results. Export 1080×1350, 30 fps, H.264 MP4, about 15 s. Never reuse the reference's colours, font, logo, mascot, slogan or music.Films like this
Tagged app storeproduct mockupcharacter animationdark uiverticalone shotsilentmobile app