TextImageEncodeQwenVL
Encode a text-plus-image prompt through Qwen-VL
- clip
- image
- qwenvl_embeds
This is a conditioning encoder for models that speak Qwen-VL - Qwen's vision-language model. The point of a vision-language encoder is that it takes both a text prompt and, optionally, a reference image, and understands them together. So instead of "here's my text, here's my image, good luck," you get a single embedding that fuses "this is what I wrote about this picture." Models in the wrapper that expect Qwen-VL conditioning read that embedding.
If you've used a plain text encode node, this is the multimodal cousin: same idea, but it can fold an image into the prompt understanding.
How it works
You give it a clip (a Qwen-VL encoder loaded upstream), your prompt text, and optionally an image. It runs them through the Qwen-VL model and produces a QWENVL_EMBEDS object - the conditioning the downstream sampler consumes. With no image, it's a text-only encode. With an image, the text is interpreted in the context of that image, which is what makes it useful for reference-driven or edit-style prompts where the words describe a change or relationship to the picture rather than a scene from scratch.
The Qwen family is a big deal in this space right now - Qwen-Image and Qwen-Image-Edit put Qwen-VL-style multimodal conditioning on a lot of people's radar - and this node is how a Wan-wrapper workflow taps that style of prompt.
The inputs and outputs that matter
clip(CLIP) - the Qwen-VL text/vision encoder, from a loader node. Required, and it has to be the Qwen-VL one; a generic CLIP won't produce the right embeds.prompt(STRING, multiline) - your text. Because Qwen-VL is instruction-capable, you can write it more like a description or instruction than a bag of tags.image(IMAGE, optional) - the reference. Add it when your prompt refers to a picture ("the person in the image, now …"); leave it out for pure text conditioning.
Output: qwenvl_embeds (QWENVL_EMBEDS) → the conditioning input on the model/sampler that expects it.
How to install it
ComfyUI Manager → search ComfyUI-WanVideoWrapper, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt
then restart. The dependency that matters is the Qwen-VL encoder weights - this node encodes through that model, so it needs to be downloaded and loaded by a CLIP/encoder loader in your graph. Qwen-VL is a sizeable model; it takes real memory on top of whatever you're generating with.
Common issues & troubleshooting
Type mismatch on clip. This node wants a Qwen-VL encoder specifically. Feed it a standard SD/SDXL CLIP and it won't work - the embeds are a different shape. Load the correct Qwen-VL encoder.
The image seems ignored. The image input is optional and its influence depends on how you prompt. If the text describes a fresh scene, the model has little reason to lean on the reference. Write the prompt so it relates to the image - reference it, describe an edit - to get the multimodal behavior.
Downstream node won't accept the output. QWENVL_EMBEDS is a specific conditioning type; only nodes built to consume it will take it. If your sampler expects ordinary CONDITIONING, this isn't the encoder for that model.
OOM after adding it. You've added a whole vision-language model to the graph. Offload other models, use a quantized Qwen-VL build if available, and encode before loading the heavy generator.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| prompt | STRING | — | |
| imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| qwenvl_embeds | QWENVL_EMBEDS | — |