App Store Preview With an Animated Expense Timeline
A silent, single-shot phone mockup animates a finance app header, then scrolls to feature cards.
By @13doots for KeloSource onlineOriginal post ↗
Copies get_blueprint("REF-5073") for Claude. Connect Claude
Why it works
The finished storefront appears at 0.00 s, making the product and action clear immediately. A single 480-frame shot lets the header event motion lead into the screen-contained scroll around 10.8–12.1 s, where two feature cards become the payoff without a cut.
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 complete phone storefront is present in frame one. Tiny events animate around a large symbol in its header; the screen then scrolls to make product feature cards the payoff. The device, not a narrator or a cut sequence, carries the story.
Why it works
- The listing and action button are visible at 0.00 s, so context needs no setup.
- The continuous shot permits a close look at the moving header without losing the storefront frame.
- The scroll makes the lower cards prominent around 10.8–12.1 s; there are no cuts to interrupt the scan.
Plate 02
Format card
| Platform · aspect · length | X · 9:16 · 16.00 s · source 720×1280 · 30 fps |
| Pace | One continuous 480-frame shot; no cuts; median shot 16 s |
| Script | Picture-led · wordless; interface copy carries meaning |
| Voice | None |
| On screen | Designed phone, animated header and storefront UI throughout |
| Type | Four measured cap-height levels, 12–34 px; enlarge essential microcopy to ≥22 px |
| Sound | Reference silent; no measured beat or loudness |
| Structure | Five internal beats; feature-card payoff late; action button present from opening |
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.00–1.25 | Entire upright phone, header ring and listing already visible | Product name, action button, two feature-card headlines | Silent | Establishes destination and product together |
| 1.50–2.75 | Event chips glide or recede across the header timeline | Small event labels remain secondary | Silent | Gives the still storefront a moving focal point |
Hook formula (inferred): completed storefront + one moving proof of {{FEATURE}}.
Why it holds (inferred): The white ring is a visual anchor while the small chips change; the app listing stays recognizable.
Plate 04
Structure (beat sheet)
| # | Time (s) | Shots | Beat | What happens | Technique |
|---|---|---|---|---|---|
| 1 | 0.0–3.0 | 1 | Immediate storefront | Full device and listing establish {{PRODUCT}} | Finished picture first |
| 2 | 3.0–8.0 | 1 | Header example | Event chips move around the central symbol as the device content grows in frame | Layered UI motion and scale |
| 3 | 8.0–10.8 | 1 | Return | More of the listing comes back into view | Reverse scale on same axis |
| 4 | 10.8–12.1 | 1 | Feature reveal | Storefront content scrolls upward within the screen | Screen mask and vertical translation |
| 5 | 12.1–16.0 | 1 | Readable result | Feature cards and supporting copy stay in view; header returns near the end | Settle, then continuous in-screen movement |
Retention map (inferred): visual renewal around 6 s and 10.8 s · payoff after the scroll · action button appears from opening · 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.00 s = 480 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.00 | 0–479 · 480 f | 16.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: 178 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('2117190209645559935'), or see them on the film page (Pro, or free films).
Plate 05
Shot grammar
Mix: one designed phone shot, no live action. Rhythm: no cuts; internal UI and phone scale do the editing.
Rules this editor follows (inferred):
- Keep the phone's outer axis stable; move nested screen layers.
- Use a large central mark to organize small event chips.
- Keep the cards visible before and after the scroll so the reveal feels continuous.
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×1920. 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.1 · −0.1 | ×1.000 | x −0.7% (−8 px) · y −1.7% (−33 px) · roll −0.8° | hold | ▁▁▂▃▂▁▁▄▂▅▁▁▁▅▁▁ · 71%/s | ones | 0.41 | 0.24 | 0.97 |
Focus (measured): shot 1: 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: 1 of 1. Animation cadence: a new picture every frame (on ones): 30.0 unique frames per second of 30 while things move (held-frame share 0.0, 277 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 | Composited device UI | Centered vertical phone; apparent push and recovery | Header timeline, product listing, feature cards | Native UI labels, no captions |
Plate 06
Visual style guide
- Look (inferred): warm pale field, high-contrast device bezel, bright header, clean white listing. The reference uses orange and a white ring; substitute
{{BRAND_BG}},{{BRAND_ACCENTS}}, and{{LOGO}}by role. - Graphics and overlays (inferred): fine timeline rule, small round nodes, pill event chips, two screenshot cards. Keep all actual product surfaces from
{{UI_ASSETS}}or code. - Transitions (inferred): internal translation and scale, with no cut or fade.
- Branding and end (inferred): no separate end card is measured. Make the settled listing serve as the final card, with
{{LOGO}}in the product icon and{{CTA_URL}}as plain text inside the composition if a link must appear.
At a glance
- Type scale (cap px): 27–34 · 16–23 · 14 · 12 (4 levels).
- Phone minimum: cap height ≥ 2% of frame width = 22 px at 1080×1920
- Whole film (time-weighted):
#EDE9E758% ·#E6885D16% ·#D55D2E13% ·#9492978% ·#3A2D295%. - Curve facts: average 0.74 · darkest 0.65 at 3.8 s · brightest 0.83 at 12.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, 1080×1920. 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 |
|---|---|---|---|---|---|---|---|
| "9:41" | 1 | 0.0–15.8 | 23 | 33 | 1.2 | 23 · 11 · 6 · 2 | left, top |
| "Subscriptions, expense tracker" | 1 | 0.0–15.8 | 16 | 23 | 0.8 | 38 · 48 · 35 · 2 | centre, middle |
| "Kelo: Bill Organizer &" | 1 | 0.0–15.8 | 34 | 48 | 1.8 | 37 · 49 · 41 · 3 | centre, middle |
| "Budget" | 1 | 0.0–15.8 | 27 | 38 | 1.4 | 37 · 51 · 14 · 2 | centre, middle |
| "Every expense" | 1 | 0.0–15.8 | 27 | 38 | 1.4 | 55 · 69 · 22 · 2 | right, lower third |
| "How much is left" | 1 | 0.0–15.8 | 32 | 45 | 1.7 | 21 · 69 · 25 · 2 | left, lower third |
| "this month?" | 1 | 0.0–15.8 | 30 | 43 | 1.6 | 24 · 70 · 18 · 2 | left, lower third |
| "in its own account" | 1 | 0.0–15.8 | 30 | 43 | 1.6 | 52 · 70 · 27 · 2 | right, lower third |
| "$65.00" | 1 | 2.3–3.3 | 12 | 18 | 0.6 | 53 · 20 · 7 · 1 | centre, top |
| "Restaurant $42.80" | 1 | 6.3–7.3 | 16 | 23 | 0.8 | 28 · 44 · 26 · 2 | centre, middle |
| "In 4 days" | 1 | 7.0–7.5 | 16 | 23 | 0.8 | 79 · 26 · 10 · 2 | right, upper |
| "$128.00" | 1 | 7.5–9.0 | 12 | 18 | 0.6 | 74 · 18 · 9 · 1 | right, top |
| "DEVELOPER" | 1 | 7.5–7.8 | 21 | 30 | 1.1 | 82 · 75 · 14 · 2 | right, lower third (inside 5% of the edge) |
| "What cores in meis what goes ad, tar…" | 1 | 8.0–8.0 | 14 | 20 | 0.7 | 18 · 78 · 27 · 1 | left, lower third |
| "Personal, work, partner be a lie." | 1 | 8.0–9.0 | 14 | 20 | 0.7 | 58 · 78 · 18 · 1 | right, lower third |
| "before it leaves." | 1 | 9.5–12.8 | 20 | 28 | 1.0 | 19 · 80 · 19 · 2 | left, bottom |
| "Know what leaves your account this month," | 1 | 9.8–13.3 | 18 | 25 | 0.9 | 19 · 78 · 51 · 2 | centre, lower third |
Type scale (cap px): 27–34 · 16–23 · 14 · 12 (4 levels).
Left out: 5 reads that are not clean words or were seen in a single frame ("•all", "interne", "In: ABB"…): 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×1920. 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: "Subscriptions, expense trac…" (16 px, shot 1), "Know what leaves your…" (18 px, shot 1), "before it leaves." (20 px, shot 1), "Personal, work, partner be…" (14 px, shot 1), "In 4 days" (16 px, shot 1), "What cores in meis…" (14 px, shot 1) and 4 more above. Size these up in your version, or treat them as decoration.
Type spec (inferred)
Assume cap height = 0.71 × font size; use {{BRAND_FONT}}, with Geist as a free fallback. The four rows follow only the measured type scale.
| Level | Cap px at 1080p | Font size | Weight · case · tracking | Colour pair | Motion |
|---|---|---|---|---|---|
| Listing and card headline | 27–34 | 38–48 px | 650–700 · sentence case · −0.02em | dark on light / light on accent | Ride parent scroll over 40 f, cubic-bezier(.22,1,.36,1) |
| Metadata and supporting copy | 16–23; ≥22 if essential | 23–33 px; ≥31 if essential | 400–550 · sentence case · 0em | muted dark on light / dark on pale chip | Ride parent position; 8 f opacity entrance if newly revealed |
| Micro label | 14; ≥22 if essential | 20 px; ≥31 if essential | 500 · sentence case · 0em | dark on light chip | Chip translates over 18 f, cubic-bezier(.22,1,.36,1) |
| Tiny value | 12; ≥22 if essential | 17 px; ≥31 if essential | 600 · numerals · 0em | dark on light chip | Chip translates over 18 f; decorative values may remain tiny |
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.74 · 1.00 | #EDE9E7 59% · #E6885D 16% · #D55D2E 13% · #949297 8% · #3A2D29 5% | #FFFFFF ≈6500 K 100% |
Whole film (time-weighted): #EDE9E7 58% · #E6885D 16% · #D55D2E 13% · #949297 8% · #3A2D29 5%.
Brightness curve (measured)
Mean luma per 1 s, one character each, grouped in tens; p95 = the bright highlights. Scale: ▁ = 0 (black) → █ = 1.0 (white); luma runs 0–1.
0s 10s
mean ▆▆▆▆▆▆▆▆▆▇ ▇▇▇▇▇▇
p95 ██████████ ██████
Curve facts: average 0.74 · darkest 0.65 at 3.8 s · brightest 0.83 at 12.5 s.
Layout boxes (inferred)
| Element | Shots | Box x · y · w · h (%) | Source · confidence | Notes |
|---|---|---|---|---|
| Listing title | 1 | 37 · 49 · 41 · 3 | measured text box · high | Opening placement |
| Left card headline | 1 | 21 · 69 · 25 · 2 | measured text box · high | Opening placement |
| Right card headline | 1 | 55 · 69 · 22 · 2 | measured text box · high | Opening placement |
| Supporting end text | 1 | 19 · 78 · 51 · 2 | measured text box · high | Final listing state |
| Final listing / end card | 1 | 11 · 7 · 78 · 90 | sheet tile at 12.5 s · medium | Whole phone is the end card; no separate slate |
Product icon / {{LOGO}} | 1 | 13 · 46 · 21 · 8 | sheet tile at 0.0 s · medium | Inside listing |
End card (inferred): the phone listing against {{BRAND_BG}}; {{LOGO}} remains in its icon. Add {{CTA_URL}} as ≥22 px cap text in a safe lower strip, if needed; do not claim a separate measured hold.
Material card (inferred)
:root { --brand-bg: {{BRAND_BG}}; --brand-accent: {{BRAND_ACCENTS}}; }
.stage { background: var(--brand-bg); }
.phone { border: 5px solid #161616; border-radius: 56px; box-shadow: 0 20px 28px rgba(0,0,0,.20), 0 4px 7px rgba(0,0,0,.10); overflow: hidden; }
.screen { background: #fff; overflow: hidden; border-radius: 49px; }
.hero { background: var(--brand-accent); }
.chip { background: #fff; border: 1px solid rgba(0,0,0,.12); border-radius: 999px; box-shadow: 0 2px 5px rgba(0,0,0,.13); }
.card { background: var(--brand-accent); border-radius: 14px; }
No 3D is needed. Use flat layers with a soft device shadow; the measured full-frame focus means no depth-of-field blur.
Plate 07
Voice and delivery
Measured: no audio track and no speech. Voice direction (inferred): no voice; the picture and genuine UI explain the product.
Plate 08
Sound design
- Music (inferred): keep silent for the closest remake. An optional original bed can add gentle momentum while remaining secondary to picture changes.
- Sound effects (inferred): optional soft chip ticks and a restrained scroll swish; no measured audio cues exist.
- Silence and space: the reference is silent throughout.
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)
For an unmuted variant, compose 90 BPM in D major, chosen as a slow pulse that does not force cuts in this picture-led film. Soft marimba, rounded synth bass and brushed electronic percussion: shots 1 / beats 1–2 introduce two notes; beat 3 reduces the percussion; beat 4 adds a short rising texture; beat 5 resolves to a sustained chord. Place optional accents at frames 0, 324 and 354, and keep them quieter than the bed. Music-model prompt: “Original light electronic product bed, 90 BPM D major, soft marimba and rounded bass, sparse percussion, gentle rise into a UI reveal, no vocals or borrowed melody.”
Plate 09
Packaging
- Title (inferred): “New preview for
{{PRODUCT}}” or a similarly plain artifact title. - Cover (inferred): centered phone, active header and storefront action visible; no extra slogan.
- Post copy (inferred): one sentence about the new preview, then
{{CTA_URL}}. - Audience signals: 206 views at capture; no replay or comment-content evidence is available.
Plate 10
Script template
(inferred) Picture-led, with no spoken lines. Write only truthful UI copy. Use these word budgets so the moving labels remain scan-friendly.
[beat 1 · shot 1] {{PRODUCT}}: 2–5 words; descriptor: 3–6; action: 1–2.
[beat 2 · shot 1] {{EVENT}}: one specific event label and one short value; legibility ≥22 px cap if essential.
[beat 3 · shot 1] Repeat the product title; no new claim.
[beat 4 · shot 1] {{FEATURE}}: two distinct card headlines, 3–6 words each.
[beat 5 · shot 1] One supporting result line, 6–10 words; {{CTA_URL}} as text if required.
Plate 11
Production plan
Two routes (inferred)
Minimum: Claude alone. Build the full 1080×1920, 30 fps film in Remotion: CSS phone, clipped listing, animated header, genuine {{PRODUCT}} UI recreated from supplied {{UI_ASSETS}}, and optional synthesized music. This gets the timing and most of the visual grammar; it simplifies the hardware reflections and gives up native storefront fidelity unless actual captures are supplied.
Full: with the toolkit. Prepare verified {{UI_ASSETS}} as PNG at 1080×1920. Build the phone, hero and cards in Remotion; pass camera and element keyframes as JSON at 30 fps into the main composition. Export a 1080×1920 PNG sequence with alpha from any separately built UI module, then composite in Remotion. If adding sound, supply a 48 kHz WAV with a click track aligned to the chosen cue frames; remove the click on final export. Remotion renders H.264 MP4 at 30 fps.
Asset honesty: real product captures or UI rebuilt in code; if unavailable, make a clearly labelled type tile. Never invent screenshots, metrics, reviews or outputs. The two feature cards must show actual {{FEATURE}} states.
Plate 12
Prompts
Script prompt
Write concise storefront UI copy for {{PRODUCT}} demonstrating {{FEATURE}} through one truthful {{EVENT}}. Provide a 2–5 word listing title, short descriptor, two distinct 3–6 word card headlines and one supporting result line. Keep the film silent. Use {{BRAND_FONT}}, {{BRAND_BG}}, {{BRAND_ACCENTS}} and {{LOGO}} only as supplied brand assets. All claims must match {{UI_ASSETS}}.
Music prompt (optional, inferred): original quiet 90 BPM D-major electronic bed; cues at the chosen scroll frames; no voice.
Plate 13
Edit recipe
How it's built (inferred)
The signature move is the screen-contained scroll, not a cut. Put a rigid phone bezel above a clipped screen; inside, stack hero, listing, rating row, cards and supporting copy in one scroll container. Begin the scroll around frame 323 and settle near frame 363 (about 40 f), translating content upward with cubic-bezier(.22,1,.36,1); let the card headlines rise with their parent layer. The v1 facts mark picture changes near 10.75 and 11.8 s, but the v2 timing block measures no discrete internal change, so treat these as phases of continuous screen movement. Keep the action button inside the screen hierarchy so it tracks the page; avoid sliding the entire phone.
For beat 2, scale the phone layer, not the camera: the measured camera in plate 5 is effectively static (×1.0083 over the shot), while the sheets show a much larger apparent push toward the header. Animate a CSS transform from 1 to about 1.45 between frames 90–195, then back toward 1 by frame 300, with cubic-bezier(.22,1,.36,1). Treat 1.45 as a sheet-based visual estimate, not a measured camera value. Keep the ring and chips in the nested hero so they retain their positions relative to the screen. Animate chip translation on ones, with 18-frame eased glides and 8-frame opacity changes; use a 180-degree shutter equivalent (about 1/60 s at 30 fps) or 2–4 subframe samples. Clip every moving layer to the screen radius; a scale on the whole canvas will also enlarge the backdrop and ruin the trick.
(inferred) The sheets suggest a brief return from the lower-page view toward the header around 13.0–13.5 s; the measurement says one continuous shot with no cut. Implement it as a reverse screen translation over about 15 f. The sheets then show small event-chip changes to the last frame; keep them as in-screen motion. The reference has no closing fade.
Build order
- Build beat 1's full storefront and phone shell from
{{UI_ASSETS}}or code. - Animate beat 2's nested hero and apparent phone push; restore the wider view for beat 3.
- Animate beat 4's masked scroll and beat 5's readable state; add the late reverse translation visible in the sheets.
- Render on ones at 30 fps. Add optional original audio only after the silent picture works.
Plate 14
QA checklist
- One shot spans frames 0–479; no visible cuts or closing fade.
- Screen scroll begins around frame 323 and settles near frame 363 without moving the bezel.
- Phone stays centered while its apparent scale changes; measured camera remains effectively static.
- Every essential word has ≥22 px cap height at 1080×1920; decorative microcopy is not relied on.
- Any optional accent lands within ±1 frame of its selected cue; no reference cue is claimed.
- If audio is added for X, integrated level is around −14 LUFS and true peak ≤−1 dBTP; a silent export has no audio stream.
-
{{UI_ASSETS}}depicts real product states and all card claims are verifiable.
Plate 15
Make it yours
Brand slots
| Slot | Replaces in the reference | Notes |
|---|---|---|
{{PRODUCT}} | App name | Use your real product name |
{{BRAND_FONT}} | System-style type | Supply a licensed font; Geist fallback |
{{BRAND_BG}} | Pale outer field | Choose your own background |
{{BRAND_ACCENTS}} | Orange hero and cards | Choose your own accent system |
{{LOGO}} | White ring / black icon | Use your own distinct symbol |
{{CTA_URL}} | Store destination | Show as plain text when needed |
{{FEATURE}} | Expense-organizing claims | Show a genuine feature |
{{EVENT}} | Transaction labels | Use a real or clearly illustrative event |
{{UI_ASSETS}} | App screenshots | Supply captures or code-built UI |
What this film avoids:
- Voiceover, presenter, stock footage, cut montage, subtitle captions, feature-list slate, separate logo outro, QR code and store badges.
Brand-distance warning (inferred): An orange hero, white ring, black ring icon and finance-event chips together would read as the reference. Replace the central symbol with {{LOGO}} and reshape the hero timeline around your own product interaction.
Adapt the aspect (inferred):
- 16:9: Re-lay out at 1920×1080; a centre crop loses most of the top and bottom. Put the device at one side, place feature cards beside it, and keep essential type ≥38 px cap outside platform title and control safe zones.
- 1:1: Re-lay out at 1080×1080; raise the listing and spread the cards beside or below the phone. Keep essential type ≥22 px cap and leave edge room for platform controls.
Adapt the length (inferred):
- 15 s: Keep all five beats and shorten the scalable intervals; preserve the scroll and final scan.
- 30 s: Keep the same shot grammar; add a second verified event before the feature reveal and more card reading time.
- 60 s: Add genuine product states and new internal beats, rather than stretching the original holds; retain the continuous device axis.
The creator's signature (don't copy): the ring icon, orange finance palette, exact transaction amounts and feature copy. The transferable format (do copy): complete storefront first, nested header motion, screen-contained scroll, readable feature proof.
Source: https://x.com/13doots/status/2117190209645559935 · measured with dissect 1.1 and timeline v2 on 2026-11-04 · (measured) = film data · (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 31.6% of the height (cut 34.2% top and bottom) | 4 of 17 | "9:41", "Every expense", "How much is left", "this month?" … | 38 px cap | re-lay out: a crop loses too much |
| 1:1 | 1080×1080 | middle 56.2% of the height (cut 21.9% top and bottom) | 10 of 17 | "9:41", "$65.00", "$128.00", "What cores in meis…" … | 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 | 480 | 450 | 768 | 768 |
| total | 480 f · 16.0 s | 450 f · 15.0 s | 768 f · 25.6 s + 4.4 s new beats | 768 f · 25.6 s + 34.4 s new beats |
30 s: stretching tops out at ×1.6 (25.6 s); add 4.4 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.6 s); add 34.4 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 s 9:16 film for {{PRODUCT}} in the format of 2117190209645559935 (animated storefront inside one phone). Brand: font {{BRAND_FONT}}, background {{BRAND_BG}}, accents {{BRAND_ACCENTS}}, logo {{LOGO}}, call to action {{CTA_URL}}. Feature {{FEATURE}}; event {{EVENT}}; supplied product captures {{UI_ASSETS}}. First load get_blueprint("2117190209645559935", format: "json") and follow its timing and measurements. This is picture-led and silent: one continuous phone shot, no narration, subtitles or cuts. Show the complete storefront first, animate a small event through the header, return to the listing, scroll within the clipped screen, and finish with readable feature cards. Keep the camera nearly static; fake the apparent push with a nested phone transform, about 1 to 1.45 and back, while the bezel remains distinct from the screen scroll. Use Remotion with CSS layers, perspective, clipping and soft shadow; synthesize no music for the default silent export. Minimum route: the same Remotion stack with simplified hardware reflections. Essential copy needs at least 22 px cap height; use brand colour roles, not reference colours. Render 1080×1920, 30 fps, H.264 MP4, about 16 s. End on {{LOGO}} plus {{CTA_URL}} as text, with no QR or store badge unless requested. Use real {{PRODUCT}} captures or rebuild its actual UI in code; never generate fake screenshots or results. Do not copy the reference font, logo, slogans, palette or music.Films like this
Tagged app store previewphone mockupui animationfinance appsingle shotsilentverticalproduct motion