Seedance Video Generate
Seedance Video Inside ComfyUI — Your GPU Gets to Sit This One Out
- image
- video
- audio
- video_url
- text
Seedance is one of the closed video models this community measures everything open against - and ByteDance will never ship its weights. If you want that quality but live in ComfyUI, this node is the bridge. It wraps the Seedance 2.0 API from Volcengine's ARK platform, so the actual generation happens in ByteDance's cloud, not on your box. No VRAM juggling, no model files to babysit. Just an API key, a prompt, and a wait.
The catch is the wait. SeedanceVideoGenerate uses the async task model: it submits your content, gets back a task ID, then polls the API every few seconds until the job finishes or times out. Videos aren't fast. The default max_wait_time is 600 seconds, and you can push it up to an hour. Set poll_interval to something sane - 3 seconds is fine, don't hammer the API with 1-second polls for a 5-second clip.
What you actually set
- prompt - a multiline text box. That's the whole story.
- duration - 1 to 10 seconds, default 5. The node silently appends
--dur Nto your prompt before sending, so don't also type it yourself. - watermark - boolean, off by default; becomes
--wm true. - model - fixed to
doubao-seedance-2-0-260128. There's one choice. Move on.
The optional inputs are where it gets interesting. An image tensor turns it into image-to-video. audio accepts an AUDIO input straight from ComfyUI's LoadAudio or GetVideoComponents, giving you audio-driven video - the feature people actually talk about. And video_url takes a public URL for a reference video, which is how you do follow-the-motion shots.
The gotcha that burns people
Read the outputs before you wire anything: this node returns video_url as a STRING and text as metadata. It does not hand you a VIDEO tensor you can drop into SaveVideo. The download helper is literally commented out in the source. So your workflow ends at a URL, and if you want the file locally you need to fetch it yourself or tack on a download node. That's not a bug - it's how cloud video works - but it's the #1 "why is my video output empty" confusion.
Second gotcha: the local video input is a trap. The tooltip says it plainly - Seedance reference videos must be public URLs, a local VIDEO tensor is not uploaded. Feed video_url instead, and if your clip isn't already hosted, the companion TOSUploadVideoURL node in this same pack uploads it to ByteDance's object storage and hands you a pre-signed URL. That's what it's for.
Install and troubleshooting
Same as every node in this pack: ComfyUI Manager → search "Seedream Image Generate", or clone into custom_nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/dzy1128/Seedream-Image-Generate-ComfyUI
pip install volcengine-python-sdk[ark]
Then set ARK_API_KEY (the key lives in the Volcengine console, and you must "activate" the model there first - it's a checkbox on the model page, not something the node does for you). No model downloads, because there are no models. If generation times out, raise max_wait_time. If the task fails, read the text output - the node stuffs the API's error message in there instead of just failing silently. Region matters too: the default base_url is the Beijing endpoint, and some people outside Asia have trouble even getting a usable ARK key. If you're not in ARK's footprint, this whole pack is a dead end before you start.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| model | COMBO | doubao-seedance-2-0-260128 | 1 options: doubao-seedance-2-0-260128 |
| duration | INT | 51–10 | 视频时长(秒),对应 --dur 参数 |
| watermark | BOOLEAN | false | 是否添加水印,对应 --wm 参数 |
| base_url | STRING | https://ark.cn-beijing.volces.com/api/v3 | — |
| poll_interval | INT | 31–30 | 任务状态轮询间隔(秒) |
| max_wait_time | INT | 60060–3600 | 最大等待时间(秒),超时后任务将被放弃 |
| imageopt | IMAGE | 可选图片输入,用于图生视频 | |
| videoopt | VIDEO | 保留输入口。当前 Seedance 参考视频要求公网 URL,本地 VIDEO 输入不会直接上传,请优先使用 video_url | |
| video_urlopt | STRING | 参考视频公网 URL。当前按官方要求仅建议使用 .mp4 / .mov 的可访问 web url | |
| audioopt | AUDIO | 可选音频输入,用于为视频添加音频驱动;可连接 ComfyUI 的 LoadAudio / GetVideoComponents 等节点输出 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |
| text | STRING | — |