Video generation with gen-ai (CLI & MCP)
Video is the most expensive modality — a single Sora 2 Pro call can exceed $5. This skill covers how to produce video reliably and cost-effectively via the Picsart gen-ai CLI or the @picsart/gen-ai-mcp MCP server.
When to use
Activate whenever the user asks to:
- Generate a video, clip, reel, trailer, demo, teaser, or ad spot
- Animate a still image (image-to-video / I2V)
- Edit or re-style an existing video (video-to-video / V2V)
- Extend a short clip to a longer one
- Build a talking-head avatar / explainer
- Attach an AI-generated soundtrack to a clip
- Pick between Sora, Kling, Veo, Runway, Luma, Hailuo, Pika, LTX, Wan, or Seedance
CLI vs MCP — both work
- CLI when installed — best for scripting, CI pipelines, and long-running extend chains.
- MCP server (
@picsart/gen-ai-mcp) when the user is in Claude Code, Codex, Cursor, Windsurf, or ChatGPT and the CLI isn't installed — the agent calls gen-ai_generate and gen-ai_extend natively.
Model selection cheat sheet
Use family aliases. gen-ai models --mode video shows what's current.
| Model / alias |
Type |
Strength |
When to pick |
sora-2-pro |
T2V |
Flagship OpenAI, strong narrative |
Hero reels, story beats |
sora-2 |
T2V |
Cheaper Sora tier |
Most high-quality T2V work |
veo-3.1 |
T2V |
Google flagship |
Photoreal, complex scenes |
veo-3.1-fast |
T2V |
Faster / cheaper Veo |
Iteration, drafts |
kling-v3-pro |
T2V |
Strong motion + camera control |
Action, product shots |
kling-v3-standard |
T2V |
Cheapest Kling |
Drafts, previews, social reels |
kling-motion-control-v3 |
I2V |
Animate a still |
Hero → reel |
kling-avatar |
I2V |
Talking-head avatars |
Explainers, product demos |
kling-v2a |
V2A |
Sync audio to video |
Add matched foley to a clip |
runway-gen4-ref |
I2V |
Reference-based motion |
On-brand animated shots |
runway-gen4.5 |
T2V |
Strong camera and lighting |
Cinematic T2V |
runway-gen4-aleph |
V2V |
Video-to-video edit |
Reformat, style transfer, reframing |
luma-ray2-t2v |
T2V |
Fast, stylized |
Short reels |
luma-flash2-i2v |
I2V |
Fast I2V |
Social reels |
hailuo-2.3-pro |
T2V |
MiniMax flagship |
High-motion shots |
pika-2.2-scenes / pika-2.2-frames |
I2V |
Composable shots |
Multi-shot reels |
ltx-pro-t2v |
T2V |
LTX-2, fast |
Quick iteration |
wan-t2v / seedance-t2v |
T2V |
Alt T2V providers |
Provider diversity |
sora-2-extend |
V2V |
Extend Sora clips |
Longer Sora output |
bytedance-video-upscaler |
V2V |
Upscale video |
Post-gen polish |
Future-proofing: family aliases (kling-v3-pro, sora-2) survive model upgrades. When the user names a specific version, honor it. New T2V and I2V models land frequently — always check list-models before using a version pin.
Quick decision tree
Hero / narrative / premium? → sora-2-pro or veo-3.1 (check pricing first!)
On-brand product/campaign reel? → runway-gen45-t2v or kling-v3-pro
Animate a still image? → kling-motion-control-v3 (pass -i hero)
On-brand animated from a reference? → runway-gen4-ref (pass -i ref.png)
Talking-head avatar / explainer? → kling-avatar (pass -i portrait)
Short draft / iteration? → kling-v3-standard or luma-ray2-t2v
Restyle / reformat an existing clip? → runway-aleph (pass --video input.mp4)
Add music/foley to an existing clip? → kling-v2a (pass --video clip.mp4)
Need longer than one call? → gen-ai extend --video clip.mp4 --times N --ar 16:9
Need 4K? → bytedance-upscaler post-gen
Prompting best practices
Shot, motion, mood — in that order
Video models read motion first, mood second, subject third. Lead with the camera.
- Camera / motion. "Slow dolly in," "hand-held push-in," "subject-tracking pan right," "locked-off tripod, no motion."
- Shot type. "Wide establishing," "medium close-up," "over-the-shoulder," "macro product detail."
- Subject + action. "Barista pours a latte; steam rises."
- Mood / style. "Cinematic, warm tungsten, golden hour, shallow depth of field."
- Duration cue. State the duration in the prompt AND pass
--duration. Models that don't respect --duration still honor "a 5-second clip" in the prompt.
Rules of thumb
- Short phrases beat run-ons. 2–3 short phrases separated by commas outperform one long sentence.
- Lock the subject with a reference image whenever possible.
runway-gen4-ref and kling-motion-control-v3 beat any T2V for brand consistency.
- Avoid contradictions. "Static subject, fast-moving camera" confuses every model. Pick one.
- Negative prompts:
--negative-prompt "warped faces, extra limbs, watermark, text, morphing" — still useful even on video.
- Aspect + duration determine cost. 16:9 / 5s is the cheapest safe default for social reels.
Family-specific tips
| Family |
Best for |
Prompt style |
| Sora |
Narrative continuity, multi-beat shots |
Describe the beats in order: "first, …, then, …, finally, …" |
| Veo |
Photoreal, complex scenes |
Natural language, include lighting terms |
| Kling |
Strong motion, product rotation |
Put motion first: "camera orbits left around the product" |
| Runway |
Cinematic, reference-based |
Short directive phrases; pass reference via -i |
| Luma |
Stylized, fast |
Lean on mood words — "dreamy, surreal, slow-motion" |
| Hailuo |
High motion |
Describe action explicitly |
| Pika |
Multi-shot composition |
Name the shot sequence explicitly |
Duration planning
Most models cap at 5–10 seconds per call. Build longer pieces with gen-ai extend. Pass --ar when extending local files so the workflow does not depend on local media probes:
gen-ai extend --video clip.mp4 --times 3 --ar 16:9 # chain 3 extensions (~7s each)
Each extend is billed separately — factor that into estimates.
Common recipes
T2V — 5s, 16:9 (cheapest safe default)
gen-ai generate -m kling-v3-standard \
-p "slow dolly in, ocean waves at dusk, golden light, cinematic" \
--duration 5 --ar 16:9 --json --no-input | jq -r '.url' | xargs curl -L -o reel.mp4
T2V — premium hero reel
gen-ai pricing sora-2-pro --duration 8
gen-ai generate -m sora-2-pro \
-p "first, establishing wide of a ceramic studio; then, slow push-in to a single espresso cup; finally, steam curls into frame" \
--duration 8 --ar 16:9 --json --no-input | jq -r '.url' | xargs curl -L -o hero-reel.mp4
I2V — animate a hero image
gen-ai generate -m kling-motion-control-v3 -i hero.webp \
-p "slow parallax push-in, subtle camera drift, steam rises" \
--duration 5 --json --no-input | jq -r '.url' | xargs curl -L -o hero-reel.mp4
Reference-based brand motion
gen-ai generate -m runway-gen4-ref -i brand-ref.png \
-p "camera dolly right, subject confident, warm studio light" \
--duration 5 --ar 16:9 --json --no-input | jq -r '.url' | xargs curl -L -o brand-reel.mp4
Talking-head avatar from a portrait
gen-ai generate -m kling-avatar -i portrait.png \
-p "Welcome to Picsart. Let's build something together." \
--duration 8 --json --no-input | jq -r '.url' | xargs curl -L -o explainer.mp4
Extend a 5s clip to ~28s
gen-ai extend --video hero-reel.mp4 --times 3 --ar 9:16 # 3 × 7s tails ≈ 26s + original 5s
Video-to-video edit (reformat / restyle)
gen-ai generate -m runway-aleph --video input.mp4 \
-p "reframe 16:9 to 9:16, preserve subject centered, slight blur on edges" \
--json --no-input | jq -r '.url' | xargs curl -L -o social.mp4
Attach an AI soundtrack
# Option A: no local mixer needed; V2A writes matched audio into the video
gen-ai video-audio -m kling-v2a --video reel.mp4 \
-p "confident warm synth bed with subtle foley, uplifting, 30s" \
--json --no-input | jq -r '.url' | xargs curl -L -o reel-with-sound.mp4
# Option B: optional local mixer if you already have ffmpeg and separate stems
gen-ai generate -m minimax-music -p "confident warm synth, 120bpm, uplifting, 30s" \
--json --no-input | jq -r '.url' | xargs curl -L -o music.mp3
ffmpeg -i reel.mp4 -i music.mp3 -c:v copy -map 0:v -map 1:a reel-with-music.mp4
Upscale post-gen
gen-ai generate -m bytedance-upscaler --video reel.mp4 --scale 2 --json --no-input \
| jq -r '.url' | xargs curl -L -o reel-4k.mp4
End-to-end — photo → 30s reel with music
# 1. Animate the hero
gen-ai generate -m kling-motion-control-v3 -i hero.webp --json --no-input \
| jq -r '.url' | xargs curl -L -o v.mp4
# 2. Extend twice (total ~21s)
gen-ai extend --video v.mp4 --times 2 --ar 9:16 --download ./extended
# 3. Add AI-matched music/foley without local media tools
# Replace <extended-video>.mp4 with the downloaded file name from ./extended.
gen-ai video-audio -m kling-v2a --video ./extended/<extended-video>.mp4 \
-p "confident warm synth bed, 120bpm, uplifting, subtle product foley" \
--json --no-input | jq -r '.url' | xargs curl -L -o final.mp4
MCP / natural-language patterns
When the CLI isn't installed, the MCP server gives the agent the same capabilities. Good prompts:
- "Animate hero.webp into a 10-second reel with Kling motion control. Add a MiniMax soundtrack. Save as reel.mp4."
- "Generate a cinematic 5s hero reel for a new ceramic cup product. Use Runway Gen 4.5."
- "Turn this portrait into a 8-second explainer avatar reading: 'Welcome to Picsart.' Use Kling Avatar."
- "Take reel.mp4 and reformat 16:9 → 9:16 preserving the subject. Use Runway Aleph."
- "Extend clip.mp4 by ~20 seconds with the same vibe."
- "Estimate first — then render a Sora 2 Pro hero shot 8 seconds 16:9. Show me the cost before spending."
The agent must:
- Always check
gen-ai pricing first for any T2V, I2V, or extend operation. Video is expensive.
- Prefer
kling-v3-standard, luma-ray2-t2v, or veo-3.1-fast for drafts; only upgrade to sora-2-pro or veo-3.1 for the final.
- Use I2V (reference-locked) whenever the user has a hero or brand asset — never T2V alone if a reference is available.
- Pause and confirm for any single call likely over $5 or batch likely over $20.
Cost control
Always check pricing before spending on video:
gen-ai pricing sora-2-pro --duration 8
gen-ai pricing kling-v3-pro --duration 5
gen-ai pricing veo-3 --duration 7
Rule-of-thumb per-clip cost:
- Kling Standard / Luma / Hailuo — ~$0.30–$0.80
- Kling Pro / Veo Fast / Runway Gen 4.5 — ~$1–$2
- Sora 2 / Veo Flagship — ~$3–$5
- Sora 2 Pro / 10s+ extends — $5–$15+
Draft → final pattern: iterate on prompts with kling-v3-standard (cheap). Once the shot is right, regenerate the final with the flagship. Cuts cost 5–10×.
Output hygiene
- Container:
.mp4 is the safe default. Some tools emit .webm — use --format mp4 to force.
- Duration: social reels 5–15s; hero films 15–30s; demos 30–60s. Over 30s usually means chaining.
- Aspect: 16:9 for YouTube / LP; 9:16 for IG Story / TikTok / Shorts; 1:1 for feed posts.
- Poster frame: use the original hero image, an approved still, or a generated thumbnail for thumbnail / OG. Optional local extraction if ffmpeg is already available:
ffmpeg -ss 00:00:02 -i reel.mp4 -frames:v 1 poster.webp.
Troubleshooting
| Symptom |
Fix |
| Subject morphs / warps |
Switch to I2V (-i reference.png); reduce duration; use runway-gen4-ref |
| No motion / static |
Put motion first in the prompt: "slow push-in, …" |
| Too much motion |
Add "locked-off tripod, minimal motion" to the prompt |
| Wrong aspect |
Pass --ar 16:9 explicitly; some models ignore prompt-only aspect cues |
| Exceeds $5 per call |
Switch to kling-v3-standard or luma-ray2-t2v for drafts; only upgrade finals |
| Extend produces a cut |
Increase overlap in the base clip; some models need 1–2s of the tail for continuity |
| Face drifts in avatar |
Use a higher-resolution portrait (1024×1024+); pass kling-avatar a front-facing reference |
For agents
- Always check pricing before spending on video. A single Sora 2 Pro call can exceed $5.
- Prefer Kling Standard / Luma / Veo Fast for drafts; upgrade only the final cut.
- If the user has a reference image, use I2V (
runway-gen4-ref, kling-motion-control-v3) — never T2V alone.
- Default duration = 5s at
kling-v3-standard unless user specifies otherwise.
- Default aspect = 16:9 unless the user names a social platform.
- Never chain more than 3 extends without warning the user — cost compounds.
- If the CLI isn't installed and MCP is available, call MCP tools directly.
- Log every video generation in
~/.gen-ai/history/ — expensive artifacts should never be lost.
1---2name: gen-ai-video3description: Generate video via the Picsart gen-ai CLI or MCP server. AUTO-TRIGGER whenever the user asks to generate, create, render, make, or animate a video, clip, reel, trailer, product demo, motion graphic, animation, teaser, or ad spot; animate a still image; extend a clip; add a soundtrack; build a talking-head explainer; or pick between Sora / Kling / Veo / Runway / Luma / Hailuo / Pika / LTX / Wan / Seedance.4---56# Video generation with gen-ai (CLI & MCP)78Video is the most expensive modality — a single Sora 2 Pro call can exceed $5. This skill covers **how to produce video reliably and cost-effectively** via the Picsart gen-ai CLI or the `@picsart/gen-ai-mcp` MCP server.910## When to use1112Activate whenever the user asks to:1314- Generate a video, clip, reel, trailer, demo, teaser, or ad spot15- Animate a still image (image-to-video / I2V)16- Edit or re-style an existing video (video-to-video / V2V)17- Extend a short clip to a longer one18- Build a talking-head avatar / explainer19- Attach an AI-generated soundtrack to a clip20- Pick between Sora, Kling, Veo, Runway, Luma, Hailuo, Pika, LTX, Wan, or Seedance2122## CLI vs MCP — both work2324- **CLI** when installed — best for scripting, CI pipelines, and long-running extend chains.25- **MCP server** (`@picsart/gen-ai-mcp`) when the user is in Claude Code, Codex, Cursor, Windsurf, or ChatGPT and the CLI isn't installed — the agent calls `gen-ai_generate` and `gen-ai_extend` natively.2627## Model selection cheat sheet2829Use family aliases. `gen-ai models --mode video` shows what's current.3031| Model / alias | Type | Strength | When to pick |32|---|---|---|---|33| `sora-2-pro` | T2V | Flagship OpenAI, strong narrative | Hero reels, story beats |34| `sora-2` | T2V | Cheaper Sora tier | Most high-quality T2V work |35| `veo-3.1` | T2V | Google flagship | Photoreal, complex scenes |36| `veo-3.1-fast` | T2V | Faster / cheaper Veo | Iteration, drafts |37| `kling-v3-pro` | T2V | Strong motion + camera control | Action, product shots |38| `kling-v3-standard` | T2V | Cheapest Kling | Drafts, previews, social reels |39| `kling-motion-control-v3` | I2V | Animate a still | Hero → reel |40| `kling-avatar` | I2V | Talking-head avatars | Explainers, product demos |41| `kling-v2a` | V2A | Sync audio to video | Add matched foley to a clip |42| `runway-gen4-ref` | I2V | Reference-based motion | On-brand animated shots |43| `runway-gen4.5` | T2V | Strong camera and lighting | Cinematic T2V |44| `runway-gen4-aleph` | V2V | Video-to-video edit | Reformat, style transfer, reframing |45| `luma-ray2-t2v` | T2V | Fast, stylized | Short reels |46| `luma-flash2-i2v` | I2V | Fast I2V | Social reels |47| `hailuo-2.3-pro` | T2V | MiniMax flagship | High-motion shots |48| `pika-2.2-scenes` / `pika-2.2-frames` | I2V | Composable shots | Multi-shot reels |49| `ltx-pro-t2v` | T2V | LTX-2, fast | Quick iteration |50| `wan-t2v` / `seedance-t2v` | T2V | Alt T2V providers | Provider diversity |51| `sora-2-extend` | V2V | Extend Sora clips | Longer Sora output |52| `bytedance-video-upscaler` | V2V | Upscale video | Post-gen polish |5354**Future-proofing:** family aliases (`kling-v3-pro`, `sora-2`) survive model upgrades. When the user names a specific version, honor it. New T2V and I2V models land frequently — always check `list-models` before using a version pin.5556## Quick decision tree5758```59Hero / narrative / premium? → sora-2-pro or veo-3.1 (check pricing first!)60On-brand product/campaign reel? → runway-gen45-t2v or kling-v3-pro61Animate a still image? → kling-motion-control-v3 (pass -i hero)62On-brand animated from a reference? → runway-gen4-ref (pass -i ref.png)63Talking-head avatar / explainer? → kling-avatar (pass -i portrait)64Short draft / iteration? → kling-v3-standard or luma-ray2-t2v65Restyle / reformat an existing clip? → runway-aleph (pass --video input.mp4)66Add music/foley to an existing clip? → kling-v2a (pass --video clip.mp4)67Need longer than one call? → gen-ai extend --video clip.mp4 --times N --ar 16:968Need 4K? → bytedance-upscaler post-gen69```7071## Prompting best practices7273### Shot, motion, mood — in that order7475Video models read **motion first**, mood second, subject third. Lead with the camera.76771. **Camera / motion.** "Slow dolly in," "hand-held push-in," "subject-tracking pan right," "locked-off tripod, no motion."782. **Shot type.** "Wide establishing," "medium close-up," "over-the-shoulder," "macro product detail."793. **Subject + action.** "Barista pours a latte; steam rises."804. **Mood / style.** "Cinematic, warm tungsten, golden hour, shallow depth of field."815. **Duration cue.** State the duration in the prompt AND pass `--duration`. Models that don't respect `--duration` still honor "a 5-second clip" in the prompt.8283### Rules of thumb8485- **Short phrases beat run-ons.** 2–3 short phrases separated by commas outperform one long sentence.86- **Lock the subject** with a reference image whenever possible. `runway-gen4-ref` and `kling-motion-control-v3` beat any T2V for brand consistency.87- **Avoid contradictions.** "Static subject, fast-moving camera" confuses every model. Pick one.88- **Negative prompts**: `--negative-prompt "warped faces, extra limbs, watermark, text, morphing"` — still useful even on video.89- **Aspect + duration determine cost.** 16:9 / 5s is the cheapest safe default for social reels.9091### Family-specific tips9293| Family | Best for | Prompt style |94|---|---|---|95| Sora | Narrative continuity, multi-beat shots | Describe the beats in order: "first, …, then, …, finally, …" |96| Veo | Photoreal, complex scenes | Natural language, include lighting terms |97| Kling | Strong motion, product rotation | Put motion first: "camera orbits left around the product" |98| Runway | Cinematic, reference-based | Short directive phrases; pass reference via `-i` |99| Luma | Stylized, fast | Lean on mood words — "dreamy, surreal, slow-motion" |100| Hailuo | High motion | Describe action explicitly |101| Pika | Multi-shot composition | Name the shot sequence explicitly |102103### Duration planning104105Most models cap at 5–10 seconds per call. Build longer pieces with `gen-ai extend`. Pass `--ar` when extending local files so the workflow does not depend on local media probes:106107```bash108gen-ai extend --video clip.mp4 --times 3 --ar 16:9 # chain 3 extensions (~7s each)109```110111Each extend is billed separately — factor that into estimates.112113## Common recipes114115### T2V — 5s, 16:9 (cheapest safe default)116117```bash118gen-ai generate -m kling-v3-standard \119 -p "slow dolly in, ocean waves at dusk, golden light, cinematic" \120 --duration 5 --ar 16:9 --json --no-input | jq -r '.url' | xargs curl -L -o reel.mp4121```122123### T2V — premium hero reel124125```bash126gen-ai pricing sora-2-pro --duration 8127gen-ai generate -m sora-2-pro \128 -p "first, establishing wide of a ceramic studio; then, slow push-in to a single espresso cup; finally, steam curls into frame" \129 --duration 8 --ar 16:9 --json --no-input | jq -r '.url' | xargs curl -L -o hero-reel.mp4130```131132### I2V — animate a hero image133134```bash135gen-ai generate -m kling-motion-control-v3 -i hero.webp \136 -p "slow parallax push-in, subtle camera drift, steam rises" \137 --duration 5 --json --no-input | jq -r '.url' | xargs curl -L -o hero-reel.mp4138```139140### Reference-based brand motion141142```bash143gen-ai generate -m runway-gen4-ref -i brand-ref.png \144 -p "camera dolly right, subject confident, warm studio light" \145 --duration 5 --ar 16:9 --json --no-input | jq -r '.url' | xargs curl -L -o brand-reel.mp4146```147148### Talking-head avatar from a portrait149150```bash151gen-ai generate -m kling-avatar -i portrait.png \152 -p "Welcome to Picsart. Let's build something together." \153 --duration 8 --json --no-input | jq -r '.url' | xargs curl -L -o explainer.mp4154```155156### Extend a 5s clip to ~28s157158```bash159gen-ai extend --video hero-reel.mp4 --times 3 --ar 9:16 # 3 × 7s tails ≈ 26s + original 5s160```161162### Video-to-video edit (reformat / restyle)163164```bash165gen-ai generate -m runway-aleph --video input.mp4 \166 -p "reframe 16:9 to 9:16, preserve subject centered, slight blur on edges" \167 --json --no-input | jq -r '.url' | xargs curl -L -o social.mp4168```169170### Attach an AI soundtrack171172```bash173# Option A: no local mixer needed; V2A writes matched audio into the video174gen-ai video-audio -m kling-v2a --video reel.mp4 \175 -p "confident warm synth bed with subtle foley, uplifting, 30s" \176 --json --no-input | jq -r '.url' | xargs curl -L -o reel-with-sound.mp4177178# Option B: optional local mixer if you already have ffmpeg and separate stems179gen-ai generate -m minimax-music -p "confident warm synth, 120bpm, uplifting, 30s" \180 --json --no-input | jq -r '.url' | xargs curl -L -o music.mp3181ffmpeg -i reel.mp4 -i music.mp3 -c:v copy -map 0:v -map 1:a reel-with-music.mp4182```183184### Upscale post-gen185186```bash187gen-ai generate -m bytedance-upscaler --video reel.mp4 --scale 2 --json --no-input \188 | jq -r '.url' | xargs curl -L -o reel-4k.mp4189```190191### End-to-end — photo → 30s reel with music192193```bash194# 1. Animate the hero195gen-ai generate -m kling-motion-control-v3 -i hero.webp --json --no-input \196 | jq -r '.url' | xargs curl -L -o v.mp4197198# 2. Extend twice (total ~21s)199gen-ai extend --video v.mp4 --times 2 --ar 9:16 --download ./extended200201# 3. Add AI-matched music/foley without local media tools202# Replace <extended-video>.mp4 with the downloaded file name from ./extended.203gen-ai video-audio -m kling-v2a --video ./extended/<extended-video>.mp4 \204 -p "confident warm synth bed, 120bpm, uplifting, subtle product foley" \205 --json --no-input | jq -r '.url' | xargs curl -L -o final.mp4206```207208## MCP / natural-language patterns209210When the CLI isn't installed, the MCP server gives the agent the same capabilities. Good prompts:211212- *"Animate hero.webp into a 10-second reel with Kling motion control. Add a MiniMax soundtrack. Save as reel.mp4."*213- *"Generate a cinematic 5s hero reel for a new ceramic cup product. Use Runway Gen 4.5."*214- *"Turn this portrait into a 8-second explainer avatar reading: 'Welcome to Picsart.' Use Kling Avatar."*215- *"Take reel.mp4 and reformat 16:9 → 9:16 preserving the subject. Use Runway Aleph."*216- *"Extend clip.mp4 by ~20 seconds with the same vibe."*217- *"Estimate first — then render a Sora 2 Pro hero shot 8 seconds 16:9. Show me the cost before spending."*218219The agent must:2202211. **Always check `gen-ai pricing` first** for any T2V, I2V, or extend operation. Video is expensive.2222. **Prefer `kling-v3-standard`, `luma-ray2-t2v`, or `veo-3.1-fast` for drafts**; only upgrade to `sora-2-pro` or `veo-3.1` for the final.2233. **Use I2V (reference-locked)** whenever the user has a hero or brand asset — never T2V alone if a reference is available.2244. **Pause and confirm** for any single call likely over $5 or batch likely over $20.225226## Cost control227228Always check pricing before spending on video:229230```bash231gen-ai pricing sora-2-pro --duration 8232gen-ai pricing kling-v3-pro --duration 5233gen-ai pricing veo-3 --duration 7234```235236**Rule-of-thumb per-clip cost:**237238- Kling Standard / Luma / Hailuo — ~$0.30–$0.80239- Kling Pro / Veo Fast / Runway Gen 4.5 — ~$1–$2240- Sora 2 / Veo Flagship — ~$3–$5241- Sora 2 Pro / 10s+ extends — $5–$15+242243**Draft → final pattern**: iterate on prompts with `kling-v3-standard` (cheap). Once the shot is right, regenerate the final with the flagship. Cuts cost 5–10×.244245## Output hygiene246247- **Container**: `.mp4` is the safe default. Some tools emit `.webm` — use `--format mp4` to force.248- **Duration**: social reels 5–15s; hero films 15–30s; demos 30–60s. Over 30s usually means chaining.249- **Aspect**: 16:9 for YouTube / LP; 9:16 for IG Story / TikTok / Shorts; 1:1 for feed posts.250- **Poster frame**: use the original hero image, an approved still, or a generated thumbnail for thumbnail / OG. Optional local extraction if ffmpeg is already available: `ffmpeg -ss 00:00:02 -i reel.mp4 -frames:v 1 poster.webp`.251252## Troubleshooting253254| Symptom | Fix |255|---|---|256| Subject morphs / warps | Switch to I2V (`-i reference.png`); reduce duration; use `runway-gen4-ref` |257| No motion / static | Put motion first in the prompt: "slow push-in, …" |258| Too much motion | Add "locked-off tripod, minimal motion" to the prompt |259| Wrong aspect | Pass `--ar 16:9` explicitly; some models ignore prompt-only aspect cues |260| Exceeds $5 per call | Switch to `kling-v3-standard` or `luma-ray2-t2v` for drafts; only upgrade finals |261| Extend produces a cut | Increase overlap in the base clip; some models need 1–2s of the tail for continuity |262| Face drifts in avatar | Use a higher-resolution portrait (1024×1024+); pass `kling-avatar` a front-facing reference |263264## For agents265266- **Always check pricing** before spending on video. A single Sora 2 Pro call can exceed $5.267- **Prefer Kling Standard / Luma / Veo Fast for drafts**; upgrade only the final cut.268- **If the user has a reference image**, use I2V (`runway-gen4-ref`, `kling-motion-control-v3`) — never T2V alone.269- **Default duration = 5s** at `kling-v3-standard` unless user specifies otherwise.270- **Default aspect = 16:9** unless the user names a social platform.271- **Never chain more than 3 extends** without warning the user — cost compounds.272- **If the CLI isn't installed and MCP is available**, call MCP tools directly.273- **Log every video generation** in `~/.gen-ai/history/` — expensive artifacts should never be lost.