Recipe
The official prompt guide condensed into one actionable page: task sentence patterns, the eight-element formula, subject definitions, shot-by-shot sequencing, bracket conventions, plus fixes for identity drift, duplicate twins, and style drift — with a runnable API example.
Seedance 2.0 prompts are not copywriting — they are engineering instructions. The official mental model is to treat it as a multimodal AI director: text, images, video, and audio are decomposed into a spatial layer (what is in the frame) and a temporal layer (how it changes over time). This post condenses the official prompt guide into a one-page, actionable checklist, with a runnable API example at the end.
| Task | What it is for | Recommended pattern |
|---|---|---|
| Multimodal reference | Extract subject/style/motion/voice from assets and generate a brand-new video | Referencing <subject N> in <image N>, generate…; Referencing the voice in <audio N>, generate… |
| Edit video | Local or global changes; everything not mentioned stays unchanged | Strictly edit <video N>, changing <original feature> to <new feature> |
| Extend video | Continue along the timeline, keeping style and narrative consistent | Extend <video N> forward/backward, generating… |
A frequent pitfall: for edit/extend tasks write <video N> directly — do not write "referencing <video N>". The extra "referencing" makes the model classify it as a reference task.
For complex requests, organize the prompt in this order:
precise subject + action detail + scene/environment + light and color + camera work + visual style + image quality + constraints
Lock down who is doing what first, then where and in what mood, then how it is filmed, and finally tighten the result with style, quality, and constraints.
Define the woman in the red dress and straw hat in image 1 as subject 1 — 2 to 3 stable, static features are enough.subject N@image N (e.g. Alice@image 1) to keep the subject bound to its asset.Structure each shot around four things: camera move → subject action and expression → position/spatial change → audio. For example:
Shot 1: Side view of an alley; a man slowly starts to run, with tense, rapid breathing.
Shot 2: The man crashes into a fruit stand; the camera whip-pans and lands on a close-up of his terrified face.
Shot 3: The man vaults over a low wall and disappears; the camera slowly pulls back and holds on the empty street.Do not write exact seconds ("0–3s") — 2.0's precise-timing support is unstable. Specify only one camera move per shot; combining push/pull/pan/track in a single shot makes the image unstable.
slowly raises a hand, pushes off hard, lowers her head slightly.head lowered, shoulders trembling slightly, fingers clutching the hem; "nervous" → keeps checking the watch, fingers tapping the table, eyes darting away.These symbols (including the full-width ones) are part of the model's convention — use them as-is:
| Information | Symbol | Example |
|---|---|---|
| Music | () | (Fast-paced rock music plays in the background) |
| Sound effects | <> | <A dog barks in the distance> |
| Dialogue | {} | {Hello, world}; tag the language for less common languages |
| Subtitles | 【】 | 【Chapter 1: Departure】 |
| Symptom | Fix |
|---|---|
| Identity drift / face swapping | Provide a dedicated headshot; split face and styling across separate images; put precise assets first; no multi-view sheets |
| Identical "twin" characters appear | Bind every character to a reference image (Alice ↔ image 1); add a closing constraint like "do not generate duplicate copies of the same character"; single-person photos instead of three-view sheets |
| Style drifts toward photorealism | State the style constraint explicitly (e.g. "3D guofeng comic style"), or convert reference images into the target style before generating |
| Visible jump at the extension seam | When editing, trim the last 6 frames of the first segment and the first frame of the second; try to end extensions on a cut/transition moment |
| Quality degrades over repeated extensions | Convert the source video to a white-model video before extending; limit the number of extensions |
| Chinese dialogue mispronounced (polyphonic characters) | Swap in a common homophone character (e.g. 螭龙山 → 吃龙山) |
Drop the finished prompt into the prompt field and submit an async task through the OpenAI-compatible endpoint (submission is free; you are billed by duration only on success):
curl https://zerofa.ai/v1/videos \
-H "Authorization: Bearer sk-zerofa-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0-lol",
"prompt": "Shot 1: Side view of an alley; a man slowly starts to run… (use the shot-list format above)",
"duration": 5,
"resolution": "720P",
"aspect_ratio": "16:9",
"enable_audio": true
}'
# → {"id":"<task-id>","status":"submitted"}, then poll GET /v1/videos/<task-id>When you need to pass reference images/videos or other native multimodal assets, use the Volcano Ark /ark native passthrough — the request body is identical to the official API with every advanced parameter preserved. Endpoint details are in the video generation API docs; models and live pricing are on Seedance 2.0 and Seedance 2.0 Fast. For the newer model's prompt-writing differences, see the Seedance 2.5 prompt guide.
Usually the face reference is too weak: the face is buried in a full-body/outfit shot, or takes up too little of the image. Provide a separate headshot that contains only the face, state the mapping explicitly in the prompt ("facial features from image 1 (headshot), styling from image 2 (full-body shot)"), and place the assets that need precise referencing earlier in the prompt. Do not use multi-view character sheets — the model tends to read different angles as different people.
Add explicit constraints at the end of the prompt: "keep the video free of subtitles", "no watermarks", "no logos". It cannot be avoided 100% yet, but this lowers the odds significantly; landscape output triggers subtitles far less often than portrait, and it helps to erase stray text from reference assets before uploading them.
Seedance 2.0's support for precise timing (such as 0-3 seconds) is unstable, and forcing durations can produce broken results. Organize the prompt as "Shot 1 / Shot 2 / Shot 3" in event order and let the model pace things naturally; if you need a precise timeline, use Seedance 2.5 instead.
Repeatedly extending generated output compounds quality loss. The official mitigation is to convert the source video into a white-model video (untextured, pure-white 3D geometry) and use that as the extension input, while limiting how many times you extend and preferring high-resolution reference images.