Scorpiov Prompt Combiner/Router
Weighted prompt fragments, as strings or as conditioning
- anything_1
- merged_string
- merged_conditioning
Plain prompt concatenation gets you only so far. "Here's a character fragment, here's a setting fragment, here's a style fragment, join them with commas" is the blunt instrument; Scorpiov Prompt Combiner/Router is the one that lets you say how much of each fragment you actually want. It merges any number of STRING and/or CONDITIONING inputs into one merged string and one merged conditioning output, with per-input weight and enable/disable control set by right-clicking each slot.
The natural spot for it is between a Wildcard Prompter and a Lora Tag Loader, exactly as the README suggests: your wildcards resolve to several prompt fragments, and instead of hoping comma-joining them produces the right balance, you weight each one. It's the kind of control that matters when you're blending styles or scenes - the difference between "a cinematic photo" and "60% cinematic photo, 40% watercolor, take it from there."
How it works
The node grows dynamic anything_1, anything_2, ... slots as you connect sources (same pattern as Scorpiov Anywhere), and it auto-routes by type - STRING inputs feed merged_string, CONDITIONING inputs feed merged_conditioning, no configuration needed. The one visible widget is separator, the string used to join text fragments (default , ).
The interesting part is what "weight" means for each type, because the two paths are fundamentally different:
- For STRING inputs, weight uses ComfyUI's own prompt-emphasis syntax - a fragment at 0.60 becomes
(fragment:0.60)- so it changes generation strength through a standardCLIPTextEncode. Text has no numeric "blend," so this is how a weight actually does something on the string path. - For CONDITIONING inputs, weight drives a genuine weighted average across every connected tensor and its pooled output - ComfyUI's
ConditioningAveragegeneralized from 2 inputs to N.
That last one deserves a warning, and the author includes it in the README: averaging conditioning works well for gently nudging between similar prompts, but has a real ceiling when the scenes are very different. At equal weight one prompt can dominate almost entirely, with barely a trace of the other. The author verified this matches ComfyUI's own ConditioningAverage behaving identically - it's a property of the approach, not a bug in this node. For blending two genuinely different scenes, merge as STRING and run the combined text through one CLIPTextEncode; that's the more reliable route to an actual blend.
Configuring
The inputs are dynamic, so the schema is minimal: separator, an anything_1 starter slot, and a hidden scorpiov_config widget. All the per-slot control lives in right-click menus: "Set weight..." and "Enable/Disable this input" per connected slot, persisting with the saved workflow. Because Python nodes only receive widgets (not arbitrary node properties), the JS mirrors every slot's settings into that hidden JSON widget - which is exactly why you should never hand-edit it; it's rebuilt on every right-click change.
Installing
Ships in scorpiov-nodes. Install via ComfyUI Manager (search "scorpiov-nodes") or:
cd ComfyUI/custom_nodes
git clone https://github.com/vikramudyawar/scorpiov-nodes
Restart ComfyUI after. No extra Python dependencies. If you mostly run single-prompt graphs, this is overkill - but if you're building modular prompts from reusable fragments and want real control over how they combine, it's the node that turns concatenation into composition.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| separator | STRING | , | — |
| anything_1opt | * | — | |
| scorpiov_configopt | STRING | {} | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| merged_string | STRING | — |
| merged_conditioning | CONDITIONING | — |