Nodes/Minimax H3 Text Embeddings Node/MiniMax-H3 Apply Text Embeddings
ComfyUI Node

MiniMax-H3 Apply Text Embeddings

The Apply Text Embeddings node

By 2929Dance·Created 30 days ago·Updated 30 days ago· 3
MiniMax-H3 Apply Text Embeddings
  • conditioning
  • conditioning
embedding_name
strength1.00

This is the closest thing MiniMax H3 has to a textual-inversion node, and for once that's a compliment. H3 - the 33B omni-modal video model MiniMax opened in August 2026 - conditions on a text encoder with a 5120-wide embedding space, and the DiffSynth team has been publishing "text embedding templates" trained for exactly that space. This node from 2929Dance just takes one of those template files and bolts its learned tokens onto your existing H3 conditioning. No retraining, no LoRA, no API call. One dropdown and a strength slider is the whole UI.

What it actually does

Where an SD-era embedding taught the CLIP tokenizer a new word, H3 doesn't work that way. The conditioning is already a tensor of token vectors, and this node's mechanism is dead simple: it loads a .safetensors from ComfyUI's models/embeddings folder, expects a single key named weight shaped [tokens, 5120], multiplies it by your strength, and prepends those token rows to the front of the conditioning. Your prompt's original tokens come after, so the learned style or subject sits where H3 reads it first.

Two details make it less fragile than it sounds. The node caches the loaded tensor on CPU and casts it to each conditioning tensor's device and dtype, so you can chain several of these nodes and each embedding loads once. And because H3 carries per-token tag lists alongside the conditioning (the node looks for minimax_token_tags and text_token_tags metadata), it pads those lists with ones for the added tokens so the tag lengths stay aligned with the token counts. That's the kind of bookkeeping that would silently break your video otherwise.

The inputs that matter

There are three, and two of them are obvious:

  • conditioning - feed it the CONDITIONING output from your H3 text-encode path. This is where the node slots in: right between text encoding and the sampler.
  • embedding_name - a dropdown of every .safetensors in models/embeddings. Pick your template. If it's empty, you haven't put any templates there yet.
  • strength - FLOAT, default 1.0, and it runs from -100 to 100. This is the knob you'll actually tune. Set it to 0 and the node becomes a pure passthrough; crank it and the template starts overpowering your prompt. Negative values are allowed if you want to push away from a style, though nobody's really A/B'd that on H3 yet.

It outputs one thing: conditioning, wired straight into the H3 sampler. That's it. Chain two of these nodes with different templates at different strengths if you want a composite style - the source handles it fine.

Installing it

ComfyUI Manager is the easy path: search "Minimax-H3" and install the pack. Or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/2929Dance/ComfyUI-Minimax-H3-Text-Embeddings

Restart ComfyUI and it'll appear under Conditioning ▸ minimax_h3. The pack's real dependency surface is tiny - huggingface-hub, safetensors, and torch (it declares torch>=2.13, which any current ComfyUI already bundles). The only genuinely new piece is huggingface-hub, and Manager handles that.

The catch, and it's the whole game: the node downloads nothing. The templates live in the DiffSynth-Studio MiniMax-H3-Text-Embeddings repo on ModelScope, and you have to fetch the .safetensors files yourself and drop them into ComfyUI/models/embeddings. That's the step the README points at but doesn't automate.

Where people get burned

The errors this node throws are its best feature, because they tell you exactly what's wrong:

  • "Expected key 'weight'… Found keys: …" - you dropped in something that isn't a DiffSynth template. An SD-era .pt embedding, a LoRA, whatever. It only reads template files with a weight tensor.
  • "Expected embedding width 5120… got shape …" - same family of mistake. Your file is real but it was trained for a different encoder. This is the 2026 version of the SD 1.5-to-SDXL embedding lock, just with math that fails loudly instead of silently.
  • Empty dropdown - no templates in models/embeddings. Refresh the node list after copying files in.
  • Nothing happens - check your strength. At 0 the node returns the conditioning untouched by design.

One warning that isn't in the README: H3 itself ships under the MiniMax H3 Community License, which excludes the US, EU, UK and South Korea from the applicable territory. This node won't stop you running it anywhere, but if you're in an excluded region the model it conditions is the thing you're not licensed to run. That's a licensing question, not a technical one, and no node fixes it.

It's a thin utility, honestly - one file, one class, zero dependencies you didn't already have. But for nailing consistent style across H3 clips it's exactly the tool that should exist and didn't.

Categoryconditioning/minimax_h3

Inputs (3)

NameTypeDefaultDescription
conditioningCONDITIONING
embedding_nameCOMBO0 options:
strengthFLOAT1.00-100–100

Outputs (1)

NameTypeDescription
conditioningCONDITIONING