zhenzhen-image-nb-2.1(文生/图像编辑)
14 reference images and someone else's API key
- api_config
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- image11
- image12
- image13
- image14
- image
- image_url
- task_id
- response
Nano Banana is Google's image line - the "Gemini 2.5 Flash Image" model that got a banana nickname on a leaderboard and then official branding. Nano Banana 2 is the Gemini 3.1 Flash image model from February 2026, and "2.1" is the relay's name for the point release on top of it. Either way, the same three things are true: no open weights, a real content filter, and genuinely excellent reference-image editing.
This node is a paid wrapper around that model from T8mars/Comfyui-zhenzhen (贞贞的平价AI小屋). It's the reference-image side that earns the install - our own consistency writeup lands on exactly this: on a 2026-era model, the reference goes into an edit model's context rather than through a LoRA or an IP-Adapter, and that editor is increasingly a closed one you call.
How the round trip works
Local IMAGE inputs get encoded to PNG, uploaded to the relay's /v1/files/upload, and replaced by URLs; the payload goes to /v1/image/generations as prompt, n: 1, a size field carrying your aspect ratio, and a metadata.resolution carrying your resolution tier. Then it polls, downloads, decodes, hands you a tensor. Roughly: upload → queue → wait → fetch.
That split between size and metadata.resolution is worth knowing because it explains why auto exists and why resolution and ratio are separate widgets here.
Inputs that matter
prompt- required, multiline, natural language. No(emphasis:1.3), no quality spam; it's a chat-adjacent model, not an SD checkpoint.resolution-1K,2K,4K.1Kis fine for iteration.4Kis the expensive one and, per the pack's own docs, the one that stresses the download path.aspect_ratio- eleven options, starting withauto.autofollows your input image, which is what you want when you're editing a photo and don't want it re-cropped into 1:1.image1…image14- up to fourteen references, optional, in order. Empty slots = text-to-image. One image = edit. Several = the multi-reference composition this family is known for (Nano Banana Pro's headline spec was 14 references, and it's the same shape here).skip_error- on failure, emit a white placeholder instead of throwing. Good for batches, dangerous if you forget it's on.seed- the tooltip is blunt and correct: ComfyUI cache seed only; not sent to the API. It decides whether an unchanged graph re-runs, so it's a wallet guard rather than a reproducibility knob. Leave itfixedunless you want to re-buy the same call.
Outputs: image, image_url, task_id, response. The last two are your receipt - when a job returns something weird, response is the raw JSON and task_id gets you the same job on the relay's web dashboard.
Installing it
Manager → search Comfyui-zhenzhen → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
There are no model weights involved, but requirements.txt is not empty - aiohttp, aiohttp-cors, GitPython, matrix-client, transformers, huggingface-hub, psutil, nest_asyncio, openai, opencv-python, numpy, Pillow, requests, torch. ComfyUI already covers most of that; if pip starts resolving transformers, just let it finish.
Then add Zhenzhen API Settings, pick a channel in api_base (the default seedance_low_price points at https://api.seedance.nz; the overseas workshop channel is the other one), paste your key, and wire api_config into this node. Alternatively skip the settings node entirely and export SEEDANCE_API_KEY - the pack falls back to SEEDANCE_API_KEY / SEEDANCE_BASE_URL from the environment if nothing is wired in.
The key sits in the workflow widget, so a saved workflow is a workflow with your key in it.
Where people get burned
429s and 500s are Google's queue, not your node. The pack's release notes are refreshingly direct about this: upstream load spikes, retries usually land, and those failures normally don't bill you. The relay also runs token groups, and the notes blame 4K white-image outputs on an overloaded default group - the fix on their side is switching groups, which you do on the relay's website, not in ComfyUI.
4K that generates but never downloads. Large cross-border transfers are the documented weak point. There's an OSS region setting (CN/US) on your token edit page for exactly this.
A batch into an image slot. Each imageN takes exactly one image; an upstream loader set to batch 2 will get you an error before anything is uploaded.
Expect the filter, and don't fight it. Google's image models are among the most aggressively filtered in the field, with SynthID watermarking on top, and this node can't route around that - it's a reseller sitting in front of the same model. Celebrity and famous-IP prompts are the usual refusals.
It's the relay's name, not Google's. Searching for "nano banana 2.1" locally will get you nothing; zhenzhen-image-nb-2.1 is what's on the wire.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| resolution | COMBO | 1K | 3 options: 1K, 2K, 4K |
| aspect_ratio | COMBO | auto | 11 options: auto, 1:1, 16:9, 9:16, 21:9, 2:3, +5 |
| api_configopt | ZHENZHEN_SEEDANCE2_CONFIG | — | |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| image5opt | IMAGE | — | |
| image6opt | IMAGE | — | |
| image7opt | IMAGE | — | |
| image8opt | IMAGE | — | |
| image9opt | IMAGE | — | |
| image10opt | IMAGE | — | |
| image11opt | IMAGE | — | |
| image12opt | IMAGE | — | |
| image13opt | IMAGE | — | |
| image14opt | IMAGE | — | |
| skip_erroropt | BOOLEAN | false | — |
| seedopt | INT | 00–18446744073709550000 | ComfyUI cache seed only; not sent to the API. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| image_url | STRING | — |
| task_id | STRING | — |
| response | STRING | — |