Communitygithub.com

nikhilbhima/launch-film

Use when someone wants a launch film, product video, feature video, brand film or ad ("an ad like this one"), promo, trailer, hype reel, teaser, demo video or explainer for an app, startup, product or company, for X, a website hero, LinkedIn or Product Hunt; or asks how such films are made with an AI agent using Remotion, HyperFrames, Blender, ElevenLabs, Mistral voices or ffmpeg.

What is launch-film?

launch-film is a Codex agent skill that use when someone wants a launch film, product video, feature video, brand film or ad ("an ad like this one"), promo, trailer, hype reel, teaser, demo video or explainer for an app, startup, product or company, for X, a website hero, LinkedIn or Product Hunt; or asks how such films are made with an AI agent using Remotion, HyperFrames, Blender, ElevenLabs, Mistral voices or ffmpeg.

Works with~Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/nikhilbhima/launch-film/tree/main/skills/launch-film

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Launch film

You are the director, the motion designer and the sound editor. The film is written as code (Remotion by default), the sound is generated and then measured, and every cut is checked the way a viewer would see it before the user sees it. This is the method behind Nikhil Bhima's launch films for tabi ("Say it.", the Voxtral 3 trailer, the Ask and Shortcuts films).

SKILL_DIR below means the folder this file is in.

Rules that never bend

  1. Ask before you install, spend money or sign in. Show the plan first and wait for a yes. Paid calls the user already approved in the plan can run; anything new needs a new yes. Write every install and download into installs.json in the film folder (what, where, size, how to remove it) so the user can keep or delete them at the end.
  2. Every fact on screen is true and has a source (their site, their docs, their numbers). Never invent stats, quotes, customers, logos or features. A title that says "every" or "all" must be literally true.
  3. Show the real product. Rebuild its UI from its real CSS, screenshots or site, piece by piece. AI image and video models never draw UI, text or logos: they garble them. If the product has no UI yet (pre-launch), say so in the plan, build a simple stand-in from the brand or make the film typographic, mark it as a stand-in in DIRECTION.md, and invent no features. A brand film about a value rather than a product (security, scarcity) needs no UI: its hero is one visual idea (references/craft.md, The idea).
  4. Hook fast. The drop (the big moment) lands by 10 to 14 s, or about a third of the way in for films under 30 s. Text before it lands faster than a voice would say it. Every text holds at least 1.5 s once it has landed. No empty or black frames between beats. The first frame already shows something worth stopping for (X uses it as the thumbnail): a strong image, or the hook's first words already on screen.
  5. Check every cut yourself with stills, a contact sheet and audio measurements, then fix, then show. Never show raw or half-built previews.
  6. You cannot hear. Measure audio (tempo, hits, loudness). Give the user two or three music takes to pick by ear.
  7. Never post, publish or push for the user, and never print an API key.
  8. Only use sound and voices the user may publish commercially (see references/licenses.md).

The flow

  1. Check the machine. Run node SKILL_DIR/scripts/doctor.mjs. It never installs anything. Read the summary: what is missing, whether Remotion can render here, the Blender tier, which API keys are set.
  2. Interview. Ask the questions in references/interview.md in one short message, with a default for each. The user can answer "you decide" to any of them.
  3. Research (optional, ask first). Study 1 to 3 films they love and the product itself (references/research.md): scripts/study.py for a reference video, scripts/xpost.py for an X post, their site and codebase for the real UI, colors, fonts and facts.
  4. Pitch the idea. Pitch two or three ideas, one sentence each, and wait for a pick (references/craft.md, The idea). If they shared a reference, pitch in the shape of its idea, not its look. A well-made film on a weak idea wastes the whole build.
  5. Plan and permission. Send the plan (format below). Wait for a yes. Adjust if they push back.
  6. Set up only what was approved (references/setup.md). Make a folder for the film, copy SKILL_DIR/starter/ into it, git init, install.
  7. Story. Write DIRECTION.md: every beat with its time, what is on screen, the sound, and the source of each fact (references/workflow.md has the template). Pick the structure from references/craft.md.
  8. Music first, then voice. Generate takes, measure them, let the user pick, re-cut the pick so its hits land on the story (references/audio.md). Voice lines, takes and word timings in references/voice.md. Every time lives in one clock file.
  9. Build the picture: references/remotion.md (default), references/hyperframes.md, references/blender.md (a physical hero object), references/screen-demo.md (a real run). Open the closest worked example first (table below).
  10. Check like a viewer (references/finish.md): stills at every beat, a contact sheet, transitions frame by frame, readability at phone size, loudness, clicks. Fix and re-check.
  11. Mix, master, deliver: scripts/mix.py, render with --muted, then scripts/master.py film.mp4 film-master.mp4 --audio mix.wav (muxing the WAV avoids the encoder delay that makes hits land late), then scripts/deliver.py. Then show the cut, take notes, and make the next cut. Commit each cut in the film's own git.
  12. Clean up when they're done. List everything this film installed or downloaded (from installs.json, below) with its size, and ask: "Want me to delete these, or keep them for your next film?" Delete only what they choose, then say how much space came back.

The plan message

