Text Encode with LTXV 2 System Prompt (Scaled Bias)
The only one that also adds reference images
- clip
- vae
- image
- CONDITIONING
LTX Video 2 is the speed-first video model from Lightricks, and like everything else in 2026 its text encoder is a chat model with a system prompt that has to be wrapped in the right template. UC_ScaledBiasTextEncodeLtxv2SystemPrompt does that wrapping in the Gemma-style format LTXV 2 expects - and then goes a step further that none of the other scaled-bias nodes do: it can also encode a reference image into the conditioning.
The mechanism
The template uses <start_of_turn>system / <end_of_turn> / <start_of_turn>user markup with an <image_soft_token> placeholder, which is how LTXV 2's encoder expects image-bearing prompts to be structured. Inputs: clip, prompt, system_prompt, plus the image-reference stack - vae (optional VAE), image (optional IMAGE), and three settings that control how the reference latent is built.
The reference-image path is worth understanding because it's the differentiator. vae_resolution (default "Fast (1024)") picks the reference latent's resolution - the structural path that gets VAE-encoded. ref_latent_mode has five options: off (no reference), single/multi (append the reference latents to the conditioning - simple but can semantically override your prompt), and parallel-single/parallel-multi (run the reference in a separate conditioning stream so it guides structure without drowning the semantic meaning). The README's note is the honest one: for MiniMax H3 you should keep it off and use Core's dedicated H3 reference conditioning instead. vae_dimension_multiple (default 8) aligns the reference image to a pixel multiple before encoding.
Inputs: clip, prompt, system_prompt (default empty), vae_resolution, ref_latent_mode, vae (optional), image (optional), vae_dimension_multiple. Output: one CONDITIONING socket.
Why it exists
Video models get their look from reference images as much as from text, and LTXV 2's conditioning supports both paths - but only if the image is encoded through the right VAE at the right resolution and inserted the right way. This node bundles that. The practical move: feed a style frame as image, keep ref_latent_mode on parallel-single if you want it to guide structure without taking over, and let the text carry the semantics.
Install
Part of ComfyUI-UtilsCollection:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection
Restart, or use ComfyUI Manager (search "UtilsCollection"). You supply the CLIP and VAE; the pack adds no model downloads of its own. opencv-python + typing-extensions auto-install.
Gotchas
ref_latent_mode is the fiddly one - start with off or single and only reach for parallel-* when you see the reference overriding your prompt, because that's the failure mode the parallel modes exist to fix. And this is a video-model node: it's a template wrapper, so a mismatched CLIP (say, a Z-Image one) will silently encode garbage instead of erroring. Match the node to the model.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| prompt | STRING | — | |
| system_prompt | STRING | — | |
| vae_resolution | COMBO | Fast (1024) | Resolution of the reference latent encoded by the VAE (structural path). |
| ref_latent_mode | COMBO | off | Reference latent encoding mode. 'single'/'multi' append latents; 'parallel-single'/'parallel-multi' run them in a separate conditioning stream to prevent semantic override. MiniMax H3 requires off and uses Core's dedicated H3 reference conditioning instead. |
| vae_dimension_multiple | INT | 84–256 | Pixel multiple used to align reference images before VAE encoding. |
| vaeopt | VAE | — | |
| imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |