Skip to main content

Instant drafts

draft is the deterministic fast path: starter + brand + copy → a rendered, measured video in one call, with no deliberation in the middle.

cleya draft --starter promo-hero --brand brand.json \
--copy '{"headline":"Ship it {accent:Friday}","tagline":"in one command","stat":42}' \
--output draft.mp4

The copy map

--copy takes { layerId: text | number }, either inline or as a file path. Types matter: strings set text, numbers set counter targets and bar values. Children inside a stack layer are reachable by id.

Inline spans work in copy — {accent:Friday} paints that run in the brand accent, {mono:v2} sets it in the mono face.

To find the ids and the knobs worth turning:

cleya starters --name promo-hero

What comes back

{
"success": true,
"output": "draft.mp4",
"starter": "promo-hero",
"applied": ["headline", "tagline", "stat"],
"frames": 300,
"qa": {
"contrast": "pass — 4 text regions checked, 0 findings",
"brand_score": 100,
"brand_ok": true
}
}

applied tells you which ids landed; any id that did not match comes back under unknown_ids rather than failing silently.

Variants

--format og,square,story renders every size from the same draft. --width / --height override the render size — though measurements say full-resolution variants usually beat draft-resolution ones on both time and simplicity, because per-frame overhead dominates at GPU speeds.

When not to use it

draft is for standard briefs. When a piece genuinely needs bespoke motion, start from a starter and adapt the spec, or drop to raw HTML with the GSAP runtime.