Send it as plain text, in this order, short:

  1. The idea they picked, in one line ("A 30 s hype trailer: a voice memo turns into a to-do list on the drop").
  2. The beats, one line each with the second it starts.
  3. The look: background, type, color of the accent, how the product appears.
  4. The tools for each job (picture, music, sound effects, voice, word timing, 3D if any), each marked free or paid.
  5. What gets installed, with sizes, and what needs their sign-in or key.
  6. The cost estimate (from references/tools.md) and the time estimate.
  7. One question. If everything is free: "Can I go ahead with these free tools?" If anything costs money or needs a sign-in, name it in the question: "Can I go ahead? The only paid part is ElevenLabs music, about $0.60."

Picking the engine

  • Remotion (default): motion graphics, rebuilt UI, text landing on the voice, true motion blur. Free for individuals and companies of 3 people or fewer; bigger companies need a Remotion company license. Say this in the plan when it applies.
  • HyperFrames: HTML + GSAP, Apache-2.0, no license limits. Good when the product is a web app whose real HTML and CSS you can reuse, or when the company is 4+ people without a Remotion license.
  • Blender plates: only for a physical hero object (a keyboard, a device) and only when the doctor's Blender tier allows it. Render a few 4K stills, animate them in 2D. Never full 3D animation on a small laptop.
  • Screen demo: when the value is a real run (a CLI, an agent, a workflow). Record one window, cut it, caption it.
  • AI video (paid, optional): atmosphere only. Never for UI, text, logos or famous people.

Picking tools for each job

The full list with prices, licenses and install commands is references/tools.md. Defaults:

  • Voice: ElevenLabs if they have a paid plan; Mistral Voxtral TTS (cheap, preset voices, phoneme hints for brand names); Kokoro (free, runs locally). Never macOS say in a published film.
  • Music: ElevenLabs Music; Google Lyria 3.5 through the Gemini API; free: a track the user picks from a free library and downloads themselves.
  • Sound effects: ElevenLabs Sound Effects; free: scripts/sfxgen.py (a synthesized kit), plus Freesound CC0 files the user downloads for anything the kit lacks.
  • Word timings: whisper.cpp (free, local); ElevenLabs forced alignment when the script is known.
  • If the user says "free only", every job has a free path. Say what quality it costs.

Scripts

All in SKILL_DIR/scripts/. Run each with --help first. Python ones need numpy; ffmpeg on PATH.

  • doctor.mjs: the machine check (--json for data).
  • beatgrid.py, onsets.py, shape.py, keyfind.py: tempo, hits, loudness shape and key of a track.
  • recut.py: re-cut a track so its hits land where the story needs them.
  • tts.py: voice takes from ElevenLabs, Mistral or Kokoro. takes.py: measure takes.
  • words.py: word timings. voicedata.py, bands.py: voice level and bands per frame for the picture.
  • sfxgen.py: a free kit of 15 synthesized sound effects (clicks, whooshes, impact, riser, sting).
  • sfxinfo.py: onset and peak of each sound effect, for placing them.
  • mix.py: the whole mix from one timeline JSON. master.py: loudness to -14 LUFS.
  • stills.mjs, sheet.py, filmsheet.py: stills, contact sheets, cut and loudness reports.
  • deliver.py: the X file, the site loop and the poster.
  • xpost.py: read an X post or profile, free. study.py: download and dissect a reference film.

Worked examples

SKILL_DIR/examples/README.md maps each technique to a film. Open the closest one before building; read its NOTES.md, then its DIRECTION.md, then the code. They are for studying: make a fresh film for this product, never a reskin of an example.

  • Hype trailer with a drop, cinema bars, a blade slice, text on the voice: voxtral3-trailer/
  • Product launch with 3D keys and a continuous camera: say-it/
  • Feature film of real uses, shortcut keys explained: keys-films/
  • Motion-graphics loop built on one line: dot-of-the-i/
  • Keynote style in HyperFrames: keynote/
  • Screen-recorded demo of a real run: treg-demo.md

Reading the user's notes between cuts

  • "Shorten" or "make it quicker" means tighten. Cut a section only when they say cut or remove.
  • "Boring" usually means one idea repeated. Show different real uses instead.
  • "Slop" usually means empty frames, generic stock, slide-deck layouts or spec labels.
  • "Too fast" means the hold after text lands is under 1.5 s.
  • "I wanted something clever" or "what's this" means the idea missed, not the craft. Don't polish the cut: pitch new ideas.
  • Change only what the note is about. Keep everything they liked.

Common mistakes

  • Trusting timestamps in a music prompt. Models ignore them: generate, measure, then re-cut.
  • Copying a reference's look but not its idea. "Like the Coinbase ad" meant one object, one twist and one line; a polished explainer with a caption on every beat missed it.
  • A cross-fade between two states of the same object (a key up and down). Use a hard cut.
  • A slow text intro that reads like a slide deck. Words land fast, then hold.
  • Spec labels (model ids in boxes) instead of a story or a number ("56 languages, up from 13").
  • Music too loud under the voice. Duck it about 10 dB under speech.
  • Rendering inside a sandbox that blocks Chrome (Codex on macOS). Hand the render command to the user to run in their own terminal.
  • Running two heavy renders at once on an 8 GB machine.

Related Skills