How to Use Seedance 2.0: Complete AI Video Pipeline Guide (Midjourney + Seedream + SeedAudio)
A step-by-step tutorial on how to use Seedance 2.0 to create stunning AI-generated videos — from keyframe to lip-synced final render — using the complete Seed ecosystem. Inspired by @TomLikesRobots' viral demo.
Why Learn How to Use Seedance 2.0?
Seedance 2.0 is Doubao's state-of-the-art AI video generation model, capable of producing cinematic videos with automatic lip-sync from a single image and an audio file. But knowing how to use Seedance 2.0 effectively means understanding the full pipeline — because the quality of your output depends on the quality of your inputs.
Modern AI video creation isn't a single model call — it's a pipeline of specialized models. Here's the four-stage workflow that this guide on how to use Seedance 2.0 will walk you through:
Midjourney 8.2 → Seedream 5.0 → SeedAudio 1.0 → Seedance 2.0
(keyframe) (refine) (dialogue) (video + sync)
The key insight? Generate audio first, then use Seedance 2.0 to sync the video to it. Audio generation costs pennies; video generation costs dollars. By validating the performance through audio before learning how to use Seedance 2.0 for the final render, you save credits and get better results.
Step 1: Generate the Keyframe with Midjourney 8.2
Before you can use Seedance 2.0, you need a strong visual foundation. Start with Midjourney to create your keyframe — the base image that Seedance 2.0 will animate.
Example prompt:
A cinematic close-up of a man in a dimly lit room, intense expression,
half of his face illuminated by warm amber light, the other half in deep
shadow, film grain texture, 35mm lens, shallow depth of field,
photorealistic --ar 16:9 --style raw
Midjourney 8.2 excels at photorealistic character portraits with dramatic lighting. Take your time iterating — this image defines the visual tone of your entire Seedance 2.0 video.
💡 Tip for Seedance 2.0 users: Generate multiple variations and pick the one with the most expressive facial features. Seedance 2.0 needs clear facial landmarks for accurate lip-sync — this is critical when learning how to use Seedance 2.0 for character-driven videos.
Step 2: Refine the Image with Seedream 5.0
Take your Midjourney output and refine it with Seedream 5.0. This step is essential before feeding the image into Seedance 2.0 — a higher-quality source image produces dramatically better video output.
What Seedream adds before you use Seedance 2.0:
- Higher resolution and sharper skin details (crucial for facial animation in Seedance 2.0)
- Better eye highlights and catchlights (Seedance 2.0 tracks eye movement)
- Color grading refinements for consistent lighting
- Optional style transfer
Using the Seedream API:
const response = await fetch('https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks', {
method: 'POST',
headers: {
'Authorization': `Bearer ${ARK_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'doubao-seedream-4-0-250828',
content: [
{
type: 'image_url',
image_url: { url: 'https://your-midjourney-output.jpg' },
role: 'reference_image',
},
{
type: 'text',
text: 'Enhance skin details, sharpen eyes, add subtle film grain, warm amber color grade, cinematic lighting',
},
],
}),
});
The refined image is now ready for Seedance 2.0. The better your source image, the more realistic the animation will be — a fundamental principle of how to use Seedance 2.0 effectively.
Step 3: Generate Dialogue Audio with SeedAudio 1.0
This is where the magic happens, and a critical step in the how to use Seedance 2.0 workflow. SeedAudio 1.0 (powered by Doubao Audio Generation) lets you generate broadcast-quality dialogue entirely through natural-language prompts. The audio you create here will drive the lip-sync in Seedance 2.0.
The dialogue prompt for this Seedance 2.0 demo:
A tense conversation between two men in a dim room.
Character 1 (Joe, deep gravelly voice, menacing, slow delivery):
"Joe, look at me. Not the corner... me."
Character 2 (younger man, defiant but nervous, voice slightly shaking):
"I am looking at you."
Character 1 (amused, cold):
"Then tell what it said."
Character 2 (caught off guard):
"It's that you'd ask that."
Character 1 (probing):
"What else did he tell you?"
Character 2:
"That you're frightened."
Character 1 (anger rising):
"I'm not frightened of you."
Character 2 (quietly, with certainty):
"No. You're frightened it knows your name."
Background: subtle room tone, distant hum.
Using the SeedAudio API:
const response = await fetch('https://openspeech.bytedance.com/api/v3/tts/create', {
method: 'POST',
headers: {
'Authorization': `Bearer ${OPENSPEECH_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'seed-audio-1.0',
input: promptText,
voice: 'natural_conversation',
response_format: 'wav',
}),
});
The result is a WAV file with natural-sounding dialogue. This audio file is what Seedance 2.0 will use for lip-sync — mastering this step is essential to understanding how to use Seedance 2.0 for dialogue-driven content.
💡 Why audio-first when learning how to use Seedance 2.0? Audio generation costs ~$0.02. Video generation costs ~$0.50+. Generate and validate the audio first, then commit to the Seedance 2.0 render.
Step 4: How to Use Seedance 2.0 — The Complete Guide
This is the main event. Now that you have a refined image and dialogue audio, it's time to learn how to use Seedance 2.0 to bring them together. Seedance 2.0 (model ID: doubao-seedance-2-0-260128) accepts image + audio inputs and generates a video with automatic lip-sync, facial animation, and head motion.
Seedance 2.0 Input Requirements
Before you use Seedance 2.0, make sure your inputs meet these specifications:
| Input | Format | Recommendations |
|---|---|---|
| Image | JPEG/PNG, up to 4K | Clear facial features, good lighting, 16:9 aspect ratio |
| Audio | WAV/MP3, up to 60s | Clean dialogue, minimal background noise, consistent volume |
| Text Prompt | Plain text | Describe camera movement, lighting, and overall mood |
How to Use Seedance 2.0 via API
The Seedance 2.0 API is part of the Doubao ARK content generation family. Here's the complete API call:
const response = await fetch('https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks', {
method: 'POST',
headers: {
'Authorization': `Bearer ${ARK_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'doubao-seedance-2-0-260128',
content: [
{
type: 'image_url',
image_url: { url: 'https://your-refined-image.jpg' },
},
{
type: 'audio_url',
audio_url: { url: 'https://your-generated-audio.wav' },
},
{
type: 'text',
text: 'Cinematic close-up, subtle facial expressions, natural lip-sync, slight head movement, dim atmospheric lighting, film grain, 1080P, 16:9, 24 seconds',
},
],
}),
});
// Poll for completion — Seedance 2.0 video generation is async
const taskId = data.id;
let result;
do {
await sleep(5000);
result = await fetch(
`${ARK_BASE}/contents/generations/tasks/${taskId}`,
{ headers: { Authorization: `Bearer ${ARK_API_KEY}` } }
).then(r => r.json());
} while (result.status === 'running');
console.log('Seedance 2.0 video ready:', result.content.video_url);
What Seedance 2.0 Does Under the Hood
Understanding how to use Seedance 2.0 means knowing what the model actually does:
-
Lip-Sync Analysis: Seedance 2.0 analyzes the audio waveform to extract phoneme timing — when each sound occurs. It then maps these to visemes (visual mouth shapes) and generates frame-by-frame mouth movements.
-
Facial Animation: Beyond the mouth, Seedance 2.0 generates micro-expressions — eyebrow movements, eye blinks, subtle cheek and jaw motions — all driven by the emotional cues in the audio.
-
Head Motion: Seedance 2.0 adds natural slight head movements synchronized to speech rhythm. Faster speech = more dynamic motion; pauses = subtle stillness.
-
Lighting Consistency: The model preserves the source image's lighting, shadows, and color grade throughout the generated frames — no flickering or color shifts.
Seedance 2.0 Best Practices
Here are key tips on how to use Seedance 2.0 for the best results:
- Image quality matters most. A blurry source image produces a blurry video. Use Seedream to upscale and sharpen before feeding into Seedance 2.0.
- Keep audio under 60 seconds. Longer durations increase the chance of lip-sync drift. For longer videos, generate in segments.
- Match audio energy to your image. A quiet whisper works with a still close-up; a heated argument needs an image that can accommodate more motion.
- Use descriptive text prompts. The text prompt guides Seedance 2.0's camera movement and overall mood. Be specific: "slow push-in, shallow depth of field, warm tones" produces better results than "make it look good."
- Poll patiently. Seedance 2.0 video generation typically takes 30-90 seconds. Don't hammer the API — a 5-second polling interval is sufficient.
How to Use Seedance 2.0 on the Web Platform
If you prefer a no-code experience, you can use Seedance 2.0 directly on Seed Audio Prompts:
- Go to the Seedance page
- Upload your refined image (or generate one with Seedream first)
- Upload your audio file (or generate one with SeedAudio first)
- Write a text prompt describing the desired motion and camera work
- Click "Generate" and wait for Seedance 2.0 to render your video
The web platform handles polling, credit management, and result storage automatically — the easiest way to learn how to use Seedance 2.0.
The Result: Full Transcript
Here's the complete dialogue from the Seedance 2.0 generated video:
Character 1 (Joe): Joe, look at me. Not the corner... me.
Character 2: I am looking at you.
Character 1: Then tell what it said.
Character 2: It's that you'd ask that.
Character 1: What else did he tell you?
Character 2: That you're frightened.
Character 1: I'm not frightened of you.
Character 2: No. You're frightened it knows your name.
This transcript was extracted directly from the Seedance 2.0 video using our video download and subtitle extraction script.
Complete Pipeline Script: How to Use Seedance 2.0 End-to-End
Here's the full pipeline as a single TypeScript script — the definitive example of how to use Seedance 2.0 in production:
// seedance-2.0-pipeline.ts — Complete tutorial on how to use Seedance 2.0
// Requires: ARK_API_KEY and OPENSPEECH_API_KEY in environment
const ARK_BASE = 'https://ark.cn-beijing.volces.com/api/v3';
const OPENSPEECH_BASE = 'https://openspeech.bytedance.com/api/v3';
async function sleep(ms: number) { return new Promise(r => setTimeout(r, ms)); }
async function pollTask(taskId: string) {
let result;
do {
await sleep(5000);
result = await fetch(
`${ARK_BASE}/contents/generations/tasks/${taskId}`,
{ headers: { Authorization: `Bearer ${process.env.ARK_API_KEY}` } }
).then(r => r.json());
} while (result.status === 'running');
return result;
}
// Step 1: Refine the Midjourney keyframe before feeding to Seedance 2.0
async function refineImage(imageUrl: string, prompt: string) {
const resp = await fetch(`${ARK_BASE}/contents/generations/tasks`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${process.env.ARK_API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'doubao-seedream-4-0-250828',
content: [
{ type: 'image_url', image_url: { url: imageUrl }, role: 'reference_image' },
{ type: 'text', text: prompt },
],
}),
});
return await pollTask((await resp.json()).id);
}
// Step 2: Generate dialogue audio — the audio track Seedance 2.0 will sync to
async function generateAudio(dialoguePrompt: string) {
const resp = await fetch(`${OPENSPEECH_BASE}/tts/create`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${process.env.OPENSPEECH_API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ model: 'seed-audio-1.0', input: dialoguePrompt, response_format: 'wav' }),
});
return await resp.json();
}
// Step 3: How to use Seedance 2.0 — the core API call
async function useSeedance2(imageUrl: string, audioUrl: string, prompt: string) {
const resp = await fetch(`${ARK_BASE}/contents/generations/tasks`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${process.env.ARK_API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'doubao-seedance-2-0-260128', // Seedance 2.0 model ID
content: [
{ type: 'image_url', image_url: { url: imageUrl } },
{ type: 'audio_url', audio_url: { url: audioUrl } },
{ type: 'text', text: prompt },
],
}),
});
return await pollTask((await resp.json()).id);
}
// Full pipeline — how to use Seedance 2.0 from start to finish
async function main() {
console.log('🎨 Step 1/3: Refining image for Seedance 2.0 input...');
const refinedImage = await refineImage(midjourneyUrl, refinePrompt);
console.log('🎙️ Step 2/3: Generating audio for Seedance 2.0 lip-sync...');
const audio = await generateAudio(dialoguePrompt);
console.log('🎬 Step 3/3: Using Seedance 2.0 to generate the final video...');
const video = await useSeedance2(refinedImage.content.image_url, audio.audio_url, videoPrompt);
console.log('✅ Seedance 2.0 video complete:', video.content.video_url);
}
Troubleshooting: Common Issues When Learning How to Use Seedance 2.0
| Issue | Solution |
|---|---|
| Lip-sync is out of sync | Ensure audio is clean (no background noise). Re-export audio as 16kHz mono WAV. |
| Face looks distorted | Source image resolution too low. Use Seedream to upscale to at least 1080p before Seedance 2.0. |
| Video generation takes too long | Seedance 2.0 processes ~1 second of video per 3-5 seconds. A 24-second video takes ~90 seconds. |
| Output has flickering | Reduce text prompt complexity. "Slow, smooth camera motion" produces more stable results. |
| "Task failed" error | Check that image and audio URLs are publicly accessible. Seedance 2.0 cannot access private URLs. |
Start Using Seedance 2.0 Today
Now that you know how to use Seedance 2.0 as part of the complete AI video pipeline, it's time to create. All tools are available on Seed Audio Prompts:
- Seedance 2.0 — AI video with lip-sync. Upload image + audio, get a cinematic video.
- Seedream — AI image generation and refinement. Perfect for creating Seedance 2.0 source images.
- SeedAudio — AI dialogue, voice cloning, and audio generation. Create the audio tracks that Seedance 2.0 syncs to.
The entire pipeline — from Midjourney keyframe to Seedance 2.0 final render — is available in one platform. This guide on how to use Seedance 2.0 gives you the blueprint; now go create something incredible.
Published on July 23, 2026 · Tags: how to use seedance 2.0, seedance 2.0 tutorial, midjourney, seedream, seedaudio, ai-video, doubao