Kinetic sand shaping video generation
Imagine: a blade eases into a bright yellow kinetic sand block—the cross-section opens from the center, grain friction and a perfect cut. Soft yet orderly satisfaction is what this skill is for.
Core beats:
- - Clean slice: Sharp kerf, even color in the face, grain texture readable
- Mold release: Castle / star / geometry lifts out, edges crisp
- Layered collapse: Colored strata slip at the edge like a soft solid in slow motion
- Streaming pour: Sand falls evenly; pile-up feels fluffy and fine
Dependencies: scripts/video_gen.js in this directory + WERYAI_API_KEY + Node.js 18+. No dependency on other Cursor skills.
Prerequisites
- -
WERYAI_API_KEY must be set in the environment before running video_gen.js. - Node.js 18+ is required. Image inputs must be public
https URLs (no local file paths). - Each successful
wait run consumes WeryAI credits; re-running creates new paid tasks.
Security, secrets, and API hosts
- -
WERYAI_API_KEY: Treat as a secret. Only configure it if you trust this skill's source; it is listed in OpenClaw metadata as requires.env / primaryEnv so installers know it is mandatory at runtime (never commit it inside the skill package). - API hosts (fixed in
video_gen.js): Video tasks use https://api.weryai.com; the models list uses https://api-growth-agent.weryai.com. Only WERYAI_API_KEY is read from the environment—do not rely on URL-related environment variables. - Higher assurance: Run generation in a short-lived or isolated environment (separate account or container), and review
scripts/video_gen.js (HTTPS submit + poll loop) before production use.
Prompt expansion (mandatory)
INLINECODE14 does not expand prompts. Before every wait --json, turn the user's short or vague brief into a full English production prompt.
When: The user gives only keywords, one line, or loose intent—or asks for richer video language. Exception: They paste a finished long prompt within the model's prompt_length_limit and ask you not to rewrite; still show the full text in the confirmation table.
Always add (video language): shot scale and angle; camera move or lock-off; light quality and motivation; subject action paced to duration; one clear payoff for this niche; state 9:16 vertical when this skill defaults to vertical.
Length: Obey prompt_length_limit for the chosen model_key when this doc lists it; trim filler adjectives before removing core action, lens, or light clauses.
Confirmation: The pre-submit table must include the full expanded prompt (never a one-line summary). Wait for confirm or edits.
Niche checklist
- - ASMR slice: blade entry, clean plane, lattice cross-section, slow pull-apart or restack.
- Texture: saturated layers, crisp edges, fine grain; macro top-down or 45°.
- Payoff: satisfying separation or collapse moment.
### Example prompts at the top of this file are short triggers only—always expand from the user's actual request.
Workflow
- 1. Confirm the user request matches this skill's scenario (text-to-video and/or image-to-video as documented).
- Collect the user's brief, optional image URL(s), tier (best / good / fast) or an explicit
model key. - Expand prompt (mandatory): Unless the user supplied a finished long prompt and explicitly asked not to rewrite it, expand the brief into a full English production
prompt using ## Prompt expansion (mandatory) below. Do not call the API with only the user's minimal words. - Check the expanded
prompt against the selected model's prompt_length_limit in the frozen tables in this document (when present); shorten if needed. - Verify
duration, aspect_ratio, resolution, generate_audio, negative_prompt, and other fields against the frozen tables and API notes in this SKILL.md. - Show the pre-submit parameter table including the full expanded
prompt; wait for confirm or edits. - After confirmation, run
node {baseDir}/scripts/video_gen.js wait --json '...' with the expanded prompt. - Parse stdout JSON and return video URLs; on failure, surface
errorCode / errorMessage and suggest parameter fixes.
CLI reference
CODEBLOCK0
Definition of done
Done when the user receives at least one playable video URL from the API response, or a clear failure explanation with next steps. All parameters used must fall within the selected model's allowed sets in this document. The submitted prompt must be the expanded production prompt unless the user explicitly supplied a finished long prompt and asked not to rewrite it.
Boundaries (out of scope)
- - Does not review platform compliance, copyright, or portrait rights; does not guarantee commercial usability of outputs.
- Does not provide non-WeryAI offline rendering, traditional edit timelines, or API field combinations not documented here.
- Does not hard-code absolute paths in the skill doc;
{baseDir} means the skill package root (same level as SKILL.md).
Example prompts
- - INLINECODE40
- INLINECODE41
- INLINECODE42
- INLINECODE43
Default parameters
| Field | Value |
|---|
| Model | KLINGV30_PRO |
| Aspect ratio |
9:16 (fixed vertical) |
| Duration | Short (
duration: 5) |
| Style | Top-down or ~45° close-up, white/light gray seamless bg, slow motion for grain texture (fixed) |
| Audio | On (grain scrape + slice are core ASMR) |
API validity (default KLING_V3_0_PRO): Text-to-video duration only 5 / 10 / 15; aspect_ratio only 9:16, 1:1, 16:9. Image-to-video aspect_ratio only 9:16, 16:9, 1:1. No resolution field—do not send it. For fast tier with VEO: text-to-video VEO_3_1_FAST, image-to-video CHATBOT_VEO_3_1_FAST, with duration fixed at 8, aspect_ratio only 9:16 or 16:9. When switching model_key, follow the allowed sets in this section’s model/API constraints and the API validity note above; do not send resolution to models that do not support it.
Text-to-video
User names colors / layers and action (slice / demold / collapse / pour)—skip asset hunting.
Tell me in one line: sand color or layer count, and the action.
Generation flow:
- 1. Collect palette + action; ask if missing.
- Pick the best angle per action—slice: expose the cross-section; demold: whole shape clearing the mold; collapse: edge slippage; pour: top-down stacking.
- If the user didn’t specify params, show this run and wait:
> Generating with the parameters below—reply
confirm or say what to change:
> - model: KLING
V30_PRO
> - aspect_ratio: 9:16
> - duration: 5s
> - generate_audio: true
> - Loop seam: off by default (reply
loop to append
seamless loop, perfectly looping video, first and last frame identical to the prompt)
- 4. After confirmation (and optional loop keywords), run
node {baseDir}/scripts/video_gen.js wait --json '…' (text-to-video); parse stdout. - Return URLs; note swaps (palette / action / loop).
Parameter configuration:
| Field | Value |
|---|
| model | KLINGV30PRO |
| aspectratio |
9:16 |
| duration | 5 |
| generate_audio | true |
Expanded prompt: Compose at generation time per ## Prompt expansion (mandatory) from the user's actual brief—do not reuse fixed sample paragraphs.
Sand-shape image to motion
Public HTTPS photo of a kinetic sand shape → slice, press, or collapse starting from that look. Good for remixing assets or branded shapes.
Generation flow:
- 1. Confirm URL starts with
https://. - Read shape (block / castle / free stack / mold imprint) and key colors; pick motion.
- If unspecified, show and wait:
> Generating with the parameters below—reply
confirm or say what to change:
> - model: KLING
V30_PRO
> - aspect_ratio: 9:16
> - duration: 5s
> - generate_audio: true
> - Loop seam: off (reply
loop to enable)
- 4. Run
node {baseDir}/scripts/video_gen.js wait --json '…' with image; parse stdout. - Return URLs.
Parameter configuration:
| Field | Value |
|---|
| model | KLINGV30PRO |
| aspectratio |
9:16 |
| duration | 5 |
| generate_audio | true |
| image | User-supplied image URL |
Expanded prompt: Compose at generation time per ## Prompt expansion (mandatory) from the user's actual brief—do not reuse fixed sample paragraphs.
Tips
Prompt boosts
- - Cross-section:
powdery matte cross-section, sharp color strata exposed, INLINECODE65 - Flow:
individual grains tumble in slow motion, sand cascades like liquid but holds shape, INLINECODE68 - Demold:
mold lifts cleanly revealing intact geometry, crisp edges hold for one suspended second before softening, INLINECODE71 - Soft solid:
kinetic sand deforms like a soft solid, INLINECODE73
Notes
- - More saturation and more layers strengthen the slice payoff—aim for at least three colors.
- For loop playback, say so before generate; loop phrases are appended to the prompt.
- Clearer, more centered reference images track the shape better in image-to-video.
Note: Image URLs must be public HTTPS; private hosts or local paths will error at the API.
动力沙视频生成
想象一下:刀片缓缓切入一块亮黄色的动力沙——横截面从中心展开,颗粒摩擦,切割完美。这项技能的目的就是带来这种柔和而有序的满足感。
核心节奏:
- - 干净切割: 切口锐利,切面颜色均匀,颗粒纹理清晰可见
- 脱模: 城堡/星星/几何形状完整取出,边缘分明
- 分层崩塌: 彩色层在边缘滑落,如同慢动作中的软固体
- 流沙倾泻: 沙子均匀落下;堆积感蓬松细腻
依赖项:本目录中的 scripts/videogen.js + WERYAIAPI_KEY + Node.js 18+。不依赖其他 Cursor 技能。
前置条件
- - 运行 videogen.js 前,必须在环境中设置 WERYAIAPI_KEY。
- 需要 Node.js 18+。图片输入必须是公开的 https 链接(不支持本地文件路径)。
- 每次成功的 wait 运行都会消耗 WeryAI 积分;重新运行会创建新的付费任务。
安全、密钥与 API 主机
- - WERYAIAPIKEY:视为机密。仅在你信任此技能来源时配置;它在 OpenClaw 元数据中被列为 requires.env / primaryEnv,以便安装者知道它在运行时是必需的(切勿将其提交到技能包内)。
- API 主机(在 videogen.js 中固定):视频任务使用 https://api.weryai.com;模型列表使用 https://api-growth-agent.weryai.com。仅从环境中读取 WERYAIAPIKEY——不要依赖与 URL 相关的环境变量。
- 更高保障:在短期或隔离环境(独立账户或容器)中运行生成,并在生产使用前审查 scripts/videogen.js(HTTPS 提交 + 轮询循环)。
提示词扩展(强制)
video_gen.js 不扩展提示词。每次执行 wait --json 前,将用户的简短或模糊描述转化为完整的英文制作 prompt。
何时扩展: 用户只给出关键词、一行描述或模糊意图——或要求更丰富的视频语言。例外情况: 用户粘贴了完整的、在模型 promptlengthlimit 内的长提示词,并要求你不要重写;但仍需在确认表中显示完整文本。
始终添加(视频语言): 镜头景别和角度;相机运动或固定;光线质量和光源方向;主体动作与 duration 匹配;一个明确的针对此场景的亮点;当此技能默认为竖屏时,注明 9:16 竖屏。
长度: 当本文档列出时,遵守所选 modelkey 的 promptlength_limit;在删除核心动作、镜头或光线描述之前,先修剪填充性形容词。
确认: 提交前的表格必须包含完整的扩展后 prompt(绝不能是一行摘要)。等待确认或修改。
场景检查清单
- - ASMR 切割: 刀片切入、干净切面、格状横截面、缓慢拉开或重新堆叠。
- 质感: 饱和的层次、清晰的边缘、细腻的颗粒;俯拍宏观视角或 45° 角。
- 亮点: 令人满足的分离或崩塌瞬间。
### 示例提示词 位于此文件顶部,仅为简短触发词——始终从用户的实际请求进行扩展。
工作流程
- 1. 确认用户请求符合此技能的场景(文本转视频和/或图片转视频,按文档说明)。
- 收集用户的简要描述、可选的图片 URL、档次(最佳 / 良好 / 快速)或明确的 model 键。
- 扩展提示词(强制): 除非用户提供了完整的、要求不重写的长提示词,否则使用下方的 ## 提示词扩展(强制) 将简要描述扩展为完整的英文制作 prompt。不要仅用用户的简短词语调用 API。
- 对照本文档中固定表格(如有)中选定模型的 promptlengthlimit 检查扩展后的 prompt;必要时缩短。
- 对照此 SKILL.md 中的固定表格和 API 说明,验证 duration、aspectratio、resolution、generateaudio、negativeprompt 等字段。
- 显示包含完整扩展后 prompt 的提交前参数表;等待确认或修改。
- 确认后,使用扩展后的提示词运行 node {baseDir}/scripts/videogen.js wait --json ...。
- 解析 stdout JSON 并返回视频 URL;失败时,显示 errorCode / errorMessage 并建议参数修复。
CLI 参考
sh
node {baseDir}/scripts/videogen.js wait --json {model:…,prompt:…,duration:5,aspectratio:9:16}
node {baseDir}/scripts/video_gen.js wait --json … --dry-run
node {baseDir}/scripts/video_gen.js status --task-id
完成标准
当用户从 API 响应中收到至少一个可播放的视频 URL,或收到带有后续步骤的明确失败说明时,即视为完成。使用的所有参数必须在本文档中选定模型的允许范围内。提交的 prompt 必须是扩展后的制作提示词,除非用户明确提供了完整的、要求不重写的长提示词。
边界(超出范围)
- - 不审查平台合规性、版权或肖像权;不保证输出的商业可用性。
- 不提供非 WeryAI 的离线渲染、传统编辑时间线或本文档未记录的 API 字段组合。
- 不在技能文档中硬编码绝对路径;{baseDir} 表示技能包根目录(与 SKILL.md 同级)。
示例提示词
- - 彩虹动力沙,一次干净切割,整齐横截面,密集颗粒,竖屏满足感
- 此图片为沙堡:模具抬起,整个形状立起,有动态
- 太空沙慢动作崩塌,彩色层如蛋糕分层
- 动力沙切割 ASMR 9:16,干净横截面切割
默认参数
9:16(固定竖屏) |
| 时长 | 短(duration:5) |
| 风格 | 俯拍或 ~45° 特写,白色/浅灰色无缝背景,慢动作展现颗粒纹理(固定) |
| 音频 | 开启(颗粒刮擦声 + 切割声是 ASMR 核心) |
API 有效性(默认 KLINGV30PRO): 文本转视频 duration 仅 5 / 10 / 15;aspectratio 仅 9:16, 1:1, 16:9。图片转视频 aspectratio 仅 9:16, 16:9, 1:1。无 resolution 字段——不要发送。 对于使用 VEO 的 快速 档次:文本转视频为 VEO31FAST,图片转视频为 CHATBOTVEO31FAST,duration 固定为 8,aspectratio 仅 9:16 或 16:9。切换 modelkey 时,遵循本节模型/API 约束中的允许集合以及上述 API 有效性说明;不要向不支持的模型发送 resolution。
文本转视频
用户指定颜色/层次和动作(切割/脱模/崩塌/倾泻)——无需寻找素材。
用一句话告诉我:沙子颜色或层数,以及动作。
生成流程:
- 1. 收集配色 + 动作;如有缺失则询问。
- 根据动作选择最佳角度——切割:展示横截面;脱模:整个形状脱离模具;崩塌:边缘滑落;倾泻:俯拍堆叠。
- 如果用户未指定参数,显示此运行并等待:
> 使用以下参数生成——回复
确认 或说明要更改的内容:
> - 模型:KLING
V30_PRO
> - 宽高比:9:16
> - 时长:5秒
> - 生成音频:true
> - 循环接缝:默认关闭(回复
loop 可在提示词中添加 seamless loop, perfectly looping video, first and last frame identical)
- 4. 确认后(以及可选的循环关键词),运行 node {baseDir