From Clay Tablets to Onchain Lending
An 84-second monochrome launch film that turns lending history into a vast market-gap reveal before introducing Onlend.
By @Onlend_ for OnlendSource onlineOriginal post ↗
Copies get_blueprint("REF-6239") for Claude. Connect Claude
Why it works
A 106-frame audio invitation makes the opening mark feel purposeful before narration begins. The abrupt shift to a 0.94-luma statistic field near 39.8 s resets attention, and shot 4 converts the market claim into a visible occupied fraction before the identity ending.
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 narrated historical object becomes a present day market gap, then a branching product ecosystem. Sparse monochrome motion lets one concrete artifact carry the first claim before a bright numerical interruption and a restrained brand reveal.
Why it works
- The opening symbol and sound instruction occupy shot 1's 106 frames, making audio part of the hook.
- The single bright field in shot 3 reaches mean luma 0.94 at 39.8 s, making the scale claim visibly distinct.
- Shot 4 spends its final section converting a market proportion into a branched network, then a clean identity hold.
Plate 02
Format card
| Platform · aspect · length | X · 16:9 · 84.24 s · source 1280×720 · 30 fps |
| Pace | 4 measured shots; 3 transitions; median 20.90 s; internal picture changes carry much of the rhythm |
| Script | Narration-led · about 162 words · about 124 wpm overall, faster within spoken passages; phrases drive changes |
| Voice | Low register, assured documentary narrator with clear changes in emphasis |
| On screen | Flat line illustration, textured artifact, large statistic, network diagram, identity |
| Type | Three measured cap-height levels: 47–55, 16–26, 13–14 px; enlarge readable small text to 38 px |
| Sound | Sparse tonal electronic bed; measured 152 BPM / 76 felt, secondary to speech; reference −24.5 LUFS |
| Structure | Four beats; market scale in beat 3; product and call to action in beat 4 |
Tools you'll need: Blender for 3D · Remotion for motion graphics · ElevenLabs or a recorded voice · 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–1.75 s | Central logo mark changes its stripe configuration | None | Tonal bed; no voice | Creates a visual signature before the story |
| 2–3 s | Speaker icon replaces the mark | Sound instruction | Invite listening | Tells viewers this is a narrated film |
Hook formula: branded glyph → audio instruction → historical opening for {{PRODUCT}}.
Why it holds: The first object changes shape before the narrator begins, then the next scene earns the audio invitation.
Plate 04
Structure (beat sheet)
| # | Time (s) | Shots | Beat | What happens | Technique |
|---|---|---|---|---|---|
| 1 | 0–3.53 | 1 | Audio invitation | Brand glyph transforms into a volume icon | Centred white mark on dark field |
| 2 | 3.53–39.57 | 2 | Historical analogy | Ruins reveal an artifact; its recorded lending terms become people, a city, infrastructure, home and enterprise | Fine line drawing, object plate, dark field handoffs |
| 3 | 39.57–45.33 | 3 | Market scale | One debt figure fills a white field | White flash of contrast, counting number |
| 4 | 45.33–84.23 | 4 | Present opportunity and identity | Digital network, tiny occupied share, overwhelmingly open field, product branches and final identity | Particle globe, dot matrix, network tree, end card |
Retention map: first rehook at the artifact reveal, second at the white statistic, third at the dot matrix; payoff and call to action in beat 4; identity closes without a fade to black.
At a glance
- Shots: 4 shots · 3 transitions · 84.24 s = 2527 frames at 30 fps · shot length median 20.90 s (shortest 3.53, longest 38.90)
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)
4 shots · 3 transitions · 84.24 s = 2527 frames at 30 fps · shot length median 20.90 s (shortest 3.53, longest 38.90). 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–3.53 | 0–105 · 106 f | 3.53 | start | – | fixed |
| 2 | 3.53–39.57 | 106–1186 · 1081 f | 36.03 | fade from black · 10 f | f673 cut · f840 cut · f1082 reframe · f1110 cut | scales |
| 3 | 39.57–45.33 | 1187–1359 · 173 f | 5.77 | dissolve? · 7 f | – | fixed |
| 4 | 45.33–84.23 | 1360–2526 · 1167 f | 38.90 | cut | f1782 unknown over 4 f · f1968 focus pull over 74 f | 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: 3 hidden cuts / dips / reframes found inside v1 shots (luma-normalised frame difference): S2 cut at 22.433 s (f673), S2 cut at 28.000 s (f840), S2 cut at 37.000 s (f1110); listed in shots[].internal_changes · key low confidence (0.00): C# minor vs C# major · cue sheet keeps 84 of 200 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), 2 pages · the full-length timeline, the whole film at fixed steps (labels S<n> m:ss.s f<frame>), 4 pages · close-up strips, 14 frames around each cut and change: f106 fade from black, f673 cut, f840 cut, f1082 reframe, f1110 cut, f1187 dissolve, f1360 cut, f1782 unknown, f1968 focus pull (sheet "transitions", 3 pages; labels S<n> m:ss.sss f<frame>): call get_frames('2117649858836254794'), or see them on the film page (Pro, or free films).
Plate 05
Shot grammar
Mix: One short mark, two long animated sequences, one brief statistic field. The measured shot boundaries are few; the effective picture edits inside shots 2 and 4 matter more.
Rules this editor follows (inferred):
- Keep the virtual camera locked; move drawn objects, crop layers and text inside it.
- Change image vocabulary as narration changes subject: contour drawing → sculpted artifact → simple icons → particles → dots.
- (inferred) The sheets show a bridge before the home around 36 s; plate 5 measures the ×1.18 reframe at f1082 and the internal cut at f1110, so treat these as distinct picture events.
At a glance
- Transitions: 3 transitions: 1 fade from black (10 f) · 1 dissolve (7 f) · 1 cut
For agents: Camera and motion · Transitions
The measured data and build specs agents work from. Over MCP they get it all, with the full timeline as JSON.
Camera and motion (measured)
Per shot, measured on the frames. "Camera move" names the camera's move; the numbers are the image's motion: pan in % of frame width (x) or height (y) per second, +x = content moves right (so a pan left), +y = content moves down; zoom per second > 1 = content grows (push in). "Over the shot" is the total, with px at 1920×1080. Speed is the move through the shot, about one character per 0.5 s (▁ still → █ its peak), then the peak in % of width per second. Cadence: "ones" = a new picture every frame, "twos" = each picture held two frames. Blur is relative to this film (0 = its sharpest shots, 1 = its blurriest); motion = share of the frame changing, 0–1. "?" = confidence under 0.5: a hint, check the sheets. The labels describe how the image moves, not where a 3D camera went: an object flying toward a still camera can read as a push in.
In 4 of 4 shots the camera holds still and something inside the frame moves: see Element motion right under this table.
| # | camera move | pan x · y (%/s) | zoom (/s) | over the shot | ease | speed · peak | cadence | blur | motion | conf |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | static · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁▁▁▁ | ~22 fps | 1.00 | 0.01 | 0.72 |
| 2 | static? · element moves ↓ | +0.0 · +0.0 | ×1.000 | jump at f1082: ×1.18, x +16.5% | hold | ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ | ~22 fps | 0.62 | 0.03 | 0.46 |
| 3 | static · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁▁▁▁▁▁▁▁▁ | twos | 0.93 | 0.03 | 0.64 |
| 4 | static · element moves ↓ | +0.0 · +0.0 | ×1.000 | none | hold | ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ | ~22 fps | 0.70 | 0.03 | 0.52 |
Element motion (measured): in these shots the frame holds still and something inside it moves: a card, a UI panel, a product, a word. Region = where it moves (x · y · w · h % of the frame); numbers as above, for the moving region; "moving" = share of the shot in motion; ↳ = the move changes direction.
| # | region x·y·w·h % | element move | x · y (%/s) | zoom (/s) | total while moving | ease | speed · peak | moving | conf |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 44 · 36 · 11 · 18 → 44 · 42 · 11 · 18 | complex | −0.2 · −0.3 | ×0.961 | ×0.96 scale · roll +2.2° in 0.9 s | irregular | ▂▂▁▇▄▁▁ · 15%/s | 0.26 | 0.60 |
| ↳ 0.13–0.80 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 0.80–1.53 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 1.53–2.47 s: complex | −0.2 · −0.3 | ×0.961 | ×0.96 scale · roll +2.2° | ease-out | |||||
| ↳ 2.47–3.47 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| 2 | 4 · 82 · 36 · 12 → 46 · 14 · 8 · 56 | complex | −1.2 · −3.8 | ×1.005 | x −22.6% (−434 px) · y −71.7% (−774 px) · ×1.10 scale · roll +2.4° in 19.1 s | irregular | ▁▁▁▁▁▁▁▁▁▁▁▁▁▂▂▂ · 98%/s | 0.53 | 0.74 |
| ↳ 4.47–5.20 s: slide right | +6.9 · −1.9 | ×1.051 | x +5.1% (+97 px) · y −1.4% (−15 px) · ×1.04 scale · roll −0.7° | ease-out | |||||
| ↳ 5.20–7.33 s: slide left | −1.1 · −0.2 | ×1.005 | x −2.4% (−46 px) · y −0.5% (−6 px) · ×1.01 scale | linear | |||||
| ↳ 7.33–8.60 s: slide up | −1.5 · −39.7 | ×1.008 | x −1.9% (−36 px) · y −50.3% (−543 px) · ×1.01 scale | ease-in-out | |||||
| ↳ 8.60–12.27 s: slide left | −0.7 · −0.1 | ×1.000 | x −2.6% (−51 px) · roll −0.8° | irregular | |||||
| ↳ 12.27–13.20 s: complex | +0.0 · −6.1 | ×1.130 | y −5.7% (−62 px) · ×1.12 scale | ease-in-out | |||||
| ↳ 13.20–22.33 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| 3 | 41 · 71 · 17 · 13 → 34 · 41 · 6 · 12 | slide up | −1.2 · −10.0 | ×1.007 | x −6.6% (−127 px) · y −54.5% (−589 px) · ×1.04 scale in 5.5 s | ease-out | ▆▂▁▁▁▁▁▁▁▁▁▁ · 77%/s | 0.95 | 0.80 |
| ↳ 39.57–40.57 s: slide up | +0.0 · −54.6 | ×1.039 | y −54.6% (−590 px) · ×1.04 scale | ease-out | |||||
| ↳ 40.57–40.83 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 40.83–45.30 s: slide left | −1.5 · +0.0 | ×1.000 | x −6.6% (−127 px) | irregular | |||||
| 4 | 2 · 12 · 92 · 81 → 35 · 36 · 30 · 21 | complex | −2.4 · −2.6 | ×0.924 | x −27.7% (−532 px) · y −30.9% (−334 px) · ×0.40 scale · roll +7.0° in 11.7 s | irregular | ▁▁▁▁▁▁▁▁▁▁▂▁▁▁▁▁ · 210%/s | 0.30 | 0.78 |
| ↳ 45.33–45.73 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 45.73–46.27 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 46.27–46.67 s: slide left | −17.1 · +0.0 | ×0.958 | x −6.9% (−132 px) · ×0.98 scale | ease-in-out | |||||
| ↳ 46.67–48.13 s: static | +0.0 · +0.0 | ×1.000 | none | hold | |||||
| ↳ 48.13–49.40 s: rotate | +2.4 · −7.5 | ×0.921 | x +3.0% (+58 px) · y −9.5% (−102 px) · ×0.90 scale · roll +18.3° | ease-out | |||||
| ↳ 49.40–54.73 s: static | +0.0 · +0.0 | ×1.000 | none | hold |
Focus (measured): shot 1: sharp inside 42 · 29 · 25 · 43, no defocus (deep focus) · shot 2 3.53–22.43 s: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 2 22.43–28.00 s: sharp inside 17 · 29 · 67 · 29, no defocus (deep focus) · shot 2 28.00–37.00 s: sharp inside 0 · 14 · 100 · 86, no defocus (deep focus) · shot 2 37.00–39.57 s: sharp inside 0 · 0 · 100 · 100, no defocus (deep focus) · shot 3: sharp inside 33 · 29 · 33 · 71, no defocus (deep focus) · shot 4 45.33–59.40 s: sharp inside 8 · 0 · 92 · 100, no defocus (deep focus) · shot 4 59.53–84.23 s: sharp inside 8 · 0 · 83 · 100, no defocus (deep focus). Box = x · y · w · h % of the frame. In 2D, blur the layers outside the box by that many px; in 3D, set the focus distance on the box and open the aperture until the background blur matches. Locked-off shots: 3 of 4; 1 more could not be tracked (shown as "static?" or "not measured": check the sheets). Animation cadence: about 21.9 new pictures a second: 21.9 unique frames per second of 30 while things move (held-frame share 0.27, 527 moving frames). Match it, or the motion will feel smoother or choppier than the reference.
Transitions (measured)
3 transitions: 1 fade from black (10 f) · 1 dissolve (7 f) · 1 cut. 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 | 3.53 | 106 | fade from black | 10 f · 0.33 s | 1.00 |
| 3 | 39.57 | 1187 | dissolve | 7 f · 0.23 s | 0.45 |
| 4 | 45.33 | 1360 | 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 |
|---|---|---|---|
| 2 | 22.43 | 673 | cut: hard cut that v1 did not split on (dark frames) |
| 2 | 28.00 | 840 | cut: hard cut that v1 did not split on (dark frames) |
| 2 | 36.07 | 1082 | reframe: jump x1.18 |
| 2 | 37.00 | 1110 | cut: hard cut that v1 did not split on (dark frames) |
| 4 | 59.40 | 1782 | unknown over 4 f: 4-frame gradual change between two pictures (dissolve-like blend: fade, dissolve or blur) that v1 did not split on |
| 4 | 65.60 | 1968 | focus pull over 74 f: comes into focus (edge sharpness x5.0) |
What each shot shows (inferred from the sheets)
| # | Type | Framing | What's on screen | Text / overlay |
|---|---|---|---|---|
| 1 | Mark animation | Centred small icon | Striped mark becomes audio icon | Volume instruction |
| 2 | Illustrated history | Centred artifact, then symbols | Ruins, clay tablet, lending diagram, skyline, bridge, home, rocket | Short subtitle fragments |
| 3 | Statistic | Central number | Light full frame with animated amount | Market statement |
| 4 | Abstract explainer and end card | Central globe, square matrix, network branches | Digital tokens, 0.01% scale, product ecosystem | Labels and final tagline |
Plate 06
Visual style guide
- Look: Reference uses near black space, white relief objects and thin grey lines. Rebuild those roles with
{{BRAND_BG}}and{{BRAND_ACCENTS}}; keep the single inverse field in beat 3. - Graphics and overlays: Precise hairlines, small circular nodes, sculpted artifact relief and a dense repeated dot field.
- Transitions: Let dark negative space hide internal swaps; reserve the inverse field for beat 3.
- Branding and end card: Show
{{LOGO}}with{{CTA_URL}}as plain text during the final identity passage.
At a glance
- Type scale (cap px): 47–55 · 16–26 · 13–14 (3 levels) among the text above.
- Phone minimum: cap height ≥ 2% of frame width = 38 px at 1920×1080
- Whole film (time-weighted):
#0C0C0C83% ·#F1F1F110% ·#2020204% ·#6161612% ·#8F8F8F0% ·#ABABAD0%. - Curve facts: average 0.13 · darkest 0.00 at 3.8 s · brightest 0.94 at 39.8 s · sudden changes at 39.50 s (brighter by 0.62), 45.50 s (darker by 0.89).
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 |
|---|---|---|---|---|---|---|---|
| "Turn up the volume" | 1 | 2.0–3.5 | 25 | 35 | 2.3 | 41 · 59 · 18 · 4 | centre, lower third |
| "Lending, as it was." | 2 | 28.5–30.0 | 55 | 77 | 5.1 | 33 · 47 · 34 · 8 | centre, middle |
| "now digital assets are shaping the new chapter" | 4 | 48.0–50.5 | 21 | 30 | 1.9 | 33 · 88 · 34 · 3 | centre, bottom |
| "from agreements carved into clay to smart contr…" | 4 | 51.0–54.0 | 23 | 32 | 2.1 | 31 · 88 · 38 · 3 | centre, bottom |
| "stablecoins and tokenized real-world assets" | 4 | 54.5–57.0 | 24 | 34 | 2.2 | 34 · 88 · 31 · 3 | centre, bottom |
| "are redefining the status quo" | 4 | 57.5–59.0 | 23 | 32 | 2.1 | 40 · 88 · 21 · 3 | centre, bottom |
| "But this is only the beginning." | 4 | 60.0–61.5 | 51 | 72 | 4.7 | 23 · 48 · 54 · 7 | centre, middle |
| "Only 0.01% of the global debt market is…" | 4 | 62.0–66.5 | 23 | 32 | 2.1 | 33 · 91 · 34 · 3 | centre, bottom |
| "onchain loans" | 4 | 63.0–66.5 | 19 | 27 | 1.8 | 12 · 83 · 10 · 2 | left, bottom |
| "global debt market" | 4 | 64.5–66.5 | 14 | 20 | 1.3 | 76 · 47 · 13 · 2 | right, middle |
| "that allows anyone to launch their own lending…" | 4 | 72.5–75.0 | 24 | 34 | 2.2 | 31 · 88 · 38 · 4 | centre, bottom |
| "Asset Issuers" | 4 | 74.5–80.5 | 16 | 23 | 1.5 | 28 · 71 · 8 · 2 | left, lower third |
| "Curators" | 4 | 75.0–80.5 | 13 | 18 | 1.2 | 48 · 71 · 5 · 2 | centre, lower third |
| "Protocols" | 4 | 75.5–80.5 | 18 | 25 | 1.7 | 66 · 70 · 6 · 2 | right, lower third |
| "no code required" | 4 | 75.5–76.5 | 21 | 30 | 1.9 | 44 · 88 · 12 · 3 | centre, bottom |
| "Agentic Economy" | 4 | 76.0–80.5 | 16 | 23 | 1.5 | 83 · 70 · 11 · 2 | right, lower third |
| "opening the door to a new generation of…" | 4 | 77.0–80.5 | 26 | 37 | 2.4 | 29 · 87 · 42 · 4 | centre, bottom |
| "Lending, as it should be." | 4 | 81.5–84.0 | 47 | 66 | 4.4 | 31 · 54 · 38 · 7 | centre, middle |
Plus 14 smaller or briefer text items, cap 12–25 px, mostly labels inside interfaces: all in the timeline JSON.
Type scale (cap px): 47–55 · 16–26 · 13–14 (3 levels) among the text above.
Left out: 7 reads that are not clean words or were seen in a single frame ("• USDC", "• EURC", "• USDT"…): blurred, moving or partly hidden text the recognizer misread. They stay in the timeline JSON, not in the type scale.
Phone minimum: cap height ≥ 2% of frame width = 38 px at 1920×1080. Why: in a phone feed the film fills the screen width, about 390 pt, and 2% of that is 7.8 pt, the cap height of 11 pt text, Apple's smallest recommended text size. Words the viewer must read go at or above it; smaller text can only be decoration. Below it in the reference: "Only 0.01% of the…" (23 px, shot 4), "opening the door to…" (26 px, shot 4), "from agreements carved into…" (23 px, shot 4), "now digital assets are…" (21 px, shot 4), "stablecoins and tokenized r…" (24 px, shot 4), "that allows anyone to…" (24 px, shot 4) and 9 more above and 14 of the smaller items. Size these up in your version, or treat them as decoration.
Type spec (inferred)
Assume cap height is 0.71 of CSS font size. Use {{BRAND_FONT}}; Geist is a free fallback only.
| Level | Cap px at 1080p | Font size | Weight · case · tracking | Colour pair | Motion |
|---|---|---|---|---|---|
| Statement | 47–55 | 66–77 px | 500 · sentence case · −0.025 em | foreground / {{BRAND_BG}}, inverse in beat 3 | 12 f opacity and 8 px rise, cubic-bezier(.22,1,.36,1) |
| Supporting words and labels | 16–26 measured; 38 minimum when required to read | 54 px minimum for required words | 400–500 · sentence case · 0 em | accent / {{BRAND_BG}} | 8 f opacity, cubic-bezier(.22,1,.36,1) |
| Micro labels | 13–14 measured; 38 minimum if meaningful | 54 px minimum if meaningful | 500 · sentence case · .01 em | muted accent / {{BRAND_BG}} | 6 f opacity; otherwise decorative only |
Palette by shot (measured)
Colours measured on the frames, with their share of the frame; luma 0 = black, 1 = white. These are the reference's brand colours: map them onto {{BRAND_BG}} and {{BRAND_ACCENTS}} by role (background, surface, accent), don't reuse them as the format. Neighbouring shots with the same palette share a row.
| # | luma mean · p95 | colours (share of frame) | highlights (bright pixels) |
|---|---|---|---|
| 1–2 | 0.06 · 0.23 | #0C0C0C 88% · #F0F0F0 6% · #5A5A5B 2% · #2F2F30 2% · #8F8F8F 1% | #252525 ≈6490 K 43% · #8C8C8D ≈6530 K 29% · #D4D4D4 ≈6520 K 28% |
| 3 | 0.93 · 0.95 | #F1F1F1 96% · #C7C7C7 2% · #464545 1% · #979797 1% · #676666 1% | #F2F2F2 ≈6500 K 92% |
| 4 | 0.07 · 0.16 | #0C0C0C 90% · #202020 6% · #F7F7F7 2% · #616161 2% · #ABABAD 1% | #DDDDDF ≈6570 K 40% · #252525 ≈6490 K 40% · #808081 ≈6550 K 20% |
Whole film (time-weighted): #0C0C0C 83% · #F1F1F1 10% · #202020 4% · #616161 2% · #8F8F8F 0% · #ABABAD 0%.
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 40s 50s 60s 70s 80s
mean ▁▁▁▁▁▁▁▁▁▁ ▁▁▁▁▁▁▁▁▁▁ ▁▁▁▁▁▁▁▁▁▁ ▁▁▁▁▁▁▁▁▁▄ █████▄▁▁▁▁ ▁▁▁▁▁▁▁▁▁▁ ▁▁▁▁▁▁▁▂▂▂ ▂▁▁▁▁▁▁▁▁▁ ▁▁▁▁▁
p95 ▁▁▁▁▁▁▁▁▁▁ ▂▃▃▃▃▃▃▄▄▄ ▄▅▂▁▁▁▁▁▁▁ ▁▁▂▄▃▂▃▁▂▆ █████▅▁▁▁▁ ▁▁▂▁▁▁▁▁▁▁ ▁▁▁▁▂▂▂▅▅▆ ▅▁▁▁▁▁▂▃▃▃ ▂▁▁▁▁
Curve facts: average 0.13 · darkest 0.00 at 3.8 s · brightest 0.94 at 39.8 s · sudden changes at 39.50 s (brighter by 0.62), 45.50 s (darker by 0.89).
Layout boxes (inferred)
| Element | Shots | Box x · y · w · h (%) | Source · confidence | Notes |
|---|---|---|---|---|
| Opening mark motion | 1 | 44 · 36 · 11 · 18 | measured element region · high | Centre anchor |
| Volume instruction | 1 | 41 · 59 · 18 · 4 | measured text box · high | Enlarge if required to read |
| Historical word card | 2 | 33 · 47 · 34 · 8 | measured text box · high | Central interruption |
| Statistic motion region | 3 | 41 · 71 · 17 · 13 | measured element region · high | Number rises into field |
| Debt matrix caption | 4 | 33 · 91 · 34 · 3 | measured text box · high | Move upward in phone layout |
| Product branch labels | 4 | 28 · 70 · 66 · 3 | measured text boxes · high | Spread across lower field |
| End card tagline | 4 | 31 · 54 · 38 · 7 | measured text box · high | Under logo |
| End card logo | 4 | 38 · 45 · 24 · 9 | sheet tile at 1:22.0 · medium | Replace symbol and wordmark |
End card: {{BRAND_BG}}; centred {{LOGO}}, with {{CTA_URL}} in readable text beneath the tagline. The last shot ends at f2526 and has no fade to black.
Material card (inferred)
:root { --brand-bg: {{BRAND_BG}}; --brand-accent: {{BRAND_ACCENTS}}; }
.scene { background:var(--brand-bg); color:var(--brand-accent); }
.hairline { border:1.5px solid color-mix(in srgb,var(--brand-accent) 42%,transparent); }
.artifact { border-radius:24px; filter:drop-shadow(0 10px 28px #0008); background:radial-gradient(circle at 32% 24%,color-mix(in srgb,var(--brand-accent) 58%,var(--brand-bg)),var(--brand-bg) 72%); }
.network { filter:drop-shadow(0 0 14px color-mix(in srgb,var(--brand-accent) 30%,transparent)); }
Blender clay relief, if used: Principled BSDF roughness .88, transmission 0, IOR 1.45, coat 0, emission 0; world strength .18; Cycles 64 samples, 50 mm lens at f/8. 2D equivalent at 1080p: 24 px embossed texture displacement, 28 px soft shadow, 0 px defocus within plate 5's 17 · 29 · 67 · 29 focus box, 2 px blur outside; 14 px glow at .3 opacity for the digital network; vignette .22 strength over outer 20% of radius. The line art and matrix need no 3D.
Plate 07
Voice and delivery
Measured: V1 transcript estimates 164 words, 124 wpm overall and 161 wpm while talking; plate 8's speech analysis counts 162 words and 71% coverage. First word is near 3.86 s.
Voice direction (inferred): Low, calm documentary register. Give numbers and terms clear weight; leave air after the historical example and before the market claim. Do not imitate the reference narrator.
Plate 08
Sound design
- Music: Subdued tonal electronic foundation with little percussion, opening under the mark and thinning beneath important lines.
- Sound effects: Soft textured ticks on artifact and node reveals; a brief filtered swell into beat 3; keep these below stressed narration.
- Silence and space: The reference's long speech pause around the statistic and later reveal gives the picture room; preserve comparable rhetorical space in a new script.
At a glance
- Speech: words cover 71% of the film (162 words, v1 transcript): narration-led: the words carry it, cut on phrases and keep effects off the stressed words.
- Tempo: 152 BPM (felt as 76.0 BPM: count every other beat), confidence 0.64 (weak: half or double time is possible) · first downbeat 0.099 s (bar start confidence 0.08, uncertain) · beat 0.3947 s · bar of 4 = 1.579 s.
- Key: unclear: C# minor or C# major (confidence 0.00); pick your own.
- Loudness of the reference (measured): −24.5 LUFS integrated, true peak −7.3 dBTP, range 4.8 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 71% of the film (162 words, v1 transcript): narration-led: the words carry it, cut on phrases and keep effects off the stressed words.
Tempo: 152 BPM (felt as 76.0 BPM: count every other beat), confidence 0.64 (weak: half or double time is possible) · first downbeat 0.099 s (bar start confidence 0.08, uncertain) · beat 0.3947 s · bar of 4 = 1.579 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) | 11.84 f | 47.36 f | 3 | 3 · 50 · 96 · 145 · 193 · 239 · 285 · 333 … |
| 60 fps | 23.68 f | 94.73 f | 6 | 6 · 99 · 192 · 291 · 387 · 478 · 571 · 666 … |
Beats in seconds: 0.099 · 0.499 · 0.882 · 1.271 · 1.654 · 2.038 · 2.421 · 2.810 · 3.193 · 3.582 · 3.982 · 4.412 … (214 in all, audio.tempo.beats in the timeline JSON).
Cuts on the beat: 1 of 3 land within ±1.5 frames of a beat; chance alone would give about 0.8, so the edit does not follow the beat.
Key: unclear: C# minor or C# major (confidence 0.00); pick your own.
Sections (by energy of the whole mix, voice included):
| section | time (s) | shots | level (RMS) |
|---|---|---|---|
| build | 0.0–6.0 | 1–2 | −25 dB |
| steady | 6.0–31.0 | 2 | −24 dB |
| steady | 31.0–41.0 | 2–3 | −23 dB |
| steady | 41.0–52.5 | 3–4 | −24 dB |
| steady | 52.5–78.0 | 4 | −23 dB |
| outro | 78.0–84.2 | 4 | −28 dB |
Energy map (RMS per 1 s, ▁ = −90 dB → █ = −19 dB):
▇▇▇███████ ██████████ █▇████████ ██████████ █████▇████ ██████████ █▇████████ █████████▇ ▆▇▇▂▁
Cue sheet (84 cues: 1 at a cut, 48 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.09 | 3 | 1 | tonal | 1.00 | no visible event | ✓ |
| 4.16 | 125 | 2 | tonal · voice? | 1.00 | "Deep beneath the ruins…" appears | |
| 4.55 | 137 | 2 | hit · voice? | 1.00 | "Deep beneath the ruins…" appears | |
| 4.83 | 145 | 2 | hit · voice? | 1.00 | "Deep beneath the ruins…" appears | ✓ |
| 6.69 | 201 | 2 | unknown · voice? | 1.00 | no visible event | |
| 6.80 | 204 | 2 | unknown · voice? | 1.00 | no visible event | ✓ |
| 8.78 | 263 | 2 | tonal · voice? | 1.00 | no visible event | ✓ |
| 9.10 | 273 | 2 | tonal · voice? | 1.00 | no visible event | ✓ |
| 11.10 | 333 | 2 | tonal · voice? | 1.00 | no visible event | ✓ |
| 11.21 | 336 | 2 | unknown · voice? | 0.94 | no visible event | |
| 16.46 | 494 | 2 | tonal · voice? | 1.00 | no visible event | |
| 16.65 | 499 | 2 | unknown · voice? | 1.00 | no visible event | ✓ |
| 18.11 | 543 | 2 | tonal · voice? | 1.00 | no visible event | ✓ |
| 19.53 | 586 | 2 | tonal | 0.96 | "• Loans" appears | |
| 20.11 | 603 | 2 | tonal | 1.00 | no visible event | ✓ |
| 25.10 | 753 | 2 | unknown · voice? | 1.00 | no visible event | |
| 26.96 | 809 | 2 | tonal · voice? | 1.00 | no visible event | ✓ |
| 27.79 | 834 | 2 | tonal | 1.00 | no visible event | ✓ |
| 40.50 | 1215 | 3 | tonal | 1.00 | no visible event | ✓ |
| 52.22 | 1567 | 4 | tonal · voice? | 1.00 | no visible event | |
| 55.50 | 1665 | 4 | unknown · voice? | 1.00 | no visible event | ✓ |
| 58.95 | 1769 | 4 | unknown | 1.00 | no visible event | ✓ |
| 81.57 | 2447 | 4 | hit · voice? | 0.95 | "Lending, as it should…" appears | |
| 82.22 | 2467 | 4 | hit · voice? | 0.97 | no visible event | ✓ |
"voice?" = the cue sits on a spoken word (18 of 24): that is the narration, not an effect to copy.
Loudness of the reference (measured): −24.5 LUFS integrated, true peak −7.3 dBTP, range 4.8 LU. That is how this film was mastered, not a target.
Loudness targets for your version (common practice per platform; the brief overrides them):
| where it plays | integrated | true peak max | note |
|---|---|---|---|
| YouTube | −14 LUFS | −1 dBTP | louder masters are turned down; quieter ones are not turned up |
| X, LinkedIn (this reference) | −14 LUFS | −1 dBTP | no published normalisation: the file plays as mastered |
| TikTok, Reels, Shorts | −14 to −10 LUFS | −1 dBTP | played on phone speakers; short-form is often mastered hotter |
| Website or app (autoplay) | −16 LUFS | −1 dBTP | often starts muted; keep the unmuted level comfortable |
| Broadcast (EBU R128) | −23 LUFS | −1 dBTP | only when the brief asks for it |
Original music bed (inferred)
Compose at 76 BPM felt half time (the measured grid is 152 BPM), C minor as a new chosen key because the measured key is uncertain. Use felt piano harmonics, low sine bass, soft granular air and muted clicks. Shot 1: one tonal pulse at f3. Shot 2: sustained low bed, restrained accents near f125 and the lending label near f586; duck voice by 5 dB. Shot 3: filtered lift into f1187, then a held harmonic. Shot 4: sparse arpeggio and a subdued hit near f2447; taper energy during the outro. Music-model prompt: “Original minimal documentary electronica, 76 BPM half time, C minor, soft piano harmonics, low sine, granular air, no lead melody, room for narration, restrained reveal swells.”
Plate 09
Packaging
- Title (inferred):
{{MARKET_FACT}}followed by the change{{PRODUCT}}enables. - Cover / thumbnail (inferred): One bright artifact or stark statistic in abundant
{{BRAND_BG}}space; a short readable line in{{BRAND_FONT}}. - Post copy (inferred): State the gap, name
{{PRODUCT}}, then add{{CTA_URL}}. - Audience signals: The capture records 56,663 views, 984 likes, 343 comments and 802 reposts; no replay measure is available.
Plate 10
Script template
Narration-led: about 160 words across the full cut, roughly 124 wpm overall with passages near 161 wpm. Break captions at meaning and keep them on their spoken phrases. The grid does not govern cuts.
[beat 1 · shot 1 · no narration] Audio invitation; no claim.
[beat 2 · shot 2 · about 75 words] Establish an old practice, reveal a specific surviving record, name three concrete terms, show how that practice built the present.
[beat 3 · shot 3 · about 9 words] State {{MARKET_FACT}} in one sentence, with one large number.
[beat 4 · shot 4 · about 76 words] Name the technological shift, quantify the open share, introduce {{PRODUCT}} and {{PRODUCT_CAPABILITY}}, finish with a short promise and {{CTA_URL}}.
Plate 11
Production plan
Two routes (inferred)
Minimum: Claude alone. Remotion with CSS 3D builds line drawings, layered faux clay relief, dots, globe particles, type and music synthesised in code. It simplifies the clay sculpt and tiny network details, giving up physical surface relief. The user supplies a recorded or TTS narration and the authentic {{LOGO}}.
Full: with the toolkit. Create the clay object and relief in Blender; export RGBA PNG sequence at 1920×1080, 30 fps with camera keyframes in JSON. Build line art, text, matrix and branches in Remotion; bring the PNGs and keyframe JSON into its 1920×1080/30 fps composition. Record narration as 48 kHz WAV; compose an original 48 kHz stereo WAV with a click track tied to the timeline beat list, then remove click from final mix. Master and encode H.264 MP4.
Asset honesty: Real captures of {{PRODUCT}} or its UI rebuilt in code; never generated product UI, invented screenshots, fake metrics, fake reviews or fake outputs. Verify {{MARKET_FACT}} independently before showing a number.
Plate 12
Prompts
Script prompt
Write a 160-word documentary narration for {{PRODUCT}}. Begin with a concrete historical artifact or practice relevant to {{PRODUCT_CAPABILITY}}, move through three physical consequences, state the verified {{MARKET_FACT}}, then show the open opportunity and finish with a plain promise. Keep sentences short enough for 161 wpm spoken passages, allow a pause before the statistic, and make all small captions paraphrases rather than full subtitles. No reference brand language.
Caption spec
Use {{BRAND_FONT}} and {{BRAND_ACCENTS}} against {{BRAND_BG}}. At 1920×1080, required text has cap height at least 38 px. Reveal one phrase at a time on the associated spoken phrase; use 8–12 frame opacity/rise animations and avoid overlays over the sculpture's carved detail.
Plate 13
Edit recipe
How it's built (inferred)
Signature move, beat 4 / shot 4: Build a square matrix of uniform microcells as a separate layer above {{BRAND_BG}}. Light the occupied fraction first and label it, then let a soft mask sweep across the remainder until the full field is visible. The sheet shows the tiny occupied point near 1:04.8 and the large field brightening after the measured f2014 and f2089 steps; keep those changes separate from the measured f1968–2041 focus pull. For the latter, animate a Gaussian blur from about 10 px to 2 px with cubic-bezier(.22,1,.36,1), keep the plate 5 shot-4 focus box, and render at 60 fps before sampling to 30 if the dots shimmer. This move makes the market imbalance legible; its repeated cells must remain evenly spaced after aspect changes.
Other motion and handoffs: Shot 1 morphs the mark's stripes on a shared SVG path layer; its measured element motion ends with about ×0.96 scale and +2.2° roll, and the speaker icon replaces it before f106. At f106, fade shot 2 from black for 10 frames. Draw ruins as hairlines in staggered strokes; lift the artifact from the ground plane, then hold its relief while the narration names terms. At f673 and f840, swap scenes on the measured dark-frame cuts, with no invented extra shot boundary. At f1082, jump the illustration crop to ×1.18 and x +16.5%; at f1110, use the measured dark-frame cut into the next object. At f1187, overlap the bright statistic layer over 7 frames. The number in shot 3 rises about 54.6% of frame height during its first second, ×1.04 scale, ease-out; keep its later slight left drift from plate 5. At f1360, cut directly to dark shot 4. Its early element motion includes the measured 46.27–46.67 s left shift and 48.13–49.40 s rotation; animate the layer, not the camera, with cubic-bezier(.22,1,.36,1). At f1782, crossfade the two network pictures for 4 frames, then use the measured 74-frame focus pull at f1968. The sheets show the globe and labels dissolving into dark near 59.4 s; the measurement labels a 4-frame gradual change, so use a short blend. Render transforms on mostly ones with selected 2-frame holds to approach plate 5's 21.9 new pictures per second; use 180° shutter equivalent, 2 subframes on fast motion, and avoid blur on readable type.
Build order
- Lock the beat 2 narration, beat 3 fact and beat 4 claim; verify
{{MARKET_FACT}}. - Assemble shots 1–4 at the plate 4 frames and mark every internal change from plate 5.
- Build beat 4's matrix and focus reveal, then beat 2's artifact and later symbols.
- Add shot 3's statistic, the opening mark, then type and brand ending.
- Mix the narration first, bed second, cues last; render and check plate 14.
Plate 14
QA checklist
- Shot boundaries and internal change frames match plates 4–5 within ±1 frame.
- Shot 4's f1968 focus pull runs 74 frames; matrix brightness steps retain their measured order.
- Every required word has cap height ≥38 px at 1920×1080; decorative labels are distinguishable from reading copy.
- Voice stays intelligible; effects do not obscure stressed words; original cue accents align within ±3 frames.
- X delivery masters near −14 LUFS integrated and true peak ≤−1 dBTP.
- Final frame is the identity passage, without an added fade to black.
- All product claims and any captures are authentic; no reference marks, copy or music remain.
Plate 15
Make it yours
Brand slots
| Slot | Replaces in the reference | Notes |
|---|---|---|
{{PRODUCT}} | Onlend name | Your offering |
{{BRAND_FONT}} | Reference sans | Your licensed typeface |
{{BRAND_BG}} | Near black field | Your dark base role |
{{BRAND_ACCENTS}} | White and grey drawing | Your high contrast accents |
{{LOGO}} | Onlend symbol and wordmark | Authentic vector supplied by you |
{{CTA_URL}} | Reference destination | Plain text URL on end card |
{{MARKET_FACT}} | Global debt statistic | Verified, current claim |
{{PRODUCT_CAPABILITY}} | Lending app launch promise | One genuine capability |
What this film avoids: stock footage, talking heads, a product UI montage, a feature list, fake results, dense captions and voice imitation.
Brand-distance warning: A clay tablet, near black palette, striped mark and the same debt statistic together would read as the original campaign. Replace the historical artifact with one native to your category.
Adapt the aspect (inferred):
- 9:16: Re-lay out instead of centre cropping: move artifact and matrix to a vertical central column, stack branch labels, raise bottom text above platform controls and keep required type ≥22 px cap at 1080×1920. Keep top and bottom UI zones clear.
- 1:1: Centre crop the core objects, then move the lost right and left labels inward; keep required type ≥22 px cap at 1080×1080 and leave a lower caption margin for UI.
Adapt the length (inferred):
- 15 s: Keep beat 1's brief invitation, beat 3's fact and beat 4's matrix signature and end card; compress beat 2 to one artifact and one consequence.
- 30 s: Keep all four beats, one historical consequence, the full matrix reveal and an unhurried identity ending.
- 60 s: Add distinct examples within beat 2 and beat 4 instead of lengthening static holds; retain the signature reveal and final identity pace.
The creator's signature (don't copy): Onlend's mark, exact debt claim, clay tablet composition, monochrome values, slogan and original music. The transferable format (do copy): A narrated history to present opportunity arc, sparse relief and line art, an inverse statistic field, then a quantitative matrix transforming into a product network.
Source: https://x.com/Onlend_/status/2117649858836254794 · measured 2026-11-09 · (measured) = source measurement · (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) | 19 of 38 | "Deep beneath the ruins…", "people were already len…", "Lending, as it was.", "lending has helped build…" … | 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) | 35 of 38 | "onchain loans", "global debt market", "Agentic Economy" | 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 | fixed | 106 | 106 | 106 | 106 |
| 2 | scales | 1081 | 82 | 299 | 731 |
| 3 | fixed | 173 | 173 | 173 | 173 |
| 4 | scales | 1167 | 89 | 322 | 790 |
| total | 2527 f · 84.2 s | 450 f · 15.0 s | 900 f · 30.0 s | 1800 f · 60.0 s |
15 s: scaling shots shrink to ×0.08, too fast: drop a beat instead · 30 s: scaling shots shrink to ×0.28, too fast: drop a beat instead.
Recipe
One prompt that makes a film like this with Claude. Use the method; make the footage, words and brand your own.
Make an 84.24 s, 16:9 film for {{PRODUCT}} in the format of 2117649858836254794: historical artifact to open market. Use {{BRAND_FONT}}, {{BRAND_BG}}, {{BRAND_ACCENTS}}, {{LOGO}} and {{CTA_URL}}. Verify {{MARKET_FACT}} and show genuine {{PRODUCT_CAPABILITY}}. Load get_blueprint("2117649858836254794", format: "json") and follow its timeline. Write about 160 original narration words at roughly 124 wpm overall, faster during spoken passages, with phrase breaks for captions. Start voice after the silent mark opening. Turn a compact glyph into an audio invitation, reveal a relevant historical artifact and its consequences, interrupt with a high-contrast market statistic, then move from a digital network to a tiny occupied fraction in a dense dot matrix, authentic product branches and a restrained identity. Keep required type at least 38 px cap height. Build the full route with Blender Python relief PNGs and Remotion motion graphics, or the minimum route with Remotion CSS 3D. Supply recorded or TTS narration and an original 76 BPM felt-half-time bed. Let speech lead the edit. Master for X near −14 LUFS, true peak at most −1 dBTP. Render 1920×1080, 30 fps, H.264 MP4. End on {{LOGO}} plus {{CTA_URL}} as text. Use real captures of {{PRODUCT}} or code-built UI only; never generated product UI, fake screenshots or results. Never reuse the reference's colours, typeface, logo, slogans or music.Films like this
Tagged launch filmmotion graphicsmonochromedocumentary voiceoverhistorical analogymarket statisticdata visualizationlate product reveal