Last updated:
Quick answer
Ask a coding AI to draw every frame as a function of time in one HTML file, screenshot each frame with a headless browser, then join the frames and a music track with FFmpeg. Check still frames before the full render, and time the scenes to the music, not the other way round.
Free PDF
Get this setup as a PDF
Confirm your email and we'll open a print-ready copy of this setup you can save as a PDF. You also get the free starter pack and one setup a week. Unsubscribe anytime.
Already a subscriber? Unlock it on this device
At a glance
All outcome figures are estimates from cited sources, not independent verification by us.
- What it is allowed to do
- Drafts for you
Writes drafts (emails, posts, plans, replies). You review and send. Nothing goes out without you.
- Time saved (estimate)
- About 2 to 3 hours for the first reel, then under an hour for each spinoff that reuses it.
- Difficulty
- Advanced
- Tools needed
- Claude Code, ElevenLabs, FFmpeg
- Typical cost
- Claude Code needs a paid Claude plan. FFmpeg and Playwright are free. ElevenLabs music uses credits on your plan; our 4 takes of a 45-second track cost about 2,700 credits.
Reviewed Nov 1, 2026
Basis (estimate): Estimate only: based on our own run of these steps, not a controlled timing.
What does this setup do?
Turn one job your product does into a 45-second vertical reel: a hook, the problem piling up, the fix, a short demo and your link, with an original music track and captions.
Who is it for?
Small business owners and builders who can run a command in a terminal, or who have someone who can. You need a coding AI that can write and run files, such as Claude Code. A chat-only AI can write the files for you to run yourself.
How do you set it up?
Tools
- Claude Code, or another AI that can write and run code
- Node.js with Playwright and its Chromium browser, to screenshot frames
- FFmpeg, to join frames and audio into an MP4
- ElevenLabs Music for an original track, or any music you have the rights to
Steps
- Write the story in six beats: hook, the problem piling up, the turn (one word), your product's name, a short demo, and the call to action. Keep it to 45 seconds.
- Give your coding AI the prompt below. It builds one HTML file at 1080 by 1920 where a function draws any moment of the video from the time alone, so every frame is exact and repeatable.
- Ask it to render about 10 still frames, one per scene, and look at them together before rendering the whole video. Fix overlaps and cut-off text here; it is far cheaper than re-rendering.
- Make the music. In ElevenLabs Music, describe the genre, tempo and where the drops land, and add short lyrics if you want vocals. ElevenLabs says songs can run from 3 seconds to 10 minutes. Make a few takes.
- Pick the take whose drops land closest to your cuts. If it has vocals, transcribe it and retime the scenes so each line lands on its words. Move the video to the music, not the music to the video.
- Add captions for the lyrics or voiceover. Many people scroll with the sound off, and without captions the reel says nothing.
- Render all frames, join them with the track in FFmpeg, and watch the whole MP4 with sound before you post. Pick a cover frame that shows the problem, like the biggest number.
Example output
Illustrative. Your results will differ.
- Remind every client whose invoice is 30 days late
- 31 invoices unpaid
- SIMPLE.
- Hi Dana, a quick note on invoice #1042. $1,250 is now 32 days past due.
- 12 of 12 reminded
Where to paste this prompt
Claude Code → terminal, IDE extension, or web session in your project directory
Copy-paste prompt
Adapt bracketed fields to your situation.
Build a 45-second vertical promo reel as code. Do not post anything.
Product: [WHAT YOU SELL, ONE LINE]
The job it does: [ONE JOB, E.G. CHASES LATE INVOICES]
Hook (what the customer types or says): [ONE SENTENCE]
The pile-up: [WHAT GROWS, E.G. INVOICES UNPAID] counting up to [NUMBER]
The result: [E.G. 12 OF 12 REMINDED]
Call to action and link: [TEXT AND URL]
Brand colors: [2 OR 3 HEX CODES]
Build it like this:
1. One HTML file, 1080x1920, with window.renderAt(t) that draws the frame for any time t in seconds from scratch. No timers, no animation that depends on real time.
2. Keep every scene start time in one object so I can retime the whole video in one place.
3. Scenes: hook typed in (0-6.7s), a black screen with the problem (6.7s), the count-up, one big word for the turn, the product name, a demo of the job with a draft I approve, then the end card.
4. Use only made-up names, numbers and companies in the demo.
5. Write a Node script that opens the page in Playwright, renders 30 frames per second as images, and joins them with an audio file using FFmpeg into an MP4 (H.264, AAC). Add a --frames option to render just a few still frames.
6. Render stills at 2.5, 7.5, 14, 17.5, 26 and 42 seconds and show me them before the full render. Check that no text overlaps or runs off the frame.
7. Add a captions layer driven by a list of [start, end, text] lines.Newsletter
Get the free starter pack
Free starter pack with five beginner copy-paste prompts after you confirm, plus one researched setup in your inbox each week. Unsubscribe anytime.
What usually goes wrong?
Where agents tend to stall on this job. More patterns in Where AI gets stuck.
- Previews in some apps play muted. Download the MP4 and play it with sound before deciding the audio is missing.
- Text that types in can still be mid-word when the scene cuts. Speed up the typing or give the scene more time.
- Only use music you made or have the rights to. Do not borrow a track from someone else's video.
- Download the MP4 and play it with sound before deciding the audio is missing.
Which chat tools work with this prompt?
Paste the prompt into any of these assistants (free or paid tiers).
- Claude Code
- Claude
- ChatGPT
Common questions
- Can AI make a promo video without a video editor?
- Yes, if it can write and run code. It draws each frame in HTML, a headless browser captures the frames, and FFmpeg joins them with music into an MP4.
- Where does the music come from?
- We made an original track in ElevenLabs Music with our own lyrics. Use music you made or have the rights to, never a track borrowed from someone else's video.
- Does this post the video for me?
- No. It makes the MP4 file. You watch it with sound and post it yourself.
What tips make it smoother?
- Build one reel well, then make spinoffs by changing the hook, the pile-up and the demo text. The timing and scenes carry over.
- Time scenes to the music's drops and the sung words. Music made separately rarely lands on your cuts by itself.
- Render a handful of still frames first. Most problems, like captions covering a card, show up in stills.
- Keep captions above the bottom of the frame, where Reels and TikTok put their own buttons and text.
Where do the claims come from?
Summaries use public sources linked below, not independent verification. How setups are picked.
- Read ElevenLabs’s write-up (elevenlabs.io)
ElevenLabs: Music overview: songs run from 3 seconds to 10 minutes (read 2026-11-01 from a search result excerpt)
- Read Playwright’s write-up (playwright.dev)
Playwright: Taking page screenshots from a headless browser, used here to capture each frame
- Read FFmpeg’s write-up (ffmpeg.org)
FFmpeg: Command-line documentation for joining an image sequence and an audio file into one video
Related setups
- Clip long videos into shorts
Turn one long video into several short clips with OpusClip, check each one, and schedule the approved ones in YouTube Studio.
- Chase late payments without the awkward email
Write late-payment reminder emails that get paid without damaging the client relationship