How to Write Better Seedance 2.5 Prompts
Seedance 2.5 runs 30 seconds in one take, so a prompt written for a moment falls apart. How to write beat sheets, steer the camera, cast references, script the audio and edit instead of rerolling.

Most video prompts are written for a moment. A woman turns. A car drifts. A wave breaks. Hand the same prompt to a model that runs for thirty seconds and you get one moment stretched until it sags, the camera wandering off looking for something to do.
Writing good Seedance 2.5 prompts starts with accepting that you're no longer describing a shot. You're describing a scene. Seedance 2.5, from ByteDance's Seed team, generates up to 30 seconds in a single pass with synchronized audio, can organize several connected shots inside that take, and accepts up to 30 images, 10 videos and 10 audio clips as references. That's a lot of rope. This Seedance prompt guide is about building with it instead of tangling yourself up.
What ByteDance Tells You, and What We Learned Ourselves
Sources first. ByteDance's Seedance 2.5 launch post doesn't include a written prompting manual. It does include example prompts worth studying: they split the take into time segments (zero to five seconds, six to ten seconds), call references by token (@Video 1, @Clay Render 1), and spell out the camera in film language like "one-take handheld gimbal tracking shot." We couldn't find a BytePlus prompt guide for 2.5 when we wrote this.
The second source is the request schema on each::labs, which carries practical rules: keep prompts under roughly 1,000 words, put spoken lines in double quotes for the best speech, and use edit or extension wording to switch tasks on the reference variant. Everything else here (the building-block order, the mistakes list, the iteration habits) is our own practice, and we flag which is which.

The Building Blocks of a Seedance 2.5 Prompt
Think of a Seedance prompt as a production brief with five parts. Skip one only on purpose.
Format and take. Open with the shape of the thing: aspect ratio if you care about it, "single continuous take" or "three shots," and the overall style.
Cast and world. Who's in it and where. On the Reference to Video variant, this is where you assign each @Image to a job. On Text to Video, two sentences of concrete detail do it.
Beats. What happens, in order, ideally with timestamps. The part most people underwrite, and the one that matters most at 30 seconds.
Camera. How the viewer moves through the beats. Named moves, named shot sizes, named transitions.
Sound. Dialogue in double quotes, ambience, music or the explicit absence of music. Audio is generated by default, so leaving it out doesn't mean silence. It means the model guesses.
A compact version:
9:16, warm handheld documentary style, single continuous take. A baker in a flour-dusted apron pulls a tray of croissants from a deck oven in a small bakery at dawn. Camera starts on the oven door, follows the tray to the counter, then tilts up to her face as she smiles. Sound: oven door creak, crackle of pastry, quiet street outside, no music.
Five parts, about sixty words, nothing left for the model to invent.

