Nodes/ComfyUI-gen2/Ideogram4 V9 Trigger Text Encode
ComfyUI Node

Ideogram4 V9 Trigger Text Encode

The V9 text encoder that turns one literal trigger into four token slots

By petmycat·Created 7 months ago·Updated 20 days ago· 23
Ideogram4 V9 Trigger Text Encode
  • clip
  • activator
  • conditioning
  • diagnostics
text<r1X1dOn9mA2>
modesemantic_only
literal<r1X1dOn9mA2>
max_length0

This is where your Ideogram4 V9 trigger actually fires. Gen2_Ideogram4V9TriggerTextEncode replaces your normal CLIPTextEncode on the Ideogram4 chain: give it the activator you composed, the prompt containing your trigger literal, and it returns standard CONDITIONING you can feed straight to the sampler. The name is a lie in the best way - it doesn't call any API, it's all local, and it needs no key.

How the four-slot expansion works

Here's the trick that makes these triggers hit hard. The V9 format reserves four virtual token slots for every literal trigger occurrence in your prompt. When the encoder finds <r1X1dOn9mA2> (the default literal) in your text, it doesn't tokenize it as one ordinary token - it expands that occurrence into four virtual slots, injects the [4,H] embedding across them, and engages all 36 text-encoder module-LoRAs at once. More conditioning budget per trigger = a stronger, more reliable activation than a single-token embedding can manage. Multiple occurrences each get their own four-slot expansion, and the pack computes the token layout so your other prompt text doesn't get clobbered - though it will raise a truncation error if your max_length can't fit all the expanded triggers.

The important gotcha: this node does not replace placeholders. The prompt must already contain the literal trigger. The pack's intended flow is prompt text → Gen2_StringReplace (also in this pack) → literal such as <r1X1dOn9mA2> → this encoder. Feed it a prompt with no literal and it fails closed - no silent no-op, an actual error. That's a design choice that saves you from shipping a workflow that quietly does nothing.

The inputs that matter

  • clip - the Ideogram4 Qwen3-VL text encoder. Must be the real native backend; the pack rejects Klein/Qwen3-8B even though it looks similar.
  • activator - from Gen2_ComposeIdeogram4V9TriggerActivator.
  • text - your prompt, already containing the literal trigger (default <r1X1dOn9mA2>).
  • mode - default semantic_only, which is the full experience: four-slot embedding plus all 36 TE module-LoRAs. The other modes let you isolate parts for debugging: embedding_only, internal_only, activator_bypass, and stock_literal (which tokenizes the literal normally, no four-slot expansion - the mode you use if you just want the concept without the heavy trigger).
  • literal - the exact trigger string to find in text. Missing literals fail closed.
  • max_length (default 0 = no limit) - cap on the token length; watch it if you're stacking many triggers.

Outputs: conditioning (standard CONDITIONING - wires into your sampler or guider) and diagnostics, a GEN2_IDEOGRAM4_V9_TRIGGER_DIAGNOSTICS you can route into the diagnostics node to see what actually got encoded.

Install

ComfyUI Manager: search ComfyUI-gen2. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/petmycat/ComfyUI-gen2.git
cd ComfyUI-gen2
pip install -r requirements.txt

Restart. You need the Ideogram4 weights + Qwen3-VL encoder (non-commercial license - worth a read, it reaches your generated images), plus your V9 trigger artifacts in ComfyUI/models/gen2/. The whole V9 pipeline is still pre-parity in the author's own words, so budget for some exploration.

CategoryGen2/Ideogram4 Trigger V9

Inputs (6)

NameTypeDefaultDescription
clipCLIP
activatorGEN2_IDEOGRAM4_V9_TRIGGER_ACTIVATOR
textSTRING<r1X1dOn9mA2>
modeCOMBOsemantic_only5 options: semantic_only, embedding_only, internal_only, activator_bypass, stock_literal
literalSTRING<r1X1dOn9mA2>
max_lengthINT00–1048576

Outputs (2)

NameTypeDescription
conditioningCONDITIONING
diagnosticsGEN2_IDEOGRAM4_V9_TRIGGER_DIAGNOSTICS