Nodes/ComfyUI-Viggle-Animate-H3/Load Text Conditioning (Viggle)
ComfyUI Node

Load Text Conditioning (Viggle)

The loader that made the whole workflow promptless

By Saganaki22·Created 2 days ago·Updated about 15 hours ago· 44
Load Text Conditioning (Viggle)
    • text_cond
    text_cond

    The strangest thing about a Viggle-Animate workflow, once you've built one, is that there is no prompt box anywhere on the graph. No CLIP loader, no T5, no text encoder humming along eating VRAM. The reason is this tiny node: Load Text Conditioning (Viggle) is a dropdown loader whose only job is to pull in one frozen safetensors file that is the entire text side of the model.

    Here's the trick Viggle-Animate plays. It's a character-replacement finetune of MiniMax-H3's ref2va transformer - the video supplies motion, camera and background, the reference still supplies identity. What does text add to that? Nothing, if you pick the right text. The Viggle team generated one fixed prompt, ran it through Qwen3-VL once, and baked the result into a 362-token embedding that's identical for every render. So instead of shipping a text encoder so you can type the same thing every time, they ship the encoded answer. This node loads it, and that's the whole story.

    What it does, mechanically

    On import, the pack registers a new model folder, ComfyUI/models/text_cond/. This node reads whatever safetensors you pick from that folder via its one input - the text_cond dropdown - and pulls two tensors out: prompt_embeds (the [1, 362, 5120] embedding) and text_token_tags (the token tags the model uses to place that embedding). It bundles them into a TEXT_COND and hands them off.

    That output wires straight into the text_cond input on Viggle-Animate Conditioning (H3). There is no second text input anywhere, and there deliberately isn't one: the conditioning node pairs the frozen embed with the video and image references and hands the lot to the sampler. The practical upshot for you: you cannot prompt your way into a different result, and you don't need to. To change what comes out, change the reference image or the driving video, not words.

    The one input you'll ever touch

    There's genuinely just one field here. Make sure fixed_embed_fwd_anyframe.safetensors is sitting in ComfyUI/models/text_cond/ - the pack creates the folder when it loads, so you may need to drop the file in and refresh. Pick it in the dropdown and that's the entire node configured. If the dropdown is empty, that's your problem, not the node's.

    Install and gotchas

    Same story as the rest of the pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Saganaki22/ComfyUI-Viggle-Animate-H3
    

    or grab it through ComfyUI Manager and restart. No Python dependencies to fight; the pack runs on ComfyUI's native H3 support, so a current ComfyUI matters more than any pip install.

    The classic mistake is treating this like a checkpoint or text-encoder loader and pointing it at the wrong kind of file - it will only ever show you what's in models/text_cond/, and the one file that belongs there is the fixed_embed safetensors from the converter's repo. Load that, match the conditioning node's length to your Load Video frame_load_cap, keep CFG at 1.0 (the model is guidance-distilled, so negatives are inert), and the workflow runs promptless, sampler included.

    One honest caveat that applies to the whole pack: these weights are a derivative of MiniMax H3, and its Community License excludes the US, EU, UK and South Korea from its territory. If you're in one of those regions, running the local weights isn't licensed - that's a real constraint to know about before you build a workflow on it, not a licensing footnote to skip.

    Categoryloaders/viggle

    Inputs (1)

    NameTypeDefaultDescription
    text_condCOMBOFrozen text conditioning in models/text_cond/ (fixed_embed_fwd_anyframe).

    Outputs (1)

    NameTypeDescription
    text_condTEXT_COND