🍌 Grsai Nano Banana
Google's image model on the Grsai channel, 14 reference images and all
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- image_10
- image_11
- image_12
- image_13
- image_14
- image
- status
Nano Banana is Google's closed image line - Gemini 2.5 Flash Image as "Nano Banana 1", Gemini 3 Pro Image as "Nano Banana Pro", Gemini 3.1 Flash as "Nano Banana 2". You cannot download any of them; the only door is an API, and this node is that door on the Grsai channel (nkxx.grsai.ai for a key, grsai.dakka.com.cn under the hood). It's the flagship node of the pack: prompt plus up to fourteen reference images in, a batch of IMAGE out. No GPU, no checkpoint, no VRAM - your local machine just phones home and gets pixels back.
The "14 reference images" is the headline because that's the Nano Banana Pro signature move - character consistency, style lock, product-from-sketch, all by stacking references. The Grsai channel passes those through to Google's model, and the pack's real job is handling uploads, concurrency, and credit reporting so you don't have to.
The inputs that matter
prompt(multiline) - what you want. Chinese works; the model is multilingual.model-nano-banana-fast,nano-banana-pro(default),nano-banana-pro-vt,nano-banana-pro-cl,nano-banana-2,nano-banana-2-cl. "fast" is the cheap draft, pro/2 are the quality flagships.concurrency(1–10, default 1) - how many parallel generations. Each concurrent slot is a separate billed render.aspect_ratio-autoplus the usual1:1–21:9set.image_size- 默认 /1K/2K/4K. The pack maps 默认 to 2K for pro/2 models, 1K for fast. 4K is the Pro/2 flagship feature.api_key(optional) - falls back toGRSAI_KEYor the ApiKeyManager.image_1…image_14(optional IMAGE) - reference images. Wire in a DynamicImageList output and you get exactly as many sockets as you need.
Outputs: image (IMAGE batch) and status (STRING - including a credit-balance readout, which is how the pack reminds you this is metered).
How it works under the hood
The source is readable on the Grsai side. It uploads your reference images to the channel, POSTs to /v1/draw/nano-banana with your model/prompt/ratio, then downloads the returned image URLs with a thread pool. The status string includes a credits check against the channel's /client/common/getCredits endpoint. Everything is synchronous in-graph: run the node, wait for the render, get the image.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/jieg9341-lab/ComfyUI-nkxx
restart (or ComfyUI Manager, search "ComfyUI-nkxx"). First launch auto-installs requests, pandas, openpyxl, yt-dlp, opencv-python, aiohttp. Get a Grsai key at nkxx.grsai.ai.
Common issues
- "未配置 Grsai API Key": no key anywhere - node field,
GRSAI_KEY, or pack config. - All images fail: check the
statuserrors. Credit balance hitting zero is the classic cause; the node reports积分(credits) right in the status line. - Cost creep:
concurrency× 4K × references multiplies the bill per run. Draft atfast/1K, then render final at Pro/4K. - Filtering: Nano Banana is Google's model - it refuses whatever Google refuses, and no node setting changes that. That's the closed-model tradeoff, not a bug.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | 一只可爱的小猫 | — |
| model | COMBO | nano-banana-pro | 6 options: nano-banana-fast, nano-banana-pro, nano-banana-pro-vt, nano-banana-pro-cl, nano-banana-2, nano-banana-2-cl |
| concurrency | INT | 11–10 | — |
| aspect_ratio | COMBO | auto | 11 options: auto, 1:1, 16:9, 9:16, 4:3, 3:4, +5 |
| image_size | COMBO | 默认 | 4 options: 默认, 1K, 2K, 4K |
| api_keyopt | STRING | — | |
| image_1opt | IMAGE | — | |
| image_2opt | IMAGE | — | |
| image_3opt | IMAGE | — | |
| image_4opt | IMAGE | — | |
| image_5opt | IMAGE | — | |
| image_6opt | IMAGE | — | |
| image_7opt | IMAGE | — | |
| image_8opt | IMAGE | — | |
| image_9opt | IMAGE | — | |
| image_10opt | IMAGE | — | |
| image_11opt | IMAGE | — | |
| image_12opt | IMAGE | — | |
| image_13opt | IMAGE | — | |
| image_14opt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| status | STRING | — |