Nodes/Unified Conditioning Merge (with timestep ranges)/CLIP Text Encode SDXL Enhanced (Inline Tags)
ComfyUI Node

CLIP Text Encode SDXL Enhanced (Inline Tags)

Cutoff isolation with inline <REGION> tags — no giant node face required

By RandyHaylor·Created 4 months ago·Updated 3 months ago· 1
CLIP Text Encode SDXL Enhanced (Inline Tags)
  • clip
  • latent
  • conditioning
  • upscaled_conditioning
  • reference_full_prompt
inline_tagged_prompt_text
upscaled_conditioning_multiplier1.00
enable_region_detail_processingtrue
convert_newlines_to_commastrue
support_a1111_style_embedding_texttrue
remove_text_for_unsupported_embeddingstrue
filter_known_a1111_embedding_tags_not_installed_locallytrue
join_separator,
zoom1.00
offset_x0.00
offset_y0.00

Every other node in the enhanced-encoder family makes you fill in a wall of section widgets. This one takes a different approach: one plain text field, and you mark regions inline with angle-bracket tags. The neat part is that the natural prompt is just your text with the tags stripped - so prompts stay copy-pasteable to and from any stock CLIP encoder.

The tag syntax

Two tags, both required as open/close pairs, case-insensitive:

  • <REGION>...body...</REGION> - marks a contiguous span as a Cutoff-style region. The body becomes part of the base prompt verbatim (tags stripped). The model reads exactly what's between the tags.
  • <DETAIL>...text...</DETAIL> - used inside a region. Marks words that should be masked from other regions' encoding passes - the distinctive details that shouldn't bleed. Whitespace-split into individual target words.

Text outside any region is passthrough: it appears in the base prompt but gets no cutoff treatment.

Example:

<REGION>a <DETAIL>gnarled old</DETAIL> tree <DETAIL>with a wicked face</DETAIL></REGION>, <REGION>a bird <DETAIL>massive, red eyes, flying</DETAIL></REGION>

CLIP encodes a gnarled old tree with a wicked face, a bird massive, red eyes, flying, and the detail words get masked out of each other's regions. Paste the same text into stock CLIPTextEncode and you get the same plain prompt - the angle brackets are valid-but-inert CLIP attention markup, so nothing breaks when you move between nodes.

The timestep-range tie-in

Since this pack cares about timestep ranges, the <REGION> opening tag accepts optional attributes: start_timestep:0.0 end_timestep:0.5, or a compact time:0.0-1.0 form. Give a region a window and it only asserts its influence during those denoising steps. That's the family DNA showing.

Inputs that matter

clip and inline_tagged_prompt_text are the core. Then:

  • enable_region_detail_processing (default on) - off, and the node strips the tags and encodes the plain text with no isolation. Handy for A/B-testing whether Cutoff is actually helping your prompt.
  • convert_newlines_to_commas (default on) - collapses newline runs into single commas, so you can write one region per line.
  • join_separator (default ",") - inserted between parsed sections in the base prompt.
  • The A1111 embedding trio: support_a1111_style_embedding_text, remove_text_for_unsupported_embeddings, and filter_known_a1111_embedding_tags_not_installed_locally (that last one reads a list you can edit in the pack folder).
  • zoom, offset_x, offset_y, and upscaled_conditioning_multiplier - the usual SDXL crop-zoom metadata group. Optional latent input sets target W/H.

Outputs: conditioning, upscaled_conditioning, and reference_full_prompt (the cleaned base prompt the model encoded).

Install

ComfyUI Manager → search "Unified Conditioning", or:

cd ComfyUI/custom_nodes
git clone https://github.com/RandyHaylor/unified-conditioning-combine-with-timestep-range.git unified-conditioning-merge

Restart ComfyUI; it lives under unified-conditioning-merge. No models, no external plugin, no pip deps - the Cutoff math is bundled in the pack.

Troubleshooting

  • A region that "does nothing" is usually a typo'd tag - both opening and closing tags are required.
  • If you're not sure isolation is helping, flip enable_region_detail_processing off and compare. It's the built-in A/B switch.
  • reference_full_prompt shows you the exact text that got encoded - the fastest way to catch a tag that stripped something it shouldn't have.
Categoryunified-conditioning-merge

Inputs (13)

NameTypeDefaultDescription
clipCLIP
inline_tagged_prompt_textSTRING
upscaled_conditioning_multiplierFLOAT1.00
enable_region_detail_processingBOOLEANtrueON: parse REGION/DETAIL tags and apply cutoff isolation math. OFF: strip tags from the prompt and encode the plain text as a single passthrough (no isolation). Useful for A/B comparing the isolation effect against plain CLIP encoding of the same prompt.
convert_newlines_to_commasBOOLEANtrueON: any run of newlines (with adjacent commas/spaces/tabs) in the prompt collapses to a single comma before parsing. Lets you write each region/tag on its own line for readability and have them comma-joined automatically. OFF: newlines pass through as-is (CLIP treats them as whitespace).
support_a1111_style_embedding_textBOOLEANtrue
remove_text_for_unsupported_embeddingsBOOLEANtrue
filter_known_a1111_embedding_tags_not_installed_locallyBOOLEANtrueList can be modified in custom node folder: known_a1111_embedding_names_to_filter_when_not_installed_locally.txt
join_separatorSTRING,String inserted between parsed sections in the base prompt when the prior section did not already end with this separator. Default ','. Empty = no separator inserted; single commas still preserved from any trailing punctuation the user typed in the section.
zoomFLOAT1.001–100
offset_xFLOAT0.00-1–1
offset_yFLOAT0.00-1–1
latentoptLATENT

Outputs (3)

NameTypeDescription
conditioningCONDITIONING
upscaled_conditioningCONDITIONING
reference_full_promptSTRING