Skip to content

CLI

<slug> is a folder under videosDir, or a path to a demo folder or its scenario.ts. reelson help prints this list.

Command Does
reelson install [<project-dir> | --global] [-y] [--no-browser] Links the reelson-record and reelson-compose skills into .agents/skills/ and .claude/skills/, either globally for every project or into one project (which also gets a reelson.config.json). Asks which when neither is given. Downloads Playwright’s Chromium unless --no-browser.
reelson init Creates reelson.config.json in this directory.
reelson doctor Checks the tools, the voice provider and that the cursor layer lines up with the footage on this machine.
reelson templates Lists templates and intro/recap/outro sections.
Command Does
reelson new <slug> [--url <origin>] Starts <videosDir>/<slug>/scenario.ts.
reelson record <slug> [--headed] [--mobile | --square | --all-takes] Runs the scenario → recording.mp4 + markers.json. --mobile: the phone take, for --portrait. --square: the square take, for --square. --all-takes: all three.
reelson build <slug> [options] video.json → video/ (a HyperFrames project). Creates video.json on the first run. Options: --title, --subtitle, --template <name>, --intro <name>, --recap <name|none>, --outro <name>, --trim-start <s|auto>, --trim-end <s>, --music <file> / --no-music (written into video.json).
reelson voice <slug> Speaks the voice-over lines not spoken yet (cached in <demo>/voice/).
reelson voices [--provider <name>] [--all] [--library] Lists voices to pick for voice.voice.
reelson check <slug> [--no-hyperframes] Schemas, zoom timing and the HyperFrames lint. Must say “ready to render”.
reelson snapshot <slug> --at 1,3.5,8 [--portrait | --square] PNG frames into video/snapshots/.
reelson studio <slug> [--port 4800] [--no-open] Preview and edit on a timeline of every layer. Saves video.json.
reelson preview <slug> Opens the HyperFrames studio on the raw composition.
reelson render <slug...> | --all [flags] Builds and renders video/renders/<slug>.mp4 + .srt/.vtt captions. Skips a video unchanged since its last render.
Flag Does
--gif Adds a 720 px, 12 fps GIF.
--portrait Adds the 1080x1920 phone version.
--square Adds the 1080x1080 version (needs the square take).
--all-formats Adds both.
--only <landscape|portrait|square> Renders just that version.
--draft 15 fps at draft quality, about 2x faster → renders/<slug>.draft.mp4.
--4k 3840x2160 (portrait 2160x3840, square 2160x2160): Chrome renders the composition at twice the scale, from the 2x capture. It takes four times the temporary disk space, so pair it with --low-memory on a small disk.
--force Renders even when nothing changed.
--low-memory HyperFrames’ low-memory mode: one browser, slower, for a machine short on RAM or temporary disk space. The video is the same, so a later render without it still says up to date.
--no-build Renders the existing video/ without rebuilding.
-- <flags> Everything after -- goes to hyperframes render as it is, e.g. reelson render my-demo -- --crf 18. These flags count as a change: a different set renders again.

Every command prints its own usage with --help (reelson render --help, or reelson help render).

Command Does
reelson verify <slug...> | --all [--update] Re-records every take headless into a scratch folder and checks video.json still fits (markers, click numbers, zooms). --update keeps the new takes.
Command Does
reelson publish <slug...> [--to <channel,...> | --all-channels] [--dry-run] Uploads the render to the config’s channels (asks which without --to). A channel that already has it is skipped.
… --again Uploads a second copy.
… --replace Uploads the new render and makes the old video private. The URL changes.
… --update Rewrites the title, description, tags, captions and playlist, keeping the URL.
reelson channels Lists the channels and who each is logged in as.
reelson channels init Adds starter channels to the config.
reelson channels login <name> / logout <name> Signs a channel in (browser) or out.