moda-video-clip
PREREQUISITE — load moda-core once per session (step-0, write contract,
free/metered map). Already loaded? Skip ahead. If you cannot load it, the
non-negotiables: run moda doctor --json before anything; moda brand list
before creating; writes that pin a revision use your last read's — on
stale_revision, re-read and retry once (it heals); send the canvas link the
moment it exists; stuck or failed? moda ask "<question>" — free and fast,
never guess.
Cards before knobs
--model is REQUIRED on every call and there is no "auto". Read the capability
cards FIRST and copy values verbatim — guessing a duration, ratio, resolution or
--model-params value is how a call 422s.
moda media models — one card per model: modes (prompt→video, image→video,
reference→video, extend), duration and resolution envelopes, aspect ratios,
audio behaviour, billing basis.
- Pin the knobs on EVERY call: explicit
--duration (omitting it reserves the
model's LONGEST clip) and the resolution the pass needs. Knobs snap
server-side — read applied and adjustments on the result, never assume.
- Nothing is charged until a finished render is collected, so
--no-wait +
moda task status [TASK_REF] --wait is how several drafts run at once. A
re-run of the same call replays the existing render instead of paying twice;
a deliberate retake needs a changed knob (--seed, or a new prompt).
Sizes and defaults
| Pass |
Duration |
Resolution |
Audio |
| Draft |
shortest legal (≈4 s) |
720p |
silent where silence is a price axis |
| Hero |
what the deliverable needs |
what it will be seen at |
per the card |
| Upscale |
— |
one tier up, on the winner only |
unchanged |
Hard edges, facts not preferences: video models mangle text, prices and logos —
real type and brand marks go on the canvas, never in a prompt (that is
moda-video-motion's job). There is no free-form video-to-video edit: a source
clip is a generation reference, an --extend-video base, or the subject of
upscale-video / reframe-video.
Recipe — the draft ladder (the DEFAULT for anything a user will see)
- Start assets, if any:
moda brand show [BRAND_REF] --json for durable logo
refs (LOOK at them first); a canvas frame via moda export [CANVAS_REF] --format png --page [N] --pixel-ratio 2 -o frame.png; user footage via moda file upload [clip.mp4].
- Draft.
moda media generate-video --prompt "[one complete instruction: subject, motion, camera, style, mood]" --model veo-3.1-lite --duration 4 --resolution 720p --no-generate-audio -o draft.mp4 — it comes back while you can still change your mind.
- Look at it.
moda media video-frames draft.mp4 --count 4 -o frames/ — FREE, and the only way to SEE a render. Judge the frames against the brief; never present a clip you have not looked at.
- Fix, don't escalate. A draft that missed is nearly always a PROMPT problem: change the prompt, re-draft on the fast lane. Stepping up a tier buys a sharper version of the wrong clip.
- Commit. Only the surviving direction, at the length and resolution the deliverable needs, on the model the ask deserves:
moda media generate-video --prompt "[revised]" --model [HERO_MODEL] --duration [N] --resolution [TIER] -o hero.mp4.
- Frame-check the hero the same way, then enhance the WINNER only:
moda media upscale-video hero.mp4 --resolution 1080p -o final.mp4, or moda media reframe-video hero.mp4 --aspect-ratio 9:16 -o vertical.mp4.
- Deliver: the result is a durable
file_…. Fetch it with moda file download [FILE_REF] -o [name].mp4, hand over the path plus the usage receipt. Going on a canvas instead (type, a price, a logo, a cut)? Hand off to moda-video-motion — <video> markup is the only way clips land on a canvas.
Examples
- "a 10-second product video" → ladder: draft, frames, hero render.
- "animate our logo into a stinger" → image-to-video with the logo as
--image.
- "make this 6s clip longer" →
--extend-video on a model whose card shows it.
- "make the 16:9 into a story cut" →
reframe-video --aspect-ratio 9:16.
- "animate this quote / this headline" → not this lane: moda-video-motion sets
real type on a canvas; a model would mangle it.
Errors
Any typed error → load moda-core and read its recovery reference.
422 = a guessed parameter: re-read the model card and copy the value verbatim.
Empty frames (no_frames_decoded) means Moda could not DECODE the file — never
regenerate on it.
Make it recurring
Pin the model and brand defaults for this repo → moda-context; a recurring
product-clip cadence → moda-automate.
See also: moda-video — the lane fork, canvas motion, mp4/gif export ·
moda-core — the contract, recovery, everything Moda can do.
References
| Doc |
Load when |
| references/video.md |
always — model strengths, knob rules, prompt craft, workflows |
| references/omni-and-media.md |
metered-lane semantics, the best-of-N pattern, audio pairing |
1---2name: moda-video-clip3description: Generate video clips: prompt-to-video, image-to-video, reference-guided, extend, upscale, reframe; text CONTENT → -motion. Draft cheap, then hero render. Metered.4---56# moda-video-clip78<!-- moda:banner -->9**PREREQUISITE — load `moda-core` once per session** (step-0, write contract,10free/metered map). Already loaded? Skip ahead. If you cannot load it, the11non-negotiables: run `moda doctor --json` before anything; `moda brand list`12before creating; writes that pin a revision use your last read's — on13`stale_revision`, re-read and retry once (it heals); send the canvas link the14moment it exists; stuck or failed? `moda ask "<question>"` — free and fast,15never guess.16<!-- /moda:banner -->1718## Cards before knobs1920`--model` is REQUIRED on every call and there is no "auto". Read the capability21cards FIRST and copy values verbatim — guessing a duration, ratio, resolution or22`--model-params` value is how a call 422s.23241. `moda media models` — one card per model: modes (prompt→video, image→video,25 reference→video, extend), duration and resolution envelopes, aspect ratios,26 audio behaviour, billing basis.272. Pin the knobs on EVERY call: explicit `--duration` (omitting it reserves the28 model's LONGEST clip) and the resolution the pass needs. Knobs snap29 server-side — read `applied` and `adjustments` on the result, never assume.303. Nothing is charged until a finished render is collected, so `--no-wait` +31 `moda task status [TASK_REF] --wait` is how several drafts run at once. A32 re-run of the same call replays the existing render instead of paying twice;33 a deliberate retake needs a changed knob (`--seed`, or a new prompt).3435## Sizes and defaults3637| Pass | Duration | Resolution | Audio |38|---|---|---|---|39| Draft | shortest legal (≈4 s) | 720p | silent where silence is a price axis |40| Hero | what the deliverable needs | what it will be seen at | per the card |41| Upscale | — | one tier up, on the winner only | unchanged |4243Hard edges, facts not preferences: video models mangle text, prices and logos —44real type and brand marks go on the canvas, never in a prompt (that is45moda-video-motion's job). There is no free-form video-to-video edit: a source46clip is a generation reference, an `--extend-video` base, or the subject of47`upscale-video` / `reframe-video`.4849## Recipe — the draft ladder (the DEFAULT for anything a user will see)50511. Start assets, if any: `moda brand show [BRAND_REF] --json` for durable logo52 refs (LOOK at them first); a canvas frame via `moda export [CANVAS_REF] --format png --page [N] --pixel-ratio 2 -o frame.png`; user footage via `moda file upload [clip.mp4]`.532. **Draft.** `moda media generate-video --prompt "[one complete instruction: subject, motion, camera, style, mood]" --model veo-3.1-lite --duration 4 --resolution 720p --no-generate-audio -o draft.mp4` — it comes back while you can still change your mind.543. **Look at it.** `moda media video-frames draft.mp4 --count 4 -o frames/` — FREE, and the only way to SEE a render. Judge the frames against the brief; never present a clip you have not looked at.554. **Fix, don't escalate.** A draft that missed is nearly always a PROMPT problem: change the prompt, re-draft on the fast lane. Stepping up a tier buys a sharper version of the wrong clip.565. **Commit.** Only the surviving direction, at the length and resolution the deliverable needs, on the model the ask deserves: `moda media generate-video --prompt "[revised]" --model [HERO_MODEL] --duration [N] --resolution [TIER] -o hero.mp4`.576. Frame-check the hero the same way, then enhance the WINNER only: `moda media upscale-video hero.mp4 --resolution 1080p -o final.mp4`, or `moda media reframe-video hero.mp4 --aspect-ratio 9:16 -o vertical.mp4`.587. Deliver: the result is a durable `file_…`. Fetch it with `moda file download [FILE_REF] -o [name].mp4`, hand over the path plus the usage receipt. Going on a canvas instead (type, a price, a logo, a cut)? Hand off to moda-video-motion — `<video>` markup is the only way clips land on a canvas.5960## Examples6162- "a 10-second product video" → ladder: draft, frames, hero render.63- "animate our logo into a stinger" → image-to-video with the logo as `--image`.64- "make this 6s clip longer" → `--extend-video` on a model whose card shows it.65- "make the 16:9 into a story cut" → `reframe-video --aspect-ratio 9:16`.66- "animate this quote / this headline" → not this lane: moda-video-motion sets67 real type on a canvas; a model would mangle it.6869## Errors7071Any typed error → load moda-core and read its recovery reference.72422 = a guessed parameter: re-read the model card and copy the value verbatim.73Empty frames (`no_frames_decoded`) means Moda could not DECODE the file — never74regenerate on it.7576## Make it recurring7778Pin the model and brand defaults for this repo → moda-context; a recurring79product-clip cadence → moda-automate.8081See also: moda-video — the lane fork, canvas motion, mp4/gif export ·82moda-core — the contract, recovery, everything Moda can do.8384## References8586| Doc | Load when |87|---|---|88| references/video.md | always — model strengths, knob rules, prompt craft, workflows |89| references/omni-and-media.md | metered-lane semantics, the best-of-N pattern, audio pairing |