Vision Prompt Assistant
The name is a lie — it calls no API, needs no key, and runs a vision model on your card
- image_0
- image_1
- image_2
- generated_text
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.safetensorsintoComfyUI/models/text_encodersfirst.clip_type-ltxvis 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_promptis 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.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_name | COMBO | 0 options: | |
| clip_type | COMBO | ltxv | 28 options: stable_diffusion, stable_cascade, sd3, stable_audio, mochi, ltxv, +22 |
| load_device | COMBO | default | 2 options: default, cpu |
| user_prompt | STRING | Analyze the reference images and write a detailed generation prompt. | — |
| system_prompt | STRING | You 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_length | INT | 2561–4096 | Hard generation limit. For a fuller prompt, also request an approximate token count near the end of user_prompt, slightly below this value. |
| sampling | BOOLEAN | true | — |
| temperature | FLOAT | 0.700.01–2 | — |
| top_k | INT | 400–1000 | — |
| top_p | FLOAT | 0.900–1 | — |
| min_p | FLOAT | 0.050–1 | — |
| repetition_penalty | FLOAT | 1.050–5 | — |
| seed | INT | 00–18446744073709550000 | — |
| image_0opt | IMAGE | — | |
| image_1opt | IMAGE | — | |
| image_2opt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| generated_text | STRING | — |