Concurrent Submit | Zhenzhen_nano_banana_edit
Batch Nano Banana edits the async way, without babysitting the graph
- image1
- image2
- image3
- image4
- task
This is the concurrent twin of Zhenzhen's first-gen Nano Banana edit node - the one that existed before Nano Banana 2 and Pro took over. It's not the newest toy, but it's still the cheapest way to push a batch of image edits at Google's gemini-2.5-flash image family through the reseller, and for simple swaps - "change the shirt to red," "put it on a beach" - the first Banana still holds up fine.
What the "Concurrent Submit" part buys you: the plain Comfly_nano_banana_edit blocks the whole graph until the cloud answers. This one drops the request into a background pool of 30 image workers and returns a COMFLY_IMAGE_FUTURE task immediately. You then feed the task into Concurrent Collect Images (ComflyConcurrent_Image_Await), which waits on up to 30 tasks and hands back image_1…image_30 in order. Graph stays responsive, all 30 jobs run in parallel, and you get a status string per slot to see who died.
The inputs
- prompt - what to generate or edit. Multiline.
- mode -
text2imgorimg2img. One honest caveat from the pack's own changelog: the size/ratio selector only actually applies in text2img mode. In img2img the model follows the reference image, so don't fight it. - model -
nano-bananaornano-banana-hd. - aspect_ratio - 1:1 default, plus 16:9, 4:3, 9:16, 21:9, 9:21 and the rest.
- image1 … image4 - up to four reference images for edits.
- apikey, response_format (
url/b64_json), seed, skip_error - the usual suite.
Output is a single task of type COMFLY_IMAGE_FUTURE. Nothing else. If you drop it into a preview node directly you'll get an error that basically says "this isn't an image yet" - the Await node is mandatory, not optional.
Install
The pack-wide instructions apply unchanged. Easiest is ComfyUI Manager → search Comfyui-zhenzhen → install → restart. Manual, if you prefer:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
No downloads beyond pip deps; you're paying for API calls, not weights. You need a Zhenzhen token (ai.t8star.org overseas, api.seedance.nz for the domestic discount) in the apikey field.
Trouble spots
- Congested default group. The default token group has a habit of getting slow when Google tightens its concurrency; if you see long stalls, the README suggests switching your token to a quality/优质 group - or jumping to the fal twin of this node, which runs a different lane.
- 429 / 500 errors are Google throttling, not your config. Rerun; the pack's own docs say most failures are the upstream vendor, especially during peak hours.
- Timed out ≠ failed. These are paid asynchronous jobs - a timeout just means the client gave up polling. Check the site's async-task list, grab the result by task ID, and don't resubmit until you've confirmed it actually died.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| mode | COMBO | text2img | 2 options: text2img, img2img |
| model | COMBO | nano-banana | 2 options: nano-banana, nano-banana-hd |
| aspect_ratio | COMBO | 1:1 | 11 options: 16:9, 4:3, 4:5, 3:2, 1:1, 2:3, +5 |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| apikeyopt | STRING | — | |
| response_formatopt | COMBO | url | 2 options: url, b64_json |
| seedopt | INT | 00–2147483647 | — |
| skip_erroropt | BOOLEAN | false | 开启后,节点失败时不报错、按旧行为返回默认空结果;关闭时(默认)失败直接抛出错误。 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| task | COMFLY_IMAGE_FUTURE | — |