cleya render
Render an animation to video. Best path: --scene <spec.json> — a declarative, seekable animation DSL (reveals, counters, progress bars, SVG staggers, tickers; --check to validate, --at/--preview to spot-check, --format for multi-size). Or --template for built-ins. Custom --html must expose window.CLEYA.seekTo(t) (CSS @keyframes won't sample) — or use --runtime gsap and call cleya.scene(tl). See docs/scene-spec.md.
Cost: slow — full renders take ~1s per second of output at 1080p30; use --preview (contact sheet) or --at (single frame) to iterate cheaply first
cleya render --scene ad.scene.json --duration 12 --format og,square,story
Options
| Flag | What it does | |
|---|---|---|
--html | Path to custom HTML file | string |
--template | Built-in template name | string · one of explainer-scene, kinetic-text, data-chart, title-card |
--scene | Declarative animation spec — file path or inline JSON (see docs/scene-spec.md) | string |
--brand | Brand profile — file path or inline JSON. With --scene: resolves $brand./$palette. tokens, merges fonts, applies safeMargin | string |
--emit-html | With --scene: write the compiled HTML here instead of rendering | string |
--runtime | With --html: bundle GSAP + the cleya.scene(tl) bridge | string · one of gsap |
--data | JSON data — file path or inline JSON. With --scene: binds $data.<dot.path> tokens over the spec (type-preserving — a counter target "to":"$data.days" becomes the number). With --template: template data. | string |
--data-each | Batch: a JSON array of data rows (file path or inline) — renders ONE output per row. Naming uses each row's _name/$output, else the index (out.mp4 -> out.<name>.mp4). Composes with --format. | string |
--duration | Animation duration in seconds (optional with --scene when the spec sets "duration") | string |
--fps | Frames per second (default 30) | string |
--width | Output width in pixels (default 1920) | string |
--height | Output height in pixels (default 1080) | string |
--scale | Device scale factor for retina output, Chrome engine (e.g. 2) | string |
--motion-blur | Shutter samples per frame, 2-8 — real temporal motion blur for fast moves (Chrome engine; ~Nx capture time) | string |
--engine | Capture engine (default auto = Chrome first) | string · one of auto, webkit, chrome |
--format | Adaptive export: preset name(s) or WxH, comma-separated (og,square,story,landscape,reel,twitter,…) | string |
--at | Preview: render a single PNG frame at this time in seconds (no video) | string |
--preview | Preview: contact sheet of 6 frames across the duration (no video) | boolean |
--wait | Readiness before capture (full render + preview): load | fonts |
--check | Validate a --scene spec and report errors/warnings, no render | boolean |
--preset | Animation style preset | string · one of corporate, playful, minimal, bold, elegant, tech |
--output | Output file path | string |
--overwrite | Overwrite output file if it exists | boolean |
Category: author — create media from specs (scene DSL, cards, titles, captions, voiceover, capture)
Generated from cleya capabilities, the toolkit's own manifest, so it cannot drift.
Run cleya render --help for the same information in your terminal.