Modelverse Doubao Seedance 2.0
Seedance 2.0, the ByteDance video model, as an API node
- client
- first_frame_image
- last_frame_image
- reference_image
- url
- task_id
Doubao Seedance 2.0 is ByteDance's video model, and if you followed the local-diffusion scene at all you've seen the "Seedance 2.0 is on its way to ComfyUI" threads - huge excitement, and then a wall of disappointment when people realized the local version wants hardware most of us don't have. This node is the other path: the same model, served through UCloud's Modelverse API, called from inside your ComfyUI graph. No local weights, no VRAM ceiling, and no pretending your 8GB card will run it.
Why you'd reach for it
Seedance 2.0 is a genuinely strong text/image-to-video model with one rare party trick: it can generate synchronized audio. There aren't many frontier video models that'll hand you video and sound from one job. On top of that, this node is the most loaded input surface in the whole pack - first frame, last frame, reference image, reference video, reference audio, all at once if you want. That makes it the node for "I have specific material and want the model to respect all of it."
The inputs that matter
- client - the required MODELVERSE_API_CLIENT wire from the Modelverse Secret Client node.
- prompt - required, up to ~500 characters recommended. Seedance actually follows long descriptive prompts well; use the space.
- first_frame_image / first_frame_url and last_frame_image / last_frame_url - bookend your clip. Each pair is one-or-the-other, not both, and not neither-then-wonder-why.
- reference_image / reference_video_url / reference_audio_url - style, motion, or audio to riff on. This is where Seedance separates from simpler nodes.
- generate_audio - the headline feature. Flip it on and the video comes back with synchronized sound.
- resolution / ratio / duration - 480p–1080p, ratios up to 21:9 plus
adaptive(which picks for you), 4–15 seconds. - draft - a 480p-only preview mode. Same idea as a quick sketch before committing to the full render: cheap, fast, good for iteration.
- camera_fixed, watermark, seed - lock the camera, brand the output, or make results reproducible.
Outputs are the pack-standard pair: url (the finished mp4) and task_id (job tracking). Wire url into the Modelverse Preview Video node to download and preview it, or it stays a URL string.
Installing and keying up
Same as every node in this pack - it's one plugin:
cd ComfyUI/custom_nodes
git clone https://github.com/ucloud/comfyui-plugin
…then restart. Or search "ComfyUl-UCloud" in ComfyUI Manager and install there; Manager handles the light pip deps (requests, pillow, numpy, openai). You need a ModelVerse API key from the UCloud console, entered either through the Modelverse Secret Client node (key stays out of your workflow files) or a config.ini with MODELVERSE_API_KEY=....
Common issues
- The model ignores your reference - audio, video, and image references are separate inputs; a reference video goes in
reference_video_url, not into the first-frame slot. - 480p locked - you've got
drafton, which is 480p-only by design. Turn it off for real resolutions. - One-or-the-other violations - fill both
first_frame_imageandfirst_frame_urland the node errors on purpose. Pick a lane. - Long jobs - video tasks poll every 5 seconds with a ~15-minute ceiling. Reference-heavy 15-second clips are slow; that's the model, not a frozen UI.
Remember this is metered cloud compute - every generation moves money. draft mode exists precisely so your rejected takes are cheap ones.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| client | MODELVERSE_API_CLIENT | — | |
| prompt | STRING | Text prompt describing the desired video (recommended: up to 500 characters) | |
| first_frame_imageopt | IMAGE | First frame image | |
| first_frame_urlopt | STRING | First frame image URL (use either this OR first_frame_image, not both) | |
| last_frame_imageopt | IMAGE | Last frame image | |
| last_frame_urlopt | STRING | Last frame image URL (use either this OR last_frame_image, not both) | |
| reference_imageopt | IMAGE | Reference image | |
| reference_image_urlopt | STRING | Reference image URL (use either this OR reference_image, not both) | |
| reference_video_urlopt | STRING | Reference video URL | |
| reference_audio_urlopt | STRING | Reference audio URL | |
| durationopt | INT | 54–15 | Video duration in seconds (4–15) |
| resolutionopt | COMBO | 720p | Output resolution; draft mode supports 480p only |
| ratioopt | COMBO | adaptive | Aspect ratio; adaptive auto-selects the best fit |
| seedopt | INT | 00–2147483647 | Random seed for reproducible results |
| generate_audioopt | BOOLEAN | false | Generate audio synchronized with the video |
| camera_fixedopt | BOOLEAN | false | Fix camera position (no camera movement) |
| watermarkopt | BOOLEAN | false | Add watermark to the output video |
| draftopt | BOOLEAN | false | Draft/preview mode (480p only) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| url | STRING | — |
| task_id | STRING | — |