Trigger + Prompt Concat
The two-string glue node that knows when to get out of the way
- text
Trigger + Prompt Concat is the simplest node in this pack and arguably the one you wire first. It takes a trigger string, takes your actual prompt, and joins them with a comma - exactly the mechanical step every LoRA workflow ends up doing by hand the moment you stop memorizing trigger words.
Here's the workflow it's built for. Your LoRA stack node outputs a ready-made triggers string (auto-extracted from the LoRA files, duplicates removed). You don't want to paste that into every prompt box by hand - it's long, it changes when you swap LoRAs, and forgetting it is how you get weak results and blame the wrong thing. So: wire the stack's triggers output into this node's trigger_text input, put your actual prompt in prompt_text, and the single text output goes straight into a CLIP Text Encode. Trigger words stay glued to the exact LoRAs that need them, forever.
How it works
The concatenation logic is exactly as simple as it looks:
trigger_text + delimiter + prompt_text
with a small mercy: if only one of the two is present, it returns that text unchanged rather than a broken ", prompt" with a leading comma. That fallback matters more than it sounds - a workflow with the stack disabled or zero enabled LoRAs still produces a valid prompt instead of an empty string.
Two STRING inputs (trigger_text, prompt_text) are optional. When an input is connected it wins, and the corresponding local text field locks. When it's not connected, the local Trigger TXT / Prompt TXT fields are editable instead - so you can use the node as a plain two-field concat with zero wiring. A Delimiter widget (default ", ") controls the join. The local field state is carried in a hidden ui_state_json widget, which is how your typed text survives a save/load.
The one thing that trips people up
The locked text field. If you connect trigger_text and then wonder why you can't type into the trigger box anymore - that's by design, not a bug. Connected input has priority; disconnect the wire and the field unlocks. The node's tooltip says it plainly, but it's the only "is this broken?" moment this node will ever give you.
Install
It ships in the same pack as Model Only LoRA Stack, so one install gets you both:
cd ComfyUI/custom_nodes && git clone https://github.com/orion4d/Orion4D_ModelOnlyLoRA
then restart ComfyUI, or search Orion4D_ModelOnlyLoRA in ComfyUI Manager. You'll find it under Orion4D_Utils → Text. No extra dependencies, no model files - it's a ~50-line Python node with a small web widget.
A fair word of caution: this is a utility, and ComfyUI is drowning in string-concat nodes. Reach for it because it's the natural partner to the stack node and the fallback logic is clean - not because it does anything magical. If you're doing weighted prompts or want triggers embedded mid-prompt, just type them in; this node owns the "triggers up front, comma, then your prompt" pattern and it does that well.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| ui_state_json | STRING | {"trigger_text": "", "prompt_text": "", "delimiter": ", "} | — |
| trigger_textopt | STRING | — | |
| prompt_textopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |