Nodes/ComfyUI-Bada-Utils/⚓ Bada Prompt Generator
ComfyUI Node

⚓ Bada Prompt Generator

Gemini in the Queue, Not in a Side Panel

By bada-ya·Created 26 days ago·Updated 4 days ago· 4
⚓ Bada Prompt Generator
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • generated_text
  • wh_ratio
◄enhancetrue►
◄uncensoredtrue►
◄targetKREA2►
◄submenu일반►
◄request_text►
◄duration10►
◄ui_languageen►

A prompt enhancer that is actually part of your graph

"Prompt enhancer" mentions went from 12 in 2023 to 253 in the first half of 2026, on a shrinking corpus. Not fashion: a 2026 model like Qwen-Image or Krea 2 reads your prompt through a language model, so having a second LLM write that instruction is translating between two things that speak the same language.

What's unusual about ⚓ Bada Prompt Generator is where it sits. The same pack's BadaAsyncGeminiStudio is a Gemini chat panel outside the graph - you brainstorm there, then click "send to CLIP". This one is a real node: Queue Prompt and it reads your text plus up to five images, calls Google's Gemini API, and emits a string downstream. Hence "queue-synchronous prompt compiler" - prompt-writing becomes a batchable step, and every queue now waits on Google.

How the mechanism works

The brains live in the pack's engines_registry.json, one system prompt per submenu:

  • KREA2 → 일반 (General): built-in photoreal instructions.
  • QWEN2.1 → T2I and I2I (편집): Alibaba's official Qwen-Image prompt-enhancer prompts, bundled - the I2I one alone is ~17,000 characters of guide.
  • MINIMAX H3 → Ref2VA, T2VA, I2VA, FL2VA, L2VA: reference-driven, text-only, first-frame, first-and-last-frame and last-frame video.
  • LTX2.5 → LTX 2.5, LTX T2V, LTX I2V, Voice & Audio, Camera Master.
  • 시스템 프롬프트 → your own registered prompts.

Your text is wrapped in a short user message, POSTed to generativelanguage.googleapis.com with BLOCK_NONE safety settings, and parsed back out. The Qwen tabs force a JSON schema, with a tiered fallback parser for leaked markdown.

Be clear-eyed about two things. uncensored is a rewording ladder, not an abliterated model - Pass 1 direct, Pass 2 an "authorized 3D VFX dataset" frame, Pass 3 cinematic metaphor. It changes how you ask; Google's filter still answers. And IS_CHANGED returns NaN on purpose (linked images are invisible to that hook), so it re-runs every queue - but identical inputs hit an in-process memo, so no repeated quota spend.

Inputs and outputs that matter

enhance (default ON) is the kill switch: OFF passes request_text through untouched with zero API calls, so A/B-ing is trivial. uncensored (default ON) enables BLOCK_NONE plus that fallback. target and submenu cascade - switching target rewrites the submenu list, so check it after you switch. request_text can be empty if you wire in images; image-only runs are allowed.

duration (1–30) appears only for video targets (MINIMAX H3, LTX2.5) - a length hint for the system prompt, resizing nothing on your canvas. image_1…image_5: how many get used is up to the submenu - single for KREA2, QWEN T2I, I2VA, L2VA and LTX I2V; pair for FL2VA; multi for QWEN I2I and Ref2VA; none for T2VA and the LTX text modes. Extras are dropped with a toast; survivors are downscaled to 1536px and sent as base64 PNGs.

Two strings come out. generated_text goes into a CLIPTextEncode or any text box. wh_ratio is a ratio string like 16:9, filled only on QWEN2.1 and empty everywhere else - not a bug. It's advice, not a resizer.

Install

ComfyUI Manager → search ComfyUI-Bada-Utils → Install, restart, then Ctrl+F5 - the pack ships web assets, so hard-refresh after updates. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/bada-ya/ComfyUI-Bada-Utils.git

Windows users can run install_junction.bat. Dependencies are just aiohttp and Pillow, and nothing downloads models - calling Google is the whole cost model.

Then click the 🔑 header, paste a key from Google AI Studio, press Check. It lands in config.json at the pack root (plus localStorage) via /api/bada/gemini/config; the GEMINI_API_KEY env var is the fallback behind that.

Where people get burned

No key, no prompt - the node errors telling you it looked in config.json, which sits at the pack root, not in a widget. And don't copy config.example.json to config.json: as shipped it's missing a comma after default_model and isn't valid JSON. Write a two-line config or use the header UI.

"Images ignored" is by design for T2VA and the LTX text submodes (none) and FL2VA (exactly two). The toasts say what was dropped.

The 시스템 프롬프트 target is empty out of the box - "(No prompts registered)" until you add one in the ⚙️ System Prompt Manager, and an unknown submenu throws "not found".

Everything failed at once means quota or a block: the free tier is capped daily, and the node tries a primary model (8s) then two fallbacks (5s each).

One caveat that isn't FUD: this node holds a credential and calls the network by design - the shape that got one ComfyUI pack prosecuted. Use a key you'd be happy to rotate.

So, is it worth it?

If you already prompt well, you're buying the target-specific system prompts, and those are the real product - the Qwen PE prompts and the video submodes encode knowledge you'd otherwise dig out of a prompt guide. If offline or genuinely uncensored matters, pair a local abliterated 8B instead. Otherwise: paste a key, type a sentence, let the graph write.

Category⚓ Bada Utils/Prompt

Inputs (12)

NameTypeDefaultDescription
enhanceBOOLEANtrueWhen OFF, the request passes through unchanged without calling Gemini.
uncensoredBOOLEANtrueEnables BLOCK_NONE and the 3-pass zero-refusal fallback.
targetCOMBOKREA25 options: KREA2, QWEN2.1, MINIMAX H3, LTX2.5, 시스템 프롬프트
submenuCOMBO일반15 options: 일반, T2I, I2I (편집), Ref2VA, T2VA, I2VA, +9
request_textSTRING—
durationoptINT101–30Duration in seconds for video models (MINIMAX H3 / LTX2.5).
ui_languageoptSTRINGen—
image_1optIMAGE—
image_2optIMAGE—
image_3optIMAGE—
image_4optIMAGE—
image_5optIMAGE—

Outputs (2)

NameTypeDescription
generated_textSTRING—
wh_ratioSTRING—