📝🪡AGSoft Text Concatenate X8
Eight prompt parts in one join — the maxed-out template builder
- STRING
By the time you're assembling a prompt from eight separate pieces - subject, pose, clothing, environment, style, lighting, camera, quality tags - you're building a small template engine in your graph. 📝🪡AGSoft Text Concatenate X8 is the fixed-input version sized for that: eight multiline fields, one joined STRING output, with the family's empty-skip and delimiter handling so blank branches collapse cleanly instead of leaving holes in your prompt.
How it works
Static text_1 through text_8 inputs, identical processing to the smaller X2/X4 and the dynamic AGSoftTextConcatenate:
- clean_whitespace (on) trims each field.
- ignore_empty_strings (on) drops blanks and whitespace-only entries.
- delimiter - 15 presets (
",","New Line","Space"," | "," - "," :: ", etc.) or"custom". - custom_delimiter - your own separator with
\n/\t/\rescapes, active only in"custom"mode. - reverse_order - join from
text_8down totext_1.
Why a fixed X8 at all
Two reasons people pick the fixed X8 over the dynamic concatenate node. First, it's a declared contract: the eight slots are visible in the workflow, so a shared graph self-documents ("these are the eight slots I use"). Second, it stays static - no number_of_inputs widget to drift between versions. If your assembly genuinely has eight named parts, the fixed node is the readable choice; if the count changes per workflow, the dynamic one wins.
The realistic use is full prompt templates. Field 1–3 static base, fields 4–8 fed from wildcards, prompt randomizers, or a styles CSV - with "New Line" or ", " delimiters depending on whether you're building prose or tag soup. reverse_order earns its keep if your template puts quality tags at the front by convention but your nodes emit them last.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/Art-xmaster/comfyui-AGSoft
Restart ComfyUI, or ComfyUI Manager → "comfyui-AGSoft". No models, no extra deps. Debugging an X8 prompt that "looks wrong" follows the same rule as the rest of the family: park a Show Text node on the output and inspect the actual string - nine times out of ten it's one field emitting unexpected whitespace, not the join logic misbehaving.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| text_1 | STRING | The 1st text string to concatenate. / 1-я текстовая строка для объединения. | |
| text_2 | STRING | The 2nd text string to concatenate. / 2-я текстовая строка для объединения. | |
| text_3 | STRING | The 3rd text string to concatenate. / 3-я текстовая строка для объединения. | |
| text_4 | STRING | The 4th text string to concatenate. / 4-я текстовая строка для объединения. | |
| text_5 | STRING | The 5th text string to concatenate. / 5-я текстовая строка для объединения. | |
| text_6 | STRING | The 6th text string to concatenate. / 6-я текстовая строка для объединения. | |
| text_7 | STRING | The 7th text string to concatenate. / 7-я текстовая строка для объединения. | |
| text_8 | STRING | The 8th text string to concatenate. / 8-я текстовая строка для объединения. | |
| reverse_order | BOOLEAN | false | If true, concatenates strings in reverse order (from last active input to first). Example: text_1='A', text_2='B', text_3='C' → result will be 'C, B, A' --- Если включено, объединяет строки в обратном порядке (от последнего активного входа к первому). Пример: text_1='A', text_2='B', text_3='C' → результат будет 'C, B, A' |
| delimiter | COMBO | , | The separator used between concatenated strings. Choose from presets or 'custom'. Presets: - 'custom' : Enter your own delimiter in the next field. Supports escape sequences: \n (newline), \t (tab), \r (carriage return). - ',' : Comma separator. - '.' : Period separator. - 'New Line' : Inserts a line break (\n) in the output. - 'New Line X2' : Inserts a blank line (\n\n) for visual spacing between paragraphs. - 'Space' : Inserts a single space character. - ';' : Semicolon separator. - '|' : Vertical bar separator. - ' - ' : Dash with spaces. - ' | ' : Pipe with spaces. - ' :: ' : Double colon with spaces. - ' >>> ' : Triple greater-than with spaces. - ' • ' : Bullet point with spaces. - ' — ' : Em dash with spaces. - ' ... ' : Ellipsis with spaces. --- Разделитель, используемый между объединяемыми строками. Выберите из предустановленных вариантов или 'custom'. Предустановленные значения: - 'custom' : Введите свой собственный разделитель в следующем поле. Поддерживает escape-последовательности: \n (перенос строки), \t (табуляция), \r (возврат каретки). - ',' : Запятая. - '.' : Точка. - 'New Line' : Вставляет перенос строки (\n) в выводе. - 'New Line X2' : Вставляет пустую строку (\n\n) для визуального разделения абзацев. - 'Space' : Вставляет один пробел. - ';' : Точка с запятой. - '|' : Вертикальная черта. - ' - ' : Дефис с пробелами. - ' | ' : Пайп с пробелами. - ' :: ' : Двойное двоеточие с пробелами. - ' >>> ' : Три знака больше с пробелами. - ' • ' : Эмодзи-точка с пробелами. - ' — ' : Длинное тире с пробелами. - ' ... ' : Многоточие с пробелами. |
| custom_delimiter | STRING | Enter a custom delimiter if 'custom' is selected above. Ignored otherwise. Supports escape sequences: \n (newline), \t (tab), \r (carriage return). Example: '\n\n' for blank line, ' | ', '---', or even an emoji like '⭐'. --- Введите пользовательский разделитель, если выше выбрано 'custom'. Игнорируется в противном случае. Поддерживает escape-последовательности: \n (перенос строки), \t (табуляция), \r (возврат каретки). Пример: '\n\n' для пустой строки, ' | ', '---', или даже эмодзи, например '⭐'. | |
| clean_whitespace | BOOLEAN | true | If true, removes leading and trailing whitespace from each input string before concatenation. Example: ' hello ' → 'hello' --- Если установлено, удаляет начальные и конечные пробелы из каждой входной строки перед объединением. Пример: ' hello ' → 'hello' |
| ignore_empty_strings | BOOLEAN | true | If true, empty strings (or strings that become empty after cleaning whitespace) will be ignored and not included in the final result. This includes strings containing only spaces, tabs, or newlines. --- Если установлено, пустые строки (или строки, которые становятся пустыми после очистки пробелов) будут проигнорированы и не будут включены в конечный результат. Это включает строки, состоящие только из пробелов, табуляций или переносов строк. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | Concatenated result of 8 input strings. / Результат объединения 8 входных строк. |