并发提交|Zhenzhen Image G v2.5 Official 生成/编辑(2 合 1)
Queue 30 Zhenzhen Image G v2.5 Official Jobs From One Node
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- image11
- image12
- image13
- image14
- image15
- image16
- api_config
- future
The Official Node's submit wrapper looks exactly like Zhenzhen_Image_G25_Official - all eleven required fields, all sixteen reference slots, both models in the dropdown - and behaves like it too, with one difference: instead of blocking your graph for a minute and a half per image, it validates, submits, and returns a handle. Do that thirty times and collect the whole batch at the end.
The registered class is SeedanceConcurrent_Zhenzhen_Image_G25_Official_Submit, shown in the canvas as 并发提交|Zhenzhen Image G v2.5 Official 生成/编辑(2 合 1).
Why bother
Because the Official node is the expensive, knob-heavy one. Quality tiers, exact pixel sizes, format, n up to 4. Sweeping it - six quality settings on the same prompt, or Flare versus Sunburst on the same reference set - is the natural thing to want, and running those serially through one blocking node is slow enough that people stop bothering.
The concurrent version decouples submission from waiting. Each submit node pushes its job into the pack's shared image thread pool (30 workers by default, tunable 1 to 30 with SEEDANCE_IMAGE_CONCURRENCY) and hands back a future. A receiver node waits on all of them and returns results in slot order.
One nice thing falls out of having one submit node per route: model is per-route. Route one can be Flare at quality=medium with a wild prompt, route two Sunburst at xhigh with the reference images attached, route three the same inputs at a different n. They all land in one receiver.
How it behaves
Inputs are the untouched original set: model (zhenzhen-image-g-v2.5-flare or -sunburst), prompt, size (including preserve_reference and custom), custom_size, resolution, quality, n (1 to 4), output_format, output_compression, background, moderation, plus optional image1 … image16, api_config, skip_error and the cache-only seed.
The wrapper runs the original node's strict validator before anything enters the pool, so a bad custom_size or a transparent-plus-JPEG combination fails immediately rather than queueing a doomed job. With skip_error on, that failure turns into a failed future carrying a placeholder and the rest of the batch keeps going; with it off, you get a proper error. Since v0.5.22 these wrappers no longer inherit the original validator, which is why a single wrong parameter no longer sprawls "invalid input" across every slot on the canvas.
Remember what n means here: it returns one IMAGE batch of up to four images from a single route. So a 30-slot submission is up to 120 images. Plan your RAM accordingly - everything lands in the receiver at once.
Wiring it up
The only output is future (SEEDANCE_IMAGE_FUTURE). Feed it into 并发接收图片(30 路) - class SeedanceConcurrent_Image_Await - on future_1 … future_30. That node returns image_1 … image_30 and a status_json, preserves your slot order regardless of completion order, and keeps its status text redacted.
failure_mode decides what one bad route costs you: raise halts the batch and names the slot; placeholder keeps the successes and substitutes a placeholder, with details in status_json. For a 30-wide sweep, use placeholder.
Image futures are one type, so Official routes can share a receiver with LowPrice, Seedream, Nano Banana or upscaler futures. Video futures are a separate type and a separate receiver - don't cross them.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/ComfyUI_Seedance.git
cd ..
python -m pip install -r custom_nodes/ComfyUI_Seedance/requirements.txt
Or install from ComfyUI Manager (ComfyUI Seedance) or with comfy node install seedance - registry publisher t8star, node ID seedance. The requirements file is one line, requests>=2.28: no model downloads, no FFmpeg needed for this node. Restart ComfyUI and look under Seedance/并发提交; the receiver is under Seedance/并发接收.
You still need a key from api.seedance.nz - a single Seedance API Config node wired into all thirty routes, or SEEDANCE_API_KEY, or a config/.env in the pack directory. And the usual disclaimer for this whole category: prompts and reference images are uploaded to a third-party gateway, so don't put anything in there you wouldn't send to a stranger.
When things go sideways
- "Concurrent slot 3 expected ConcurrentTaskHandle" - the receiver got something that isn't a future, usually a plain
IMAGEfrom the non-concurrent node. - "At least one concurrent Future is required" - nothing connected to
future_1throughfuture_30. - Nothing seems to be happening - submit nodes are supposed to return instantly. Progress is reported by the receiver.
- Memory ballooning - thirty routes at
n=4at2kor4kis a big pile of tensors arriving together. DialSEEDANCE_IMAGE_CONCURRENCYdown, or run the sweep in chunks. - Slow pre-flight - inserting sixteen reference images per route means a lot of uploads, and the API throttles upload frequency per token. The pack waits and retries; generation just starts later.
- A refusal from the host - moderation lives upstream.
moderation=lowis a documented level, not a bypass.
Inputs (30)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | zhenzhen-image-g-v2.5-flare | Flare is intended for everyday creation and fast iteration; Sunburst focuses on precise editing. | Flare 适合日常创作与快速迭代;Sunburst 侧重精细编辑。 |
| prompt | STRING | Required generation or editing prompt. | 必填的生成或编辑提示词。 | |
| size | COMBO | auto | Use preserve_reference to omit size, or choose a ratio/custom pixels. | 选择 preserve_reference 可省略 size 并保留参考图比例,也可选择比例或自定义像素。 |
| custom_size | STRING | 1024x1024 | Used only when size is custom, for example 1536x864. | 仅 custom 使用,例如 1536x864。 |
| resolution | COMBO | 1k | Ignored by the API for an exact custom pixel size. | 使用精确自定义像素尺寸时由 API 忽略。 |
| quality | COMBO | auto | Rendering quality from auto through max. | 从 auto 到 max 的渲染质量。 |
| n | INT | 11–4 | Request 1 to 4 images; all results return as one IMAGE batch. | 请求 1 到 4 张图,全部结果作为 IMAGE 批次返回。 |
| output_format | COMBO | png | Output format: png, jpeg, or webp. | 输出格式:png、jpeg 或 webp。 |
| output_compression | INT | 900–100 | JPEG/WebP only; omitted for PNG. | 仅 JPEG/WebP 使用,PNG 会省略。 |
| background | COMBO | auto | Transparent background requires PNG or WebP. | 透明背景必须配合 PNG 或 WebP。 |
| moderation | COMBO | low | Documented moderation level: low or auto. | 文档支持的审核等级:low 或 auto。 |
| image1opt | IMAGE | Optional reference image 1/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image2opt | IMAGE | Optional reference image 2/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image3opt | IMAGE | Optional reference image 3/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image4opt | IMAGE | Optional reference image 4/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image5opt | IMAGE | Optional reference image 5/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image6opt | IMAGE | Optional reference image 6/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image7opt | IMAGE | Optional reference image 7/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image8opt | IMAGE | Optional reference image 8/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image9opt | IMAGE | Optional reference image 9/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image10opt | IMAGE | Optional reference image 10/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image11opt | IMAGE | Optional reference image 11/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image12opt | IMAGE | Optional reference image 12/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image13opt | IMAGE | Optional reference image 13/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image14opt | IMAGE | Optional reference image 14/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image15opt | IMAGE | Optional reference image 15/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| image16opt | IMAGE | Optional reference image 16/16; connected images switch the request to editing mode. | 连接参考图后进入编辑模式。 | |
| api_configopt | SEEDANCE_CONFIG | Connect Seedance API Config; otherwise SEEDANCE_API_KEY is used. | |
| skip_erroropt | BOOLEAN | false | On failure return a placeholder image instead of stopping the workflow. | 失败时输出占位图片而不中断工作流。 |
| seedopt | INT | 00–18446744073709550000 | ComfyUI cache seed. Fixed reuses the cached result while all other inputs stay unchanged; randomize/increment/decrement starts a new execution. This value is not sent to models without documented seed support. | ComfyUI 缓存种子;Fixed 在其他输入不变时复用缓存,随机、递增或递减会触发新任务。未声明支持 seed 的模型不会收到此参数。 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| future | SEEDANCE_IMAGE_FUTURE | — |