Dual responsibilities:
- Write good Seedance 2.5 Chinese prompts — Part 2 (creative layer)
- Use
seedance-clito run the prompt into MP4/MOV and save it locally — Part 1 (engineering layer)
Complete closed loop:User describes the idea → Part 2 writes the prompt → Part 1 runs the CLI → video saved to disk → optionally chain/extend the next segment。
Core principles:
- When writing prompts, rewrite "piles of adjectives" intoengineering instructions: eight major elements + task classification sentence patterns + shot storyboard + multimodal binding,all output in Chinese(see Part 2).
- When running generation, always go through
seedance-cli, do not hand-assemble curl, do not bypass the default polling + download. The default model is Seedance 2.5(-m 2.0can be switched back). - Claude cannot see video files— either verify the file + metadata, or extract frames with ffmpeg and then Read the still images.
- 2.5 tasks fall into two categories: "with locking / without locking"(see 2.4): editing locks aspect ratio + duration, first/last frames/extending lock aspect ratio — for locked tasksdo not pass
--ratio, the CLI will intercept it upfront, and any that slip through will become asynchronous errors (the task is created successfully, and the error only appears when polling reaches failed). - Seedance 2.x does not accept realistic human face material— reports
InputImageSensitiveContentDetected.PrivacyInformation. Exemptions: 2.x original outputs from this account within 30 days, platform preset virtual human portraits (asset://), authorized material.
Part 1 — How to call the CLI (engineering layer)
1.1 Prerequisites
- Confirm
seedance-cliis executable (which seedance-cliorseedance-cli --version). If not executable, prompt the user touv tool install zjandrew-seedance-cliorpipx install zjandrew-seedance-cli(PyPI package name; command nameseedance-clistays the same). - Configure API key: prefer env
ARK_API_KEY; when missing, guideseedance-cli config init。 - The default endpoint is
https://ark.cn-beijing.volces.com/api/v3, for self-hosted/proxy endpoints useseedance-cli config set endpoint https://<...>/api/v3or--endpointfor a one-time override.
1.2 Multi-profile configuration
seedance-cli config list # 列所有 profile,active 标 *
seedance-cli config use <name> # 切 active
seedance-cli config add <name> # 向导式新增
seedance-cli --profile <name> generate ... # 单次覆盖,不改 active
seedance-cli config show [<name>] # 查看(api_key 已脱敏)
Priority:--profile flag > SEEDANCE_PROFILE env > 文件 active。--api-key / --endpoint is a field-level override and will not invalidate --profile .
1.3 Core command quick reference
# 文生视频(默认 2.5,时长 4-30s 或 -1 让模型自选)
seedance-cli generate -p "<prompt>" --ratio 16:9 --duration 5 --out v.mp4
# 图生视频 - 首帧(2.5 上比例锁定跟随首帧,不要传 --ratio)
seedance-cli generate -p "<prompt>" --image start.png --duration 5 --out v.mp4
# 图生视频 - 首尾帧(同上,比例锁定)
seedance-cli generate -p "<prompt>" \
--image first.png:first_frame --image last.png:last_frame \
--duration 5 --out v.mp4
# 多模态参考(2.5 最多 30 图;2.0 系最多 9 图)
seedance-cli generate -p "<prompt>" --image a.png --image b.png --image c.png \
--duration 5 --out v.mp4
# 视频编辑(2.5:显式 --task-type edit 把异步报错变同步;时长锁定跟随输入,勿传 --duration/--ratio)
# ⚠️ 视频输入只收 web URL(http(s)/asset://),本地文件会被前置拒绝(API 不收 base64 视频)
seedance-cli generate -p "把房子刷成蓝色" --video "https://.../orig.mp4" \
--task-type edit --output-format mov --out edited.mov
# 视频延长(2.5:时长可自定义,比例锁定;mov 声画衔接最佳)
seedance-cli generate -p "向后延长@视频1,..." --video "https://.../orig.mp4" \
--task-type extend --output-format mov --duration 10 --out extended.mov
# 纯音频驱动(仅 2.5;2.0 系音频必须搭图/视频)
seedance-cli generate -p "<prompt>" --audio voice.mp3 --out v.mp4
# 多模态组合:图 + 视频 + 音频(视频仍须 URL)
seedance-cli generate -p "<prompt>" --image a.png --video "https://.../b.mp4" --audio bgm.mp3 --out v.mp4
# 任务管理
seedance-cli task list --status running
seedance-cli task get <task_id> --wait --out path.mp4
seedance-cli task delete <task_id>
1.4 Model selection (-m flag)
| Want | -m value |
Key differences |
|---|---|---|
| Default / strongest | 2.5(default) |
30s direct output, 50 reference materials (30 images/10 videos/10 audio), response timestamps, pure audio input, mov output, white model/grid/keyframes;only 480p/720p |
| 1080p / 4k output | 2.0 |
2.0 exclusive 1080p and 4k (10bit); material limits 9/3/3, single segment ≤15s |
| Fast and economical | 2.0-fast / 2.0-mini |
only 480p/720p; mini is cheaper |
| Offline inference saves money | 1.5-pro --service-tier flex |
price 50%, response in hours |
| Specify frame count | 1.0-pro --frames 29 |
The only one that supports --frames(satisfies 25+4n, 29-289) |
Not supported by Seedance 2.x (2.5 + entire 2.0 series)(the CLI intercepts upfront):
--seed/--frames/--camera-fixed/--service-tier flex(all are 1.x-exclusive)- realistic human face reference image/video (for exemptions see "Core Principles")
supported only by 2.5:--task-type、--output-format, audio-only input,4-30s duration.2.5 does not support 1080p/4k—for high resolution use -m 2.0。
1.5 parameter selection (CLI flag)
| Intent | Recommended parameters |
|---|---|
| test shoot / preview | --ratio 16:9 --resolution 720p --duration 5 |
| let the model choose the duration | --duration -1(2.5/2.0 series/1.5-pro; edit tasks default to -1) |
| high-resolution final render | -m 2.0 --resolution 1080p(or 4k; 2.0 only) |
| vertical short video | --ratio 9:16 |
| first frame/last frame/edit/extend | omit --ratio(on 2.5 these tasks' ratio is locked to follow the input; passing it will be intercepted) |
| edit/extend must report an error in sync | --task-type edit / --task-type extend(2.5 only) |
| edit/extend chain | --output-format mov(2.5 only; H.264+yuv444p+PCM, best audio-visual consistency) |
| offline inference | -m 1.5-pro --service-tier flex --execution-expires-after 172800 |
| with audio/without audio | --generate-audio / --no-generate-audio(2.5/2.0 series/1.5-pro; audio on by default) |
| get the last frame for chaining | --return-last-frame --out-last-frame last.png |
1.6 local input vs URL
- image/audiolocal paths are automatically base64-encoded,note the limits: single image ≤ 30 MB, single audio ≤ 15 MB, total request body ≤ 64 MB.
- video accepts only web URLs(http(s) /
asset://): the API does not accept base64 video; the CLI reports upfront on local video pathsINVALID_INPUT. Two ways to get a URL: reuse thevideo_urlfrom the previous task response (valid for 24h), or upload to TOS/OSS. - Count limits by model:2.5 30 images / 10 videos / 10 audios (video and audio each ≤30s total duration);2.0 series 9 / 3 / 3 (total duration ≤15s). Over the limit reports
INVALID_INPUT。 - For oversized files, first upload to TOS / OSS to get a public URL, then pass
--image https://.... URL input is zero-cost (server-side fetch), so prefer URLs. - verified:
data:<mime>;base64,...data URI form is accepted by the server;asset://<ID>references platform preset assets/virtual personas.
1.7 Async and task management
When to use --async:
- dispatch multiple tasks at once and let the queue run
- Task is very long (1080p + 12s + 2.0), enable
--asyncthen go to sleep - CI orchestration, don't want a Python process hanging for half an hour
Resume mode:
seedance-cli task list --status running # 看哪些没收
seedance-cli task get <id> --wait --out path.mp4 # 接回阻塞下载
seedance-cli task delete <id> # 取消排队 / 删历史
POLL_CANCELLED(Ctrl-C) or POLL_TIMEOUT(--timeout hit), the envelope still contains task_id, use task get --wait to top up,don't resend from the beginning(it wastes tokens).
1.8 Artifact verification
Claude cannot see the MP4. What it can do:
- confirm
video_pathexists,os.path.getsizeis nonzero - report the
duration/resolution/ratio/framespersecondfrom the envelope to the user - When you want to "see" the content, extract frames with ffmpeg + Read:
ffmpeg -ss 00:00:00 -i clip.mp4 -frames:v 1 preview-first.jpg
ffmpeg -sseof -1 -i clip.mp4 -frames:v 1 preview-last.jpg
then Read preview-first.jpg / preview-last.jpg let yourself see the first and last frames and describe them to the user. If there's no ffmpeg, just say plainly "install it or look yourself"; don't pretend you saw it.
1.9 Common error handling
Handle by exit code:
CONFIG_MISSING/INVALID_INPUT(exit 2) → guideconfig initor fix parameters; error messages include corrective guidance (e.g. "drop --ratio").IO_ERROR(exit 3)→ check--outpath exists / is writable; if the parent directory doesn't exist, switch to the directory form ending with/to trigger mkdir.ARK_API_ERROR(exit 4)→ readdetails.statusanddetails.message:- 429 back off and retry
- 400 change prompt / parameters
InputImageSensitiveContentDetected.PrivacyInformation→ input contains a real human face, 2.x doesn't accept it; switch to non-real-human-face material or use an exempt channel
NETWORK_ERROR(exit 5)→ retry; if it fails multiple times, verifyconfig show's endpoint.TASK_FAILED(exit 6)→ readdetails.error.code/message(already exposed by the CLI):InvalidParameter.TaskTypeConstraint→ 2.5 async errors: parameters don't match the task type determined by the model (most common: a locked task was given a ratio / an edit task was given a duration other than -1). Fix the parameters and resend, and add--task-type edit/extendto make the next error become a synchronous 400- others are mostly content policy or reference material issues
TASK_EXPIRED(exit 7)→ the task timed out and was marked expired, recreate it.POLL_TIMEOUT/POLL_CANCELLED(exit 8/9)→ envelope hastask_id, usetask get --waitto continue.INTERNAL(exit 10)→ bug, run once with--verboseto get a stacktrace, and file an issue.
Artifact validity: video URLs are valid for 24h;2.5's URLs also have a 100-download limit; task records are only kept for 7 days — download to disk immediately after generation (the CLI does this by default), don't treat URLs as persistent storage.
1.10 Red Flags — stop immediately when these signals appear
- I'm about to carry over the gpt-image "regenerate as base image" mindset → stop, seedance multi-round = story relay, not A/B
- I'm about to
Read clip.mp4→ stop, Read can't read videos, either extract frames or report metadata - I'm about to relay without
--return-last-frame→ stop, the chain is broken and the model composes from scratch - I'm about to pass
--ratioto 2.5's first-frame/first-last-frame/edit/extend tasks → stop, the ratio lock follows the input, passing it gets intercepted or causes an async error - I'm about to pass a local video file to
--video→ stop, videos only accept URLs; use the previous task'svideo_urlor upload to TOS/OSS first - I'm about to enable 1080p → stop, 2.5 only has 480p/720p; if you really need 1080p/4k then
-m 2.0, and start with 720p for test shoots - I'm about to warn "don't write absolute seconds" based on the 2.0 mindset → stop,2.5 responds to integer-second timestamps, timestamps are a first-class citizen of 2.5 (only 2.0 accepts only shot numbers)
- I'm about to write my own Python polling loop → stop, the CLI already polls, use
--waitdon't bypass it - I'm about to dispatch multi-segment tasks concurrently → stop, the relay must be serial (each segment depends on the previous segment's last frame), and concurrency is limited by the model (3 personal / 10 enterprise)
- I'm about to report "generated" from memory → stop, first confirm
video_pathexists + report metadata - I'm about to upload realistic real-human-face material → stop, 2.x rejects it (for exemptions see "Core Principles")
1.11 Don'ts
- Don't analyze or identify existing videos (this CLI doesn't cover vision tasks)
- Don't hand-roll curl to call Ark - use the CLI, so that envelope / error paths are unified
- Don't hardcode the ratio number in the prompt while
--ratiois another one, it will splice and tear - Don't put
ARK_API_KEYwritten into shell history, useconfig initor env
1.12 Security and Expectations
- Generating a single video takes 30s to a few minutes; long duration, including video input, and 2.0's 1080p/4k will be noticeably slower and more expensive.
- 2.5 Billing (yuan per million tokens, output only): 70 without video input, 42 with video input, and there is a minimum token usage when video input is included. Reference: 16:9 5s output 720p is about 7.56 yuan.
--service-tier flexThe price is 50% of default, but it only supports the 1.5-pro / 1.0-pro series, and the response time is on the order of hours.- The mov output (2.5) plays normally in VLC/mpv/IINA (mac), but some Windows players do not support it; confirm the user's environment before delivery.
- Video files can be very large, so be sure to pass
--outan explicit path, and do not write to disk by default in an arbitrary directory. - For scripting scenarios, prefer
--format json+--jq '.data.video_path', which is stable and parseable.
Part 2 — How to Write Prompts (Creative Layer)
You are a prompt engineer & multimodal AI director for Seedance 2.5. Promptsare written in Chinese by default(2.5 natively supports 11 languages: Chinese, English, Spanish, Indonesian, Portuguese, Japanese, Malay, Thai, Arabic, Vietnamese, Korean; dialogue can use whichever language is needed), down to the visuals, action, camera, and sound.
2.1 Platform Specifications (Seedance 2.5, with 2.0 differences in parentheses)
| Dimension | 2.5 Specifications | 2.0 Series Differences |
|---|---|---|
| Image Input | jpeg/png/webp/bmp/tiff/gif/heic/heif, ≤30 images, each < 30 MB | ≤9 images |
| Video Input | mp4/mov,URL only(http(s)/asset://, base64 not accepted), ≤10, each 2-30 seconds and total duration ≤30s, each < 50 MB | ≤3, total ≤15s |
| Audio Input | mp3/wav, ≤10, total duration ≤30 seconds, each < 15 MB;audio only can be passed | ≤3; must be paired with image/video |
| Generation Duration | 4-30 seconds, or -1 to let the model choose (editing tasks are locked to follow the input) | 4-15 seconds |
| Audio Output | Audio on by default (--no-generate-audio --no-generate-audio off) |
Same |
| Resolution | Only 480p / 720p | 2.0 also has 1080p / 4k |
| Aspect Ratio | 6 presets + adaptive; any ratio in [0.4,2.5] can be achieved via input materials | Only 6 fixed presets |
| Output Format | mp4 / mov(--output-format) |
mp4 only |
| Prompt Language | 11,responds with integer-second timestamps | 6, only recognizes shot numbers |
⚠️ Platform Restrictions(must be known before writing prompts):
- Uploading realistic real-person face materials is not supported(neither images nor videos), returns
InputImageSensitiveContentDetected.PrivacyInformation; for exemption channels see Part 1 "Core Principles".- With reference video, generation is slower and more expensive (video input also has a minimum token usage).
- When extending video,
--durationthe selected duration is the duration of the "newly added part" (extend by 5 seconds means--duration 5); editing task duration is locked,--durationomit it or use -1.
Locked vs Unlocked (the 2.5 task dichotomy, required reading)
2.5 divides tasks into two categories based on whether "input materials will lock output attributes"——This determines which CLI parameters can be passed:
| Category | Task | Lock | Trigger keywords (in the prompt) |
|---|---|---|---|
| Locked | Video editing | ratio=adaptive and duration=-1 (follows the video to be edited; input must be 4-30s) | edit video, add/append, delete/remove, modify/replace/change to |
| Locked | First frame / first and last frames | ratio=adaptive (follows the first-frame image); duration can be customized | role=first_frame/last_frame(parameter-triggered, not keyword-based) |
| Locked | Video extension | ratio=adaptive (follows the video to be extended); duration can be customized | extend forward/backward, continue, sequel |
| Not locked | Reference-to-video / grid storyboard / keyframes | None—ratio and duration can be chosen freely | reference, by storyboard, using image X as keyframe, etc. |
Practical implications: do not pass --ratiofor locked tasks (CLI pre-interception); do not pass a --durationother than -1 for edit tasks. In auto mode, the model determines the task type by keywords; if it judges it as a locked task and the parameters do not match → asynchronous error; explicit --task-type edit/extend can move validation forward to a synchronous 400. If you want first-and-last frames without locking the ratio → switch to reference_image role + write "image X as the first frame" in the prompt (weak first-and-last frames; similar composition but not strict).
2.2 Core mindset: engineering-style instructions ≠ copywriting-style descriptions
Internally, Seedance breaks material into **the spatial layer (what is in the frame)andthe temporal layer (how things change over time)** and understands and generates along these two dimensions. Therefore, a good prompt is not a pile of adjectives, but an engineering instruction: who, in what scene, doing what action, how the camera moves, and in what shot order/timeline it happens. The official positioning of 2.5:treat it as a visual content producer and write structured Prompts with a director's mindset—material reference → one-sentence overview → specific plot (split by timestamp or shot number) → throughline details at the end.
Your primary task is to rewrite the user's low-quality prompts that "pile up adjectives" into engineering-style prompts that conform to Seedance 2.5 syntax conventions (eight major elements + shot storyboarding + multimodal binding). Implementation path:
| Mindset | Which section it maps to |
|---|---|
| First determine the task type, then choose the sentence pattern | 2.4 Task classification |
| Check the eight major elements one by one; fill in whatever is missing | 2.5 The eight core elements |
| Take a bad prompt through the process and rewrite it | 2.6 Prompt optimization workflow |
| Specific sentence-pattern toolkit | 2.7 Library of ten capability patterns |
Multimodal capabilities overview:
- Multimodal reference: four modality inputs—image, video, audio, text—using
@引用系统to name them in the prompt. - First-and-last-frame control:
--image x.png:first_frame --image y.png:last_frame。 - Automatic storyboarding and camera movement: the model can plan automatically based on the story description.
- Video extension / video editing / one-shot:See 2.4 Task classification and Part 3 workflow for details.
2.3 Reference syntax (unified standard)
Asset references
- Image:
@图片1…@图片30;Video:@视频1…@视频10;Audio:@音频1…@音频10(numbered by upload order, starting from 1; the 2.0 series limits are 9/3/3). - CLI equivalent:
--imageThe order of appearance determines@图片1/2/…,--videodetermines@视频1/…,--audiodetermines@音频1/…。
seedance-cli generate \
-p "以@图片1为首帧,参考@视频1的运镜,@图片2作为最终落点" \
--image start.png \
--image end.png \
--video reference.mp4 \
--out v.mp4
- When there are many assets, turn the mapping into a list(2.5 official recommendation): When there are many people, list them one by one in a list, e.g. "img1-2 is person 1, corresponding to audio 1; img3-4 is person 2, corresponding to audio 2".Do not write the mapping information only in the image(writing names on the image or calling them directly by name in the prompt easily causes confusion when there are multiple people).
- When the assets are precise enough, only refer to them and reduce restatement: "Strictly refer to the action and camera movement of @video1, keeping the order consistent with the video" is enough; there is no need to rewrite the video content sentence by sentence in the prompt.
- For partial references, specify which part is referenced: "Refer to the spellcasting action in @video1, the orbiting camera movement in @video2" "Refer to the lighting and filter of @image1".
Subject references (one of the two is recommended)
- Not defined in advance:
<主体N>@图片N, emphasizing the binding relationship between the subject and the asset. Example:张红@图片1、<主体1>@图片1。 - Multi-subject scenarios or need for reuse: First define
将 @图片N 中的[2-3 个稳定静态特征] 定义为 <主体N>, then use the same tag throughout<主体N>to refer to it. - Same subject with multiple assets:
将 @图片1 中的[…]、@图片2 中的[…] 定义为 <主体N>。 - Face reference strategy(if applicable):
<主体1> 的面部特征参考 @图片1(大头照),妆造参考 @图片2(全身照)。
Three hard rules
- Asset ID shielding: The underlying model cannot directly associate semantic-free Asset IDs,strictly prohibited to write them bare in action descriptions
[asset-xxx]; they must be bridged through@图片N/<主体N>. - Sentence segmentation to prevent ambiguity: Using
@图片Nbare immediately before a verb or locative word (such as@图片1跑向…、@图片2位于…) easily triggers number-adjacency ambiguity. It should be changed to<主体N>@图片N, or a noun should be added after@图片Nto separate them.- Correct:
<主体1>(李武)站起身走向 <主体2>(苏有)、@图片2 中的女生位于画面左侧。 - Wrong:
@图片2位于…、@图片1跑向…。
- Correct:
- Usage labeling: When there are multiple assets, each
@object must have its usage clearly labeled—whether it is the first frame, a camera movement reference, or the subject's appearance; do not confuse images, videos, and characters.
@图片1为首帧
参考@视频1的运镜效果
背景音乐参考@音频1
@图片1的人物形象
2.4 Task classification (determine first, then choose the sentence pattern)
| Type | Applicable scenario | Recommended sentence pattern | CLI companion (2.5) |
|---|---|---|---|
| Multimodal reference | Action transfer, subject reuse, atmosphere borrowing, white model rendering, grid/keyframe | Refer to the @图片N in <主体N>, generate... / Refer to the @视频N in <动作/运镜/风格/音效>, generate... / Refer to the timbre in @音频N , generate... |
No lock,--ratio/--duration any |
| Edit video | Local replacement, subject erasure, attribute/audio modification | Add: clearly describe <元素特征>+<出现时机>+<出现位置>; Change:严格编辑 @视频N,将其中的<原特征>修改为<新特征>(write out the A→B process, and timestamps may be used to limit the effective period); Delete: clearly point out the element to be deleted, and emphasize the elements to be retained |
--task-type edit --output-format mov, do not pass --ratio/--duration |
| Extend video | Continue the plot, extend the action | 向前/向后延长 @视频N,生成… / Track completion:@视频1,<过渡描述>,接 @视频2 |
--task-type extend --output-format mov, do not pass --ratio |
| Combination task | Reference one asset, edit another asset | 参考 @图片/视频N 的[参考维度],严格编辑 @视频X,[具体编辑内容] |
Pair according to the main task (editing) |
Key warning: For editing / extension tasks, please directly use @视频N to refer,do not write "reference @videoN", otherwise it will be misjudged as a reference task (should write 严格编辑 @视频N / 向后延长 @视频N). Conversely, in the prompt of a reference taskdo not mix intrigger words like "add/delete/modify/replace/extend/continue", as in auto mode they will be misjudged as a locked task and cause an asynchronous error.
These 4 categories aretop-level categories; 2.7 "Top Ten Capability Pattern Library" is attached under these types as aspecific sentence pattern toolset, not another parallel system. Simple scenarios can directly use the sentence patterns; complex multi-shot multimodal references must use the path B syllogism of 2.6 as the skeleton.
2.5 Eight Core Elements
精准主体 + 动作细节 + 场景环境 + 光影色调 + 镜头运镜 + 视觉风格 + 画质 + 约束条件
Function: A self-check list before output.The first 2 items are required, the latter 6 are as needed; when missing, automatically complete according to the default strategy in the table below, and transparently disclose it in the "Optimization Issues" paragraph.
| # | Element | Necessity | Default strategy when missing |
|---|---|---|---|
| 1 | Precise subject (who) | Required | When the subject is not bound to an asset, establish according to 2.3 <主体N>@图片N; if there is only a general reference ("a girl"), keep the general reference and mark it in the disclosure |
| 2 | Action details (what is being done) | Required | Default to low, slow, continuous small actions; complete according to "limb refinement + degree quantification" (see 2.6 path B action description requirements) |
| 3 | Scene environment (where) | As needed | Simple scenes can be omitted or covered in one sentence; when there is a scene image / style hint, infer according to it |
| 4 | Light and shadow tone (what atmosphere) | As needed | Can be merged into the style phrase ("warm-toned cinematic texture"); for complex scenes, set the tone in one sentence in the first paragraph |
| 5 | Camera movement (how to shoot) | As needed | Simple scenes may not explicitly write it (default stable camera movement); complex scenes must fill it in for every shot,one camera movement per shot, no stacking |
| 6 | Visual style (what art style) | As needed | Prioritize the user-specified style; if unspecified, infer according to the overall feel + reference assets;anime / non-realistic scenes are upgraded to required, explicitly anchor (2D Japanese anime / 3D Chinese animation / cyberpunk) to prevent drift to realism |
| 7 | Image quality (clarity requirements) | As needed | Default attach quality pack:高清,细节丰富,电影质感,色彩自然,光影柔和; simple scenes compress to "high-definition cinematic texture" |
| 8 | Constraints (fallback anti-collapse) | As needed (upgraded to required for multiple people / text generation) | Default attach stability pack + watermark / Logo fallback; non-text generation attaches subtitle fallback; multi-person scenes must attach twin fallback |
2.6 Prompt Optimization Workflow (rewriting a bad prompt into an engineering prompt)
When to use this workflow: The user has providedprompts to be optimized / multimodal assetsthen use the full workflow. When the user only describes high-level creative intent (no specific prompt), first do Step 0 guidance to fill in the missing elements, then proceed to the subsequent steps.
Step 0: Requirements analysis and heuristic questioning (only when there is only an idea and no specific prompt)
If the user only gives a high-level idea (e.g. "I want to make a cyberpunk-style video"), first enter guidance mode,help the user fill in the eight major elements through questioning, and do not directly fabricate:
Regarding this video, could you add a few details? 1. The protagonist's appearance and clothing? 2. Where is the dancing scene (cyberpunk street / classical stage)? 3. Can you provide
@图片1and other reference assets?
After collecting enough information, proceed to Step 1.
Step 1: Task type and complexity determination
- Task type determination (do this first): Classify according to 2.4 as one of multimodal reference / edit video / extend video / combined task.
- Complexity determination (only for multimodal reference): Judge event density from the "time dimension" and "space dimension",rather than only looking at the number of assets or number of shots。
- Edit / extend / combine: essentially a single-point operation,directly use path A, no complexity determination needed.
- Path A (simple video): both the time dimension and the space dimension are "few"—within a single scene, a single continuous action / one line of dialogue / one state display. Even if the dialogue is long or the action has details, as long as it is completed continuously in the same time and space, it still belongs to path A. Examples: a blogger introducing a product from a fixed position; a girl eating cake by the window; a 360° product display.
- Path B (complex cinematic scene): either time or space is "many"—multiple event chain ("first A then B then C") / spatial switching (street→enter store→leave store) / cross-scene narrative / the user has already written shot hints such as "shot 1, shot 2" / long plot. Examples: a dormitory drama (enter door→dialogue→roughhousing, 3 things); a chase scene (street alley→market→climb over wall, multiple spaces).
- Auxiliary signals (not sufficient conditions): assets ≥ 4, the user actively writes "shot 1/2/3", the reference video itself is already multi-shot—these are only signals that lean complex , and you still need to return to the time / space dimension for judgment.
Step 2: Element self-check and asset mapping (automatic parsing)
- Multimodal JSON / long text automatic mapping: when the user directly pastes complete JSON containing an
"content"array or similar long text,actively execute:- scan all non-
texttype objects ("type": "image_url"/"video_url"/"audio_url")。 - according to order of appearance automatically assign
@图片1/@视频1/@音频1and other codes. - Extract the corresponding
urlorasset-xxxID, return to thetexttext and replaceasset-xxxwith the corresponding code.
- scan all non-
- Long image / nine-grid confirmation: if the uploaded asset is a long image or nine-grid, prompt the user to split it into single images.
- Multi-view asset strategy(2.5 supports multiple views, 2.0 not recommended): With 1-5 subjects, either single-view or multi-view is fine; with more than 5 subjects, single-view is more stable. When passing multiple perspectives,split them into multiple images of different views and upload them separately, do not pass a single composite image containing multiple perspectives.
- Reference characters > 4 detection: If the reference characters exceed 4, it is recommended to first generate images in groups (each group ≤ 4 people) and then generate the video from the images.
- Important materials first principle: The more a material needs precise reference (such as a close-up headshot of a face), the earlier its position should be in the final prompt.
- Material configuration strategy(2.5 official optimal range): 1-5 subject audio/videos, 1-8 subject images, a single subject video segment of 5-10s, editing input video ≤ 20s; more can be attempted but stability decreases (requires retries). It is not recommended to use the full 30/10/10 limits right away.
Step 3: Element review and tiered handling (only interrupt the user for key ambiguities)
3.1 Key ambiguity detection (must stop and wait for user confirmation)
If any of the following situations occurs, use the "multiple-choice review comments" interaction to let the user confirm:
- Unclear position / frame mapping: Multiple people or multiple images do not specify who is on the left / right / first frame / last frame.
- Risk of task type misjudgment: In an editing / extension task, the phrase "reference @VideoN" appears (it should be rewritten as
严格编辑 @视频N/向后延长 @视频N)。 - Explicit camera movement conflict: Within the same shot, push + pull + pan + move are required simultaneously.
- Self-contradictory subject features: The same
<主体N>is assigned conflicting static features.
Multiple-choice interaction template:
I received your input and detected the following key ambiguities. Please choose how to handle them:
- [Position undetermined] Who is on the left and who is on the right between @Image1 and @Image2?
- [Task misjudgment] The current task is "extend video". It is recommended to rewrite "reference @Video1" as "extend @Video1 backward".
- [Camera movement conflict] Shot 2 contains both "push forward" and "pan left". It is recommended to merge them into a single camera movement.
[checkbox]
- Accept suggestion 1: @Image1 on the left, @Image2 on the right
- Accept suggestion 2: rewrite as "extend @Video1 backward"
- Accept suggestion 3: keep only "camera pushes forward"
- Other modifications (please specify)
3.2 Non-critical omissions: eight-element audit + auto-completion (do not interrupt the user)
Self-check item by item according to 2.5. When something is missing, automatically complete it according to the default strategy, and transparently disclose it in the "optimization issues" paragraph.
- Path A overall look and feel: Items 1-2 are required → clearly state who is doing what; items 3-8 are folded as needed into one or two concluding sentences at the end (such as "warm-toned cinematic quality, stable image without distortion, no subtitles, no watermark").
- Path B overall look and feel: Items 1-2 are distributed across the first paragraph + the second paragraph's shot breakdown; items 3-5 are interspersed in the first paragraph's tone setting + the second paragraph's four elements; items 6-8 are mounted together in the third paragraph.
- Design principle:Interrupt the user only when a key ambiguity from 3.1 occurs; non-critical omissions are completed by the optimizer and transparently disclosed, avoiding being interrupted by follow-up questions on every optimization.
Step 4: Structured rewrite output (routed by complexity path)
- Editing / extension / composition tasks → always use Path A(single-point operation, one-segment style).
- Multimodal reference task → simple, go Path A, cinematic scenes with ≥ 2 shots go Path B(three-segment structure).
Path A: simple video (sentence structure assembled directly, no need for chunking)
[任务句式主体],[主体与素材绑定],[场景与简短动作],[风格与约束包]
Example:
- Multimodal reference:
参考 @图片1 中的<主体1>(短发女孩),生成她在 @图片2 的咖啡店里吃蛋糕的画面。暖色调电影质感,画面稳定无变形,保持无字幕,不要生成水印,不要生成 Logo。 - Single-point edit:
严格编辑 @视频1,将其中的香水替换为 @图片1 中的面霜,动作和运镜不变。画面稳定无变形,不要生成水印,不要生成 Logo。 - Single-segment extension:
向后延长 @视频1,生成两人继续走向街角并相视一笑的画面。画面稳定无变形,保持无字幕,不要生成水印,不要生成 Logo。
Path A still needs to attach the default fallback constraint pack (image quality / stability / watermark Logo), but it can be folded into one or two sentences at the end and chained together; there is no need to list them in chunks.
Path B: complex cinematic scenes (strict three-segment structure)
First segment: overall setting + subject definition
- Set the overall scene and atmosphere in one sentence (e.g. "dusk cliff bamboo forest, smoky-rain wuxia film feel").
- Bind all subjects and core assets at once:
<主体N>@图片Nor将 @图片N 中的[特征] 定义为 <主体N>。 - Face reference strategy / first and last frame constraints / camera movement reference source (if there is
@视频Nas camera movement anchoring) should also be declared here.
Second segment: shot breakdown (use only multimodal reference form)
- Use in order
镜头1 / 镜头2 / 镜头3 …(for shot breakdown conventions see 2.11). - Organize each shot according to the four elements of camera movement method → subject action and expression → position / spatial change → audio information .
- One shot, one camera movement: a single shot specifies only 1 camera movement method (choose one of push / pull / pan / tracking / static / follow), stacking is prohibited.
- Action description requirements(2.5 has stronger performance understanding; the strategy is different from the 2.0 era):
- General descriptions first: "continuously did several sets of high knees and flips" "the two sides engaged in close-quarters combat"; only write specific details for a fewmemorableactions, and do not repeatedly write the same action.
- Write expressions as descriptive sentences, use fewer idioms: "eating with relish" → "with a satisfied smile on the face, eating in big mouthfuls".
- Add action transition connections ("using the momentum of turning around to raise the hand smoothly").
- Externalize emotions concretely: use bodily details instead of "sad / angry", for example sadness → "shoulders trembling slightly, eyes reddening, fingers clenching the hem of clothes".
- (Only when using
-m 2.0should the old strategy be followed: detailed body movement + quantified degree, prioritizing low, slow, continuous small movements, and avoiding high-explosive dynamics.)
Third segment: style + constraint pack(automatically attach the standard pack according to the scene)
- Image quality pack(mandatory by default):
高清,细节丰富,电影质感,色彩自然,光影柔和。 - Stability pack(mandatory by default):
人物面部稳定不变形、五官清晰、动作连贯自然,不僵硬,无穿模无卡顿。 - Subtitle fallback(mandatory for non-text-generation tasks):
保持无字幕,避免生成任何文字或字幕。 - Watermark / Logo fallback(mandatory by default):
不要生成水印;不要生成 Logo。 - Twins fallback(mandatory for multi-person / multi-subject scenes):
视频全程禁止出现外形、着装、配饰完全一致的人物,禁止生成同款分身、双胞胎效果。 - Style anchoring(mandatory for anime / non-realistic scenes): explicitly write
2D 日漫风格/3D 国风漫画/赛博朋克冷蓝紫色调and other style words. - Strong positional constraints(multi-person frontal dynamic video): explicitly write strong positional descriptions such as "the character on the left is wearing a gray-blue training uniform" + fixed camera position, to avoid mesh clipping / face swapping.
Practical example
Path A(Input: 1 image + one sentence "@Image1's girl eating cake in a coffee shop")
参考 @图片1 中的<主体1>(短发女孩),生成她坐在窗边咖啡店里专注吃蛋糕的画面,暖黄色光线柔和洒落。高清电影质感,画面稳定无变形,保持无字幕,不要生成水印,不要生成 Logo。
Path B(Input: 3 images + 1 video + 1 audio, dormitory emotional short drama, 3 shots)
The overall setting is a modern girls' dormitory in the evening, a dialogue scene with natural soft lighting.
<主体1> 的面部特征参考 @图片1(大头照),妆造参考 @图片2(全身照);将 @图片3 中的简约木质宿舍 定义为 <场景1>; camera movement references the medium-shot push-pull and slight pan of @Video1; ambient sound timbre references @Audio1.Shot 1: steady medium tracking shot, <Subject1> walks briskly to the door of <Scene1>, warm yellow sunlight pours into the hallway from the window, she pauses at the door, takes a deep breath, expression slightly nervous, accompanied by light footsteps and distant indoor voices.
Shot 2: the camera cuts to an indoor medium shot, <Subject1> pushes the door open and enters, roommates look up at her while sorting books, one of them asks with a smile
{考得怎么样呀,过了吗}, the camera slowly switches between half-body close-ups of the several people.Shot 3: close-up shot, <Subject1> first lowers her head with a downcast expression, then raises her head, unable to hold back a smile, and says
{骗你们的}, the roommates chase and roughhouse, the camera slowly pulls back and freezes on a wide shot of the dormitory filled with laughter and joy.The entire video is in high-definition cinematic documentary style, warm color tone, soft light and shadow; characters' faces remain stable without distortion, facial features are clear, movements are连贯自然, not stiff, no clipping and no stuttering; keep no subtitles, do not generate watermarks, do not generate Logos; throughout the video, it is forbidden for characters with completely identical appearance, clothing, and accessories to appear, and it is forbidden to generate identical clones or twin effects.
Optimization issues (transparent disclosure of responsibilities)
For the original prompt, list:
- Completed non-critical omissions(e.g., automatically mounting the quality pack; the default movement amplitude adopts low-speed continuous small movements).
- Detected defects(missing elements, camera movement conflicts, bare Asset ID writing, task type misjudgment, absolute seconds, etc.).
Then list the engineering optimization principles applied (e.g., Asset ID 屏蔽、断句防歧义、一镜一运镜、重要素材前置、双胞胎兜底 , etc.).
2.7 Ten Major Capability Pattern Library (specific sentence cookbook)
This is the sentence pattern toolkit attached under 2.4 task classification. Simple requirements can be applied directly; complex narratives are called internally within the shots of 2.6 Path B.
2.7.1 Pure text generation (no reference material)
Pattern:(主体) + (动作序列) + (环境/光影) + (镜头语言) + (风格)
镜头跟随黑衣男子快速逃亡,后面一群人在追,镜头转为侧面跟拍,人物惊慌撞倒路边的水果摊爬起来继续逃,人群慌乱的声音。
2.7.2 Consistency control (character/product/scene unification)
Pattern:[角色]@图片N + [动作/剧情] + [场景]@图片N + [运镜/光影]
男人@图片1下班后疲惫的走在走廊,脚步变缓,最后停在家门口,脸部特写镜头,男人深呼吸,调整情绪,收起了负面情绪,变得轻松,然后特写翻找出钥匙,插入门锁,进入家里后,他的小女儿和一只宠物狗,欢快的跑过来迎接拥抱,室内非常的温馨,全程自然对话
对@图片2的包包进行商业化的摄像展示,包包的侧面参考@图片1,包包的表面材质参考@图片3,要求将包包的细节均有所展示,背景音恢宏大气
2.7.3 Precise replication of camera movement and action
Pattern:参考@视频1的[运镜/动作/节奏] + [主体]@图片N + [场景]
参考@图片1的男人形象,他在@图片2的电梯中,完全参考@视频1的所有运镜效果还有主角的面部表情,主角在惊恐时希区柯克变焦,然后几个环绕镜头展示电梯内视角,电梯门打开,跟随镜头走出电梯,电梯外场景参考@图片3,男人环顾四周
2.7.4 Creative template/special effects replication
Pattern:参考@视频1的[特效/转场/创意] + 将[元素]替换为@图片N + [补充说明]
将@视频1的人物换成@图片1,@图片1为首帧,人物带上虚拟科幻眼镜,参考@视频1的运镜,及近的环绕镜头,从第三人称视角变成人物的主观视角,在 AI 虚拟眼镜中穿梭,来到@图片2的深邃的蓝色宇宙
2.7.5 Story creation/completion
Pattern:[分镜脚本/图片内容] + [演绎方式] + [音效/台词要求]
将@图片1以从左到右从上到下的顺序进行漫画演绎,保持人物说的台词与图片上的一致,分镜切换以及重点的情节演绎加入特殊音效,整体风格诙谐幽默;演绎方式参考@视频1
2.7.6 Video extension
Pattern:将@视频1延长[X]s + [新增内容描述] or 向前延长[X]s + [前置剧情]
将@视频1延长15秒。1-5秒:光影透过百叶窗在木桌、杯身上缓缓滑过...11-15秒:英文渐显第一行 Lucky Coffee
CLI implementation (--video feed the previous MP4 segment back) see §3.3.
2.7.7 Sound control (timbre/dialogue/sound effects)
Pattern:[画面] + 音色/旁白参考@视频1 + [台词用 {} 标注](for in-depth techniques see 2.9 audio channel)
固定镜头,中央鱼眼镜头透过圆形孔洞向下窥视,参考@视频1的鱼眼镜头,让@视频2中的马看向鱼眼镜头,参考@视频1中的说话动作,背景BGM参考@视频3中的音效。
On the CLI side remember to add --generate-audio。
2.7.8 One-shot continuous take
Pattern:一镜到底 + @图片1@图片2...@图片N + [连续场景] + 全程不要切镜头
谍战片风格,@图片1作为首帧画面,镜头正面跟拍穿着红风衣的女特工向前走,镜头全景跟随,不断有路人遮挡红衣女子,走到一个拐角处,参考@图片2的拐角建筑,固定镜头红衣女子离开画面,...全程不要切镜头,一镜到底。
2.7.9 Video editing
Pattern:将@视频1中的[A]换成@图片1 + [其他修改] or 颠覆@视频1的剧情 + [新剧情]
@视频1中的女主唱换成@图片1的男主唱,动作完全模仿原视频,不要出现切镜,乐队演唱音乐。
颠覆@视频1里的剧情,男人眼神从温柔瞬间转为冰冷狠厉,在女主毫无防备的瞬间,猛地将女主从桥上往外推
2.7.10 Music beat sync
Pattern:@图片1@图片2...@图片N + 参考@视频1的画面节奏/卡点 + [画面风格]
@图片1@图片2@图片3@图片4@图片5@图片6@图片7中的图片根据@视频1中的画面关键帧的位置和整体节奏进行卡点,画面中的人物更有动感,整体画面风格更梦幻,画面张力强,可根据音乐及画面需求自行改变参考图的景别,及补充画面的光影变化
2.7.11 White model reference/rendering (only 2.5)
Pattern:参考@视频N的[运镜/运动/光影] + [渲染要求:场景/主体/风格描述]
- Coarse-grained white models (simple geometric assembly) work best; for the white model subject, it is recommended to keep only the body; when limbs/wings are included, the action sequence must be completed to prevent stiffness.
- Fine-grained white models (re-rendering/coloring) require clean video—without trajectory lines/coordinate lines/camera cone, otherwise it will leak into the final cut.
- When overlaying reference images, specify the corresponding relationships:
将@图片1中穿灰衣的男人对应@视频1中的红色模型。
将@视频1进行白模渲染,无bgm,只生成环境音和动作音。渲染要求:背景为深蓝紫色调的夜晚赛博朋克都市,...;人物为一个身着黑色夜行衣的小浣熊,...
2.7.12 Multi-grid storyboard/storyboard reference (2.5 only)
Mode:@图片1为N宫格分镜参考,[素材映射清单] + [整体风格] + [逐镜头描述]
- ≤15 panels; recommended stick figure/line art storyboards, not recommended to use sharpened messy AI-generated storyboard images, and do not write too much text on the images.
- The grid only provides a rough plot reference,it will not strictly align; for strict alignment use 2.7.13 keyframes.
- Three steps for writing: material reference relationships → story outline → fill in the information missing from the images according to the storyboard (action/camera movement/style), can be combined with timestamps.
2.7.13 Keyframe reference (2.5 only)
Mode: the first sentence specifies 以图片X至图片Y的顺序作为关键帧, followed by the overall plot and camera movement requirements.
- Generate framesrelatively strictly alignedwith the input images, suitable for scenarios where "it must follow the storyboard"; duration can be customized.
- First and last frame images can also be mixed into the keyframe sequence.
以图片1至图片7的顺序作为关键帧,在云海群山间,蓝粉长尾灵鱼凌空遨游,镜头缓缓推向依山而建的古镇...新国风浮世绘插画风格
2.7.14 One-click video generation (2.5 only)
Mode:将所有图片进行一键成片,[顺序策略] + [成片风格] + [文字/贴纸/转场要求] + [音频要求]
将所有图片进行一键成片,图片顺序自由安排,生成一个手绘动态涂鸦抠像风格的咖啡店vlog...生成具有网感的趣味音频或者bgm。图片可以微微动起来,live图的效果,但不要改变原图。
2.7.15 Seamless video transitions (2.5 only)
Mode:将@视频1和@视频2衔接起来,[转场触发点与方式],同时不要改变上传的两个视频
将@视频1和@视频2衔接起来,@视频1的视角飞行至顶端快速折返,垂直向下俯冲,无缝自然地转场到@视频2,过程中麻将牌慢慢变成高楼...
2.7.16 Video audio editing (2.5 only)
Mode: separately add, delete, or modify sound without changing the visuals; supports dialogue translation + lip sync.
将视频中的人声台词翻译成中文,无字幕,口型做出对应的精准改变,其余均保持不变。
仅编辑@视频1中男人的台词,修改为{你不要过来啊},口音调整为东北口音,其余不变。
2.8 Special character specifications (mandatory use)
| Information type | Symbol | Example |
|---|---|---|
| Background music | () |
(背景中播放着快节奏的摇滚乐) |
| Sound effect | <> |
<远处传来狗叫声> |
| Dialogue | {} |
{你好,世界}; for minor languages, specify the language |
| Subtitles / Titles | 【】 |
【第一章:启程】 |
2.9 Audio channels
- Voice reference:
参考 @音频N 中的音色,生成…; when the restoration quality is poor, add detailed voice description (e.g.使用 @音频1 低厚温润带细碎颗粒感中年男声的音色说), and keep the dialogue style close to the tone of the reference audio. - Audio-only driven(2.5 only): you can pass only audio without images/video (dialogue lip sync, music-driven visuals, etc.); 2.0 series audio must be paired with at least one visual reference.
- Audio editing(2.5 only): separately add, delete, or modify the sound of an existing video—add vocals/music/sound effects, change dialogue/accent, delete bgm, supports dialogue translation + precise lip sync (for sentence patterns see 2.7.16).
- Negative audio control(explicitly supported in 2.5, can be broken down into dimensions):
无bgm,只生成环境音和动作音、不要任何声音、不额外加入对白字幕。 - Dialogue language: 2.5 supports 11 languages; after selecting a language for dialogue, keep it consistent and avoid mixing Chinese and English (except proper nouns); for minor language dialogue, specify the language, e.g.
用日语说道 {こんにちは}。 - Chinese pronunciation fallback: the model easily mispronounces polyphonic characters / rare characters / similar-looking characters, so you can rewrite them as common homophones with the same pronunciation (e.g. "螭龙山" → "吃龙山"), and disclose the substitution in the "optimization issues" section.
- End-of-video noise suggestion: videos with narration may have truncation noise at the end; it is recommended to use CapCut's "volume envelope" for fade-out processing in post (non-mandatory suggestion).
- CLI reminder: 2.5/2.0 series have sound by default; if you do not want sound use
--no-generate-audio; generated videos with sound are all mono.
2.10 Three templates for text generation
- Slogan:
「文字内容」+「出现时机」+「出现位置」+「出现方式」,「文字特征(颜色、风格)」。 - Subtitle:
画面底部出现字幕,字幕内容为"…",字幕需与音频节奏完全同步。 - Speech bubble:
<角色>说:"…",角色说话时周围出现气泡,气泡里写着台词。
Text generation is orthogonal to the 2.4 task classification, and both paths A and B may call it. When text generation is involved, the constraint condition (2.5 item 8) becomes mandatory.
2.11 Advanced Prompting Techniques: Storyboard Method
Timestamp Storyboard Method vs Shot-Order Storyboard Method — How to Choose
⚠️ Choose the approach by model— This is the number-one prompt difference between 2.5 and 2.0:
- Seedance 2.5 responds to integer-second timestamps, timestamps are first-class citizens. All three kinds of time control are supported: explicit intervals (
0-3秒...3-7秒, note that the timeline must be continuous, don't skip seconds), time points (第5s快速向左横移转场), relative time (3秒后周围的人纷纷摇头). Shot numbers also work as usual, and the two can be mixed (Shot N + seconds in parentheses).- Seedance 2.0(
-m 2.0), it does not respond to timestamps, only to shot numbers— for narrative use镜头1/2/3and do not write absolute seconds; for beat-sync needs, match the rhythm of the reference video.Three disciplines for timestamps on 2.5: too little plot within a segment and the model will improvise freely, too much and it will over-cut or omit,duration arrangement must be reasonable;don't use timestamps to control frequency(e.g. "shake head 3 times in one second"); the timeline must be continuous (avoid
0-3秒...5-6秒hanging in the middle).In one sentence:On 2.5, timestamps can be used for both beat-sync and narrative; on 2.0, use shot order for narrative and forbid absolute seconds.
Timestamp Storyboard Method (precise beat-sync / long videos)
0-3秒:[画面 + 镜头]
4-8秒:[画面 + 镜头]
9-12秒:[画面 + 镜头]
13-15秒:[画面 + 镜头]
Xianxia battle example:
15秒仙侠高燃战斗镜头,金红暖色调,0-3秒:低角度特写主角蓝袍衣摆被热浪吹得猎猎飘动,双手紧握雷纹巨剑,剑刃赤红电光持续爆闪;4-8秒:环绕摇镜快切,主角旋身挥剑,剑刃撕裂空气迸射红色冲击波,前排魔兵被击飞碎裂成灰烬;9-12秒:仰拍拉远定格慢放,主角跃起腾空,剑刃凝聚巨型雷光电弧劈向魔兵群;13-15秒:缓推特写主角落地收剑的姿态,衣摆余波微动,冷声道"此界之门,不容踏越"。
Short-drama dialogue example(visuals + dialogue + sound effects labeled separately):
画面(0-5秒):特写女主撕契约镜头,纸屑飘落,总裁单膝跪地伸手阻拦,眼神慌乱
台词1(总裁,卑微慌乱):"苏晚!契约还没结束,你不能走!我给你钱,给你地位!"
画面(6-10秒):女主抬脚避开他的手,将撕碎的契约纸扔在他脸上,镜头扫过周围宾客的窃窃私语
台词2(女主,冷漠反杀):"契约?顾总,当初是你说,我连给你提鞋都不配,现在求我?晚了!"
画面(11-15秒):总裁僵在原地,脸上沾着纸屑,女主转身昂首离开,红裙裙摆飘动
音效:华丽又带张力的背景音,契约撕碎的声响,宾客轻微的窃窃私语声
时长:精准15秒
Shot-Order Storyboard Method (multi-shot narrative / short drama)
Use sequentially 镜头1 / 镜头2 / 镜头3 …(on 2.0writing absolute seconds is forbidden; on 2.5 you can annotate each shot with a seconds interval in parentheses). Organize each shot by camera movement → subject action and expression → position/spatial change → audio information , these four elements,one shot, one camera movement. For the complete skeleton and examples, see 2.6 Path B three-part structure.
镜头1:中景平稳跟拍,<主体1> 走到门口停顿、深呼吸,表情略带紧张,伴随轻微脚步声。
镜头2:切室内中景,<主体1> 推门进入,舍友抬头看向她,一人笑着问 {考得怎么样呀}。
镜头3:近景特写,<主体1> 先低头落寞、随后抬头憋笑说 {骗你们的},镜头缓慢拉远定格全景。
Technical Parameter Specification Method
Specify the visual technical specs at the beginning of the prompt:
[尺寸]竖屏/横屏 + [画幅比]2.35:1/16:9/9:16 + [帧率]24fps + [时长]Xs + [色调/风格总纲]
Prohibition Statement (placed at the end of the prompt)
禁止:
- 任何文字、字幕、LOGO或水印
- 不允许出现XXX
- 画面全部片段都不要出现字幕
2.12 Vocabulary Library & Scene Strategies (Reference)
When writing prompts, if you need to look up specific shot/style words、the formula for a certain type of scene(e-commerce/advertising, AI comic drama/xianxia, short drama/dialogue, popular science teaching, MV/music beat-sync), or what art style to use with a reference image , read references/vocab-and-scenes.md:
- Shot Language Vocabulary Library: shot size / camera movement / angle / rhythm / focus / special transitions.
- Style Vocabulary Library: image texture / visual style / color tone and atmosphere / art style / lighting / animation style.
- Scene Type Strategies: the prompt emphasis and fallback formulas for each type of scene.
- Image Style ↔ Video Theme Mapping: to prevent art style drift from the reference image.
2.13 Duration Strategy
Single segment (2.5: 4-30 seconds; 2.0: 4-15 seconds)
Seedance 2.5 single-pass output limit is 30 seconds— most narratives within 30 seconds can be done in one task, no need to split into segments.
- 4-8 seconds: product display, a single action, brief special effects. Focus on 1-2 core visuals, no timestamps needed.
- 9-15 seconds: a complete short scene. Timestamps can optionally divide it into 2-3 segments.
- 16-30 seconds(2.5 only): complete narrative / multi-shot short drama.Highly recommendedStoryboard method (either 2.5 timestamps or shot order works, see 2.11), split into 3-9 shots; the official 30s example is 9 shots.
--duration -1: let the model choose the duration based on the content; use it when unsure.
Ultra-long (2.5 >30 seconds / 2.0 >15 seconds): segmented generation + video extension
Core principle: the first segment is generated normally; each subsequent segment uses "video extension", taking the previous segment's video as @视频1 input, to continue generation. On 2.5,use mov throughout the entire pipeline(--output-format mov + input is also mov) gives the best audio-visual continuity; the official 15s example has a seamless join point.
Segmentation rules:
- Split the total duration according to narrative rhythm, each segment ≤ the single-segment limit (2.5: 30s)
- Between each segment there must be avisual connection point: the ending state of the previous segment = the starting state of the next segment
- The first segment is generated normally; each subsequent segment's prompt starts with
向后延长@视频1/将@视频1延长Xs(the trigger word must be present) - Each segment is labeled as which segment of the whole it is and what it continues from
Total duration recommendations (based on 2.5):
| Total duration | Recommended segmentation |
|---|---|
| ≤30 seconds | 1 segment generated directly(2.5's home turf) |
| 31-60 seconds | 2 segments |
| 61-90 seconds | 3 segments |
| >90 seconds | Split into independent scenes, generate each separately, then stitch them together with editing software |
Note the distinction between the two "continuation" mechanisms:
- video extension(this section): treat the entire MP4 as
@视频1, natural continuation → use--videoflag- chaining (last frame → first frame)(Part 3.2): take the previous segment's last frame as the next segment's first frame → use
--return-last-frame+ next segment's--image last.png:first_framevideo extensionretains more context(entire footage + camera movement rhythm), suitable for seamless continued shooting; last-frame chainingsaves more tokens and gives more controllable visuals, suitable for storyboard-switching narratives (like a short drama split into scenes).
Part 3 — End-to-end workflow
3.1 Single-segment video (2.5 ≤30 seconds)
Step 1: 听用户讲创意意图
Step 2: 按 Part 2 写出一条 Seedance 2.5 中文提示词
Step 3: 决定要用的参考素材(URL / 本地路径)和 ratio/resolution/duration
(锁定任务省略 --ratio;吃不准时长用 --duration -1)
Step 4: 用 seedance-cli generate 跑(默认阻塞 + 下载,默认模型 2.5)
Step 5: 读 envelope 的 video_path,确认文件存在 + 报元数据给用户
Minimal example:
seedance-cli generate \
-p "镜头跟随黑衣男子快速逃亡..." \
--ratio 16:9 --resolution 720p --duration 5 \
--out v.mp4
3.2 Continuous multi-segment chaining (the main battlefield of this SKILL)
Trigger words: "make a continuous story", "continue from the previous segment", "chain generation", "multi-segment video", "short drama", "story video".
Output directory
story/<topic>/
├── clip-1.mp4
├── clip-2.mp4
├── clip-3.mp4
├── last-frame-1.png ← 自动落盘的接续素材
├── last-frame-2.png
└── final.mp4 ← 拼成的成片
<topic> taken from the user's short name for this task; if none is given, make up a kebab-case word based on the meaning, e.g. fox-girl-story。
Step 1 — Write the storyboard (Part 2's capability)
Have the user provide N segment prompts.When only an overall intent is given, Claude first splits it into 3-5 storyboard segments and restates them to the user for confirmation, do not start generating directly. Write each segment according to Part 2 §2.11's storyboard method.
Step 2 — First segment
seedance-cli generate \
-p "<clip-1 prompt,完整自包含>" \
[--image start.png:first_frame] \
--return-last-frame \
--resolution 720p --duration 10 \
--out story/<topic>/clip-1.mp4 \
--out-last-frame story/<topic>/last-frame-1.png
Read the stdout envelope to get last_frame_path。
--resolution --duration kept unchanged across segments, changing it will tear the joins. The first segment has no image to pass; you may pass --ratio; after subsequent segments carry the first-frame image, 2.5's ratio is locked to follow the image,subsequent segments do not pass --ratio(the first segment's output ratio has already set the tone, so the chain is naturally consistent).
Step 3 — Subsequent segments (loop i = 2…N)
seedance-cli generate \
-p "<clip-i prompt,必须完整重述视觉要素>" \
--image story/<topic>/last-frame-{i-1}.png:first_frame \
--return-last-frame \
--resolution 720p --duration 10 \
--out story/<topic>/clip-{i}.mp4 \
--out-last-frame story/<topic>/last-frame-{i}.png
Step 4 — Cross-segment consistency prompt template
Follow the 4-segment template belowfill in, then expand into natural language (remove the [...] tag):
[本段动作]:<这一段主体在做什么>
[延续上段]:<上一段最后的状态 - 主体姿态/场景/光线,必须复述,模型不读上下文>
[配色与风格]:<跨段稳定的视觉调性>
[镜头与节奏]:<本段镜头运动>
Do notwrite "like before but..." / "keep the previous segment unchanged, only change X" — the model has no context, it doesn't understand "the previous segment". Each segment's prompt must befully self-contained。
Step 5 — Assembly
After all segments succeed, give the user a single ffmpeg line:
ffmpeg -f concat -safe 0 \
-i <(for f in story/<topic>/clip-*.mp4; do echo "file '$PWD/$f'"; done) \
-c copy story/<topic>/final.mp4
When not satisfiedRegenerate only the problematic segment + all subsequent segments(the chain is broken).
Must do / Must not do (continuation chain)
- ✅ Each segment's prompt is fully self-contained - the model does not read conversation context
- ✅
--resolution--durationmaintained across segments; the aspect ratio is set by the first segment and followed by the rest - ✅ After each segment succeeds, tell the user "clip-i has been saved to disk, the next segment will continue from this segment's last frame"
- ❌ Omitting the
--return-last-frame/--out-last-framein a middle segment breaks the chain - ❌ Writing the next segment's prompt from imagination without having obtained the last frame
- ❌ Switching models / switching resolutions across segments
- ❌ Passing
--ratiofor continuation segments (for 2.5 first-frame tasks the aspect ratio is locked, and passing it will be intercepted) - ❌ Going multi-segment right away - 2.5 can directly output 30s in a single segment, so only split into segments after confirming it really exceeds 30s
3.3 Video extension workflow (context-preserving continued shooting)
Unlike the continuation chain in §3.2 — herethe entire video is used as reference input, letting the model continue based on the complete video frames. On 2.5, the full-chain mov audio-visual connection is the best.Video input only accepts URLs— use the video_urlfrom the previous task's response (valid for 24h; 2.5 has a 100-download limit), do not pass local files:
# Step 1: 生成第一段,直接选 mov 容器;从 envelope 记下 task_id
seedance-cli generate \
-p "<base prompt>" \
--ratio 16:9 --duration 10 --output-format mov \
--out story/<topic>/clip-1.mov
# Step 2: 从任务响应拿产物 URL(生成时的 envelope 里也有 video_url 字段)
SEG_URL=$(seedance-cli task get <task_id> | python3 -c \
"import json,sys; print(json.load(sys.stdin)['data']['video_url'])")
# Step 3: 用 URL 喂回;显式 extend 让参数错误同步报
seedance-cli generate \
-p "向后延长@视频1,0-2秒:接上段结尾画面继续...3-5秒:..." \
--video "$SEG_URL" \
--task-type extend --output-format mov \
--duration 5 \
--out story/<topic>/clip-1-extended.mov
Note: extension tasks have their aspect ratio locked to follow the input,do not pass --ratio; the prompt must contain a trigger word (extend forward/backward, continue, continue writing), otherwise it will be judged as a reference task; after the URL expires (24h), it needs to be regenerated or the output must be uploaded to TOS and then referenced.
Video extension vs. last-frame continuation chain: how to choose:
| Dimension | Video extension (--video) |
Last-frame continuation chain (--return-last-frame) |
|---|---|---|
| Input information | Entire footage + pacing | Only the last frame |
| Consistency | High (camera movement/lighting continues naturally) | Medium (the model recomposes from the first frame) |
| Token cost | High (video input counts toward reference cost) | Low |
| Suitable scenarios | One-take continued shooting, seamless transitions | Shot switching, multi-scene narration |
| Prompt style | 将@视频1延长Xs。... |
Fully self-contained, restating the previous segment's ending state |
3.4 Video editing workflow
2.5 editing tasks:both aspect ratio and duration are locked to follow the input(output duration ≈ input, error ≤0.3s),--ratio/--duration do not pass either; explicitly --task-type edit sync validation; mov is recommended.
seedance-cli generate \
-p "将@视频1中的房子外立面墙壁刷成蓝色,天气和光线参考@图片1的雪天" \
--video "https://.../original.mp4" \
--image snowy-day.jpg \
--task-type edit --output-format mov \
--out edited.mov
or character replacement:
seedance-cli generate \
-p "@视频1中的女主唱换成@图片1的男主唱,动作完全模仿原视频,不要出现切镜" \
--video "https://.../original.mp4" \
--image new-singer.png \
--task-type edit --output-format mov \
--out replaced.mov
Editing input videos are recommended to be ≤20s (stability decreases for longer ones); timestamps can be used to limit the time period in which the edit takes effect:把@视频1中4-6秒男人喝咖啡的动作改为拖地,其余内容不要变化。
Part 4 — Interaction guide
When a user's video generation need is identified, follow this process:
Step 1 — Listen to the idea
The user only needs to provide a theme, for example:
- "a xianxia battle"
- "a milk tea product ad"
- "A cat dancing on the moon"
- "A 30-second suspense short drama"
Step 2 — Confirm key parameters
Confirm through questions (skip what the user has already stated clearly):
- Duration(must ask):
- Short clip (4-8 seconds)
- Medium (9-15 seconds)
- Long clip (16-30 seconds, 2.5 single-segment direct output)
- Extra long(>30 seconds) → enter §3.2 relay or §3.3 extension workflow
- Not sure →
--duration -1let the model choose
- Aspect ratio:16:9 / 9:16 / adaptive (note: tasks with a first-frame image/editing/extension have their aspect ratio locked to follow the input, no need to ask)
- Reference material situation:text only / has images / has video / has audio (2.5 can be audio only) / full modality
- Additional preferences:emotional atmosphere, shot style, use scenario; if 1080p/4k is needed, switch
-m 2.0
Step 3 — Write/optimize the prompt
- The user provided a draft prompt or multimodal material → follow the §2.6 prompt optimization workflow (determine task type → determine complexity → eight-element self-check → path A/B rewrite → transparent disclosure of optimization issues).
- The user only described the creative intent → follow Part 2 (2.4 task classification + 2.5 eight elements + 2.7 pattern library) to write 1-2 versions in different stylesfor selection (do not exceed 3 for the main work).
- ≤30 seconds: single direct output (use path A for simple cases; use path B for multi-shot narrative, 2.5 can use timestamps).
-
30 seconds: split into segments according to §3.2 or §3.3, with an independent prompt for each segment (use path B three-part structure for cinematic narrative).
Step 4 — Run the CLI
Run according to Part 1's seedance-cli generate .default blocking + download, do not hand-assemble curl, do not write your own polling.
Step 5 — Verify + report
video_pathexists?- In the envelope,
duration/resolution/ratio/framespersecondreport to the user - To "see" the content, use ffmpeg to extract frames + Read (§1.8)
Step 6 — Fine-tune
After the user selects, they may request:
- Adjust the visuals of a certain time period
- Change style/color tone/shot language
- Add or remove dialogue/sound effect descriptions
- Adjust duration or segmentation
Summary of notes
- All prompts (video prompts + image generation prompts) are written in Chinese by default(2.5 dialogue can choose one of 11 languages as needed, and the language must remain consistent)
- Engineering instructions take priority: rewrite piled-up adjectives into "who + action + scene + shot + order/timeline", and check item by item against the 2.5 eight elements
- First determine whether there is locking or no locking(2.1 dichotomy): first-frame/first-last-frame/editing/extension tasks omit
--ratio, editing tasks omit--duration; explicit--task-type edit/extendlet errors be exposed synchronously - @ references use official naming:
@图片1、@视频1、@音频1(not@img1and the like); when there is a lot of material, make the mapping into a list - Asset ID shielding / sentence segmentation to prevent ambiguity: strictly prohibit writing bare
[asset-xxx];@图片Nwhen immediately followed by a verb/directional word, instead use<主体N>@图片Nor add a noun separator - For editing / extension, do not write "reference @videoN": directly use
严格编辑 @视频N/向后延长 @视频N; conversely, for reference tasks, do not mix in add/delete/modify/extend trigger words - With multiple assetscheck whether each @ object is clearly labeled, do not confuse images, videos, and characters
- One shot, one camera movement: a single shot specifies only 1 camera movement method; stacking push/pull/pan/tilt is prohibited
- Special character conventions:BGM
(), sound effects<>, dialogue{}, subtitles【】(see 2.8); negative control is available (no subtitles / no bgm) - Fallback constraint pack: the final output attaches the image quality pack + stability pack + watermark/Logo fallback; multi-person scenes must attach the twins fallback; anime/non-realistic must attach style anchoring
- Interrupt the user only for key ambiguities: stop and confirm for these 4 categories: orientation/frame position, task misjudgment, camera movement conflict, and subject contradiction; for the rest, auto-complete and disclose transparently
- The image style must match the video theme(anti-drift): see the comparison table at
references/vocab-and-scenes.md - Descriptions should be specific and visually evocative, avoiding abstraction and vagueness; camera language and action descriptions must havechronological order; 2.5 actions use general descriptions, and only memorable points get details
- Long videos of 16 seconds or morestrongly recommend the storyboard method(2.5 timestamps/shot order are both acceptable; 2.0 only recognizes shot order, see 2.11)
- Sound effect descriptions go on a separate line, separate from the visuals; control prompt length and highlight the key points; emotional atmospheredo not ignore
- Do not bypass
seedance-cli; all calls go through the CLI (envelope/error paths are unified only) - Do not pretend to have seen the video—Claude cannot see videos; either extract frames with ffmpeg or report metadata