Concurrent Submit | zhenzhen-MAI Image 2.6 / Flash(生成/编辑·平价小屋)
30 MAI Image 2.6 Jobs at Once — If You Remember the Collector Node
- image1
- image2
- image3
- image4
- image5
- api_config
- task
This node generates nothing. It hands your MAI Image 2.6 job to a shared pool of 30 workers and returns a ticket. If that sounds like a downgrade, it isn't - it's the fix for the dumbest waste in any API-node workflow.
When your generation happens on someone else's GPU, your own hardware is idle the whole time. Queue time plus model time is 10–60 seconds per image, and a serial graph pays that bill one image at a time. Fire twenty prompts at once and the wall clock is roughly the slowest single image, not the sum. That's the entire reason this twin exists, and it's why the pack ships a concurrent version of nearly every image node it has.
What's actually in the box
On import, the pack walks its own node registry and mints a twin for every node whose primary output is IMAGE or VIDEO: same class body, same widgets (it deep-copies the original's INPUT_TYPES), but FUNCTION renamed to submit. So this node's controls are identical to the plain zhenzhen-MAI Image 2.6 / Flash node - model, prompt, resolution, size, references. Only the output differs, and it differs completely: a single task of type COMFLY_IMAGE_FUTURE.
That ticket is inert until something reads it. Wire task into Concurrent Collect Images (30), which takes up to 30 tickets and gives you back image_1 … image_30 in the same slot order, plus a status string summarizing successes and failures. Its failure_mode is the one setting there worth knowing: fail_fast (default) kills every still-queued job the moment one fails; placeholder swaps in a red stand-in and keeps the rest running.
Two structural facts surprise people. First, all submit nodes share one pool per kind - 30 for images, 10 for videos, pack-wide, not per node. Twenty MAI submits and ten NB submits compete for the same 30 slots. Raise it with COMFLY_IMAGE_CONCURRENCY (capped at 128; COMFLY_IMAGE_PENDING controls extra queued jobs). Second, a submit node with nothing downstream isn't on the execution path at all, so forgetting the collector costs you no credits - just confusion.
The inputs that matter
model is the only real choice up front: mai-image-2-6 or the -flash variant. The other two you'll touch:
prompt- a generation or edit instruction; the upstream ceiling is around 32,000 tokens, so stop worrying about prompt length.image1–image5- up to five references, one image per slot. Connect even one and the whole sizing block is ignored: the payload is built with the images andresolution/sizenever go out. Same behavior as the plain node, worth knowing before you file a bug about your 2k setting doing nothing.web_grounding- a boolean that lets the model pull current information from Bing. Genuinely useful for "what does this 2026 logo look like" prompts, useless for stylized work.
If you do want exact pixels, note the trap: size includes custom_pixels, and width/height accept 768–3072 in steps of 32 - but the validator also caps total area at 2,359,296 pixels. 3072×3072 fails. Sides get floored to multiples of 32. Leave size on auto with auto_aspect_ratio and you'll never touch this.
seed is ComfyUI cache control only, never sent upstream. Leave it fixed and an unchanged graph reuses the cached ticket instead of paying twice; that's the intended way to rerun only the parts you changed. skip_error decides whether a failed job raises or returns a placeholder.
Install
ComfyUI Manager → search zhenzhen or install via Git URL, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
# restart ComfyUI
No model downloads - everything is a cloud call. The requirements.txt is heavier than it looks (aiohttp, GitPython, transformers, matrix-client, opencv-python, openai), so give it a minute on first start. Two things the README doesn't mention: importing the pack spawns a helper process that serves a small HTTP app on port 8080 (front-end widgets fetch from it - if that port is taken, expect odd console noise), and the repo ships its own root certificate in certs/ that the HTTP layer applies to the domestic endpoint. Don't vendor the pack without it.
You also need a key: drop a zhenzhen-seedance2-low-price-api-settings node into the graph, paste your key, and wire its output into this node's api_config. Or set SEEDANCE_API_KEY in the environment. Without one you'll get Seedance API key is required before anything else happens.
Where people get burned
Forgetting the collector is the number one confusion, followed by forgetting that submit-node batches cost the same as running them one by one - 30 images is 30 charges, just faster.
The author says it himself in the README: sometimes it isn't your fault. Upstream 429/500s are load limits and typically aren't billed; just run it again. If a 4K result fails to download, that's usually cross-border transfer of an oversized file - the fix is server-side, in your token settings on the provider's site (switch the OSS region to CN or US). And if you hit ComfyUI's cancel mid-run, queued slots get cancelled with it.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | mai-image-2-6 | 2 options: mai-image-2-6, mai-image-2-6-flash |
| prompt | STRING | Generation or editing instruction; about 32000 tokens upstream. | |
| resolution | COMBO | 1k | 2 options: 1k, 2k |
| size | COMBO | 1:1 | 20 options: auto, 1:1, 16:9, 9:16, 21:9, 9:21, +14 |
| custom_ratio | STRING | 16:9 | Positive integer W:H, between 1:4 and 4:1. |
| width | INT | 1536768–3072 | — |
| height | INT | 1024768–3072 | — |
| auto_aspect_ratio | BOOLEAN | false | — |
| web_grounding | BOOLEAN | false | Use Bing to retrieve current information. |
| image1opt | IMAGE | Reference 1/5; exactly one image per slot. | |
| image2opt | IMAGE | Reference 2/5; exactly one image per slot. | |
| image3opt | IMAGE | Reference 3/5; exactly one image per slot. | |
| image4opt | IMAGE | Reference 4/5; exactly one image per slot. | |
| image5opt | IMAGE | Reference 5/5; exactly one image per slot. | |
| api_configopt | ZHENZHEN_SEEDANCE2_CONFIG | — | |
| skip_erroropt | BOOLEAN | false | — |
| seedopt | INT | 00–18446744073709550000 | Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| task | COMFLY_IMAGE_FUTURE | — |