APNext QwenVL Vision Cloner
Clone an image's style with a local model — no API, no uploads
- images
- formatted_output
- raw_json
- faded_image
"Make it look like this" is one of the most useful things you can ask a vision model, and this node lets you ask it locally. Feed QwenVL Vision Cloner one or more reference images and it writes a detailed style-clone prompt - the lighting, palette, lens, grain, composition, mood - that you can hand to your image or video model. No API key, no uploads, no per-call billing. If you've ever tried to describe why a photo looks the way it looks, you know this is harder than it sounds; a vision model that can see the reference beats you at it.
The interesting twist is multi-image blending. When you connect more than one reference, fade_percentage (default 15, up to 50) controls how much the images are blended into a composite before analysis - so you can clone the palette of one image and the composition of another, and the model describes the blend rather than being confused by two separate pictures.
How it works
Images go into a Qwen3-VL model (2B–8B; the node runs whatever qwen_model you pick), guided by a style-clone prompt template, and the model writes back a description. The node returns three outputs:
formatted_output- the cleaned-up style prompt, ready to wire into a text encoder or prompt preview.raw_json- the model's structured raw response, useful if you want the underlying data or to debug what the model saw.faded_image- the blended composite (whenfade_percentage> 0), so you can see exactly what the model was looking at.
strip_quotes (off by default) cleans quote characters out of the output when they'd otherwise pollute a prompt. custom_prompt overrides the analysis instruction if the default clone template isn't what you want. max_tokens defaults to 4096 - generous, because style descriptions run long - and temperature 0.7 is a fine middle ground. The standard QwenVL controls (keep_model_loaded, use_flash_attention, seed, randomize_each_run) apply as everywhere else in this family.
Install
Pack install is the shared routine - ComfyUI Manager (search "comfyui_dagthomas") or:
cd ComfyUI/custom_nodes
git clone https://github.com/dagthomas/comfyui_dagthomas
cd comfyui_dagthomas
pip install -r requirements.txt
Restart. The QwenVL model downloads itself to ComfyUI/models/LLM/Qwen-VL/ on first use; no API keys anywhere in the picture.
Common issues
- The clone prompt is generic - a small model will default to vague adjectives. Try a bigger
qwen_model(8B), or describe the purpose incustom_prompt("this will be a video prompt; emphasize camera, motion and palette"). - Blend looks wrong -
fade_percentageis the dial: too low and the composite keeps both images side by side; too high and one style swamps the other. Check thefaded_imageoutput to see what the model actually saw. - Out of memory on a big batch - use the FP8 variant of your chosen model, or drop to 2B. The blend happens before analysis, so memory pressure comes from the model, not the image count.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| fade_percentage | FLOAT | 15.00.1–50 | — |
| qwen_model | COMBO | Qwen3-VL-2B-Instruct | 23 options: Qwen3-VL-2B-Instruct, Qwen3-VL-2B-Thinking, Qwen3-VL-2B-Instruct-FP8, Qwen3-VL-2B-Thinking-FP8, Qwen3-VL-4B-Instruct, Qwen3-VL-4B-Thinking, +17 |
| max_tokens | INT | 4096512–8192 | — |
| temperature | FLOAT | 0.700.1–1 | — |
| keep_model_loaded | BOOLEAN | true | — |
| use_flash_attention | BOOLEAN | false | — |
| strip_quotes | BOOLEAN | false | — |
| seed | INT | -1-1–18446744073709550000 | — |
| randomize_each_run | BOOLEAN | true | — |
| custom_promptopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| formatted_output | STRING | — |
| raw_json | STRING | — |
| faded_image | IMAGE | — |