Write Thirty Seconds as a Beat Sheet
ByteDance says Seedance 2.5 can organize multiple logically connected shots within one generation, moving a story through setup, development, a turn and a resolution. If you don't give it beats, it invents them, and invented beats tend to be filler.
So write a beat sheet. Timestamps are the cleanest tool, and ByteDance's own examples use them. Four beats across thirty seconds is comfortable. Eight is a montage.
16:9, cinematic, single continuous take, no cuts. 0 to 7s: wide shot of a night market in the rain, a teenage courier on a red bicycle weaves between stalls. 7 to 15s: tracking shot as she grabs a bag of dumplings from a vendor without stopping. 15 to 23s: she cuts through a steamy alley, camera at shoulder height. 23 to 30s: she brakes at an apartment door, knocks twice, and an old man opens it and says, "You're early tonight." She grins. Sound: rain on awnings, sizzling woks, bicycle bell, no background music.
Each segment has one job and one camera instruction, and the dialogue lands in the final beat where it pays something off. Prefer cuts to a oner? Say so ("Shot 1, Shot 2") and give each shot its own size and move.
The duration parameter takes any whole number from 4 to 30, or auto, where the model picks a length from your prompt. Our habit: set it explicitly whenever you've written timestamps, so the beat sheet and the clip agree.
Steer the Camera, Don't Hope
"Cinematic camera movement" is not an instruction. It's a wish. ByteDance's examples use specific vocabulary: handheld gimbal tracking, slow push in, pull back to a wide. Borrow that register and say where the camera ends up.
Two habits we recommend. Describe moves as a sequence in time, not a list: "starts low on the shoes, tilts up to a medium shot, then pulls back to reveal the room" lands better than "low angle, tilt, wide shot." And give each beat one dominant move.
21:9, moody noir, single continuous take. 0 to 8s: slow push in through a rain-streaked window toward a detective at his desk, desk lamp the only light. 8 to 18s: the camera drifts left along the desk, settling on a photograph. 18 to 26s: rack focus from the photograph to the detective's hand reaching for the phone. 26 to 30s: locked-off medium shot as he answers and says, "Tell me where." Sound: rain, ticking wall clock, a low saxophone line.
For the full vocabulary of dollies, orbits and cranes, see our guide to AI camera movement prompts. The difference with Seedance is that you now have time for three or four moves instead of one.

Cast With References, Then Name Their Jobs
The Reference to Video variant takes up to 30 images, 10 videos and 10 audio clips. You call them in the prompt by token: @Image1, @Video1, @Audio1. Uploading a pile and hoping the model sorts it out doesn't work. Each reference needs a job description.
ByteDance's launch demo is a classical concert built from eighteen images, each assigned a role: venue, pianist, cellist, violinist, choir, audience. That's how you'd brief a crew.
@Image1 is the lead character, a woman in a yellow raincoat; keep her face and coat exactly as shown. @Image2 is the lighthouse exterior. @Image3 is the lamp room interior. @Audio1 is the ambient storm soundscape. 0 to 10s: she climbs the path toward the lighthouse from @Image2. 10 to 20s: inside, she climbs a spiral staircase, handheld camera following from below. 20 to 30s: she reaches the lamp room from @Image3 and lights the lamp; the beam sweeps across the sea. She whispers, "Still working."
Schema rules worth knowing: reference videos and audio clips each run 2 to 30 seconds with a combined ceiling of 30 seconds per type, so ten clips means ten short clips. Audio-only input works. And Seedance 2.5 won't accept images containing real human faces, so design characters as illustrated or generated figures.
Clay render referencing is the quiet power feature. ByteDance describes using textureless 3D models to set spatial layout, poses, motion paths and camera angles, with the model then rendering lighting on top. Its example reads: "Refer to @Clay Render 1 for camera movement, pacing, shot-size transitions, subject trajectory, and blocking." On each::labs there's no separate clay render slot, so our practice is to pass the render as a video reference and call it @Video1.
Refer to @Video1 for camera movement, pacing, shot-size transitions, subject trajectory, and blocking. @Image1 is the character design, a small brass robot with round glass eyes. @Image2 is the art style: soft watercolor textures, warm late-afternoon light. Render the full scene with the robot crossing a sunflower field toward a farmhouse. Keep the entire sequence smooth, continuous, and stable.
Fewer references that agree beat more references that fight. Clashing styles force a compromise, and consistency is the first thing traded away.
Give the Audio a Script
Audio comes out in the same pass as the picture, and generate_audio is on by default. Straight from the each::labs schema: put spoken lines in double quotes for the best speech, and write the prompt in English, Spanish, Indonesian, Portuguese, Japanese, Malay, Thai, Arabic, Vietnamese or Korean.
Our practice: attribute every line to a character and place it in a beat. Also, name the music or name its absence. ByteDance says uncontrolled background music and subtitles show up less often in 2.5, but "no background music, no subtitles" in the prompt takes four words and removes a guess.
16:9, warm sitcom lighting, two shots. Shot 1, 0 to 8s: medium shot of two roommates at a cluttered kitchen table. The tall one holds up an empty cereal box and says, "Who did this?" Shot 2, 8 to 14s: close-up of the shorter one, frozen mid-chew, who answers, "Define did." Sound: fridge hum, spoon clink, light laugh track, no subtitles.
Cutting to your own score? Set generate_audio to false and drop the sound line.

