Hypernatural

WorkflowBy HypernaturalVersion 2, Oct 29, 2026

recipe-product-explainer-video

Make a ~35 s faceless marketing explainer for an app or product from its own code repo or website: a voiceover over kinetic type in the brand's colours and the product's real screenshots in a phone frame, with a music bed, built as one hn4a-compositor spec cued from the voice take's own word times. Problem, brand, three how-it-works steps, one feature, social proof, end card. Covers mining the repo for copy, facts and images, a script and aspect gate, the opening scene in a few looks on estimated word times shown live minutes after the script, beside the voice and music auditions, then the whole layout in the picked look cued to the picked voice, shown live before the render. Costs well under $1. For an ad with a presenter avatar and rebuilt UI, use recipe-product-ui-video.

SKILL.md

Product explainer: voiceover, kinetic type and the real app

The person points at their product: its code repo, its website, or a folder of screenshots. You deliver a ~35 s marketing explainer (9:16 1080×1920 or 16:9 1920×1080, 30 fps): a narrator over big type in the brand's colours, the product's own screens in a phone frame, a light music bed, ending on the logo and where to get it. No presenter, no generated footage: everything on screen is type, shapes and the product's own images, so the only paid parts are the voice and the music.

How it differs from its siblings: recipe-product-ui-video puts a lip-synced presenter in front of the product and rebuilds its UI as live layers under a pushing camera (dollars, a day). recipe-slide-deck-presenter walks through real slides. Here the screenshots are shown as they are, in a device frame, and the motion is all in the type around them: the cheapest, fastest marketing piece hn4a makes.

Job notes (brief, approved script, sources, picks) go in the job's AGENTS.md; rounds and deliverables follow the core skill.

