Pro
Seedance 2.5 Prompt Master
Seedance 2.5 and 2.0 video prompts with the right mode, asset map, timing and checks
For creators, marketers and developers generating video with ByteDance Seedance 2.5 or 2.0, whether through BytePlus/Volcengine ModelArk, Dreamina, Jimeng or a third-party host.
Seedance 2.5 reads your verbs and your parameters together. If you say "reference" when you mean "edit", or send a fixed aspect ratio with a first-frame image, the job fails. Put too many beats into a time range and they get skipped. This skill makes your agent work like a Seedance prompt engineer:
- Chooses the mode (text-to-video, first frame, first + last frame, omni reference, edit, extend, bridge) and sets the locked parameters correctly.
- Maps your assets: every image, clip and audio file gets a number, a job and an "ignore" clause, so a motion reference doesn't bring its actor's wardrobe into your shot.
- Budgets the timeline: integer-second ranges for 2.5, shot numbering for 2.0, a dialogue word budget and one camera move per shot.
- Writes the prompt in a layered structure with Seedance's sound notation for music, sound effects, dialogue and subtitles.
- Delivers a package: prompt, parameters, 2–3 meaningful variants (including a 2.0 port) and a self-check.
You get a SKILL.md workflow, six reference files (specs checked against official docs in October 2026, a modes playbook, a binding guide, vocabulary banks, a symptom-to-fix table and six worked examples) and a dependency-free Python linter. Results from video models still vary; the skill improves your odds, it can't guarantee a shot.
Highlights
- Picks the right mode: text, first/last frame, reference, edit or extend
- Builds an @Image/@Video/@Audio asset map with clear jobs for each asset
- Writes 2.5 timestamp timelines, plus a 2.0 shot-numbered port
- Catches TaskTypeMismatch, ratio and duration errors before you pay
- Includes a stdlib Python prompt linter and a symptom-to-fix guide
Example
15s vertical Seedance 2.5 ad for our cold brew can. I have a packshot, a label close-up, a rooftop photo, a clip with a camera orbit I like, and a 15s music bed.
Setup: Seedance 2.5 · omni reference → reference · 9:16 · 15 s · omni_reference_task_type=reference Manifest: Image 1: can front, exact shape/colors/logo Image 2: back label, close-up detail Image 3: rooftop café; location and light only, ignore people Video 1: camera path and pacing only, ignore subject and set Audio 1: full soundtrack Prompt: Bindings: the can = @Image 1 + @Image 2; location = @Image 3; camera path = @Video 1 (path only); soundtrack = @Audio 1, 0s to end. 0–4s: Low orbit around the can on a café table, following @Video 1's path. Condensation slides down; city lights blink on. <ice settling> 4–8s: Close-up on the @Image 2 label; a hand cracks the can open. <can pop, fizz> 8–12s: Slow-motion pour over ice; sunset glints through the glass. 12–15s: Push-in to can and glass; final image: logo centered and sharp. Look: golden-hour backlight… No subtitles. Parameters: ratio 9:16 · duration 15 · 1080p · mp4 Variants: (A) no Video 1, move written in words; (B) adds an end card with exact text supplied as an image.
My Seedance 2.5 job failed with InvalidParameter.TaskTypeConstraint. Prompt: 'Reference Video 1 and make the jacket yellow.' ratio 16:9, duration 10.
Cause: the model read this as an edit of Video 1, and 2.5 edits lock the shape and length to the source clip. ratio must be adaptive and duration must be -1. Your wording is also ambiguous: "Reference Video 1" points to a reference task, and "make" isn't an edit verb. Fixed prompt: Edit Video 1: change the man's jacket from navy blue to mustard yellow for the whole clip, keeping its cut, folds and fabric texture. Keep everything else unchanged: framing, camera, his face and performance, lighting, other people and audio. Parameters: omni_reference_task_type=edit · ratio=adaptive · duration=-1 · output_format=mov (if you'll keep editing) Check: source clip must be 4–30 s (≤20 s is most stable). Output may be ~0.3 s shorter; trim the source to 8n+1 frames if exact length matters.
Port this 12s Seedance 2.5 timestamped storm/lighthouse prompt to Seedance 2.0 fast.
2.0 doesn't follow exact seconds, so the timeline becomes ordered shots. fast also tops out at 720p.
Shot 1: Extreme wide, locked-off. A lone lighthouse on black rocks in a night storm, waves bursting at its base, its beam stuttering. <wind, surf>
Shot 2: Medium, slow push-in. In the lamp room, the keeper (grey beard, yellow oilskin, wire-rim glasses) braces against rattling glass and unscrews a brass panel with stiff hands. <rain on glass>
Shot 3: Close-up, static. He presses a worn switch, then taps the housing twice. The keeper (gruff, in English): {Come on, old girl.}
Shot 4: Wide from behind, slow pull-back. The lens flares to life; its beam sweeps the storm; his shoulders relax.
Look: cold blue storm light vs warm amber lamp… No subtitles.
Parameters: dreamina-seedance-2-0-fast · 16:9 · duration 12 · 720pWhat's inside
seedance-2-5-prompt-master/ ├── agents/ │ └── openai.yaml ├── references/ │ ├── model-specs.md │ ├── modes-playbook.md │ ├── prompt-anatomy-and-vocab.md │ ├── reference-binding.md │ ├── troubleshooting.md │ └── worked-examples.md ├── scripts/ │ └── lint_prompt.py ├── LICENSE.txt ├── README.md └── SKILL.md
Install by unzipping into your agent's skills folder. Install guide →