🍌 Nano Banana 异步提交 (Grsai)
The async submit half of the pair
- image_1
- image_2
- image_3
- image_4
- status
Nano Banana is Google's Gemini-native image model, and it's good enough that a lot of people run it as the "closed first frame" in a workflow that animates with Wan or LTX locally. The catch is that the API can take a while, and a synchronous node that blocks your whole graph for thirty seconds is miserable. This node is the ComfyUI half that fixes that: it fires the job off to the Grsai reseller API, parks the task ID in a local database, and lets you go do other things. Its sibling, NanoBananaAsyncQuery, comes back later to collect the results.
You've got one job here - submit. The inputs that actually matter:
- prompt - multiline, defaults to "一只可爱的小猫". This is a Gemini-native model, so natural language works well; it reads prompts semantically rather than as tag soup.
- model -
nano-banana-fast(the default and the cheap one),nano-banana-pro,nano-banana-pro-vt,nano-banana-pro-cl,nano-banana-2, andnano-banana-2-cl. Pro models map "默认" resolution to 2K, fast maps to 1K, so you don't have to think about it unless you want 4K. - image_size - 默认 / 1K / 2K / 4K. Note the
-clmodels are the character/consistency variants; at 4K the node quietly remapsnano-banana-2-clto a dedicatednano-banana-2-4k-clmodel on the backend. - concurrency - 1 to 10. This is how many separate jobs one run submits (each with a hair of invisible variation so the API doesn't dedupe them). Want ten variations of one prompt? Crank this.
- aspect_ratio - auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 21:9. Same list you'd see in ImageFX.
- image_1 … image_4 - optional reference images, uploaded to Grsai before submission. This is your img2img/edit path.
- api_key - leave blank to use the pack-wide key (see below).
The only output is a status string: your task is named 任务1, 任务2, … in the local database (grsai_banana_async_history.json under the pack's data/ folder), plus the model, subtask count, and your remaining credit balance. That task name is what the query node tracks.
One thing this pack does that most API wrappers don't: a circuit breaker. If it detects ten identical prompts submitted within ~15 seconds of each other - the classic Auto Queue foot-gun - it hard-stops and pops a ComfyUI error telling you to check your queue. That's a genuinely thoughtful touch; the README sells it as credit protection and it works.
Install is the pack-wide routine:
cd ComfyUI/custom_nodes
git clone https://github.com/jieg9341-lab/ComfyUI-nkxx
Restart ComfyUI - the pack auto-installs requests, pandas, openpyxl, yt-dlp, opencv-python, and aiohttp on first boot. If that silently fails, pip install them manually. You also need a Grsai key (apply at nkxx.grsai.ai); it goes in the node's api_key field, or set GRSAI_KEY as an environment variable, or use the pack's API Key Manager node.
Where people get burned: forgetting that async jobs cost credits even if you never query them, and leaving Auto Queue on while iterating a prompt (hello, circuit breaker). Also note the submit node is only half a workflow - if you wire it to nothing, your images sit in the database forever. Pair it with NanoBananaAsyncQuery and something to preview/save the returned image.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | 一只可爱的小猫 | — |
| model | COMBO | nano-banana-fast | 6 options: nano-banana-fast, nano-banana-pro, nano-banana-pro-vt, nano-banana-pro-cl, nano-banana-2, nano-banana-2-cl |
| image_size | COMBO | 默认 | 4 options: 默认, 1K, 2K, 4K |
| concurrency | INT | 11–10 | — |
| aspect_ratio | COMBO | auto | 11 options: auto, 1:1, 16:9, 9:16, 4:3, 3:4, +5 |
| api_keyopt | STRING | — | |
| image_1opt | IMAGE | — | |
| image_2opt | IMAGE | — | |
| image_3opt | IMAGE | — | |
| image_4opt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |