Concurrent Submit | Zhenzhen Doubao Seedance 2.0
Doubao video generation without the serial waits
- first_frame
- last_frame
- ref_image1
- ref_image2
- ref_image3
- ref_image4
- ref_image5
- ref_image6
- ref_image7
- ref_image8
- ref_image9
- video1
- video2
- video3
- audio1
- audio2
- audio3
- task
Seedance is ByteDance's video generation family, and the 2.0 node in this pack is one of the most configurable things Zhenzhen ships - model, duration, ratio, resolution, up to nine reference images, three reference videos, three audio tracks, first/last frame, even an asset-bundle system for reusing a character's identity across jobs. All of that is wasted on you if you're running it serially, because each clip takes a while and the meter ticks per second of output. This submit node fixes the serial part: same Doubao Seedance 2.0 call, but each job goes into the shared video pool (10 workers) and returns a task handle immediately.
The pattern that makes this node worth it: generating the same character across multiple shots, or testing several prompts against one reference set. Seedance's multi-reference inputs are expensive to set up - you want to amortize them across a batch, and this is how.
How it works
Auto-generated concurrent wrapper: the submit class copies the base node's inputs at import time, wraps its generate_video() in a bounded ThreadPoolExecutor (video workers default to 10, set via COMFLY_VIDEO_CONCURRENCY), and returns a COMFLY_VIDEO_FUTURE. Collect with ComflyConcurrent_Video_Await ("Concurrent Collect Videos (10)"), which waits for the batch and returns VIDEO tensors in slot order.
Required inputs: prompt, model (doubao-seedance-2-0-260128 default, the -fast variant, or doubao-seedance-2.0-mini), duration (4-15s), ratio (eight options incl. 21:9 and adaptive), resolution (720p default, up to 4k / native4K). The interesting optional inputs: first_frame / last_frame, ref_image1-9, video1-3, audio1-3, generate_audio (on by default), web_search, watermark, seed, asset_bundle (wire from the Asset ID Bundle node), and skip_error.
Installing it
One clone, whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
Restart ComfyUI, or install "Comfyui-zhenzhen" via ComfyUI Manager. No model downloads - Seedance runs on ByteDance's hardware behind the proxy.
Common issues
Pack-level: account + credit required, 443 errors need VPN with TUN mode, first-run 500s are usually upstream - re-run. Seedance-specific: the README warns the price scales with reference-video seconds too, so a batch of long clips with heavy references gets expensive fast. And resolution is your biggest cost lever - a 10-way batch at 4k is a serious bill; iterate at 480p first. The asset_bundle input is how you reuse a character ID across submits instead of re-uploading references every time - worth wiring if you're batching character-consistent work.
Inputs (30)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| model | COMBO | doubao-seedance-2-0-260128 | 3 options: doubao-seedance-2-0-260128, doubao-seedance-2-0-fast-260128, doubao-seedance-2.0-mini |
| duration | INT | 54–15 | — |
| ratio | COMBO | 16:9 | 8 options: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, +2 |
| resolution | COMBO | 720p | 7 options: 720p, 480p, native1080p, 1080p, 2k, 4k, +1 |
| apikeyopt | STRING | — | |
| first_frameopt | IMAGE | — | |
| last_frameopt | IMAGE | — | |
| ref_image1opt | IMAGE | — | |
| ref_image2opt | IMAGE | — | |
| ref_image3opt | IMAGE | — | |
| ref_image4opt | IMAGE | — | |
| ref_image5opt | IMAGE | — | |
| ref_image6opt | IMAGE | — | |
| ref_image7opt | IMAGE | — | |
| ref_image8opt | IMAGE | — | |
| ref_image9opt | IMAGE | — | |
| video1opt | VIDEO | Reference video input. | |
| video2opt | VIDEO | Reference video input. | |
| video3opt | VIDEO | Reference video input. | |
| audio1opt | AUDIO | Reference audio input. | |
| audio2opt | AUDIO | Reference audio input. | |
| audio3opt | AUDIO | Reference audio input. | |
| generate_audioopt | BOOLEAN | true | — |
| return_last_frameopt | BOOLEAN | false | — |
| web_searchopt | BOOLEAN | false | — |
| watermarkopt | BOOLEAN | false | — |
| seedopt | INT | -1-1–2147483647 | — |
| asset_bundleopt | STRING | Wire from «Asset ID Bundle» output. JSON built from Asset Upload asset_id strings per slot. | |
| skip_erroropt | BOOLEAN | false | 开启后,节点失败时不报错、按旧行为返回默认空结果;关闭时(默认)失败直接抛出错误。 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| task | COMFLY_VIDEO_FUTURE | — |