Nano Banana 2
The speed-quality hybrid that finally takes video refs
- referenceImages
- referenceVideos
- advancedFeatures.watermark.image
- image
Nano Banana 2 is Google's second-generation Gemini image model - the "2" is Gemini 3.1 Flash under the hood, positioned as the speed-quality hybrid between the original Nano Banana and the 4K flagship Pro tier. Runware hosts it as google:4@3, and the node is where that hybrid lands in your ComfyUI graph. It's faster and cheaper than the flagship, notably better than the original Banana, and it brings two genuinely new inputs the first one didn't have.
The first is video reference: referenceVideos plugs a clip in and the model does image generation guided by motion from video - useful when you're pulling a consistent still out of a shot. The second is search grounding: imageSearch and webSearch toggles let the model pull real-world references from the web instead of hallucinating context. Those two features are what make Banana 2 a workflow upgrade rather than a refresh.
Same caveats as its older sibling, still worth saying: it's Google-censored with SynthID watermarks, and the "powerful, unimaginative" community read applies to the whole Gemini-image line. This is a text-in-image and instruction-following specialist, not an uncensored workhorse.
What you set
positivePrompt(required) - natural language; it listens hard.referenceImages- optional IMAGE input for identity/style transfer.referenceVideos- from the Runware Reference Videos builder; the new motion-guidance input.size- the smart dropdown: 61 options from 0.5K to 4K, with per-aspect presets and "from input" modes. It owns resolution; leavewidth/heightalone when you use it.providerSettings.google.imageSearch/webSearch- grounding toggles; off by default (and they cost extra tokens).settings.thinking-(default)/MINIMAL/HIGH- how much the model reasons before drawing.providerSettings.google.safetyTolerance- the filter slack dial.numberResults(up to 20),seed,outputFormat,outputQuality.
Output is image (IMAGE).
How it works
Standard pack machinery: taskType: imageInference over REST via the Runware SDK, with images, video refs, and search flags encoded into the payload, native IMAGE back. The size dropdown is handled specially - it clears the width/height triad so the request never sends a conflicting resolution pair. Cost shows on the title bar; grounded runs with search enabled cost more tokens, so watch that when you iterate.
Installing
ComfyUI Manager → search Runware → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
No model downloads; deps are runware-sdk, pillow, soundfile. API key via Settings → Runware API key, RUNWARE_API_KEY, or runware auth login.
Troubleshooting
Refusal issues are the same Google-filter story as Banana 1 - check safetyTolerance before you fight a prompt. If a grounded run comes back weird, the search context is the variable; toggle webSearch off and compare. Video references not binding? Wire the builder with a clear, short clip - motion guidance degrades with noisy or over-long references. And if you set both size and width/height, expect the size dropdown to win; pick one way to control resolution.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| referenceImagesopt | IMAGE | — | |
| referenceVideosopt | RUNWARE_REFERENCEVIDEOS | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| sizeopt | COMBO | 0.5K (1:1) | Output size. Only one of resolution or dimensions is sent. |
| seedopt | INT | 00–2147483647 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| providerSettings.google.imageSearchopt | BOOLEAN | false | Enable image search grounding to incorporate visual references from the web into image generation. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| providerSettings.google.safetyToleranceopt | COMBO | none | Safety filter tolerance level. Use `off` to use Google's defaults. |
| settings.systemPromptopt | STRING | System-level instruction that guides the model's behavior and output style across the entire generation. | |
| settings.temperatureopt | BOOLEAN | false | Enable to set settings.temperature. Off uses the model's default. |
| settings.temperature_valueopt | FLOAT | 0.000–2 | Controls randomness in generation. Lower values produce more deterministic outputs, higher values increase variation and creativity. |
| settings.thinkingopt | COMBO | (default) | Controls the depth of internal reasoning the model performs before generating a response. |
| settings.topPopt | BOOLEAN | false | Enable to set settings.topP. Off uses the model's default. |
| settings.topP_valueopt | FLOAT | 0.000–1 | Nucleus sampling parameter that controls diversity by limiting the probability mass. Lower values make outputs more focused, higher values increase diversity. |
| providerSettings.google.webSearchopt | BOOLEAN | false | Enable live web search grounding to incorporate real-world, up-to-date information into image generation. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |