Nodes/comfyui-AGSoft/📝🪡AGSoft Text Concatenate X8
ComfyUI Node

📝🪡AGSoft Text Concatenate X8

Eight prompt parts in one join — the maxed-out template builder

By Art-xmaster·Created 12 months ago·Updated about 10 hours ago· 23
📝🪡AGSoft Text Concatenate X8
    • STRING
    text_1
    text_2
    text_3
    text_4
    text_5
    text_6
    text_7
    text_8
    reverse_orderfalse
    delimiter,
    custom_delimiter
    clean_whitespacetrue
    ignore_empty_stringstrue

    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/\r escapes, active only in "custom" mode.
    • reverse_order - join from text_8 down to text_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.

    CategoryAGSoft/Text

    Inputs (13)

    NameTypeDefaultDescription
    text_1STRINGThe 1st text string to concatenate. / 1-я текстовая строка для объединения.
    text_2STRINGThe 2nd text string to concatenate. / 2-я текстовая строка для объединения.
    text_3STRINGThe 3rd text string to concatenate. / 3-я текстовая строка для объединения.
    text_4STRINGThe 4th text string to concatenate. / 4-я текстовая строка для объединения.
    text_5STRINGThe 5th text string to concatenate. / 5-я текстовая строка для объединения.
    text_6STRINGThe 6th text string to concatenate. / 6-я текстовая строка для объединения.
    text_7STRINGThe 7th text string to concatenate. / 7-я текстовая строка для объединения.
    text_8STRINGThe 8th text string to concatenate. / 8-я текстовая строка для объединения.
    reverse_orderBOOLEANfalseIf 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'
    delimiterCOMBO,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_delimiterSTRINGEnter 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_whitespaceBOOLEANtrueIf true, removes leading and trailing whitespace from each input string before concatenation. Example: ' hello ' → 'hello' --- Если установлено, удаляет начальные и конечные пробелы из каждой входной строки перед объединением. Пример: ' hello ' → 'hello'
    ignore_empty_stringsBOOLEANtrueIf 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)

    NameTypeDescription
    STRINGSTRINGConcatenated result of 8 input strings. / Результат объединения 8 входных строк.