Nodes/Vision Prompt Assistant/Vision Prompt Assistant
ComfyUI Node

Vision Prompt Assistant

The name is a lie — it calls no API, needs no key, and runs a vision model on your card

By elgalardi·Created about a month ago·Updated 7 days ago· 1
Vision Prompt Assistant
  • image_0
  • image_1
  • image_2
  • generated_text
clip_name
clip_typeltxv
load_devicedefault
user_promptAnalyze the reference images and write a detailed generation prompt.
system_promptYou write production-ready prompts for MiniMax H3 Reference to Video. Use the exact supplied <Picture n> tags, clearly assigning identity, appearance, style, motion, and camera. Return only the final generation prompt.
max_length256
samplingtrue
temperature0.70
top_k40
top_p0.90
min_p0.05
repetition_penalty1.05
seed0

Vision Prompt Assistant is the heart of this pack, and the first thing to know is that the display name is doing the heavy lifting: it's called an "assistant" but it's a local text-generation node - no API, no key, nothing leaves your machine. You drop it in front of a MiniMax H3 workflow, connect up to three reference images, and a multimodal text encoder on your GPU reads them and writes the generation prompt for you.

Why this matters for H3 specifically: MiniMax H3 is an omni-modal model that treats text, image, video and audio as one context, and it follows a well-written prompt remarkably closely - the launch-day community reaction was people shocked that a long, detailed prompt got followed to the letter. But writing that prompt by hand is the bottleneck. This node removes the blank page by turning reference images into Picture-tagged prose that maps directly to H3's reference syntax.

How it works

It loads a multimodal CLIP through ComfyUI's own text-encoder loader - the author's recommended build is qwen3-vl-4b-heretic_int8.safetensors from DreamFast's Qwen3-VL-4b-Heretic-ComfyUI repo (the "heretic" part being an abliterated Qwen3-VL, since the stock Instruct models carry assistant-style refusals that are useless for explicit captioning work). You select it in the clip_name dropdown and start with clip_type set to ltxv, though you can compare against stable_diffusion.

The loaded encoder is cached and reused while the model, type, and device stay the same, so editing a prompt doesn't re-read the checkpoint from disk every run.

The inputs that matter

  • clip_name - pick the Qwen3-VL encoder. Drop the .safetensors into ComfyUI/models/text_encoders first.
  • clip_type - ltxv is the recommended starting point.
  • image_0 / image_1 / image_2 - up to three references. Socket order maps to tags: first image becomes <Picture 1>, second <Picture 2>, third <Picture 3>.
  • user_prompt / system_prompt - the defaults already write H3-ready prompts; user_prompt is the preferred STRING route when the node is bypassed.
  • max_length - the hard cap for new tokens. The node automatically budgets slightly below it so the model can finish its final sentence instead of being chopped off.
  • temperature / top_k / top_p / min_p / repetition_penalty - standard sampling; the defaults (0.7 / 40 / 0.9 / 0.05 / 1.05) are a reasonable starting set.

Output

A single generated_text string. Feed it to a Preview Vision Prompt, or straight into H3's conditioning.

Install

ComfyUI Manager → search Vision Prompt Assistant, or:

cd ComfyUI/custom_nodes
git clone https://github.com/elgalardi/ComfyUI-VisionPromptAssistant

Then restart ComfyUI. The one real download is the encoder:

# into ComfyUI/models/text_encoders
wget https://huggingface.co/DreamFast/Qwen3-VL-4b-Heretic-ComfyUI/resolve/main/qwen3-vl-4b-heretic_int8.safetensors

Getting fuller output

The author's trick, and it's a good one: end user_prompt with an explicit token target slightly below max_length. With max_length at 256, finish with "Write about 220 tokens." The model knows the budget and stops writing early - a short prompt from a 4B encoder is worse than no prompt at all, so it's worth the one line.

Two things this node deliberately does not do: it only accepts images, not video or audio - Qwen3-VL through ComfyUI's text-generation interface doesn't reliably understand a full video clip or listen to a waveform, and the author kept the behavior predictable by leaving those sockets out. And it's meant for prompt generation, not encoding: the MiniMax H3 conditioning encoder is truncated and unsuitable for text generation, which is exactly why you run this instead.

Categorytext

Inputs (16)

NameTypeDefaultDescription
clip_nameCOMBO0 options:
clip_typeCOMBOltxv28 options: stable_diffusion, stable_cascade, sd3, stable_audio, mochi, ltxv, +22
load_deviceCOMBOdefault2 options: default, cpu
user_promptSTRINGAnalyze the reference images and write a detailed generation prompt.
system_promptSTRINGYou write production-ready prompts for MiniMax H3 Reference to Video. Use the exact supplied <Picture n> tags, clearly assigning identity, appearance, style, motion, and camera. Return only the final generation prompt.
max_lengthINT2561–4096Hard generation limit. For a fuller prompt, also request an approximate token count near the end of user_prompt, slightly below this value.
samplingBOOLEANtrue
temperatureFLOAT0.700.01–2
top_kINT400–1000
top_pFLOAT0.900–1
min_pFLOAT0.050–1
repetition_penaltyFLOAT1.050–5
seedINT00–18446744073709550000
image_0optIMAGE
image_1optIMAGE
image_2optIMAGE

Outputs (1)

NameTypeDescription
generated_textSTRING