Nodes/RUM FLUX.2-Klein Native/RUM SDXL Diffusers Text Encode
ComfyUI Node

RUM SDXL Diffusers Text Encode

Encode with the SDXL teacher CLIP, weighting syntax and all

By Rinne414·Created 5 months ago·Updated 2 months ago· 8
RUM SDXL Diffusers Text Encode
  • clip
  • conditioning
text1girl, kisaki (blue archive), eating baozi, sitting, indoors

This is the quiet helper node of the RUM pack, and it does one thing: run text through the SDXL teacher CLIP and hand you back a conditioning embedding. It's the SDXL half of RUM's dual-conditioning scheme - the half that carries the anime vocabulary the Illustrious family knows so well.

RUM is RimoChan's cross-architecture distillation: take the knowledge locked in an SDXL-class anime checkpoint (here, waiNSFWIllustrious_v140) and bake it into FLUX.2-Klein 4B. The diffusion weights are only half of that transfer. The other half is conditioning the model with the teacher's CLIP tokens, and that's what this node produces. In the shipped workflows you'll more often hit RUMFlux2NativeMatchTextEncode, which does Qwen + teacher in one go - but if you're hand-building the native path (or poking at the SDXL stream in isolation), this is the encode you want.

How it works

Under the hood it's a two-liner: clip.tokenize(text, disable_weights=True) then clip.encode_from_tokens_scheduled(...). Two details are worth knowing:

  • disable_weights=True is deliberate. RUM's reference semantics treat (tag:1.2)-style emphasis syntax as plain text - the tokenizer doesn't apply weighting. That matches the diffusers reference path the pack is trying to reproduce, so don't expect ((eyes:1.3)) to do anything here.
  • It uses the scheduled encode path, so whatever clip you feed it determines the embedding. Feed it the right teacher CLIP and you get the RUM-compatible SDXL conditioning; feed it a random SDXL CLIP and you get the RUM-incompatible one.

Inputs: clip and text (multiline). Output: conditioning.

The one thing that matters: the teacher CLIP

The README is explicit: the teacher is waiNSFWIllustrious teacher weights, not generic clip_l / clip_g. If your "same prompt, same seed" results keep drifting from the reference, this is usually why. Those come as two files from the Ine007/waiNSFWIllustrious_v140 repo:

  • text_encoder/model.safetensorsmodels/text_encoders/waiNSFWIllustrious_v140_clip_l.safetensors
  • text_encoder_2/model.safetensorsmodels/text_encoders/waiNSFWIllustrious_v140_clip_g.safetensors

Load them with a DualCLIPLoader and wire that into this node.

Install

Standard pack install, then make sure the teacher CLIPs are in models/text_encoders/:

cd ComfyUI/custom_nodes
git clone https://github.com/Rinne414/ComfyUI-RUM
cd ComfyUI-RUM
pip install -r requirements.txt
python scripts/download_models.py --comfy-root /path/to/ComfyUI --include-teacher-clip

Restart ComfyUI after the pip install. There's no diffusers dependency - the pack ships a native adapter - but it does need a ComfyUI recent enough for the newer CLIP internals (v0.26.2+).

Where people get burned: they wire a generic SDXL encode into RUMFlux2CombineConditioning, everything runs, and the result quietly isn't RUM - no error, just a picture that's missing the whole point of the teacher path. And remember the output is an embedding, not a model: it flows into a combine or a guider, not into a loader.

CategoryRUM/native

Inputs (2)

NameTypeDefaultDescription
clipCLIP
textSTRING1girl, kisaki (blue archive), eating baozi, sitting, indoors

Outputs (1)

NameTypeDescription
conditioningCONDITIONING