Nodes/Comfyui-zhenzhen/Zhenzhen_nano_banana2_edit_S2A
ComfyUI Node

Zhenzhen_nano_banana2_edit_S2A

Tasks that survive a timeout

By T8mars·Created about a year ago·Updated 2 days ago· 740
Zhenzhen_nano_banana2_edit_S2A
  • image1
  • image2
  • image3
  • image4
  • image5
  • image6
  • image7
  • image8
  • image9
  • image10
  • image11
  • image12
  • image13
  • image14
  • image
  • image_url
  • task_id
  • response
prompt
modetext2img
modelnano-banana-pro
aspect_ratioauto
image_size2K
apikey
task_id
response_formaturl
seed0
skip_errorfalse

"S2A" stands for sync-to-async, and it's the one-letter difference that saves you real headaches with Comfly_nano_banana2_edit_S2A ("Zhenzhen_nano_banana2_edit_S2A"). It's the same Nano Banana 2 edit node - same models, same fourteen reference images, same 1K/2K/4K - except the generation runs as an async task on the author's server instead of holding your ComfyUI run hostage. When a 4K job takes minutes, or a "slow Google night" makes it take longer than your poll timeout, the async version just... keeps going, and you pick the result up later by task id.

That's the whole pitch, and it's a good one. With the plain Comfly_nano_banana2_edit, if ComfyUI times out you've lost track of the job even if it succeeded. With the S2A node, the job lives in the site's async task list, and the task_id output lets you query it back - including recovering result URLs for images whose download failed mid-transfer, which the author explicitly added.

It's a Google-class node in the T8mars/Comfyui-zhenzhen pack, the "Comfly" API-wrapper family that calls the author's paid reseller service (贞贞的AI工坊, ai.t8star.org). Key goes into apikey directly. Under the hood the difference is just the submission path: same inputs, async queue instead of a blocking poll.

What you set

  • prompt, mode (text2img/img2img), model, aspect_ratio, image_size (1K/2K/4K) - identical to the non-S2A node.
  • image1image14 - reference images.
  • task_id - an optional input. If you already have a task from a previous run (or a crash), paste it here and the node resumes/fetches it instead of submitting fresh. This is the recovery path.
  • response_format (url/b64_json), seed, skip_error, apikey.

Outputs

  • image - the IMAGE result (when the task has completed).
  • image_url - the hosted result.
  • task_id - the important one; keep it, chain it, or re-feed it on retry.
  • response - the raw payload.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
# restart ComfyUI

Or ComfyUI Manager → "Comfyui-zhenzhen", then paste a key from the author's site into apikey.

The honest part

If you generate 4K images regularly, use the S2A node and stop babysitting. It costs the same credits; it just refuses to lose your job to a timeout. The trade is that "instant" runs now have a delay - you submit, go do something else, come back, fetch by task id - so for quick 1K experiments the sync node is still snappier. The pack's usual caveats hold: it's a reseller proxy (your images and prompt leave your machine), and the 4K-on-default-group white-image problem is a Google load issue that the website's premium group setting is the real fix for. This node fixes the "lost my result" failure mode, not the "Google is congested" one.

Categoryzhenzhen/Google

Inputs (24)

NameTypeDefaultDescription
promptSTRING
modeCOMBOtext2img2 options: text2img, img2img
modelCOMBOnano-banana-pro4 options: nano-banana-2, nano-banana-pro, nano-banana-pro-2k, nano-banana-pro-4k
aspect_ratioCOMBOauto11 options: auto, 16:9, 4:3, 4:5, 3:2, 1:1, +5
image_sizeCOMBO2K3 options: 1K, 2K, 4K
image1optIMAGE
image2optIMAGE
image3optIMAGE
image4optIMAGE
image5optIMAGE
image6optIMAGE
image7optIMAGE
image8optIMAGE
image9optIMAGE
image10optIMAGE
image11optIMAGE
image12optIMAGE
image13optIMAGE
image14optIMAGE
apikeyoptSTRING
task_idoptSTRING
response_formatoptCOMBOurl2 options: url, b64_json
seedoptINT00–2147483647
skip_erroroptBOOLEANfalse开启后,节点失败时不报错、按旧行为返回默认空结果;关闭时(默认)失败直接抛出错误。

Outputs (4)

NameTypeDescription
imageIMAGE
image_urlSTRING
task_idSTRING
responseSTRING