ComfyUI Node

SB Concat Strings

Concatenate twenty string lists element-by-element — the storyboard glue

By creativeself-kim·Created 10 months ago·Updated 6 months ago· 1
SB Concat Strings
    • text
    num_inputs2
    separator,
    string_1
    string_2
    string_3
    string_4
    string_5
    string_6
    string_7
    string_8
    string_9
    string_10
    string_11
    string_12
    string_13
    string_14
    string_15
    string_16
    string_17
    string_18
    string_19
    string_20

    Plain string concat is easy - you join two strings with a space. This node isn't that, and the difference matters in batch pipelines. SBConcatStrings takes up to twenty string lists and merges them element-by-element with a separator, so row 1 of input A gets joined with row 1 of input B, row 2 with row 2, and so on. If your storyboard workflow produces per-scene prompt fragments in parallel lists, this is the node that reassembles them into per-scene full prompts without you writing any glue.

    How it works

    Each string_N input is treated as a list (it's INPUT_IS_LIST-aware, so it plays with list outputs). The node walks the lists in lockstep: for index 0 it pulls element 0 from every connected input, joins them with your separator, and pushes that to the output list; then index 1, and so on. Shorter lists get broadcast - if list B has one element, that single element pairs with every element of list A. That's a thoughtful default for things like a fixed style suffix that should append to every scene prompt.

    Empty strings are dropped before joining, so you don't get trailing , , artifacts from an unused slot. Skip an input entirely and it's just skipped.

    The inputs

    • num_inputs (INT, 2–20, default 2) - how many string slots to show/use. The JS extension resizes the node's inputs to match.
    • separator (STRING, default ", ") - joined between fragments.
    • string_1 through string_20 (STRING, optional) - the fragments. Any subset can be connected.
    • text (STRING list) - the output: one joined string per row.

    Where it fits

    This is the natural final stage after the pack's SBJsonParser. That node emits a dozen parallel lists - one per cut, for time of day, camera shot, composition, character, and so on. Run the ones you want through prompt assembly and merge them here, per cut, and you get a complete prompt per scene in order. It's also why it lives in the StoryBoard category rather than Utils: it's built for aligned row-wise data, not one-off joins. For the simple two-string case, the pack also has UtilConcatStrings, which is the one you want when you just want "a" + " " + "b".

    Install

    Part of the IXIWORKS pack - ComfyUI Manager → search ComfyUI-VideoDescription → Install, restart, or clone the repo into custom_nodes/. No extra dependencies; it's pure Python string handling on top of ComfyUI's list plumbing. Small node, boring description, but it's the difference between a storyboard pipeline that spits out usable prompts and one that spits out twenty lists you have to reassemble by hand.

    CategoryIXIWORKS/StoryBoard

    Inputs (22)

    NameTypeDefaultDescription
    num_inputsINT22–20
    separatorSTRING,
    string_1optSTRING
    string_2optSTRING
    string_3optSTRING
    string_4optSTRING
    string_5optSTRING
    string_6optSTRING
    string_7optSTRING
    string_8optSTRING
    string_9optSTRING
    string_10optSTRING
    string_11optSTRING
    string_12optSTRING
    string_13optSTRING
    string_14optSTRING
    string_15optSTRING
    string_16optSTRING
    string_17optSTRING
    string_18optSTRING
    string_19optSTRING
    string_20optSTRING

    Outputs (1)

    NameTypeDescription
    textSTRING