Steps

  1. Mine the source for copy, facts and images. From a repo, look where marketing lives: the brand or app config (name, tagline, description, "how it works" steps, trust reasons, ratings, user counts), the homepage and landing-page templates, the marketing images folder, and any screenshot tooling (a job that renders store screenshots often leaves device-framed PNGs and an empty phone frame). From a site, follow recipe-product-ui-video step 1. Copy every image into source/ (never edited), make a contact sheet with Pillow and look at all of it. Every number in the script (users, rating, review count) must come from the source; round down, never up.
  2. Script and shape (guide-make-a-script-from-source): one beat per line, in this order: the pain (the customer's mess, shown, not described), the brand and its own tagline, three steps in the product's own words (Create / Invite / Share), one feature worth paying for, social proof with the real number, the end card with platforms. ~85 words reads in 32–37 s. Write the narration with audio tags for the direction ([warm, conversational], [brightening], [upbeat] on the last line). Gate, as one question set: the script word for word, the aspect (9:16 for Reels, TikTok and store previews; 16:9 for the site and YouTube), and the job folder.
  3. The first scene, the voices and the music, all at once. Start the auditions and beds without waiting on them (guide-cast-a-voice, elevenlabs-voice-search, elevenlabs-tts-v4, elevenlabs-generate-music): each shortlisted narrator on the whole script (it is short, and the read's length drives the layout), with the TTS variant that returns character timings, and two beds of the comp's length in contrasting styles (warm acoustic, light electronic), instrumental, "sits under a voiceover", ending on a clean button. While they run, build the pain scene alone in two or three looks on word times estimated from the script (hn4a-compositor-motion-graphics, references/first-scene-preview.md), with the build script of step 5 and the look as data in it, so the pick carries straight over. One still per look, one fix, no more.
  4. One review page, as soon as the looks are built (core skill, review pages): the looks as live {"compose": ...} candidates, the narrators and the beds as audio candidates if they have landed (otherwise a second page for them when they do). Gate: a look, a voice, and a bed if they can pick one. This is the first thing the person sees move: minutes after the script, not after everything is made.
  5. Build the whole layout in the picked look, cued to the picked take. One Python build script takes <alignment> <voice> <music> <out spec> and writes the whole spec, finding every cue by phrase in that take's words, so a different voice is one re-run. Pattern, scene list and the layout traps: references/build-spec.md. Render a still inside every scene, tile them into one sheet, look once and fix what's broken (clipped pills, bad line breaks, a scene sitting high). Transcribe the take with whisper-cli and compare it with the script; no tag may be spoken aloud. If the music was left unpicked, build the spec once per bed on the picked voice. Gate: the whole spec live on a review page (one per bed if unpicked), the sheet as refs: the music and the final look.
  6. Notes go into the build script and back to the live page; nothing renders until the person says yes.
  7. Render and deliver. Voice to −16 LUFS (ffmpeg-normalize-loudness), the bed under it at about 0.16 volume with a fade into the end card, then hn4a-compositor render. Check it, then deliver per the core skill (When it's done): the video in its folder, no review page.

Choices this recipe makes

  • The real product, never a generated one. Screenshots go behind an empty phone frame from the source, at the screen inset you measure (scan out from the frame's centre for transparent or white pixels to get the screen box and corner radius). Swapping the screen image on each step keeps one phone on screen for all three steps.
  • Cue from the take's own character timings, not a separate speech-to-text pass: the timings come free with the audition, and whisper is used only to check the words. Entrances land 0.12 s before their word.
  • Show the pain as the customer's own mess (chat bubbles piling up, then blurring out on "buried") rather than a headline about it. The hook is the beat people remember; the person called this one "awesome".
  • Type says the gist, not the narration. "A list for anything" over "Create a list for anything: the weekly shop, a camping trip…"; the examples pop in as pills on their own words.
  • Vertical by default for marketing: the person chose 9:16 over the 16:9 offered.

Dead ends

  • The whole layout built, checked and fixed before the person saw anything move: they waited through every audition and every self-check, then saw one look they hadn't chosen. Show the first scene in a few looks first.
  • Pill and bubble widths guessed from character counts: a long chip clipped, short ones stretched, one ran off the frame, and snugging them broke the line wrapping. Let the browser size them (references/build-spec.md).
  • Text centred by padding alone: the person saw the text sitting off-centre in the bubbles. Centre with flexbox in a fixed height, padding on the sides only.
  • A music estimate without duration: refused; see elevenlabs-generate-music.
  • Picking music on its own: the person skipped the music pick on the first page, where it played without the picked voice; under the chosen read it was easy.

Worked example

Acme Co.'s household app, Acme Lists (shared shopping lists and errands), from its web repo. 9:16 1080×1920, 30 fps. Script 8 lines, 86 words, approved as drafted. Sources: 6 app screenshots, the empty iPhone frame (3939×8022, screen inset x 201, y 177, 3537×7668, corner ≈ 520 px), 5 product photos for the feature beat, logo and icon. Brand blue #1F8BEA, Brand Sans 600–800. Spec: 8 scenes, 49 layers.

BeatPictureCue
Pain7 chat bubbles pop in, tilt, then blur to 35% on "buried"; red last word0 s
Brandwhite wipe, icon spins in, name, tagline pill"Acme Lists is"
Create / Invite / Shareone phone rises; screen swaps per step; numbered step titles; example pills; a "Household only" badge"Create a list"
Featurepink wipe, two product photos zoom and rise"And when"
Proofa photo slowly pushes in under a navy gradient, "2 million+", stars and rating"Over two million"
End cardblue wipe, icon, name, tagline, platforms pillthe last "Acme Lists"

Four narrator auditions of the whole script: 32.1–36.6 s on the same text, $0.06 each; Voice C picked (33.1 s, 86/86 words, no tags spoken), comp 34.5 s. Two 36 s beds, $0.10 each. About $0.44 in all; stills and renders are free.

RoundNote (paraphrased)Fix
self-checkA long example pill clipped, a bad line break, the brand scene too highWider box, explicit \n, moved down
self-checkShort pills too wide, one off the frameWidth from the text; later, sized by the browser
review 1Love the look; text not vertically centred in some bubblesFlex-centred, fixed height
review 1Voice C; no music pickRe-cued to C; one spec per bed as live candidates

Go make something cool.

Install the app, open your agent, describe the video. That's the whole onboarding.

Sticker HypernaturalSticker BannerSticker TVBoy