Nano Banana
Fourteen Reference Images in One Node
- images
- provider
- image
- images
- text
- thought
Nano Banana is the single most-discussed closed image model in this community - the literal phrase saturates the corpus cap, and it co-occurs with ComfyUI in hundreds of threads. It's the model people describe as the one thing genuinely worth the API call: it holds consistency across multiple references, edits intelligently, and renders text properly. It's also the one Google's filter is most willing to say no on.
So this node is the bring-your-own-key route to it. If you'd rather buy prepaid credits through Comfy and skip key management, Comfy's own API nodes cover it. This node is for the case where you have a Google AI Studio key (or an OpenRouter/Vertex/relay key) and want the model inside your graph.
The model dropdown is the config surface
model is a dynamic combo over the family - 2.1, 2, 2 Lite, Pro, and the original. Version differences are substantial: output resolution tiers reach higher on Pro, reasoning-before-generating appears on some versions and not others, and modality options differ. The pack handles this by rebuilding the inputs underneath the dropdown when you switch versions, so if a field you saw in a tutorial doesn't exist for you, you're on a different version, not a different pack.
What that means practically: pick the version first, then read the inputs. Pro is the one with the high-resolution and multi-reference story; the Lite and older entries are the fast/cheap ones for iteration.
The fixed inputs
- prompt - generation prompt or the edit instruction. Editing is the mode people love: attach references, describe the change, get the change.
- seed -
0lets the service pick; changing a non-zero value forces a re-run. - safety_level - default
BLOCK_NONE, and the pack's tooltip is honest that this sets the threshold for all harm categories at once, with theDEFAULToption sending no safety settings at all. It's a request-level hint to Google's moderation, not a bypass. Google is among the most aggressively restrictive vendors on this axis, and no dial here changes what the model will actually do. - images - autogrow reference socket, up to 14, with batches expanded into individual slots. Fourteen is not a marketing number; multi-reference consistency is the capability that made this model famous, and this input is where you use it. Go over and the node throws rather than truncating, which is the right behaviour and still annoying mid-run.
- extra - JSON merged into the request, for anything the version supports but the pack hasn't surfaced.
- system_prompt - accepted here; how much an image model does with it depends on the version.
- retry_count - total attempts, ~3s apart. Costs money per attempt on a paid call.
- provider - optional; defaults to Google AI Studio with
geminifromapi_key.jsonorGEMINI_API_KEY.
Outputs: image (all images as one batch - only if the sizes match, otherwise the first is returned), images (a proper list), text and thought (the text channel is where a "thinking" version's narration shows up).
Install
cd ComfyUI/custom_nodes
git clone https://github.com/yogurt7771/ComfyUI-YogurtNodes
cd ComfyUI-YogurtNodes
pip install -r requirements.txt
Manager works too - search "YogurtNodes"; the canvas name is "Nano Banana (Yogurt Nodes)".
{ "gemini": "AIza..." }
at custom_nodes/ComfyUI-YogurtNodes/yogurt_nodes/llm/api_key.json. Provider precedence is field → JSON → environment variable, and the pack routes the various versions through Google AI Studio, OpenRouter, Vertex AI and at least one relay depending on which the version is available on - so if you connect a provider that doesn't carry your chosen version, you get an error naming the ones that do.
Where people actually use it
Consistency. The workflow everyone builds: generate a character once, then feed that image plus a new prompt and get the same character in a new pose. This is the reference-image count doing its job, and it's why people tolerate the price.
Editing. "Remove the car, keep the lighting." Reference in, instruction in, result out - the mode where an API model still beats most local editing setups for instruction-following.
Upscaling, weirdly. Nano Banana Pro shows up in Comfy Org's own 2026 upscaling handbook as a recommended image path, which tells you it's being used as a detail-and-restore step, not just a generator. Different tool than you'd reach for, but it works.
Bruises
Cost. Per image, per reference token load, with reasoning versions spending more. Nobody in these threads is casual about it.
Refusals. The filter is the model's, not the node's. BLOCK_NONE doesn't unlock anything Google won't produce.
The batch collapse. Multiple outputs at different sizes come back as one. Take images if you're varying.
"Unimaginative." That's the standard complaint even from people who praise it - great at executing an instruction, less interesting when left to invent. Pair it with a local model for the drafts and use this where instruction fidelity actually matters.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Prompt sent to the model. | |
| model | COMBO | Model version; the inputs below change with the selected model. | |
| seed | INT | 00–2147483647 | Sent to the API when the model supports it; changing it also forces a re-run. 0 lets the API pick a random seed. |
| safety_level | COMBO | BLOCK_NONE | Safety threshold for all harm categories; DEFAULT sends no safety settings. |
| extra | STRING | Optional JSON object merged into the request (for parameters not exposed as inputs). | |
| images | COMFY_AUTOGROW_V3 | Optional reference image(s); batches are expanded. Up to 14. | |
| retry_count | INT | 11–10 | Total attempts on failure. |
| system_promptopt | STRING | System instruction sent with the request. | |
| provideropt | YOGURT_LLM_PROVIDER | Provider node. When unconnected, the official API is used with keys from api_key.json or environment variables. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | All images as one batch (first image only if sizes differ). |
| images | IMAGE | — |
| text | STRING | — |
| thought | STRING | — |