| name | hypervideo |
| description | Generate a finished multi-shot AI video ad (script council → parallel clips → stitch → optional VO/captions/music) from a one-line brief via OpenRouter. Use when the user asks to create a video ad, promo, teaser, or short from a description. Spends real money on confirm — always show the user the cost estimate. |
hypervideo — one-command AI video ads
This skill drives the hypervideo CLI in this directory. It turns a text brief into a stitched multi-shot video (10–15s beats), optionally finished with narration, burned captions, an end banner, and ducked mood music.
Requirements check (do this first)
bun --version and ffmpeg -version must work
OPENROUTER_API_KEY must exist in .env (cwd or repo dir) or the environment; verify with a cheap call if unsure
python3 -c "import PIL" only if using --captions/--banner
How to run it
The CLI is interactive: it asks 3–4 clarifying questions (Enter accepts defaults) and, for real runs, requires a y at the cost gate. Drive it by piping answers:
printf '30\n\n\n\ny\n' | ./hypervideo --no-text --vo --captions --music \
--banner "Title|Org|Date · Price" "30s ad for <the user's brief, packed with real facts>"
Rules:
- Never confirm spend on your own initiative. Relay the estimate (printed as "total upper bound: $X") to the user first unless they have already authorized a budget in this conversation. Answer
n to abort — it exits cleanly, nothing spent.
- Put every factual detail (dates, prices, names) into the description string — the script council uses them, and with
--vo they are spoken.
- Default recipe for ads:
--no-text --vo --captions --music plus a --banner with the key facts. Video models cannot spell; typography must come from the caption/banner overlays.
- 30s ≈ $2.55 + ~$0.10 finishing; runs over $3 estimate need
--force-budget.
--mock runs the entire pipeline with placeholder clips for ~$0.10 (LLM+audio only) — use it to preview the script and finishing before real spend.
- Wall time for a real 30s run is ~5 minutes (clip generation polls). Run it in the background.
Outputs
out/<slug>/ contains beats.json (the script — edit vo lines and re-run finishing if needed), raw and normalized clips, and the finishing chain: final.mp4 → final-vo.mp4 → final-captioned.mp4 → final-music.mp4. The summary block names the finished file and the actual billed spend — report both to the user, and show frames or open the video if the harness allows.
Model choice
--model accepts any OpenRouter video model. Defaults to kwaivgi/kling-v3.0-std (best adherence/price). bytedance/seedance-1-5-pro is ~3× cheaper for draft passes; bytedance/seedance-2.0 is the cinematic splurge. The cost gate reprices automatically, including token-priced models.