A typed prompt becomes a moving image gallery
A 35-second ChatGPT Images launch film turns two typed requests into a growing gallery, a revised result, and a bright brand reveal.
By OpenAI for OpenAI / ChatGPT ImagesSource onlineOriginal post ↗
Copies get_blueprint("REF-6236") for Claude. Connect Claude
Why it works
A typed request becomes a visible result around 3 s, so the audience sees the promise before a product claim. Shot 1 uses card travel and internal changes at frames 467, 540 and 775 to refresh a long white stage; the 22-frame close-up in shot 2 creates a scale shock before the spare end 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
A tiny request on an open field yields a moving result, then a gallery demonstrates range. A follow-up changes an existing example; the image payoff grows into a brief close-up and a restrained brand finish. Picture changes and card choreography carry the story.
Why it works
- The request is readable in the opening and the first result appears around 3 s, before a feature claim.
- Shot 1 can contain the full request, gallery and revision because reframes at frames 467 and 775 and a change at 540 refresh its white stage.
- The short full-frame insert at shot 2 creates a scale shock before shot 3 returns to a single card and typography.
Plate 02
Format card
| Platform · aspect · length | YouTube · 16:9 · 35.02 s · source 640×360 · 30 fps |
| Pace | 3 measured shots, 2 cuts; median shot 6.87 s; internal picture changes carry much of the pace |
| Script | Picture-led; typed requests and end text are the readable script. The measured speech line finds five words over 15%, with uncertain voice detections, so no narration budget drives cuts. |
| Voice | None required; any audible words are incidental, not an instruction track. |
| On screen | White UI and moving image cards → full-frame close-up → single card and type lockup |
| Type | Three measured cap-height levels: 47–51, 66–73, 108 px at 1080p; sentence-case requests, larger end text |
| Sound | Tonal percussive bed, 107.67 BPM tracked pulse; 0/2 cuts on beat; cues support picture events. Reference −22.5 LUFS. |
| Structure | Five beats; first result near 3 s, revision in shot 1, short close-up in shot 2, end line and mark in shot 3 |
Tools you'll need: an image model (GPT Image, Midjourney) · Remotion for motion graphics · a licensed or generated music track · Claude alone: partly
Plate 03
The hook, frame by frame (first 3 seconds)
| Time | Picture | On-screen text | Words and sound | What it does |
|---|---|---|---|---|
| 0.00–0.25 | Empty rounded request pill on white, small controls at both ends | Request starts typing | Clicks near frames 6 and 11 | Makes a testable question the opening image |
| 0.50–1.50 | Same pill; characters accumulate | {{FIRST_REQUEST}}, one short concrete question | Bed and a light hit near frame 15 | Viewer can predict an answer |
| 1.50–2.75 | Completed pill pulls back and travels upward | Full request | Let the bed continue | Makes room for the result |
| about 3.00 | Portrait result card arrives beneath the request | Request becomes a small label | Small arrival accent | Pays off the question |
Hook formula (inferred): typed experiment: Can {{PRODUCT}} make {{FIRST_REQUEST}}? Keep the request specific enough to verify from one picture. The opening's white space focuses the eye on changing letters.
Plate 04
Structure (beat sheet)
| # | Time (s) | Shots | Beat | What happens | Technique |
|---|---|---|---|---|---|
| 1 | 0–5 | 1 | Request and answer | A compact typed question yields one animated portrait card. | Type build, pill lift, card scale |
| 2 | 5–15.57 | 1 | Range | The first card joins a lateral gallery; varied cards narrow to a two-card comparison. | Moving card row, size hierarchy, brief soft picture change at frame 413 |
| 3 | 15.57–23 | 1 | Revision | One existing subject is enlarged, a follow-up is typed, and a changed version gains a stronger visual effect. | Reframe at 467, internal cut at 540, hero crop |
| 4 | 23–29.77 | 1–3 | Escalation | Three cards become a deeper array, followed by an expressive full-frame insert and a single performer card. | Array spread, reframe at 775, cuts into shots 2 and 3 |
| 5 | 29.77–35 | 3 | Brand finish | The moving card gives way to a short line, feature lockup and isolated mark. | Internal changes at 893 and 933, clear white holds |
Retention map (inferred): re-hooks at the follow-up in beat 3 and range escalation in beat 4; visual payoff in shot 2; text and mark in beat 5; clean stop.
At a glance
- Shots: 3 shots · 2 transitions · 35.02 s = 1050 frames at 30 fps · shot length median 6.87 s (shortest 0.73, longest 27.40)
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)
3 shots · 2 transitions · 35.02 s = 1050 frames at 30 fps · shot length median 6.87 s (shortest 0.73, longest 27.40). 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 | changes inside | scales (inferred) |
|---|---|---|---|---|---|---|
| 1 | 0.00–27.40 | 0–821 · 822 f | 27.40 | start | f413 unknown over 3 f · f467 reframe · f540 cut · f775 reframe | scales |
| 2 | 27.40–28.13 | 822–843 · 22 f | 0.73 | cut | – | fixed |
| 3 | 28.13–35.00 | 844–1049 · 206 f | 6.87 | cut | f893 cut · f933 cut | 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: 5 hidden cuts / dips / reframes found inside v1 shots (luma-normalised frame difference): S1 reframe at 15.567 s (f467), S1 cut at 18.000 s (f540), S1 reframe at 25.833 s (f775), S3 cut at 29.767 s (f893), S3 cut… · key low confidence (0.05): Ab minor vs E major · cue sheet keeps 35 of 85 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>), 3 pages · close-up strips, 14 frames around each cut and change: f413 unknown, f467 reframe, f540 cut, f775 reframe, f822 cut, f844 cut, f893 cut, f933 cut (sheet "transitions", 3 pages; labels S<n> m:ss.sss f<frame>): call get_frames('yt-bJldMYfRvMQ'), or see them on the film page (Pro, or free films).
Plate 05
Shot grammar
Mix (inferred): almost all white UI/card choreography in shot 1 and shot 3; shot 2 is a compact full-frame detail. Rhythm (inferred): motion within cards and horizontal staging supply changes during long shot 1. The two measured hard boundaries cluster late; the end card changes remain inside shot 3.
Rules this editor follows (inferred):
- Let each new card demonstrate a different possibility, then return to one subject before the revision.
- Keep the white stage and use scale changes to distinguish a result, an array and the final proof.
- Reserve the full-frame colour fill for shot 2, then restore open space.
At a glance
- Biggest moves: shot 1: pan right, content −217.6% of width over 27.40 s, irregular.
- Transitions: 2 transitions: 2 cuts
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 1 of 3 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 | pan right (shake 20.1%/s) | −7.9 · −0.4 | ×0.979 | x −217.6% (−4177 px) · y −12.0% (−129 px) · ×0.56 scale · roll −12.0° | irregular | ▁▁▂▁▂▂▁▂▁▁▁▁▁▂▁▁ · 226%/s | ~23 fps | 0.75 | 0.18 | 0.79 |
| ↳ 0.07–2.13 s: static | +0.0 · +0.0 | ×1.000 | none | hold | ||||||
| ↳ 2.13–2.40 s: pull out | +0.0 · −0.6 | ×0.676 | ×0.90 scale | irregular | ||||||
| ↳ 2.40–3.47 s: tilt down | +0.0 · −23.8 | ×0.998 | y −25.3% (−274 px) | irregular | ||||||
| ↳ 3.47–4.00 s: roll | +9.2 · −0.9 | ×0.990 | x +4.9% (+94 px) · roll +19.8° | irregular | ||||||
| ↳ 4.00–4.27 s: pull out | −0.8 · −8.9 | ×0.237 | y −2.4% (−26 px) · ×0.68 scale · roll −1.6° | ease-in | ||||||
| ↳ 4.27–5.07 s: complex | −43.9 · −7.4 | ×0.967 | x −35.1% (−675 px) · y −5.9% (−64 px) · ×0.97 scale · roll −25.9° | irregular | ||||||
| 2 | static | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁ | threes | 0.94 | 0.04 | 0.66 |
| 3 | static? · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁▁▁▁▁▁▁▁▁▁▁ | ones | 0.84 | 0.06 | 0.39 |
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 |
|---|---|---|---|---|---|---|---|---|---|
| 3 | 44 · 43 · 11 · 18 → 46 · 43 · 8 · 14 | complex | +0.2 · +21.6 | ×1.099 | x +0.7% (+13 px) · y +79.3% (+857 px) · ×1.41 scale · roll −29.0° in 3.7 s | ease-out | ▁▁▁▄▁▁▁▁▁▁▂▁▁▁ · 195%/s | 0.53 | 0.76 |
| ↳ 28.13–28.93 s: rotate | +0.1 · +5.9 | ×1.055 | y +4.7% (+51 px) · ×1.04 scale · roll −13.1° | ease-out | |||||
| ↳ 28.93–29.73 s: slide down | +0.6 · +93.3 | ×1.067 | y +74.6% (+806 px) · ×1.05 scale · roll +5.2° | ease-in | |||||
| ↳ 29.80–31.07 s: scale down | +0.0 · +0.0 | ×0.983 | ×0.98 scale | ease-out | |||||
| ↳ 31.13–33.00 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 33.33–34.13 s: complex | +0.1 · +0.0 | ×1.405 | ×1.31 scale · roll −21.1° | ease-out | |||||
| ↳ 34.13–34.93 s: static | +0.0 · +0.0 | ×1.000 | none | hold |
Focus (measured): shot 1 0.00–13.77 s: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 1 13.87–15.57 s: sharp inside 0 · 14 · 50 · 71, no defocus (deep focus) · shot 1 15.57–18.00 s: sharp inside 25 · 0 · 50 · 86, no defocus (deep focus) · shot 1 18.00–25.83 s: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 1 25.83–27.40 s: sharp inside 0 · 14 · 100 · 71, no defocus (deep focus) · shot 2: sharp inside 0 · 0 · 92 · 100, no defocus (deep focus) · shot 3 28.13–29.77 s: sharp inside 0 · 14 · 92 · 86, no defocus (deep focus) · shot 3 29.77–31.10 s: sharp inside 25 · 43 · 50 · 14, no defocus (deep focus) · shot 3 31.10–35.00 s: sharp inside 17 · 29 · 67 · 43, no defocus (deep focus). Box = x · y · w · h % of the frame. In 2D, blur the layers outside the box by that many px; in 3D, set the focus distance on the box and open the aperture until the background blur matches.
Biggest moves: shot 1: pan right, content −217.6% of width over 27.40 s, irregular. Locked-off shots: 1 of 3; 1 more could not be tracked (shown as "static?" or "not measured": check the sheets). Animation cadence: about 22.9 new pictures a second: 22.9 unique frames per second of 30 while things move (held-frame share 0.24, 749 moving frames). Match it, or the motion will feel smoother or choppier than the reference.
Transitions (measured)
2 transitions: 2 cuts. Frames are at 30 fps; a transition of n frames lasts n ÷ 30 s. Hard cuts are reliable; the blur types (whip versus zoom) are the weakest labels, so read their confidence and check the sheets.
| into # | at (s) | frame @30 | type | length | conf |
|---|---|---|---|---|---|
| 2 | 27.40 | 822 | cut | 0 f | 1.00 |
| 3 | 28.13 | 844 | cut | 0 f | 1.00 |
Changes inside shots (the picture changes without a cut: a reframe, a hand-off behind black, a mask):
| shot | at (s) | frame @30 | change |
|---|---|---|---|
| 1 | 13.77 | 413 | unknown over 3 f: 3-frame gradual change between two pictures (dissolve-like blend: fade, dissolve or blur) that v1 did not split on |
| 1 | 15.57 | 467 | reframe: jump x1.00 |
| 1 | 18.00 | 540 | cut: hard cut that v1 did not split on |
| 1 | 25.83 | 775 | reframe: jump x0.90 |
| 3 | 29.77 | 893 | cut: hard cut that v1 did not split on |
| 3 | 31.10 | 933 | cut: hard cut that v1 did not split on |
What each shot shows (inferred from the sheets)
| # | Type | Framing | What's on screen | Text / overlay |
|---|---|---|---|---|
| 1 | UI and gallery | White full frame with changing card sizes | Prompt, first result, lateral examples, revised result, widening array | Two typed requests |
| 2 | Detail insert | Full frame | Expressive decorated subject | None |
| 3 | Card to end card | Centred card then centred type on white | Performer card, short line, feature lockup, isolated mark | Short line, {{FEATURE}}, {{LOGO}} |
Plate 06
Visual style guide
- Look (inferred): quiet high-key field, soft raised controls, rounded portrait cards; image content supplies saturated accents. The reference's predominantly near-white field and blue/pink accents are evidence of roles, not brand values to reuse.
- Graphics and overlays (inferred): request pill with small controls, consistent card corner radius, restrained shadows; moving content stays within masks.
- Transitions (inferred): preserve the measured soft three-frame change, instant reframes and hard internal changes; keep the two measured shot boundaries as cuts.
- Branding and end card (inferred): shot 3 replaces the performer with a short line, then
{{FEATURE}}and{{LOGO}}; finish with{{LOGO}}and{{CTA_URL}}as text on{{BRAND_BG}}. No fade to black.
At a glance
- Type scale (cap px): 108 · 66–73 · 47–51 (3 levels).
- Phone minimum: cap height ≥ 2% of frame width = 38 px at 1920×1080
- Whole film (time-weighted):
#FEFEFE75% ·#9B81747% ·#B961876% ·#2E26275% ·#598AAD4% ·#8440221%. - Curve facts: average 0.85 · darkest 0.38 at 27.8 s · brightest 1.00 at 18.0 s · sudden changes at 27.50 s (darker by 0.43), 28.25 s (brighter by 0.43), 29.75 s (brighter by 0.19).
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 |
|---|---|---|---|---|---|---|---|
| "+ can you make a dancing cat gif?…" | 1 | 0.5–4.0 | 51 | 72 | 4.7 | 26 · 45 · 49 · 7 | centre, middle |
| "+ nice. can you add pink lasers?" | 1 | 16.0–20.0 | 47 | 66 | 4.4 | 24 · 74 · 37 · 8 | centre, lower third |
| "GIF making" | 3 | 30.0–31.0 | 73 | 103 | 6.8 | 42 · 45 · 32 · 12 | centre, middle |
| "Happy" | 3 | 30.0–31.0 | 66 | 93 | 6.1 | 27 · 46 · 15 · 9 | left, middle |
| "ChatGPT IMAGES 2.6" | 3 | 32.0–33.0 | 108 | 152 | 10.0 | 21 · 44 · 59 · 12 | centre, middle |
Type scale (cap px): 108 · 66–73 · 47–51 (3 levels).
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. Every measured text item in the reference clears it.
Type spec (inferred)
Assume cap height = 0.71 × CSS font size; adjust to the actual metrics of {{BRAND_FONT}}. Inter is a free fallback, not a brand directive. All readable words clear the measured 38 px cap phone minimum.
| Level | Cap px at 1080p | Font size | Weight · case · tracking | Colour pair | Motion |
|---|---|---|---|---|---|
| Request | 47–51 (use ≥38) | 66–72 px | 400 · sentence · 0 em | dark text on {{BRAND_BG}} | Reveal by characters across 45 f, linear per glyph; pill moves with cubic-bezier(.22,1,.36,1) |
| Short end line | 66–73 | 93–103 px | 500 · sentence · −.02 em | dark text and {{BRAND_ACCENTS}} on {{BRAND_BG}} | Replace card at frame 893; 4 f opacity/position settle, cubic-bezier(.22,1,.36,1) |
| Feature lockup | 108 | 152 px | 700 · title/brand case · −.03 em | dark text with {{BRAND_ACCENTS}} on {{BRAND_BG}} | Enter at frame 933; 6 f scale settle, cubic-bezier(.22,1,.36,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.84 · 1.00 | #FEFEFE 74% · #9B8174 9% · #B96187 7% · #2E2627 6% · #598AAD 5% | #FFFFFF ≈6500 K 100% |
| 2 | 0.38 · 0.70 | #844022 41% · #B56B53 23% · #5B2313 13% · #DB496D 11% · #ED9DA3 11% | #FBF6FB ≈6540 K 40% · #F4DBE6 hue 349° ≈5980 K 36% · #FACBE1 hue 347° ≈5460 K 23% |
| 3 | 0.95 · 1.00 | #FFFFFF 90% · #B35471 3% · #6E3135 3% · #B59EA9 3% · #D0C257 0% | #FFFFFF ≈6500 K 100% |
Whole film (time-weighted): #FEFEFE 75% · #9B8174 7% · #B96187 6% · #2E2627 5% · #598AAD 4% · #844022 1%.
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 20s 30s
mean ███▇▇▇▇▇▇▇ ▇▆▇▇▇████▇ ▇▇▇▇▇▇▇▅▆▇ █████
p95 ██████████ ██████████ ███████▇██ █████
Curve facts: average 0.85 · darkest 0.38 at 27.8 s · brightest 1.00 at 18.0 s · sudden changes at 27.50 s (darker by 0.43), 28.25 s (brighter by 0.43), 29.75 s (brighter by 0.19).
Layout boxes (inferred)
| Element | Shots | Box x · y · w · h (%) | Source · confidence | Notes |
|---|---|---|---|---|
| First request | 1 | 26 · 45 · 49 · 7 | measured text box · high | Keep text within pill padding |
| Follow-up request | 1 | 24 · 74 · 37 · 8 | measured text box · high | Remains with the same subject |
| End line, lead word | 3 | 27 · 46 · 15 · 9 | measured text box · high | Together with next box |
| End line, feature words | 3 | 42 · 45 · 32 · 12 | measured text box · high | Short line only |
| Feature lockup | 3 | 21 · 44 · 59 · 12 | measured text box · high | Reflow for other aspects |
| Final mark and CTA | 3 | 46 · 43 · 8 · 14 | sheet tile at 33.5 s · medium | Mark centre; CTA text below it for the new film |
End card (inferred): {{BRAND_BG}} field; mark occupies about 46 · 43 · 8 · 14% based on the last timeline tile. Put the readable {{CTA_URL}} below the mark at ≥38 px cap; retain the remaining shot 3 hold after frame 933 without a black fade.
Material card (inferred)
:root { --brand-bg: {{BRAND_BG}}; --brand-accent: {{BRAND_ACCENTS}}; --brand-ink: color-mix(in srgb, var(--brand-bg), black 92%); }
.stage { background: var(--brand-bg); color: var(--brand-ink); }
.request { border: 1px solid color-mix(in srgb, var(--brand-ink), transparent 92%); border-radius: 999px; background: color-mix(in srgb, var(--brand-bg), white 10%); box-shadow: 0 9px 30px rgba(0,0,0,.08); backdrop-filter: blur(8px); }
.card { overflow: hidden; border-radius: 18px; box-shadow: 0 12px 36px rgba(0,0,0,.12); transform-style: preserve-3d; }
.card img, .card video { width: 100%; height: 100%; object-fit: cover; }
.hero-glow { filter: drop-shadow(0 0 24px color-mix(in srgb, var(--brand-accent), transparent 45%)); }
No 3D render is needed. The gallery's depth is scale, overlap and shadow. Keep card imagery sharp; the measured focus boxes report no defocus. For a CSS depth cue, use at most 2 px background blur outside the active card, a 24 px glow at 55% opacity for the hero effect, and a 6% vignette confined to card artwork, not the white stage.
Plate 07
Voice and delivery
Measured: plate 8 reports five words over 15%, while v1's transcript consists of punctuation and its pitch estimates are unreliable. No legible narration is needed to understand the picture. Voice direction (inferred): no voice track in the new film. Let request text, results and music carry it; if a product requires accessibility narration, treat that as a separate version and time captions to speech.
Plate 08
Sound design
- Music (inferred): playful tonal bed with clipped percussion and airy synth notes. The tracked pulse is steady enough for composition, yet measured cuts do not follow it.
- Sound effects (inferred): light key clicks for the opening, soft swishes for card movement, firmer impact near the revised result, and small punctuation for the late text changes. Do not duplicate events marked
voice?as effects. - Silence and space (inferred): leave space around the instant close-up and the isolated mark; keep the bed low enough for readable UI pacing.
At a glance
- Speech: words cover 15% of the film (5 words, v1 transcript): some speech over picture and music.
- Tempo: 107.67 BPM, confidence 0.66 · first downbeat 0.197 s (bar start confidence 0.37, uncertain) · beat 0.5573 s · bar of 4 = 2.229 s.
- Key: unclear: Ab minor or E major (confidence 0.05); pick your own.
- Loudness of the reference (measured): −22.5 LUFS integrated, true peak −12.0 dBTP, range 3.2 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 15% of the film (5 words, v1 transcript): some speech over picture and music.
Tempo: 107.67 BPM, confidence 0.66 · first downbeat 0.197 s (bar start confidence 0.37, uncertain) · beat 0.5573 s · bar of 4 = 2.229 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 | |
|---|---|---|---|---|
| 30 fps (this film) | 16.72 f | 66.88 f | 6 | 6 · 72 · 142 · 207 · 272 · 338 · 404 · 468 … |
| 60 fps | 33.44 f | 133.75 f | 12 | 12 · 144 · 284 · 415 · 544 · 677 · 808 · 936 … |
Beats in seconds: 0.197 · 0.743 · 1.295 · 1.817 · 2.397 · 2.961 · 3.646 · 4.185 · 4.731 · 5.277 · 5.817 · 6.362 … (58 in all, audio.tempo.beats in the timeline JSON).
Cuts on the beat: 0 of 2 land within ±1.5 frames of a beat; chance alone would give about 0.4, so the edit does not follow the beat.
Key: unclear: Ab minor or E major (confidence 0.05); pick your own.
Sections (by energy of the whole mix, voice included):
| section | time (s) | shots | level (RMS) |
|---|---|---|---|
| steady | 0.0–4.5 | 1 | −24 dB |
| steady | 4.5–14.0 | 1 | −22 dB |
| steady | 14.0–18.5 | 1 | −25 dB |
| steady | 18.5–35.0 | 1–3 | −23 dB |
Energy map (RMS per 1 s, ▁ = −90 dB → █ = −20 dB):
▇▆████████ ██████▇▇██ ██████████ ████▅▁
Cue sheet (35 cues: 0 at a cut, 13 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 @30 | shot | kind | strength | on screen (±3 f) | on beat |
|---|---|---|---|---|---|---|
| 0.19 | 6 | 1 | click | 1.00 | "+ can you make…" appears | ✓ |
| 0.37 | 11 | 1 | click | 1.00 | "+ can you make…" appears | |
| 0.49 | 15 | 1 | hit | 0.81 | "+ can you make…" appears | |
| 0.88 | 26 | 1 | tonal | 1.00 | no visible event | |
| 1.11 | 33 | 1 | hit | 1.00 | no visible event | |
| 1.21 | 36 | 1 | hit | 0.86 | no visible event | |
| 6.36 | 191 | 1 | hit | 1.00 | no visible event | ✓ |
| 7.17 | 215 | 1 | hit | 1.00 | no visible event | |
| 9.36 | 281 | 1 | hit | 1.00 | no visible event | |
| 15.09 | 453 | 1 | hit | 0.96 | camera pan left starts (shot 1) | ✓ |
| 16.21 | 486 | 1 | click · voice? | 1.00 | "+ nice. can you…" appears | ✓ |
| 16.39 | 492 | 1 | unknown · voice? | 1.00 | no visible event | |
| 16.53 | 496 | 1 | hit · voice? | 1.00 | no visible event | |
| 16.62 | 499 | 1 | tonal · voice? | 0.94 | no visible event | |
| 17.34 | 520 | 1 | hit · voice? | 1.00 | no visible event | ✓ |
| 17.46 | 524 | 1 | hit · voice? | 1.00 | no visible event | |
| 17.95 | 538 | 1 | impact · voice? | 1.00 | shot 1: cut: hard cut that v1 did not split on | ✓ |
| 24.50 | 735 | 1 | impact | 0.87 | no visible event | ✓ |
| 25.91 | 777 | 1 | whoosh | 0.88 | camera pull out starts (shot 1) | |
| 26.68 | 800 | 1 | unknown | 1.00 | no visible event | ✓ |
| 28.91 | 867 | 3 | unknown | 0.88 | element slide down starts (shot 3) | ✓ |
| 29.73 | 892 | 3 | unknown | 0.79 | shot 3: cut: hard cut that v1 did not split on | |
| 29.95 | 899 | 3 | unknown | 0.81 | "GIF making" appears | ✓ |
| 31.05 | 931 | 3 | impact · voice? | 1.00 | shot 3: cut: hard cut that v1 did not split on | ✓ |
"voice?" = the cue sits on a spoken word (8 of 24): that is the narration, not an effect to copy.
Loudness of the reference (measured): −22.5 LUFS integrated, true peak −12.0 dBTP, range 3.2 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 (this reference) | −14 LUFS | −1 dBTP | louder masters are turned down; quieter ones are not turned up |
| X, LinkedIn | −14 LUFS | −1 dBTP | no published normalisation: the file plays as mastered |
| TikTok, Reels, Shorts | −14 to −10 LUFS | −1 dBTP | played on phone speakers; short-form is often mastered hotter |
| Website or app (autoplay) | −16 LUFS | −1 dBTP | often starts muted; keep the unmuted level comfortable |
| Broadcast (EBU R128) | −23 LUFS | −1 dBTP | only when the brief asks for it |
Original music bed (inferred)
Compose at 107.67 BPM in A minor, 4/4: felt or plucked synth, soft rounded bass, dry rim clicks, sparse marimba and a quiet airy pad. In shots 1–3, begin with clicks under beat 1, add a small bass figure during beat 2, thin the bed for beat 3's typed follow-up, widen it for beat 4, then resolve to a single held note for beat 5. Place clicks at frames 6, 11 and 15; a soft card impact at 191, a revision accent at 538, a swish near 777, a slide accent near 867, and text punctuation near 899 and 931. Those cue frames are guides for effects, not evidence that the cuts land on a beat. Music-model prompt: “Original playful instrumental, 107.67 BPM, A minor, rounded plucks, muted bass, dry tiny percussion, airy sustain, room for UI clicks and a clean final note, no vocals.”
Plate 09
Packaging
- Title (inferred): “Introducing
{{FEATURE}}for{{PRODUCT}}” — plain launch naming. - Cover / thumbnail (inferred): one original result card against
{{BRAND_BG}}, a compact{{PRODUCT}}name, and one high-contrast accent; avoid the reference's subjects and candy lettering. - Post copy (inferred): a one-line change claim, one concrete capability, then
{{CTA_URL}}. - Audience signals: the supplied capture has 135,117 views; no replay heatmap. Comments in v1 react to the usefulness of short moving images and to specific playful examples.
Plate 10
Script template
Picture-led: there is no spoken word budget. Give each request enough on-screen time to read at phone size; keep the end line short.
[beat 1 · shot 1 · ≤8 readable words] {{FIRST_REQUEST}}
[beat 2 · shot 1 · no new claim] show distinct original results
[beat 3 · shot 1 · ≤8 readable words] {{FOLLOWUP_REQUEST}}
[beat 4 · shots 1–3 · no feature list] show the change and its most expressive result
[beat 5 · shot 3 · ≤4 words] {{FEATURE}}
[beat 5 · shot 3 · final] {{LOGO}} {{CTA_URL}}
Plate 11
Production plan
Two routes (inferred)
Minimum: Claude alone in Remotion. Use one code stack for the pill, gallery, CSS depth, animation, end card and a synthesised original music bed. Supply real {{PRODUCT}} captures and original {{RESULT_ASSETS}} as inputs; Claude alone cannot make those truthful assets. Static cards with subtle CSS motion can reach roughly 80% of the composition but give up expressive subject motion and polished image variation.
Full: with the toolkit. First create a consistent set of original image results with an image model, then obtain or animate short loops from those assets. Export 4:5 or portrait RGBA PNG sequences at 30 fps, at least 1080 px tall. Pass asset IDs and camera/card keyframes as JSON to Remotion; composite UI, card masks, gallery, text and logo at 1920×1080, 30 fps. Generate or license an original music WAV at 48 kHz plus a click-track WAV aligned to the timeline cue frames; mix and render H.264 MP4. The click track is a guide, not part of the master.
Asset honesty: use real captures of {{PRODUCT}} or its UI rebuilt in code; if a result does not exist, label a type tile clearly. Never generate product UI, screenshots, metrics, reviews or outcomes as false evidence. Here, keep the before and after subject recognisably the same asset lineage.
Plate 12
Prompts
Script prompt
For {{PRODUCT}} and {{FEATURE}}, write {{FIRST_REQUEST}} as a concrete request of at most eight words. Write {{FOLLOWUP_REQUEST}} as a visible change to one existing result, also at most eight words. List original {{RESULT_ASSETS}} that demonstrate different outcomes without using the reference's subjects, copy, UI, logo, palette or music. Keep the on-screen ending to a short feature line, {{LOGO}} and {{CTA_URL}}.
Image prompt (inferred): “Make each item in {{RESULT_ASSETS}} one subject per portrait frame, consistent framing and identifiable silhouettes, no letters or interface. Make the revised result the same subject with one clearly visible change. Use {{BRAND_ACCENTS}} by role, with distinct hues across adjacent cards.”
Music prompt (inferred): use plate 8's original bed prompt; deliver an instrumental WAV and separate cue stems.
Plate 13
Edit recipe
How it's built (inferred)
Signature move: the answer expands into a travelling gallery. In shot 1, keep the canvas fixed and move a parent card track behind a 1920×1080 white stage. The detected shot-level −217.6% x travel in plate 5 is a composite of multiple layouts, so keyframe individual cards instead of applying that as one continuous camera pan. Use the measured opening: hold the pill nearly static through frame 64, pull it to ×0.90 over frames 64–72, then place the first card below it. For the first result, enlarge within its rounded mask, reduce it again around frames 120–135, and introduce neighbouring cards from the sides. For lateral travel, use cubic-bezier(.42,0,.25,1), with position and scale keys at each card arrival. Keep image content moving on ones where practical; the film's measured moving cadence averages 22.9 unique frames/s, so hold selected frames for two rather than smoothing every loop at 60 fps. Add directional motion blur on the card track only, roughly 8–14 px at peak travel, never on readable text.
Other moves and hand-offs. Frames 413–415: blend the paired pictures across 3 frames inside their masks; the strips show a gradual change. Frame 467: instant reframe to the larger existing card, with no invented tween; use the plate 5 jump as a reset of card positions. Frame 540: switch to the revised result on that frame, with the old and new assets aligned at their subject centre. Through the hero, animate the card crop and accent within its mask, then spread cards again for beat 4. Frame 775: instant ×0.90 reframe of the array and reveal the deeper layout behind it. Frames 822 and 844: the only measured shot-boundary hard cuts, entering the close-up and then the performer card. In shot 3, the element-motion table's ↓ travel is an aggregate across artwork and end graphics; the sheet shows the performer card descending out before the end line. Build it with a parent y translation and mask, easing cubic-bezier(.55,0,1,.45) from about frame 868 through 892. At frame 893, hard switch to the short line; at frame 933, hard switch to the feature lockup. Later, scale the mark into its isolated ending around the plate 5 segment at 33.33–34.13 s, then hold through the final frame. The sheet suggests a later change to the standalone mark; the Timing facts list no cut after frame 933, so keep it as an element replacement within shot 3. The measured shot 3 camera is low confidence: leave the white stage locked and animate the contained card and type.
Gotchas. Keep the same subject between old and revised cards; otherwise the follow-up reads as another random gallery item. Pre-render loops with shared crop coordinates and alpha before animation. Use static font files for any outlined or gradient feature letters to avoid seams, and subframe sampling for fast card swishes at 30 fps. The bright white stage must remain stable through the internal cuts; the darker close-up is confined to shot 2 and the measured brightness step.
Build order
- Map beats 1–5 to the measured shot frames and the six internal change frames in plates 4–5.
- Make and approve
{{RESULT_ASSETS}}, including one before/after pair and one full-frame detail. - Build shot 1's pill, card component, mask and travelling gallery; add its two request text builds.
- Build shot 2's close-up and shot 3's performer-to-type hand-off.
- Place original bed and cue accents using plate 8, then mix to the delivery target.
- Render and run plate 14 checks at phone size.
Plate 14
QA checklist
- Shot-boundary cuts at frames 822 and 844, within ±1 frame; internal changes at 413 (3 f), 467, 540, 775, 893 and 933.
- Request and end text cap height ≥38 px in the 1920×1080 deliverable; other aspects meet plate 15 minima.
- Shot 1 shows an identifiable same-subject revision after frame 540; the card masks have no exposed edges during travel.
- Shot 2 lasts 22 frames and its darker field does not persist into shot 3.
- Cue accents land within ±2 frames of chosen plate 8 events; the two measured shot cuts are not forced onto beats.
- YouTube master at −14 LUFS integrated and true peak ≤−1 dBTP; no clipped key clicks.
- The final image stays bright; no fade to black.
- All supplied result assets are original or licensed, and all product captures are genuine.
Plate 15
Make it yours
Brand slots
| Slot | Replaces in the reference | Notes |
|---|---|---|
{{PRODUCT}} | ChatGPT product context | Use the actual product |
{{BRAND_FONT}} | Reference UI and end type | Use your font; Inter only fallback |
{{BRAND_BG}} | Near-white stage | Choose your stage colour by role |
{{BRAND_ACCENTS}} | Blue control and colourful results | Define a coherent accent set |
{{LOGO}} | Reference wordmark and symbol | Own licensed mark |
{{CTA_URL}} | Reference's external post link | Plain readable text at the end |
{{FEATURE}} | Images 2.6 naming | Short feature name |
{{FIRST_REQUEST}} | Opening typed question | Concrete test, ≤8 words |
{{FOLLOWUP_REQUEST}} | Second typed request | Modify an existing subject |
{{RESULT_ASSETS}} | Animated image gallery | Original, consistent card media |
What this film avoids (inferred): no presenter, long voiceover, feature list, subtitles, stock footage, QR code or store badges. Its proof is shown as image results.
Brand-distance warning (inferred): a near-white stage plus the reference's exact input chrome, animal examples, pink effect and candy-coloured feature letters would read as the original brand. Change the UI silhouette and use your own image subjects.
Adapt the aspect (inferred)
- 9:16: re-lay out the gallery vertically because a centre crop keeps only the middle 31.6% width and one measured text box. Stack one dominant card over a smaller preview; move requests into the middle 80% width. Use ≥22 px cap and keep essential text away from top/bottom platform controls and the right-side action rail.
- 1:1: centre crop the stage, then move the lost feature lockup fully inside the square and reduce card spread. Use ≥22 px cap; keep the CTA away from lower feed overlays.
Adapt the length (inferred)
- 15 s: keep beat 1's request/answer, beat 3's same-subject revision, shot 2's insert and beat 5's finish; compress or omit the extra range examples in beats 2 and 4. Preserve the signature gallery movement in a compact form.
- 30 s: keep all five beats; reduce dwell on repeated gallery examples, preserving the follow-up, close-up and final mark.
- 60 s: add new original examples and one more clear revision inside beats 2–4; do not stretch the typing or final brand hold simply to fill time.
The creator's signature (don't copy): reference UI, particular animal results, exact phrase, logo, glossy lettering, colour combination and music. The transferable format (do copy): typed test → visible result → moving range → same-subject revision → short detail insert → spare brand finish.
Source: https://www.youtube.com/watch?v=bJldMYfRvMQ · measured with dissect 1.1 and timeline v2 on 2026-11-09 · (measured) = read off the film · (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) | 1 of 6 | "+ can you make…", "+ nice. can you…", "GIF making", "Happy" … | 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) | 5 of 6 | "ChatGPT IMAGES 2.6" | 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 | 822 | 222 | 672 | 1315 |
| 2 | fixed | 22 | 22 | 22 | 22 |
| 3 | fixed | 206 | 206 | 206 | 206 |
| total | 1050 f · 35.0 s | 450 f · 15.0 s | 900 f · 30.0 s | 1543 f · 51.4 s + 8.6 s new beats |
15 s: scaling shots shrink to ×0.27, too fast: drop a beat instead · 60 s: stretching tops out at ×1.6 (51.4 s); add 8.6 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 35 s 16:9 film for {{PRODUCT}} in the format of yt-bJldMYfRvMQ (typed request to moving gallery). Brand: font {{BRAND_FONT}}, background {{BRAND_BG}}, accents {{BRAND_ACCENTS}}, logo {{LOGO}}, call to action {{CTA_URL}}. Feature: {{FEATURE}}. Write a concrete {{FIRST_REQUEST}} and a {{FOLLOWUP_REQUEST}} that changes the same subject. Load get_blueprint("yt-bJldMYfRvMQ", format: "json") first; build to shot frames, camera, type boxes and cues. This is picture-led: beat 1 types the request and reveals a result near 3 s in shot 1; beats 2–3 move through original cards and revise one; beat 4 expands the gallery and uses shot 2's close-up; beat 5 uses shot 3's single card and brand lockup. Make the travelling gallery with masked portrait cards, including the three-frame blend at frame 413, reframes at 467 and 775, and same-subject switch at 540. Set readable type at least 38 px cap height. Use an image model for original {{RESULT_ASSETS}}, then Remotion for UI and motion; Minimum is Remotion with supplied cards and Claude-synthesised music. Compose original 107.67 BPM instrumental music; hit JSON cue frames without forcing cuts onto beats. Master to −14 LUFS and ≤−1 dBTP. Export 1920×1080, 30 fps, H.264 MP4, 35 s. End on {{LOGO}} plus {{CTA_URL}} as text, without QR codes or store badges. Use genuine {{PRODUCT}} captures or rebuild its UI in code; never invent screenshots or results. Never copy reference colours, fonts, logo, mascot, slogans or music.Films like this
Tagged chatgptproduct launchprompt to resultanimated gallerywhite backgroundui animationimage cardsbefore and after





