Nodes/ComfyUI-Captionator-Qwen35/Caption Improver Qwen 3.5
ComfyUI Node

Caption Improver Qwen 3.5

Stop writing 'cinematic portrait' — let a Qwen 3.5 VLM rewrite your prompt

By ArtemKo7v·Created 5 months ago·Updated 15 days ago· 2
Caption Improver Qwen 3.5
  • image
  • prompt
  • full_output
  • instructions_prompt
model
promptEnter your prompt to improve here.
style_source_mode
resize_to512
max_new_tokens256
seed0
thinkfalse

Caption Improver Qwen 3.5 is the sibling node in the Captionator pack, and it fixes a specific pain: you've got a prompt, it's thin, and you know the model could do more with it. Feed it a weak prompt - or a weak prompt plus a reference image - and it hands back a single, information-dense paragraph that your LLM-encoded model will actually pay attention to.

This matters more than it used to. Prompting changed with the encoder swap: on a 2026 model like Z-Image or Qwen-Image, your prompt is an instruction wrapped in a chat template, not a bag of tokens, and a well-structured sentence outperforms "cinematic portrait, masterpiece, best quality" every time. This node is basically a free prompt-engineering layer sitting in your graph.

How it works

It shares the whole engine with the Image Captionator node - same Qwen 3.5 model discovery, same local loading, same caching - so you're not installing anything extra by adding this node. The difference is what it sends to the model. Instead of your raw prompt, it builds a structured instruction internally: the original prompt, a task line ("write one improved image-generation prompt"), a goal, and a stack of rules - preserve important details, keep it under 250 words, return a single paragraph, English only.

That built instruction is worth paying attention to, because the node exposes it as an output. You can read exactly what it asked the model to do, which makes it trivial to debug why a rewrite went sideways.

The inputs that matter

  • model - same dropdown as the captioner: discovered local Qwen 3.5 checkpoints, or one-click [Download] options for 2B/4B/9B into models/llm.
  • prompt - your original, weak prompt. You need this, the image, or both; with neither, the node politely tells you to go away.
  • style_source_mode - the interesting one. Three choices: details from the prompt with style from the image, details from the image with style from the prompt, or a merge of both. If you have a reference image for style and a prompt for content, this decides which wins when they conflict. The node's instruction text spells out the precedence, and it's genuinely well thought out.
  • resize_to - longest side before inference, rounded to multiples of 32. Note the default here is 512, not 0 - a reference image is getting pre-scaled unless you change it.
  • max_new_tokens - generation cap; 256 is plenty for an improved prompt.
  • think - thinking mode, with the same graceful fallback as the captioner.
  • image (optional) - a reference image whose details and/or style the model should draw on.

Outputs

  • prompt - the improved, single-paragraph prompt. This is the one you wire into your text encoder.
  • full_output - raw model output including any thinking.
  • instructions_prompt - the exact instruction that was sent. Hugely useful for understanding what style_source_mode actually did.

The output is a plain STRING, so it plugs straight into any text prompt input in your workflow - CLIP Text Encode, a Z-Image text prompt node, whatever. Put a prompt node between it and your sampler if you want to eyeball the result before generating.

Installing it

Same pack, same steps. ComfyUI Manager: search "Captionator Qwen35". Or:

cd ComfyUI/custom_nodes
git clone https://github.com/ArtemKo7v/ComfyUI-Captionator-Qwen35
pip install -r requirements.txt

Restart, and both nodes appear under the Captionator category. The dependencies are the heavy part: transformers>=5.2.0, accelerate, and bitsandbytes, plus the model download itself (2B–9B, several GB). These transformers-family pins are the usual source of conflicts with other custom nodes, so if your environment is fragile, expect to babysit a pip update.

Where people get burned

Most of the gotchas are inherited from the pack: a lone .safetensors file won't load (it needs the full Hugging Face directory with config.json, tokenizer, and processor), text-only runs work without a processor but image input doesn't, and big images plus high token counts eat VRAM. For this node specifically, the traps are:

  • Feeding it nothing - no prompt, no image. It returns an error message in all three outputs rather than crashing, which is friendly but confusing if you weren't expecting it.
  • Expecting magic. This improves prompts, it doesn't invent them; give it something worth polishing.
  • Forgetting that resize_to defaults to 512 here, so your reference image is being downscaled unless you say otherwise.

For a pack this young (essentially no tracked usage yet), the prompt-improver is the sleeper hit. The captioner gets the attention; this node is what makes your everyday prompts punch above their weight.

CategoryCaptionator

Inputs (8)

NameTypeDefaultDescription
modelCOMBO3 options: [Download] Qwen 3.5 2B, [Download] Qwen 3.5 4B, [Download] Qwen 3.5 9B
promptSTRINGEnter your prompt to improve here.
style_source_modeCOMBO3 options: Details from prompt, style from image, Details from image, style from prompt, Merge prompt and image details and style
resize_toINT5120–4096
max_new_tokensINT2561–8192
seedINT00–9223372036854776000
thinkBOOLEANfalse
imageoptIMAGE

Outputs (3)

NameTypeDescription
promptSTRING
full_outputSTRING
instructions_promptSTRING