Werydance 2.0 video generator (almighty-ready)
Generate Werydance 2.0 videos on WeryAI with one skill for text-to-video, image-to-video, first-frame/last-frame transition video, multi-image storyboard video, and almighty mixed-reference video generation.
Animate and transform scenes from single images, storyboard frames, or mixed references while keeping subject and motion continuity.
Dependencies: scripts/video_gen.js at the skill package root (alongside SKILL.md) + WERYAI_API_KEY + Node.js 18+. No other Cursor skills are required.
- text-only generation
- single-image animation
- multi-image storyboard generation
- first-frame/last-frame compatibility aliases
- almighty mixed references (
images + videos + audios + prompt)
Runtime secret: only WERYAI_API_KEY.
Core upgrade
This skill now supports four input modalities for richer control:
- Image reference: composition, character, and detail lock
- Video reference: camera language, action rhythm, effect imitation
- Audio reference: mood and timing guidance
- Text prompt: intent and constraints
Smart routing policy:
- If payload includes
videos or audios, route to POST /v1/generation/almighty-reference-to-video.
- Otherwise keep legacy routing (
text-to-video, image-to-video, multi-image-to-video).
Prerequisites
WERYAI_API_KEY must be set.
- Node.js 18+.
- Prefer public
https URLs for media.
- Local files are supported and auto-uploaded by this skill via
POST /v1/generation/upload-file.
export WERYAI_API_KEY="your_api_key_here"
Quick checks
node scripts/video_gen.js models --mode text_to_video
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"A glowing koi swims through ink clouds","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}' --dry-run
Modes and input shapes
| Mode |
Trigger |
API route |
Key fields |
| Text |
no media refs |
/v1/generation/text-to-video |
prompt, duration, optional aspect_ratio, resolution, generate_audio |
| Single image |
image only |
/v1/generation/image-to-video |
image, prompt, plus common fields |
| Multi image |
images only |
/v1/generation/multi-image-to-video |
images, prompt, plus common fields |
| Almighty |
has videos or audios |
/v1/generation/almighty-reference-to-video |
images, videos, audios, prompt, video_number, plus common fields |
Compatibility aliases still supported:
first_frame + last_frame -> normalized to ordered images
image + last_image -> normalized to ordered images
Almighty constraints
Almighty validations in this skill:
prompt max 500 chars
images <= 9
videos <= 3
audios <= 3
- mixed file total (
images + videos + audios) <= 12
- at least one of
images or videos
duration must be 5-15 seconds
video_number must be 1-4
Notes:
- Backend enforces media-duration constraints for reference clips.
- Per current OpenAPI contract, almighty duration floor is 5s.
Local upload behavior
Supported local files before generation submit:
- Images:
jpg/jpeg/png/webp/gif, max 10MB
- Videos:
mp4/mov, max 50MB
- Audios:
mp3/wav, max 50MB
Upload endpoint used by this skill:
- Shot scale, angle, and lens feel.
- Camera movement or a clear lock-off choice.
- Lighting direction, material response, and overall mood.
- Subject motion paced to the selected
duration.
- One clear visual payoff in the final shot.
- Output framing such as
9:16 vertical when using the default aspect ratio.
- Audio (default-on): Add a labeled
Audio: block (ambience, layered SFX, subtle foley—generic, non-copyrighted) even if the user never mentioned sound. JSON generate_audio defaults to true for models that support audio; use false and omit Audio: only when the user explicitly wants silent output.
Dry-run behavior:
--dry-run never uploads local files
- output includes
uploadPreview to show which local paths would be uploaded
Prompt workflow (mandatory)
Before paid submit, expand brief into production prompt:
- Decide mode.
- Map each media to explicit role.
- Build 2-4 timeline beats by duration.
- Write one action arc + one final payoff.
- Add minimal constraints for continuity.
Always show full prompt and all params before submit, then wait for explicit confirmation.
@asset layered referencing
Use explicit role mapping in prompt drafts:
- Visual anchor:
@图片1 / @图1
- Camera/motion style:
参考@视频1运镜
- Action rhythm:
参考@视频2动作节奏
- Music/sound bed:
@音频1用于配乐
Good:
@图1为首帧,参考@视频1的跑步动作,镜头从正面切到侧面,@音频1做节奏底。
Bad:
High-value templates
Video extend
将@视频1延长 5s,新增段落为...,保持人物与场景连续。
- Set
duration to the added segment length.
Video fusion
- Decide which path fits the request:
text, image, multi-image, or first-frame/last-frame.
- Collect the user's brief,
duration, optional aspect_ratio, optional resolution, generate_audio (default true unless the user wants silent), and reference image URLs if the mode uses assets (prefer public https).
- Expand the prompt with the rules from
## Prompt expansion (mandatory). If the request needs tighter control, read references/seedance-prompt-optimization.md and explicitly decide mode, asset mapping, timeline beats, and negative constraints before writing the final prompt.
- If you are unsure about current multi-image support or field limits, run
node scripts/video_gen.js models --mode multi_image_to_video before a paid request.
- Show a confirmation table with the full expanded prompt, model, duration, aspect ratio, resolution, audio choice, and any image URLs.
- After explicit confirmation, run
node scripts/video_gen.js wait --json '...'.
- Return the JSON result. On success, surface the video URLs. On failure, report
errorCode and errorMessage and suggest the likely parameter fix.
CLI reference
# Check live model metadata
node scripts/video_gen.js models
node scripts/video_gen.js models --mode text_to_video
node scripts/video_gen.js models --mode image_to_video
node scripts/video_gen.js models --mode multi_image_to_video
# Text-to-video (non-empty model required; default audio on)
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"A paper crane unfolds into a real bird, cinematic lighting, 9:16 vertical. Audio: soft paper rustle, gentle whoosh, quiet room tone.","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'
# Single image to video
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"Animate this portrait with subtle hair and cloth movement. Audio: faint fabric rustle, subtle room ambience.","image":"https://example.com/frame.png","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'
# Multi-image to video
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"Turn these storyboard frames into one coherent reveal shot. Audio: light transition whooshes, soft underscore.","images":["https://example.com/1.png","https://example.com/2.png","https://example.com/3.png"],"duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'
# First-frame / last-frame guided video
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"Start on the first frame and transition naturally to the last frame with the same subject and environment. Audio: smooth morph tone, airy ambience.","first_frame":"https://example.com/start.png","last_frame":"https://example.com/end.png","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'
# WaveSpeed-style compatibility alias
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"Transition smoothly from the start image to the end image. Audio: soft blend whoosh, quiet room.","image":"https://example.com/start.png","last_image":"https://example.com/end.png","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'
# Preview without spending credits
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"A glowing koi swims through ink clouds. Audio: water shimmer, subtle chime.","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}' --dry-run
# Poll an existing task
node scripts/video_gen.js status --task-id <task-id>
Poll timeout classes
task_class=short: default 5 minutes (300000ms), intended for text-to-video.
task_class=long: default 20 minutes (1200000ms), intended for image/multi-image/almighty.
task_class=auto (default): infer from effective mode.
WERYAI_POLL_TIMEOUT_MS remains the highest-priority explicit override.
Compliance notice
- Do not store
WERYAI_API_KEY in repository files.
- Platform compliance for realistic human face references is handled by backend policy; this skill does not implement client-side blocking.
Definition of done
Done when the user receives at least one playable video URL, or a clear failure with errorCode / errorMessage and a concrete next step. The submitted payload must stay within the selected model's supported field set. With default generate_audio: true, the prompt should include Audio: prose unless the user requested silent generation.
Boundaries (out of scope)
- Do not use local file paths for references unless you have reviewed the assembled
scripts/video_gen.js and explicitly consent to local read-and-upload to WeryAI; otherwise prefer public https URLs.
- Do not invent undocumented API fields beyond the JSON surface in this skill.
- Do not assume multi-image or first/last-frame support without checking live metadata when the behavior matters.
- Do not store the secret value of
WERYAI_API_KEY inside the repository.
- Do not copy parameter names blindly from another provider without checking the normalized fields in this document.
Model & API constraints (frozen for this skill)
Frozen from the repository's current WeryAI capability snapshots. Re-run node scripts/video_gen.js models after platform upgrades.
Text-to-video (WERYDANCE_2_0)
| model_key |
durations |
aspect_ratios |
resolutions |
Audio |
negative_prompt |
Prompt max |
WERYDANCE_2_0 |
5, 10, 15 |
9:16, 1:1, 16:9 |
480p, 720p |
Yes |
No |
2000 |
Image-to-video (WERYDANCE_2_0)
| model_key |
durations |
aspect_ratios |
resolutions |
Audio |
negative_prompt |
upload_image_limit |
WERYDANCE_2_0 |
5, 10, 15 |
9:16, 1:1, 16:9 |
480p, 720p |
Yes |
No |
3 |
Multi-image and first-frame / last-frame
- Use the
images array for multi-image generation.
- Use either
images with ordered URLs, first_frame + last_frame, or image + last_image for start/end-frame control.
- Before a paid submission where multi-image support matters, run
node scripts/video_gen.js models --mode multi_image_to_video and confirm support_multiple_images, support_first_last_frame, upload_image_limit, and allowed output fields on the live account.
- If the live registry says the model cannot take multiple images, the runtime falls back to the first image only.
Default parameters
| Field |
Value |
| Model |
WERYDANCE_2_0 |
| Aspect ratio |
9:16 |
| Duration |
5 |
| Resolution |
720p |
| Audio |
true by default; expanded prompt must include Audio: unless the user wants silent |
| Prompt style |
concise cinematic English prompt with one clear motion beat and one final payoff |
Text brief -> Seedance video
Use this when the user has only an idea and wants Werydance 2.0 to generate the clip from scratch.
Need from the user:
- Subject or scene
- Motion beat
- Preferred aspect ratio or platform
- Optional duration and resolution
Flow:
Expand the brief into a full English prompt.
Keep model at WERYDANCE_2_0 unless the user explicitly wants another model.
Show a confirmation table:
📋 Ready to generate - please confirm
| Field |
This run |
Notes |
model |
WERYDANCE_2_0 |
Override only if the user explicitly requests another model |
aspect_ratio |
9:16 |
Must stay inside the Seedance row |
duration |
5 |
Allowed: 5 / 10 / 15 |
resolution |
720p |
Allowed: 480p / 720p |
generate_audio |
true |
Default on; Audio: in prompt unless user wants silent |
prompt |
full expanded prompt |
Never show only a summary |
After confirmation, run:
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"...","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'
Single reference image -> Seedance motion
Use this when the user already has one reference image and wants subtle or medium motion while preserving the subject.
Need from the user:
- One reference image URL (prefer public
https)
- Desired motion direction
- Optional duration, aspect ratio, and audio
Flow:
Expand the prompt around preservation plus motion.
Add image to the JSON body.
Confirm parameters and URL, then run:
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"...","image":"https://example.com/input.png","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'
Multiple reference images -> Seedance storyboard clip
Use this when the user wants several frames turned into one coherent shot or short sequence.
Need from the user:
- Ordered reference image URLs (prefer public
https)
- Desired transition logic
- Optional duration and aspect ratio
Flow:
Treat the image order as meaningful story order.
If support is uncertain, check models --mode multi_image_to_video first.
Confirm the final prompt plus ordered images, then run:
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"...","images":["https://example.com/1.png","https://example.com/2.png","https://example.com/3.png"],"duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'
First frame + last frame -> controlled transition
Use this when the user wants tighter motion control from a known opening frame to a known ending frame.
Need from the user:
- One reference start-frame URL (prefer public
https)
- One reference end-frame URL (prefer public
https)
- A prompt that explains the in-between action
Flow:
Expand the prompt so it explicitly bridges the first frame to the last frame.
Use either first_frame / last_frame, image / last_image, or pass the same two URLs through images in order.
Confirm both URLs and the full prompt, then run:
node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"...","first_frame":"https://example.com/start.png","last_frame":"https://example.com/end.png","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'
If the live registry rejects multi-image routing, reduce expectations: the runtime will fall back to single-image behavior with the first frame.
1---2name: seedance-2-video-gen3description: Generate Werydance 2.0 videos through WeryAI for text-to-video, image-to-video, multi-image video, and first-frame/last-frame transitions. Use when you need a Werydance 2.0 video generator, want to animate a reference image (prefer a public https URL), create a storyboard-to-video clip, migrate `image + last_image` workflows, or generate controlled start/end frame video with your WeryAI API key.4---56# Werydance 2.0 video generator (almighty-ready)78Generate Werydance 2.0 videos on WeryAI with one skill for text-to-video, image-to-video, first-frame/last-frame transition video, multi-image storyboard video, and almighty mixed-reference video generation.9Animate and transform scenes from single images, storyboard frames, or mixed references while keeping subject and motion continuity.1011**Dependencies:** `scripts/video_gen.js` at the skill package root (alongside `SKILL.md`) + `WERYAI_API_KEY` + Node.js 18+. No other Cursor skills are required.1213- text-only generation14- single-image animation15- multi-image storyboard generation16- first-frame/last-frame compatibility aliases17- almighty mixed references (`images + videos + audios + prompt`)1819Runtime secret: only `WERYAI_API_KEY`.2021## Core upgrade2223This skill now supports four input modalities for richer control:2425- Image reference: composition, character, and detail lock26- Video reference: camera language, action rhythm, effect imitation27- Audio reference: mood and timing guidance28- Text prompt: intent and constraints2930Smart routing policy:3132- If payload includes `videos` or `audios`, route to `POST /v1/generation/almighty-reference-to-video`.33- Otherwise keep legacy routing (`text-to-video`, `image-to-video`, `multi-image-to-video`).3435## Prerequisites3637- `WERYAI_API_KEY` must be set.38- Node.js 18+.39- Prefer public `https` URLs for media.40- Local files are supported and auto-uploaded by this skill via `POST /v1/generation/upload-file`.4142```sh43export WERYAI_API_KEY="your_api_key_here"44```4546## Quick checks4748```sh49node scripts/video_gen.js models --mode text_to_video50node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"A glowing koi swims through ink clouds","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}' --dry-run51```5253## Modes and input shapes5455| Mode | Trigger | API route | Key fields |56|---|---|---|---|57| Text | no media refs | `/v1/generation/text-to-video` | `prompt`, `duration`, optional `aspect_ratio`, `resolution`, `generate_audio` |58| Single image | `image` only | `/v1/generation/image-to-video` | `image`, `prompt`, plus common fields |59| Multi image | `images` only | `/v1/generation/multi-image-to-video` | `images`, `prompt`, plus common fields |60| Almighty | has `videos` or `audios` | `/v1/generation/almighty-reference-to-video` | `images`, `videos`, `audios`, `prompt`, `video_number`, plus common fields |6162Compatibility aliases still supported:6364- `first_frame + last_frame` -> normalized to ordered `images`65- `image + last_image` -> normalized to ordered `images`6667## Almighty constraints6869Almighty validations in this skill:7071- `prompt` max 500 chars72- `images` <= 973- `videos` <= 374- `audios` <= 375- mixed file total (`images + videos + audios`) <= 1276- at least one of `images` or `videos`77- `duration` must be 5-15 seconds78- `video_number` must be 1-47980Notes:8182- Backend enforces media-duration constraints for reference clips.83- Per current OpenAPI contract, almighty duration floor is 5s.8485## Local upload behavior8687Supported local files before generation submit:8889- Images: `jpg/jpeg/png/webp/gif`, max 10MB90- Videos: `mp4/mov`, max 50MB91- Audios: `mp3/wav`, max 50MB9293Upload endpoint used by this skill:9495- Shot scale, angle, and lens feel.96- Camera movement or a clear lock-off choice.97- Lighting direction, material response, and overall mood.98- Subject motion paced to the selected `duration`.99- One clear visual payoff in the final shot.100- Output framing such as `9:16 vertical` when using the default aspect ratio.101- **Audio (default-on):** Add a labeled **`Audio:`** block (ambience, layered SFX, subtle foley—**generic**, non-copyrighted) **even if the user never mentioned sound**. JSON **`generate_audio`** defaults to **`true`** for models that support audio; use **`false`** and omit **`Audio:`** only when the user explicitly wants **silent** output.102103Dry-run behavior:104105- `--dry-run` never uploads local files106- output includes `uploadPreview` to show which local paths would be uploaded107108## Prompt workflow (mandatory)109110Before paid submit, expand brief into production prompt:1111121. Decide mode.1132. Map each media to explicit role.1143. Build 2-4 timeline beats by duration.1154. Write one action arc + one final payoff.1165. Add minimal constraints for continuity.117118Always show full prompt and all params before submit, then wait for explicit confirmation.119120## @asset layered referencing121122Use explicit role mapping in prompt drafts:123124- Visual anchor: `@图片1` / `@图1`125- Camera/motion style: `参考@视频1运镜`126- Action rhythm: `参考@视频2动作节奏`127- Music/sound bed: `@音频1用于配乐`128129Good:130131- `@图1为首帧,参考@视频1的跑步动作,镜头从正面切到侧面,@音频1做节奏底。`132133Bad:134135- `用这些素材生成一个视频。`136137## High-value templates138139### Video extend140141- `将@视频1延长 5s,新增段落为...,保持人物与场景连续。`142- Set `duration` to the added segment length.143144### Video fusion1451461. Decide which path fits the request: `text`, `image`, `multi-image`, or `first-frame/last-frame`.1472. Collect the user's brief, `duration`, optional `aspect_ratio`, optional `resolution`, **`generate_audio`** (default **`true`** unless the user wants silent), and reference image URLs if the mode uses assets (prefer public `https`).1483. Expand the prompt with the rules from `## Prompt expansion (mandatory)`. If the request needs tighter control, read `references/seedance-prompt-optimization.md` and explicitly decide mode, asset mapping, timeline beats, and negative constraints before writing the final prompt.1494. If you are unsure about current multi-image support or field limits, run `node scripts/video_gen.js models --mode multi_image_to_video` before a paid request.1505. Show a confirmation table with the **full expanded prompt**, model, duration, aspect ratio, resolution, audio choice, and any image URLs.1516. After explicit confirmation, run `node scripts/video_gen.js wait --json '...'`.1527. Return the JSON result. On success, surface the video URLs. On failure, report `errorCode` and `errorMessage` and suggest the likely parameter fix.153154## CLI reference155156```sh157# Check live model metadata158node scripts/video_gen.js models159node scripts/video_gen.js models --mode text_to_video160node scripts/video_gen.js models --mode image_to_video161node scripts/video_gen.js models --mode multi_image_to_video162163# Text-to-video (non-empty model required; default audio on)164node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"A paper crane unfolds into a real bird, cinematic lighting, 9:16 vertical. Audio: soft paper rustle, gentle whoosh, quiet room tone.","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'165166# Single image to video167node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"Animate this portrait with subtle hair and cloth movement. Audio: faint fabric rustle, subtle room ambience.","image":"https://example.com/frame.png","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'168169# Multi-image to video170node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"Turn these storyboard frames into one coherent reveal shot. Audio: light transition whooshes, soft underscore.","images":["https://example.com/1.png","https://example.com/2.png","https://example.com/3.png"],"duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'171172# First-frame / last-frame guided video173node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"Start on the first frame and transition naturally to the last frame with the same subject and environment. Audio: smooth morph tone, airy ambience.","first_frame":"https://example.com/start.png","last_frame":"https://example.com/end.png","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'174175# WaveSpeed-style compatibility alias176node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"Transition smoothly from the start image to the end image. Audio: soft blend whoosh, quiet room.","image":"https://example.com/start.png","last_image":"https://example.com/end.png","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'177178# Preview without spending credits179node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"A glowing koi swims through ink clouds. Audio: water shimmer, subtle chime.","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}' --dry-run180181# Poll an existing task182node scripts/video_gen.js status --task-id <task-id>183```184185## Poll timeout classes186187- `task_class=short`: default `5` minutes (`300000ms`), intended for text-to-video.188- `task_class=long`: default `20` minutes (`1200000ms`), intended for image/multi-image/almighty.189- `task_class=auto` (default): infer from effective mode.190- `WERYAI_POLL_TIMEOUT_MS` remains the highest-priority explicit override.191192## Compliance notice193194- Do not store `WERYAI_API_KEY` in repository files.195- Platform compliance for realistic human face references is handled by backend policy; this skill does not implement client-side blocking.196197## Definition of done198199Done when the user receives at least one playable video URL, or a clear failure with `errorCode` / `errorMessage` and a concrete next step. The submitted payload must stay within the selected model's supported field set. With default **`generate_audio`: `true`**, the **`prompt`** should include **`Audio:`** prose unless the user requested silent generation.200201## Boundaries (out of scope)202203- Do not use local file paths for references unless you have reviewed the assembled `scripts/video_gen.js` and explicitly consent to local read-and-upload to WeryAI; otherwise prefer public **`https`** URLs.204- Do not invent undocumented API fields beyond the JSON surface in this skill.205- Do not assume multi-image or first/last-frame support without checking live metadata when the behavior matters.206- Do not store the secret value of `WERYAI_API_KEY` inside the repository.207- Do not copy parameter names blindly from another provider without checking the normalized fields in this document.208209## Model & API constraints (frozen for this skill)210211> Frozen from the repository's current WeryAI capability snapshots. Re-run `node scripts/video_gen.js models` after platform upgrades.212213### Text-to-video (`WERYDANCE_2_0`)214215| model_key | durations | aspect_ratios | resolutions | Audio | negative_prompt | Prompt max |216|-----------|-----------|---------------|-------------|-------|-----------------|------------|217| `WERYDANCE_2_0` | 5, 10, 15 | 9:16, 1:1, 16:9 | 480p, 720p | Yes | No | 2000 |218219### Image-to-video (`WERYDANCE_2_0`)220221| model_key | durations | aspect_ratios | resolutions | Audio | negative_prompt | upload_image_limit |222|-----------|-----------|---------------|-------------|-------|-----------------|-------------------|223| `WERYDANCE_2_0` | 5, 10, 15 | 9:16, 1:1, 16:9 | 480p, 720p | Yes | No | 3 |224225### Multi-image and first-frame / last-frame226227- Use the `images` array for multi-image generation.228- Use either `images` with ordered URLs, `first_frame` + `last_frame`, or `image` + `last_image` for start/end-frame control.229- Before a paid submission where multi-image support matters, run `node scripts/video_gen.js models --mode multi_image_to_video` and confirm `support_multiple_images`, `support_first_last_frame`, `upload_image_limit`, and allowed output fields on the live account.230- If the live registry says the model cannot take multiple images, the runtime falls back to the first image only.231232---233234## Default parameters235236| Field | Value |237|-------|-------|238| Model | `WERYDANCE_2_0` |239| Aspect ratio | `9:16` |240| Duration | `5` |241| Resolution | `720p` |242| Audio | **`true`** by default; expanded **`prompt`** must include **`Audio:`** unless the user wants silent |243| Prompt style | concise cinematic English prompt with one clear motion beat and one final payoff |244245---246247## Text brief -> Seedance video248249Use this when the user has only an idea and wants Werydance 2.0 to generate the clip from scratch.250251**Need from the user:**252253- Subject or scene254- Motion beat255- Preferred aspect ratio or platform256- Optional duration and resolution257258**Flow:**2592601. Expand the brief into a full English prompt.2612. Keep `model` at `WERYDANCE_2_0` unless the user explicitly wants another model.2623. Show a confirmation table:263264 > 📋 **Ready to generate - please confirm**265 >266 > | Field | This run | Notes |267 > |-------|----------|-------|268 > | `model` | `WERYDANCE_2_0` | Override only if the user explicitly requests another model |269 > | `aspect_ratio` | `9:16` | Must stay inside the Seedance row |270 > | `duration` | `5` | Allowed: 5 / 10 / 15 |271 > | `resolution` | `720p` | Allowed: 480p / 720p |272 > | `generate_audio` | `true` | Default **on**; **`Audio:`** in **`prompt`** unless user wants silent |273 > | `prompt` | **full expanded prompt** | Never show only a summary |2742754. After confirmation, run:276277 ```sh278 node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"...","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'279 ```280281---282283## Single reference image -> Seedance motion284285Use this when the user already has one reference image and wants subtle or medium motion while preserving the subject.286287**Need from the user:**288289- One reference image URL (prefer public `https`)290- Desired motion direction291- Optional duration, aspect ratio, and audio292293**Flow:**2942951. Expand the prompt around preservation plus motion.2962. Add `image` to the JSON body.2973. Confirm parameters and URL, then run:298299 ```sh300 node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"...","image":"https://example.com/input.png","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'301 ```302303---304305## Multiple reference images -> Seedance storyboard clip306307Use this when the user wants several frames turned into one coherent shot or short sequence.308309**Need from the user:**310311- Ordered reference image URLs (prefer public `https`)312- Desired transition logic313- Optional duration and aspect ratio314315**Flow:**3163171. Treat the image order as meaningful story order.3182. If support is uncertain, check `models --mode multi_image_to_video` first.3193. Confirm the final prompt plus ordered `images`, then run:320321 ```sh322 node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"...","images":["https://example.com/1.png","https://example.com/2.png","https://example.com/3.png"],"duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'323 ```324325---326327## First frame + last frame -> controlled transition328329Use this when the user wants tighter motion control from a known opening frame to a known ending frame.330331**Need from the user:**332333- One reference start-frame URL (prefer public `https`)334- One reference end-frame URL (prefer public `https`)335- A prompt that explains the in-between action336337**Flow:**3383391. Expand the prompt so it explicitly bridges the first frame to the last frame.3402. Use either `first_frame` / `last_frame`, `image` / `last_image`, or pass the same two URLs through `images` in order.3413. Confirm both URLs and the full prompt, then run:342343 ```sh344 node scripts/video_gen.js wait --json '{"model":"WERYDANCE_2_0","prompt":"...","first_frame":"https://example.com/start.png","last_frame":"https://example.com/end.png","duration":5,"aspect_ratio":"9:16","resolution":"720p","generate_audio":true}'345 ```3463474. If the live registry rejects multi-image routing, reduce expectations: the runtime will fall back to single-image behavior with the first frame.