Nodes/ComfyUI-frankAI-banana/FrankAI Banana Main Node
ComfyUI Node

FrankAI Banana Main Node

The FrankAI Banana main node

By fr0nky0ng·Created 12 months ago·Updated 12 months ago· 2
FrankAI Banana Main Node
  • images
  • image
  • text
key
prompt

The FrankAI Banana Main Node (class BananaMainNode) is the one node in this pack that actually does anything. Everything else - the key nodes, the prompt selector, the image collector - exists to feed it. It takes your images and your prompt, sends them to Google's Nano Banana image model, and hands you back the result as a normal IMAGE tensor. No weights download, no VRAM spike, no local model at all. Your GPU just sits there while Google's does the work.

Why would you want a cloud image model inside ComfyUI? Because Nano Banana is genuinely good at the jobs the local stack is still awkward at - photorealistic face fusion, "turn this photo into a figure," era and style transfers - and because a node in a graph you can rewire beats a browser tab on ImageFX. ComfyUI ships its own Nano Banana template, but it expects a Google Cloud / Gemini key with billing attached. This pack routes around that by calling a third-party proxy at yinothing.com/api/google/banana, and it lets you bring either a resold "frankAI" key or your own Google key. That's the trade you're signing up for: convenience and zero GPU cost, in exchange for paying per run and trusting a small unknown server with your keys and your images.

The mechanism is unglamorous but solid. The node converts each image tensor to a PNG in memory, then makes a multipart POST with up to three files plus your key and prompt, a 30-second timeout, and a JSON response. It base64-decodes the first imageUrls entry - stripping a data-URI prefix and fixing padding if present - and turns it back into a torch tensor you can wire to PreviewImage or SaveImage like any other output.

Three required inputs, and they're all worth naming:

  • images - an IMAGE_LIST, which in practice comes from the pack's ImageListCollector. Hard limits: minimum 1 image, maximum 3. This is image-to-image only; the README is explicit that the input side must have at least one image.
  • key - a STRING that has to arrive over a wire (it's forceInput), usually from GoogleApiKeyNode or FrankApiKeyNode. The node refuses to run without it.
  • prompt - a STRING, also forced as a wire input, normally fed by the BananaPromptSelector though any text source works.

The two outputs: image (the generated IMAGE) and text. Read that text output. It normally reports how many tokens the run consumed, but it's also the pack's entire error channel: no key, no prompt, wrong image count, HTTP failures, and bad decodes all come back as a 512×512 black image plus a descriptive string in text. A black thumbnail out of this node is not a crash - it's an error message wearing a disguise, so glance at text before you start debugging a black image.

Install is about as light as this pack gets: no requirements.txt, no model files, nothing beyond what ComfyUI already ships (requests, aiohttp, Pillow, torch).

cd ComfyUI/custom_nodes
git clone https://github.com/fr0nky0ng/ComfyUI-frankAI-banana

Restart ComfyUI and the nodes land in the "FrankAI" category.

Where people get burned: the cost, mostly. Nano Banana is not free, and API use adds up fast while you iterate on prompts - the free-tier key is a teaser, not a plan. Second, yinothing.com is a tiny third-party relay with effectively zero community footprint; if it's slow, down, or gone tomorrow, there's no fallback. Third, Nano Banana's built-in content filtering is aggressive no matter whose key you use, so don't expect this to be your uncensored local stack with extra steps.

CategoryFrankAI

Inputs (3)

NameTypeDefaultDescription
imagesIMAGE_LIST
keySTRING
promptSTRING

Outputs (2)

NameTypeDescription
imageIMAGE
textSTRING