Install
openclaw skills install cinematic-story-video-genGenerate and create cinematic story videos—film-language lighting, shallow depth of field, widescreen 16:9, orange–teal grade, narrative camera moves, and score-like audio via WeryAI. Use when you need to produce emotional scenes, brand mood films, character beats, or image-to-video from a still; expand short briefs into full prompts before submit. Default: KLING_V3_0_PRO; draft: SEEDANCE_2_0.
openclaw skills install cinematic-story-video-genCinematic story video in one line: dramatic light, shallow depth of field, widescreen framing, believable skin, optional orange–teal contrast, subtle film grain, and camera grammar (dolly, track, orbit, foreground occlusion)—plus piano / strings / ambient-style audio when models allow.
Narrative cinema in motion: strong light–shadow hierarchy, shallow depth of field, widescreen framing, believable skin tones, warm key vs cool fill (orange–teal when it fits the scene), subtle film grain, and camera grammar that reads like a scene—not a filter dump.
Model choice (this package): ⭐ Best → KLING_V3_0_PRO (default for final emotion, skin, and lighting). 👍 Good → KLING_V3_0_STA (balanced cost). ⚡ Fast / draft → SEEDANCE_2_0 with resolution 720p (explicit resolution control; omit negative_prompt for this model). Kling rows must omit resolution from JSON.
Dependencies: WERYAI_API_KEY + Node.js 18+. This folder includes references/WERYAI_VIDEO_API.md (CLI/API reference); scripts/video_gen.js is supplied by your sync / publish step (same as other WeryAI video skills). Full commands and JSON fields: references/WERYAI_VIDEO_API.md. No other Cursor skills required.
WERYAI_API_KEY must be set before running video_gen.js.https image URLs. If the bundled runtime supports local file paths, review scripts/video_gen.js, verify read-and-upload behavior, and obtain explicit consent before using a local path.video_gen.js requires a non-empty model in every submit-* / wait JSON—no script default. List the chosen model_key in the confirmation table.submit-* / wait may consume credits; re-submit creates new paid tasks.WERYAI_API_KEY: Treat as a secret; never commit its value. OpenClaw metadata lists requires.env / primaryEnv so installers know it is mandatory at runtime.video_gen.js): Video tasks use https://api.weryai.com; the models list uses https://api-growth-agent.weryai.com. Do not document or rely on host overrides—only WERYAI_API_KEY is read from the environment.https URLs. If the bundled runtime can read local files, it may upload them to WeryAI to obtain a public URL before image-to-video; require review, verification, and explicit consent before that path.scripts/video_gen.js before production use.⚠️ No paid submit without explicit user confirmation. Do not call submit-text, submit-image, or wait until the user has explicitly approved the parameter table below, including the full expanded prompt (entire text, not a summary). Never infer consent from silence. Explicit means confirm / go / approved / yes, generate (or equivalent).
Parameter confirmation table (show before submit): model, duration, aspect_ratio, resolution (only if the chosen model supports it—never for Kling V3), generate_audio, negative_prompt (only for models that support it), full expanded prompt.
image URL, and tier:
KLING_V3_0_PROKLING_V3_0_STASEEDANCE_2_0 (use resolution 720p or 480p; do not send negative_prompt)model_key explicitly if it appears in the frozen table for the active channel—then ignore tier defaults for model.16:9 for widescreen story; use 9:16 or 1:1 when the user targets mobile or square feeds.prompt_length_limit) and asked not to rewrite, expand per ## Prompt expansion (mandatory). Do not submit only the user's minimal words.resolution; Seedance → include resolution when using that model; negative_prompt only for Kling (optional but recommended with a short cinematic-safe line).prompt; stop until explicit approval or edits.submit-text or submit-image. Do not start a long blocking wait in the same turn unless the user already asked to block until the video is ready.taskId / batchId (or documented id fields), immediately tell the user: accepted, id(s), short queue note, and ask whether to continue with status polling or wait. Do not run long invisible wait loops without this choice.status --task-id … or run wait --json '…' with the same payload—per user preference.[Video](https://…)). Do not wrap those links in code fences.Single source of truth: All concrete video_gen.js usage—submit-text / submit-image / submit-multi-image, status, wait, JSON field rules, image URL requirements, stdout keys, and copy-paste examples—is documented in references/WERYAI_VIDEO_API.md (next to SKILL.md under references/).
Portable invocation (OpenClaw {baseDir}): run from the skill package root; in OpenClaw listings, {baseDir} resolves to that root.
node {baseDir}/scripts/video_gen.js submit-text --json '{"model":"KLING_V3_0_PRO","prompt":"<expanded English prompt>","duration":10,"aspect_ratio":"16:9","generate_audio":true}'
node {baseDir}/scripts/video_gen.js status --task-id "<TASK_ID>"
Blocking until done (only if the user asked to wait): node {baseDir}/scripts/video_gen.js wait --json '…' with the same JSON shape—see references/WERYAI_VIDEO_API.md.
This skill adds only model-specific filtering on top of that doc: build JSON that satisfies ## Model and API constraints here (e.g. omit resolution for Kling V3; include resolution for Seedance 2.0; do not send negative_prompt to Seedance). Default rhythm: after explicit confirmation, prefer async submit-* then status; use wait only when the user asked to block until completion—see the Agent UX section in the API file for polling guidance.
video_gen.js does not auto-expand. Before submit-* or wait, turn short input into a full English production prompt aligned with cinematic story grammar—not generic “cinematic” adjectives only.
When: Brief, vague, missing shot/light/audio detail, or no usable prompt (topic only)—still build a full prompt.
What to add (checklist):
duration.generate_audio is true): labeled Audio: block—cinematic underscore (generic: piano, strings, subtle pulse or ambient electronic pads), room tone, soft foley; no copyrighted tracks or recognizable branded cues. If the user wants silent video: set generate_audio: false and omit audio from the prompt; state that in the confirmation table.Style anchors (weave naturally): cinematic, dramatic lighting, shallow depth of field, widescreen, film grain, orange teal contrast.
Length: Stay within prompt_length_limit 2000 for the selected model in the frozen table; drop lower-priority adjectives before losing the core beat.
Confirmation: The pre-submit table must include the full expanded prompt.
### Example prompts below are richness targets only—always derive from the user's actual brief.
Done when the user gets at least one playable Markdown inline link whose label is Video and whose target is https://…, or a clear failure with next steps. Pre-submit: parameters and full expanded prompt were explicitly confirmed. After submit: user was notified with task id(s) and chose status vs blocking wait. Submitted JSON must match the frozen row for the chosen model_key (especially: never send resolution to Kling V3; never send negative_prompt to Seedance 2.0). generate_audio defaults to true when the model supports audio unless the user requested silent output.
resolution on KLING_V3_0_PRO or KLING_V3_0_STA—it is unsupported and may cause parameter errors.negative_prompt for SEEDANCE_2_0 (not supported).references/WERYAI_VIDEO_API.md.WERYAI_API_KEY in files.Make a 16:9 cinematic brand mood film—slow push-in, orange-teal grade, shallow DOF, soft stringsWoman learns bad news by a rainy window—slow dolly in, teal shadows, warm lamp, piano and stringsTwo colleagues reconcile in a lobby—orbit, shallow DOF, foreground plant wipes frame, subtle scoreTurn this photo into a moody film scene—gentle push-in, film grain, orange key on skin, cool background, ambient bed (image URL in JSON)Derived from repository alignment with WeryAI model metadata (2026-03-21 snapshot). Re-run
node scripts/video_gen.js modelsafter platform upgrades and refresh this table if values change.
| model_key | durations | aspect_ratios | resolutions | Audio | negative_prompt | prompt limit |
|---|---|---|---|---|---|---|
KLING_V3_0_PRO | 5, 10, 15 | 9:16, 1:1, 16:9 | (omit—do not send) | Yes | Yes | 2000 |
KLING_V3_0_STA | 5, 10, 15 | 9:16, 1:1, 16:9 | (omit—do not send) | Yes | Yes | 2000 |
SEEDANCE_2_0 | 5, 10, 15 | 9:16, 1:1, 16:9 | 480p, 720p | Yes | No (do not send) | 2000 |
image)| model_key | durations | aspect_ratios | resolutions | Audio | negative_prompt | Notes |
|---|---|---|---|---|---|---|
KLING_V3_0_PRO | 5, 10, 15 | 9:16, 16:9, 1:1 | (omit) | Yes | Yes | single image |
KLING_V3_0_STA | 5, 10, 15 | 9:16, 16:9, 1:1 | (omit) | Yes | Yes | single image |
SEEDANCE_2_0 | 5, 10, 15 | 9:16, 1:1, 16:9 | 480p, 720p | Yes | No (do not send) | upload_image_limit 3 (this skill documents single-image flow by default) |
| Tier | model_key | Default duration | Notes |
|---|---|---|---|
| ⭐ Best (default) | KLING_V3_0_PRO | 10 (use 15 for slower emotional arcs) | Omit resolution. Optional negative_prompt for clean cinematic output |
| 👍 Good | KLING_V3_0_STA | 10 | Omit resolution. Lower cost than Pro |
| ⚡ Fast / draft | SEEDANCE_2_0 | 10 | Set resolution 720p (or 480p). No negative_prompt |
Tier keywords: unspecified / quality-first → Best; "balanced" / "good" → Good; "draft" / "cheap" / "fast" → Fast (SEEDANCE_2_0).
| Field | Value |
|---|---|
model | KLING_V3_0_PRO unless tier or user overrides |
aspect_ratio | 16:9 (widescreen story); 9:16 / 1:1 when the user names mobile or square |
duration | 10 (use 5 for a single beat; 15 on Kling/Seedance for slower arcs) |
resolution | Only for SEEDANCE_2_0: 720p (or 480p)—omit for Kling |
generate_audio | true unless the user requests silent |
negative_prompt | Kling only (optional); e.g. watermark, illegible text, oversharpened CGI, plastic skin—omit for Seedance |
## Prompt expansion (mandatory); pick model_key from tier rules.prompt, correct optional fields per model).submit-text → notify → user chooses status vs wait.Before use: Prefer public https:// URLs. Local paths only with verified runtime support and explicit consent.
image and model_key in the confirmation table.submit-image (or wait if the user pre-requested blocking).If the user asks for a seamless loop, append at the end of the expanded prompt: seamless loop, perfect loop, ends where it begins—no separate API flag.
Skill:
cinematic-story-video-gen.