Seedance Prompt Forge
Turn an idea, draft prompt, reference set, or failed generation into a copy-ready Seedance 2.5
prompt. Prompts are flexible natural language built from optional components; every reference
material gets an explicit role.
Sources: the Dreamina Seedance 2.5 Prompt Writing Guide
and its official BytePlus release. Do not
apply these templates to other Seedance versions without checking that version's own guidance.
Platform behaviours described here are documented for Dreamina or for the surfaces the guide
explicitly names; verify the controls available on the user's product or API.
Pick a route
| The user gives you |
Route |
| An idea, brief, or reference set |
A — Author |
| A generation that came out wrong (with or without the prompt) |
B — Diagnose |
| An existing prompt, no output yet |
C — Audit |
Routes B and C both end by re-entering Route A step 3.
Core structure
Components, in priority order:
Subject + Action/Event + Scene/Environment + Visual Style + Camera Movement/Cut + Audio
- Lead with what you want generated: the subject and its primary action or event.
- Add only the components that matter; omit the rest.
- Keep generation parameters (duration, aspect ratio, resolution, audio toggle) out of the
prompt. They are set on the generation page or through the API.
<Subject> performs <primary action or event> in <scene and environment>.
The visuals feature <visual style>.
Use <shot size, camera angle, camera movement, or cuts>.
Audio includes <dialogue, ambience, sound effects, or music>.
Worked examples of complete briefs turned into finished prompts:
references/core-and-examples.md.
Running without code execution
scripts/lint_prompt.py is optional. Where it cannot run — a chat-only assistant, a Custom
GPT without Code Interpreter, a project with no shell — do not skip the checks; perform them by
reading. In order, on the drafted prompt:
- List every
@Image/@Video/@Audio number in the body. Each one must appear in a role
line. Any that does not is an error.
- Numbers of each kind must run 1, 2, 3… with no gaps.
- No collective binding ("@Images 1 through 4 define four characters respectively").
- No
<angle-bracket placeholder> left unfilled.
- Time ranges consecutive, non-overlapping, each moving forward. No frequency demands.
- On editing / extension / first-last-frame tasks: no aspect ratio, duration, or resolution
request anywhere in the prompt.
- Scene and environment references carry an exclusion or an "only …" scope.
- Replacement edits state an exact target count and a
[Timeline Inheritance] block.
{} and 【】 balanced; non-Chinese dialogue preceded by a stated language.
State which checks were run by reading rather than by running, so the user knows.
Route A — Author
A1. Identify the task type and load guidance
| Task |
Reference file |
| Text-to-video; worked end-to-end examples |
references/core-and-examples.md |
| Image/video/audio references; multiple subjects, props, or scenes; per-scene selection |
references/reference-materials.md |
| 30-second multi-event videos; timing control |
references/long-videos.md |
| Editing an existing video; forward/backward extension |
references/video-editing.md |
| First/last frame, keyframes, storyboards, blockouts, one-click video, seamless transitions |
references/advanced-modes.md |
| Dialogue, voice, music/SFX, emotion, camera terminology |
references/audio-and-performance.md |
| Final check before delivery |
references/checklist.md |
Read the matching reference file(s) before drafting. More than one may apply.
A2. Collect the brief — ask only about blockers
Two classes of missing information. Treat them differently.
Blocking — you cannot write a correct prompt without it. Ask.
- Which reference material corresponds to which character, prop, or scene.
- Edit target and edit scope, for an editing task.
- Extension direction (forward or backward), for an extension task.
- Keyframe order and which image is first/last, for keyframe tasks.
- Which video is before-transition and which is after, for a transition task.
- The primary action or event, if no action is stated at all.
Non-blocking — choose a sensible default, label it, and move on. Do not ask.
- Visual style, lighting, colour, mood.
- Shot sizes and camera movement.
- Ambience, sound effects, music.
- Stage count and pacing for a long video.
Ask at most one round of questions, batched. Then draft. Every default you chose appears in an
Assumptions list under the prompt so the user can overturn it in one line. A prompt with
labelled assumptions is more useful than a question.
A3. Draft
Follow the template for the task type. Universal rules:
- Name and bind every distinct character, product, and prop to its reference material
individually. Never write "@Images 1 through 4 define four characters respectively" — that
states no mapping.
- State what each reference provides and what to exclude ("Do not use the image background",
"Do not use the person's identity, clothing, or scene from the video").
- When a reference video already defines motion, camera, or sequence, state only which
attributes to inherit; do not restate the full action.
- Put non-Chinese dialogue in
{} and state the language (plus accent and delivery) before
the line.
- Pair abstract emotions and uncommon camera terms with directly visible or audible results.
- Use stages with end states for multi-event videos; treat timestamps as time budgets, not
frame-accurate edit points.
- Keep subject count, clothing, prop ownership, spatial relationships, and audio relationships
consistent across stages and scenes.
- Leave no
<angle-bracket placeholder> unfilled in the delivered prompt.
A4. Check
Where code execution is available, run the linter for the mechanical checks:
python3 scripts/lint_prompt.py draft.txt --task edit
Where it is not, work the nine manual checks above instead.
Then run the judgement checks in references/checklist.md, applying only the blocks that
match the task type. Fix what the linter flags before delivering; if a flag is a false
positive, say why in one line rather than silently ignoring it.
A5. Deliver
Return the copy-ready prompt in a single code block, then:
- Parameters to set yourself: duration, ratio, resolution, audio toggle — and which of
them are locked by this task type and cannot be set.
- Material order: list the intended order of materials so
@Image 1 resolves to the
material the prompt calls @Image 1. Present this as the order to supply them in, not as a
documented platform rule — the source guide does not specify how numbering is assigned.
- Assumptions: every non-blocking default you chose, one line each.
Do not add unrequested variants. When iterating, change one major variable at a time and keep
unrelated confirmed requirements intact.
Route B — Diagnose a failed generation
Ask for the prompt if it was not supplied, and for what the output did wrong in observable
terms ("two lamps appeared", not "it looked off"). Map the symptom to the smallest prompt
change, apply that one change, and return the revised prompt with the change marked. Changing
several things at once destroys the signal about which fix worked.
| Symptom |
Likely cause |
Smallest fix |
| Wrong or swapped subjects; identity drift |
References not bound individually |
Bind each character/prop to its @Image/@Video; add subject profiles |
| Backgrounds or people leak from reference images |
Missing exclusions |
Add "Do not use the image background/people/composition" |
| All references appear at once |
Prompt asks for every material in every scene |
Select references by scene; keep only scene-relevant materials in each scene |
| Events skipped, rushed, or extra cuts appear |
Too many beats per stage; timestamps too dense |
One primary change per stage plus an end state; widen time ranges |
| Motion wrong despite a motion reference |
Restating motion conflicts with the video |
State only which attributes to inherit from @Video |
| Clothing, props, or count change across scenes |
No consistency lock |
Restate identity, clothing, prop ownership, and spatial direction per stage/scene |
| Duplicate or split subject appears mid-shot |
No continuous-instance lock |
Add "keep each subject as the same continuous instance; do not duplicate or split it" |
| Dialogue in wrong language or voice |
No language marker or speaker binding |
"Dialogue language: . The says : {line}"; bind @Audio to the speaker |
| Last frame stretched |
First/last image ratios differ |
Use matching aspect ratios for first and last frames |
| Camera term ignored |
Term vague or uncommon |
Keep the term, then state target subject + visible change + direction |
| Wrong or missing on-screen text |
No subtitle marker or exact-text reference |
Use 【】 for subtitles; for exact signs, formulas, or specs, combine prepared references with post-production |
| Extension introduces later characters too early |
Backward extension ends only with "then connect to the source" |
State the source's first frame as the explicit end state; name materials that must not appear early |
| Edited video drifts outside the intended region |
No timeline inheritance clause |
Add [Timeline Inheritance]: target inherits the original's appearances, motion, occlusion, exits, and timing |
Some failures are not prompt failures. If the request needs exact subtitle text, legible
formulas, product specifications, or frame-accurate timing, say so and point to prepared
references plus post-production rather than iterating the prompt further.
Route C — Audit an existing prompt
Run scripts/lint_prompt.py, then the applicable references/checklist.md blocks. Report
findings as a short list ordered by severity, each with the specific rewrite. Do not rewrite
the whole prompt unless asked — the user may have deliberate choices you would erase.
1---2name: seedance-prompt-forge3description: Write, audit, and repair prompts for Seedance 2.5 video generation. Use whenever the user mentions Seedance, Dreamina, or a Seedance/Dreamina video prompt — and also when they want to fix a video generation that came out wrong, even if they never name the model. Covers text-to-video; reference-driven generation with images, videos, or audio; 30-second multi-stage videos; video editing; forward or backward extension; first/last-frame and multi-keyframe generation; storyboard grids; coarse or fine blockout re-rendering; one-click video; and seamless transitions. Symptoms it fixes: swapped subjects, identity or clothing drift, backgrounds or people leaking from references, all references appearing at once, missing or rushed events, broken continuity across a cut, dialogue in the wrong language. Trigger phrases: "Seedance prompt", "Dreamina prompt", "optimize my video prompt", "why did my video come out wrong", "fix this generation".4license: MIT5---67# Seedance Prompt Forge89Turn an idea, draft prompt, reference set, or failed generation into a copy-ready Seedance 2.510prompt. Prompts are flexible natural language built from optional components; every reference11material gets an explicit role.1213Sources: the [Dreamina Seedance 2.5 Prompt Writing Guide](https://bytedance.larkoffice.com/docx/A88jd0B47oAd8zxWp5ycZFMfnxh)14and its [official BytePlus release](https://docs.byteplus.com/en/docs/ModelArk/2607689). Do not15apply these templates to other Seedance versions without checking that version's own guidance.16Platform behaviours described here are documented for Dreamina or for the surfaces the guide17explicitly names; verify the controls available on the user's product or API.1819## Pick a route2021| The user gives you | Route |22|---|---|23| An idea, brief, or reference set | **A — Author** |24| A generation that came out wrong (with or without the prompt) | **B — Diagnose** |25| An existing prompt, no output yet | **C — Audit** |2627Routes B and C both end by re-entering Route A step 3.2829## Core structure3031Components, in priority order:3233**Subject + Action/Event + Scene/Environment + Visual Style + Camera Movement/Cut + Audio**3435- Lead with what you want generated: the subject and its primary action or event.36- Add only the components that matter; omit the rest.37- Keep generation parameters (duration, aspect ratio, resolution, audio toggle) out of the38 prompt. They are set on the generation page or through the API.3940```text41<Subject> performs <primary action or event> in <scene and environment>.42The visuals feature <visual style>.43Use <shot size, camera angle, camera movement, or cuts>.44Audio includes <dialogue, ambience, sound effects, or music>.45```4647Worked examples of complete briefs turned into finished prompts:48`references/core-and-examples.md`.4950## Running without code execution5152`scripts/lint_prompt.py` is optional. Where it cannot run — a chat-only assistant, a Custom53GPT without Code Interpreter, a project with no shell — do not skip the checks; perform them by54reading. In order, on the drafted prompt:55561. List every `@Image`/`@Video`/`@Audio` number in the body. Each one must appear in a role57 line. Any that does not is an error.582. Numbers of each kind must run 1, 2, 3… with no gaps.593. No collective binding ("@Images 1 through 4 define four characters respectively").604. No `<angle-bracket placeholder>` left unfilled.615. Time ranges consecutive, non-overlapping, each moving forward. No frequency demands.626. On editing / extension / first-last-frame tasks: no aspect ratio, duration, or resolution63 request anywhere in the prompt.647. Scene and environment references carry an exclusion or an "only …" scope.658. Replacement edits state an exact target count and a `[Timeline Inheritance]` block.669. `{}` and `【】` balanced; non-Chinese dialogue preceded by a stated language.6768State which checks were run by reading rather than by running, so the user knows.6970## Route A — Author7172### A1. Identify the task type and load guidance7374| Task | Reference file |75|---|---|76| Text-to-video; worked end-to-end examples | `references/core-and-examples.md` |77| Image/video/audio references; multiple subjects, props, or scenes; per-scene selection | `references/reference-materials.md` |78| 30-second multi-event videos; timing control | `references/long-videos.md` |79| Editing an existing video; forward/backward extension | `references/video-editing.md` |80| First/last frame, keyframes, storyboards, blockouts, one-click video, seamless transitions | `references/advanced-modes.md` |81| Dialogue, voice, music/SFX, emotion, camera terminology | `references/audio-and-performance.md` |82| Final check before delivery | `references/checklist.md` |8384Read the matching reference file(s) before drafting. More than one may apply.8586### A2. Collect the brief — ask only about blockers8788Two classes of missing information. Treat them differently.8990**Blocking — you cannot write a correct prompt without it. Ask.**9192- Which reference material corresponds to which character, prop, or scene.93- Edit target and edit scope, for an editing task.94- Extension direction (forward or backward), for an extension task.95- Keyframe order and which image is first/last, for keyframe tasks.96- Which video is before-transition and which is after, for a transition task.97- The primary action or event, if no action is stated at all.9899**Non-blocking — choose a sensible default, label it, and move on. Do not ask.**100101- Visual style, lighting, colour, mood.102- Shot sizes and camera movement.103- Ambience, sound effects, music.104- Stage count and pacing for a long video.105106Ask at most one round of questions, batched. Then draft. Every default you chose appears in an107`Assumptions` list under the prompt so the user can overturn it in one line. A prompt with108labelled assumptions is more useful than a question.109110### A3. Draft111112Follow the template for the task type. Universal rules:113114- Name and bind every distinct character, product, and prop to its reference material115 individually. Never write "@Images 1 through 4 define four characters respectively" — that116 states no mapping.117- State what each reference provides and what to exclude ("Do not use the image background",118 "Do not use the person's identity, clothing, or scene from the video").119- When a reference video already defines motion, camera, or sequence, state only which120 attributes to inherit; do not restate the full action.121- Put non-Chinese dialogue in `{}` and state the language (plus accent and delivery) before122 the line.123- Pair abstract emotions and uncommon camera terms with directly visible or audible results.124- Use stages with end states for multi-event videos; treat timestamps as time budgets, not125 frame-accurate edit points.126- Keep subject count, clothing, prop ownership, spatial relationships, and audio relationships127 consistent across stages and scenes.128- Leave no `<angle-bracket placeholder>` unfilled in the delivered prompt.129130### A4. Check131132Where code execution is available, run the linter for the mechanical checks:133134```bash135python3 scripts/lint_prompt.py draft.txt --task edit136```137138Where it is not, work the nine manual checks above instead.139140Then run the judgement checks in `references/checklist.md`, applying only the blocks that141match the task type. Fix what the linter flags before delivering; if a flag is a false142positive, say why in one line rather than silently ignoring it.143144### A5. Deliver145146Return the copy-ready prompt in a single code block, then:147148- **Parameters to set yourself:** duration, ratio, resolution, audio toggle — and which of149 them are locked by this task type and cannot be set.150- **Material order:** list the intended order of materials so `@Image 1` resolves to the151 material the prompt calls `@Image 1`. Present this as the order to supply them in, not as a152 documented platform rule — the source guide does not specify how numbering is assigned.153- **Assumptions:** every non-blocking default you chose, one line each.154155Do not add unrequested variants. When iterating, change one major variable at a time and keep156unrelated confirmed requirements intact.157158## Route B — Diagnose a failed generation159160Ask for the prompt if it was not supplied, and for what the output did wrong in observable161terms ("two lamps appeared", not "it looked off"). Map the symptom to the smallest prompt162change, apply that one change, and return the revised prompt with the change marked. Changing163several things at once destroys the signal about which fix worked.164165| Symptom | Likely cause | Smallest fix |166|---|---|---|167| Wrong or swapped subjects; identity drift | References not bound individually | Bind each character/prop to its `@Image`/`@Video`; add subject profiles |168| Backgrounds or people leak from reference images | Missing exclusions | Add "Do not use the image background/people/composition" |169| All references appear at once | Prompt asks for every material in every scene | Select references by scene; keep only scene-relevant materials in each scene |170| Events skipped, rushed, or extra cuts appear | Too many beats per stage; timestamps too dense | One primary change per stage plus an end state; widen time ranges |171| Motion wrong despite a motion reference | Restating motion conflicts with the video | State only which attributes to inherit from `@Video` |172| Clothing, props, or count change across scenes | No consistency lock | Restate identity, clothing, prop ownership, and spatial direction per stage/scene |173| Duplicate or split subject appears mid-shot | No continuous-instance lock | Add "keep each subject as the same continuous instance; do not duplicate or split it" |174| Dialogue in wrong language or voice | No language marker or speaker binding | "Dialogue language: <language>. The <speaker> says <delivery>: {line}"; bind `@Audio` to the speaker |175| Last frame stretched | First/last image ratios differ | Use matching aspect ratios for first and last frames |176| Camera term ignored | Term vague or uncommon | Keep the term, then state target subject + visible change + direction |177| Wrong or missing on-screen text | No subtitle marker or exact-text reference | Use `【】` for subtitles; for exact signs, formulas, or specs, combine prepared references with post-production |178| Extension introduces later characters too early | Backward extension ends only with "then connect to the source" | State the source's first frame as the explicit end state; name materials that must not appear early |179| Edited video drifts outside the intended region | No timeline inheritance clause | Add `[Timeline Inheritance]`: target inherits the original's appearances, motion, occlusion, exits, and timing |180181Some failures are not prompt failures. If the request needs exact subtitle text, legible182formulas, product specifications, or frame-accurate timing, say so and point to prepared183references plus post-production rather than iterating the prompt further.184185## Route C — Audit an existing prompt186187Run `scripts/lint_prompt.py`, then the applicable `references/checklist.md` blocks. Report188findings as a short list ordered by severity, each with the specific rewrite. Do not rewrite189the whole prompt unless asked — the user may have deliberate choices you would erase.