Iterate Like an Editor, Not a Gambler
The old loop was regenerate until lucky. The reference variant gives you a better one: it edits and extends existing footage.
On each::labs, wording drives the task. Phrase a request with add, remove or replace and it becomes an edit of your input video; for edits, keep duration and aspect_ratio on auto, because the output inherits the input clip's length and frame. Say extend or continue and it becomes an extension, which also needs aspect ratio on auto. ByteDance's own examples read like this:
Edit @Video1. Keep the characters, actions, and visual style unchanged. Adjust only the camera movement: replace the static shot with a slow orbit around the table.
Extend the video. Continue from the visuals and subjects in @Video1 and generate another 30-second clip. The courier rides out of the alley onto a bright avenue at sunrise. Keep the entire sequence smooth, continuous, and stable.
Our working loop: lock the beat sheet at 480p, where runs come back faster, then rerun the keeper at 720p or 1080p. Change one variable per run, and if one beat is wrong, edit that beat instead of rolling again. And when the composition must start and end exactly as approved, move to Image to Video with a first frame and an optional last frame; if the two disagree on aspect ratio, the first frame wins and the last is center-cropped, so design them as a pair.
Seedance Prompt Guide: The Mistakes We See Most
These come from our own runs, not from ByteDance. Writing a moment for a 30-second take. The model fills the gap with drift. Either write beats or shorten the duration.
Unassigned references. Uploading five images without saying which is the character and which is the set invites the model to blend them.
Stacking camera moves. "Orbit, push in, crane up and handheld" in one segment produces mush. One move per beat.
Forgetting the audio exists. Silence in the prompt isn't silence in the output. Describe the sound or turn audio off.
Over-writing. A tight 150-word beat sheet beats a 900-word novel, because every extra adjective is another thing to honor.
Kling vs Seedance: When to Switch Models
Sometimes the prompt isn't the problem. Kling vs Seedance comes down to different prompts for different jobs. Kling 3.0 runs 3 to 15 seconds and gives you explicit storyboard structure, while Seedance 2.5 bets on long takes, big reference sets and timestamp beats. Short, punchy shots suit Kling; one continuous scene suits Seedance. Our full breakdown is in Kling vs Seedance: which model for which shot, and the specs behind this guide are in our Seedance 2.5 spotlight.
Using both, plus a still-image step? each::labs flows chain the steps in one place, and the text-to-video catalog lines up the alternatives.
Frequently Asked Questions
How long should Seedance 2.5 prompts be?
Shorter than most people think. The schema recommends under roughly 1,000 words, but you rarely need that many: a tight prompt with timestamps and a sound line is usually enough to plan a full 30-second take.
Does ByteDance publish an official Seedance prompt guide for 2.5?
Not as a standalone manual that we could find. ByteDance's launch post shows example prompts using timestamps, @ references and explicit camera language, and the each::labs schema adds rules like double quotes for dialogue. The building-block order, mistakes list and iteration loop in this guide are our own practice.
How do I make Seedance 2.5 edit a clip instead of generating a new one?
Wording does the switching. On the Reference to Video variant, pass your clip as @Video1 and phrase the request with add, remove or replace; leave duration and aspect ratio on auto so the output keeps the input's length and frame. Use extend or continue for more footage instead.
Can I use photos of real people as Seedance 2.5 references?
No. Seedance 2.5 on each::labs doesn't accept images containing real human faces. Reference videos have one exception: face-containing footage Seedance generated under your account in the past 30 days. For recurring characters, use an illustrated or generated design and reuse it across runs.