String DeDuplicate
Combine up to 20 strings without the duplicate-tag mess
- text
When you build prompts from multiple sources - a wildcard here, a Smart Prompt there, a hand-written base - you will end up with duplicates. 1girl, 1girl, looking at viewer is a prompt nobody typed and everybody has generated. String DeDuplicate is the node that cleans that up: it merges up to 20 string inputs and removes duplicate entries, case-insensitively and with underscores normalized, so 1girl and 1girl (or 1_girl) become one entry no matter which input they came from.
The smart part is that it handles both prompt formats. Comma-separated tag lists get deduplicated per tag, while line-based prose gets treated as lines - so it works whether you're on an SDXL-lineage tag workflow or a newer block-style prompt. Empty inputs are ignored entirely, which means you can wire in optional branches without them polluting the result.
How it works
inputcount(default 2, up to 20) - how many string inputs the node shows. This is the knob that surprises people: it's a count, not a toggle, and the node grows the matchingstring_1…string_ninputs accordingly.dedup_inputs(off) - deduplicate within each individual input before combining. Turn it on when a single source is already messy.weight_handling- what to do with emphasis markers like(word:1.3).Nonekeeps them as-is;Remove Weightsstrips all emphasis;Normalizecaps weights at 1.4. That last one matters more than you'd think - normalization is a nice middle ground if your sources use wildly different emphasis conventions.
The single text output is the cleaned, combined string, ready for a CLIP encoder.
Where it fits
Any prompt-assembly chain that has more than one upstream source. If you're combining a base prompt, a character tag block, and a style block, this is the safety net that keeps the result clean. It also pairs naturally with String Dual (drop it before the encoder) and with Smart Prompt, whose selected categories are exactly the kind of source that can collide.
Installing it
Ships in ComfyUI_Eclipse:
git clone https://github.com/r-vage/ComfyUI_Eclipse custom_nodes/ComfyUI_Eclipse
Or ComfyUI Manager → search "ComfyUI_Eclipse" → install and restart. No models.
Gotchas
The dedup is case-insensitive and underscore-normalized - so it will happily merge two tags that differ only in capitalization, which is the desired behavior, but keep it in mind if you intentionally want a distinction between Photo and photo. And inputcount is per-node config: if you wire in an 11th string but the count is still at its default of 2, the extra input doesn't exist - bump the count. Pack note: pre-v4.0.0 RvTools-era node IDs need the migration tool on old workflows.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| inputcount | INT | 22–20 | Number of string inputs. |
| dedup_inputs | BOOLEAN | false | Deduplicate within each input before combining. |
| weight_handling | COMBO | None | None=keep weights as-is. Remove Weights=strip all emphasis markers. Normalize=cap weights at 1.4. |
| string_1opt | STRING | String input #1. | |
| string_2opt | STRING | String input #2. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |