Cinematic story & film-language video
Cinematic 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.
Use when
- - Someone asks for a cinematic, film look, movie-like, or mood / atmosphere clip with story or emotion (not only a generic filter).
- Brand film, hero moment, dialogue-free beat, or B-roll that should read like narrative cinema.
- Text-to-video or image-to-video (single reference still) with 16:9 (default), 9:16, or 1:1.
- Users mention orange and teal, film grain, bokeh, rack focus, slow push-in, or cinematic lighting.
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.
Prerequisites
- -
WERYAI_API_KEY must be set before running video_gen.js. - Node.js 18+; prefer public
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. - Model:
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. - Each successful
submit-* / wait may consume credits; re-submit creates new paid tasks.
Security, secrets, and API hosts
- -
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. - API hosts (fixed in
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. - Local image handling: Prefer
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. - Higher assurance: Run in an isolated environment; review
scripts/video_gen.js before production use.
Pre-submit gate (mandatory)
⚠️ 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.
Workflow
- 1. Confirm the request matches this skill (text-to-video and/or single image-to-video).
- Collect the user's brief, optional
image URL, and tier:
-
Default / best / "final" →
KLING_V3_0_PRO
-
Balanced / good →
KLING_V3_0_STA
-
Draft / cheap / fast →
SEEDANCE_2_0 (use
resolution 720p or
480p;
do not send
negative_prompt)
- User may
name a model_key explicitly if it appears in the frozen table for the active channel—then ignore tier defaults for
model.
- 3. Collect aspect: default
16:9 for widescreen story; use 9:16 or 1:1 when the user targets mobile or square feeds. - Expand prompt (mandatory): Unless the user supplied a finished long prompt (within
prompt_length_limit) and asked not to rewrite, expand per ## Prompt expansion (mandatory). Do not submit only the user's minimal words. - Validate JSON fields against the frozen tables: Kling → omit
resolution; Seedance → include resolution when using that model; negative_prompt only for Kling (optional but recommended with a short cinematic-safe line). - Pre-submit gate: Show the confirmation table with the full expanded
prompt; stop until explicit approval or edits. - Submit (async, default): After approval, run
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. - Immediate notify: On success with
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. - Continue (user-driven): Only after the user agrees, poll
status --task-id … or run wait --json '…' with the same payload—per user preference. - When presenting playable URLs, use Markdown inline links only (e.g.
[Video](https://…)). Do not wrap those links in code fences.
CLI reference
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.
CODEBLOCK0
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.
Prompt expansion (mandatory)
INLINECODE92 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):
- - Look: cinematic, dramatic lighting, shallow depth of field, widescreen composition, subtle film grain, orange–teal or warm key vs cool fill, natural skin tone priority for people.
- Lens & depth: subtle anamorphic-style cues if appropriate; rack focus or bokeh where it serves emotion; foreground objects for parallax and occlusion transitions.
- Camera grammar (pick 1–2 per clip): slow push-in (dolly in); lateral track; gentle orbit; foreground silhouette passing—describe speed and motivation (hesitation, revelation, intimacy).
- Narrative: a clear emotional beat or story moment within
duration. - Negative space & composition: rule-of-thirds, lead room, eye-line continuity if two subjects.
- Audio (mandatory when
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.
Definition of done
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.
Boundaries (out of scope)
- - Do not send
resolution on KLING_V3_0_PRO or KLING_V3_0_STA—it is unsupported and may cause parameter errors. - Do not send
negative_prompt for SEEDANCE_2_0 (not supported). - Do not rely on paths or unofficial docs outside this package for CLI/API details; use only
references/WERYAI_VIDEO_API.md. - Do not embed the secret value of
WERYAI_API_KEY in files. - Do not wrap user-facing playable URLs in Markdown code fences.
Example prompts
- - INLINECODE121
- INLINECODE122
- INLINECODE123
- INLINECODE124
Model and API constraints (frozen for this skill)
Derived from repository alignment with WeryAI model metadata (2026-03-21 snapshot). Re-run node scripts/video_gen.js models after platform upgrades and refresh this table if values change.
Text-to-video
| modelkey | durations | aspectratios | resolutions | Audio | negative_prompt | prompt limit |
|---|
| INLINECODE126 | 5, 10, 15 | 9:16, 1:1, 16:9 | (omit—do not send) | Yes | Yes | 2000 |
| INLINECODE127 |
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-to-video (single image)
| modelkey | durations | aspectratios | resolutions | Audio | negative_prompt | Notes |
|---|
| INLINECODE130 | 5, 10, 15 | 9:16, 16:9, 1:1 | (omit) | Yes | Yes | single INLINECODE131 |
| INLINECODE132 |
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) |
Recommended models
| Tier | model_key | Default duration | Notes |
|---|
| ⭐ Best (default) | INLINECODE136 | 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).
Default parameters
| Field | Value |
|---|
| INLINECODE147 | INLINECODE148 unless tier or user overrides |
| INLINECODE149 |
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 |
Scenario: Text-to-video cinematic story
- 1. Capture subject, emotion, and setting (or accept a minimal brief).
- Expand per
## Prompt expansion (mandatory); pick model_key from tier rules. - Pre-submit gate → explicit user confirmation (full
prompt, correct optional fields per model). submit-text → notify → user chooses status vs wait.
Scenario: Image-to-video cinematic story
Before use: Prefer public https:// URLs. Local paths only with verified runtime support and explicit consent.
- 1. Plan motion (focus pull, parallax, occlusion) and respect likeness if requested.
- Expand prompt; include
image and model_key in the confirmation table. - After explicit confirm:
submit-image (or wait if the user pre-requested blocking).
Loop seam (optional)
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.
电影叙事与影视语言视频
电影叙事视频一句话概括:戏剧性光影、浅景深、宽银幕构图、可信的肤色、可选橙青对比、细腻胶片颗粒,以及镜头语法(推轨、平移、环绕、前景遮挡)——在模型支持时配合钢琴/弦乐/氛围风格音频。
适用场景
- - 用户要求制作具有电影感、胶片质感、类似电影或氛围/情绪的片段,且包含故事或情感(而非仅通用滤镜)。
- 品牌宣传片、高光时刻、无对白段落或B-roll素材,需呈现叙事电影风格。
- 文生视频或图生视频(单张参考图片),支持16:9(默认)、9:16或1:1比例。
- 用户提及橙青色调、胶片颗粒、散景、焦点切换、缓慢推进或电影级布光。
动态叙事电影: 强烈的明暗层次、浅景深、宽银幕构图、可信的肤色、暖调主光与冷调补光(场景适合时采用橙青对比)、细腻胶片颗粒,以及具有场景感的镜头语法——而非滤镜堆砌。
模型选择(本技能包): ⭐ 最佳 → KLINGV30PRO(最终情感、肤色和光影的默认选择)。👍 良好 → KLINGV30STA(成本均衡)。⚡ 快速/草稿 → SEEDANCE20,配合resolution 720p(显式分辨率控制;此模型省略negative_prompt)。Kling系列必须在JSON中省略resolution。
依赖项: WERYAIAPIKEY + Node.js 18+。本文件夹包含references/WERYAIVIDEOAPI.md(CLI/API参考);scripts/videogen.js由您的同步/发布步骤提供(与其他WeryAI视频技能相同)。完整命令和JSON字段请参见:references/WERYAIVIDEO_API.md。无需其他Cursor技能。
前置条件
- - 运行videogen.js前必须设置WERYAIAPIKEY。
- Node.js 18+;优先使用公共https图片URL。如果捆绑运行时支持本地文件路径,请检查scripts/videogen.js,验证读取和上传行为,并在使用本地路径前获得明确同意。
- 模型: videogen.js要求每个submit-/wait JSON中必须包含非空的model——脚本无默认值。在确认表中列出所选modelkey。
- 每次成功的submit-/wait可能消耗积分;重新提交将创建新的付费任务。
安全、密钥与API主机
- - WERYAIAPIKEY:视为机密;切勿提交其值。OpenClaw元数据列出requires.env/primaryEnv,以便安装程序知道它在运行时是必需的。
- API主机(固定于videogen.js中): 视频任务使用https://api.weryai.com;模型列表使用https://api-growth-agent.weryai.com。请勿记录或依赖主机覆盖——仅从环境读取WERYAIAPIKEY。
- 本地图片处理: 优先使用https URL。如果捆绑运行时可以读取本地文件,它可能会将文件上传到WeryAI以获取公共URL,然后再进行图生视频;在此路径前需要审查、验证和明确同意。
- 更高保障: 在隔离环境中运行;在生产使用前审查scripts/videogen.js。
提交前关卡(强制)
⚠️ 未经用户明确确认,不得进行付费提交。 在用户明确批准以下参数表(包括完整展开的prompt——全文而非摘要)之前,不得调用submit-text、submit-image或wait。切勿从沉默中推断同意。明确意味着确认/继续/已批准/是,生成(或等效表述)。
参数确认表(提交前显示): model、duration、aspectratio、resolution(仅当所选模型支持时——切勿用于Kling V3)、generateaudio、negative_prompt(仅用于支持该参数的模型)、完整展开的prompt。
工作流程
- 1. 确认请求符合本技能范围(文生视频和/或单张图生视频)。
- 收集用户的简要描述、可选的image URL和层级:
-
默认/最佳/最终 →
KLINGV30_PRO
-
均衡/良好 →
KLINGV30_STA
-
草稿/廉价/快速 →
SEEDANCE20(使用
resolution 720p或
480p;
不要发送
negative_prompt)
- 如果用户
明确指定了活跃频道冻结表中出现的model_key,则忽略层级的默认模型。
- 3. 收集画面比例:默认16:9用于宽银幕故事;当用户针对移动端或方形信息流时使用9:16或1:1。
- 展开提示词(强制): 除非用户提供了完整的长提示词(在promptlengthlimit内)并要求不重写,否则按照## 提示词展开(强制)进行展开。不要只提交用户的最小化词语。
- 根据冻结表验证JSON字段:Kling → 省略resolution;Seedance → 使用该模型时包含resolution;negativeprompt仅用于Kling(可选,但建议使用简短的电影安全提示行)。
- 提交前关卡: 显示包含完整展开的prompt的确认表;停止直到获得明确批准或编辑。
- 提交(异步,默认): 批准后,运行submit-text或submit-image。不要在同一轮中启动长时间阻塞的wait,除非用户已经要求阻塞直到视频就绪。
- 即时通知: 成功获得taskId/batchId(或文档化的ID字段)后,立即告知用户:已接受、ID、简短排队说明,并询问是否继续使用status轮询或wait。不要在没有此选择的情况下运行长时间不可见的wait循环。
- 继续(用户驱动): 仅在用户同意后,根据用户偏好轮询status --task-id …或运行wait --json …(使用相同负载)。
- 呈现可播放URL时,仅使用Markdown内联链接(例如Video)。不要将这些链接包裹在代码块中。
CLI参考
唯一权威来源: 所有具体的videogen.js用法——submit-text/submit-image/submit-multi-image、status、wait、JSON字段规则、图片URL要求、stdout键和复制粘贴示例——均记录在references/WERYAIVIDEOAPI.md中(位于references/下的SKILL.md旁边)。
可移植调用(OpenClaw {baseDir}): 从技能包根目录运行;在OpenClaw列表中,{baseDir}解析为该根目录。
sh
node {baseDir}/scripts/videogen.js submit-text --json {model:KLINGV30PRO,prompt:<展开的英文提示词>,duration:10,aspectratio:16:9,generateaudio:true}
node {baseDir}/scripts/videogen.js status --task-id ID>
阻塞直到完成(仅当用户要求等待时):node {baseDir}/scripts/videogen.js wait --json …,使用相同JSON结构——参见references/WERYAIVIDEOAPI.md。
本技能仅在该文档基础上添加