Comet 图像
One node that reaches cloud image models like Nano Banana and GPT Image
- images
- 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_15
- image_16
- image
This is the flagship of the CometAPI pack and the node you'll actually reach for when you want a closed-source image model inside your graph. "Comet 图像" doesn't run anything on your GPU. It packages your prompt and any reference images, uploads them to a reseller API, waits for the result, and drops the finished image back into ComfyUI as if a local sampler had produced it. From the canvas it looks like a normal generator. Underneath it's an HTTP client with a key.
Why bother? Because Nano Banana, GPT Image, and friends have no open weights - there is no local door. If you want them inside your workflow next to your local upscaler, this is the kind of node that gets you there. The tradeoffs are real and worth repeating: every call costs money, and your prompt and reference images leave your machine and sit on a server you don't control.
How it works
Pick a channel (grsai, runninghub, modelverse, apimart, or openrouter) and a model from the 28-model dropdown - defaults are grsai / nano-banana-pro. The node then filters the other widgets to what that channel+model actually supports: that's the "dynamic parameters" the README brags about. aspect_ratio gets 20 choices including auto, and auto is smart: if you feed it a reference image, it picks the closest supported ratio to that image. No reference and it falls back to 1:1.
The few you'll actually touch:
prompt- the text prompt, multiline.image_size- 1K to 8K, default 2K. Higher is not always better; it's billed differently per model.qualityandreasoning_effort- low/medium/high (and xhigh for reasoning). These map to how much the cloud spends thinking.concurrency- 1 to 10. The node splits the request into concurrent subtasks, which is how you get several candidate images from one run. It's a real concurrency knob, not a button that does nothing.background_mode- default vs transparent.
The reference inputs are the interesting part
You get images plus sixteen hidden image_1 through image_16 sockets. The pack's frontend compiles your reference wires into those numbered inputs before ComfyUI validates, so on the surface it feels like one unified "drag your refs here" entry point instead of a spaghetti of connections. That's the "virtual wire" feature the README advertises, and it genuinely cuts down on the multi-reference mess. Note the model's own ref limit still applies - Nano Banana and GPT Image accept different maximum reference counts, and the node enforces whichever one your selection implies.
Output is a single image tensor, ready to feed a preview node, a save node, or downstream processing.
Install and first run
Install the pack (search "ComfyUI-CometAPI" in ComfyUI Manager, or git clone https://github.com/jieg9341-lab/ComfyUI-CometAPI into custom_nodes) and restart. Dependencies are just requests and aiohttp - python -m pip install requests aiohttp if they're missing. No model files, ever.
Then the ritual: open CometAPI 设置中心, paste a key for the channel you selected, pick a model, and run. First run without a key returns the "缺少 API Key" error rather than a cryptic network stack trace, which is more helpful than most packs manage.
Where people get burned
- The cost sneaks up. concurrency of 4 is four billed calls. A batch run at 8K high-quality against a pro model adds up fast, and video in this pack is worse - images are the cheap end.
- Your refs are uploaded, not used locally. The pack uploads them to the channel's server, so anything in the image leaves the machine. Don't feed it things you'd be embarrassed to have on a reseller's CDN.
- The model refuses at the source. There's no community "looser filter" trick for a closed model; whatever the vendor blocks, you get blocked. That's inherent to the category, not a bug in this node.
- Re-run triggers a new billed call - the node marks itself always-changed, so it won't silently reuse a cached image unless the pack's freeze/run modes are doing their thing. Be deliberate about queueing.
Inputs (27)
| Name | Type | Default | Description |
|---|---|---|---|
| channel | COMBO | grsai | 5 options: grsai, runninghub, modelverse, apimart, openrouter |
| model | COMBO | nano-banana-pro | 28 options: nano-banana-fast, nano-banana-pro, nano-banana-pro-vt, nano-banana-pro-cl, nano-banana-2, nano-banana-2-cl, +22 |
| prompt | STRING | — | |
| concurrency | INT | 11–10 | — |
| aspect_ratio | COMBO | auto | 20 options: auto, 1:1, 16:9, 9:16, 4:3, 3:4, +14 |
| image_size | COMBO | 2K | 5 options: 1K, 2K, 3K, 4K, 8K |
| quality | COMBO | medium | 3 options: low, medium, high |
| reasoning_effort | COMBO | medium | 4 options: low, medium, high, xhigh |
| background_mode | COMBO | 默认 | 2 options: 默认, 透明 |
| imagesopt | IMAGE | — | |
| 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 | — | |
| image_15opt | IMAGE | — | |
| image_16opt | IMAGE | — | |
| _comet_run_modeopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |