Nodes/Simple String Repository/Simple String Repository (IO)
ComfyUI Node

Simple String Repository (IO)

Your best tags, stored in one text box and picked by number

By IgalOgonov·Created 2 years ago·Updated 2 years ago· 3
Simple String Repository (IO)
    • parsed_string
    string
    delimiter
    target1
    strength11.00
    random1-1
    target2
    strength21.00
    random2-1
    target3
    strength31.00
    random3-1
    target4
    strength41.00
    random4-1
    target5
    strength51.00
    random5-1

    Simple String Repository is a glorified multiline text box with a number pad bolted on. You paste a collection of tags into the string field - one per line - then each target input selects an entry by index and the node hands you back the joined result as a string. No API, no key, no model files. It's the kind of node you could rebuild in an afternoon, and the author basically did: this started as his first ComfyUI node, published in late 2024 with a README that owns the "quick and dirty" label without apology.

    Where it earns its keep is prompt building. If you've ever rebuilt the same base prompt over and over - swapping lighting, rotating artists, changing the mood - you know the two ends of the wildcard spectrum: type everything by hand each time, or load a massive randomizer like sd-dynamic-prompts and let it gamble for you. This node sits in the middle. You keep a small, curated collection per "slot" (art styles here, atmosphere there, color scheme somewhere else), then pick exactly what you want. That's a genuinely different workflow from wildcards, and for repeatable, project-specific prompts it's the one a lot of people end up preferring.

    How it works

    The string input is a newline-separated list, and each line is one option. It can carry an explicit index:

    1.cinematic lighting
    2.golden hour
    3.neon-noir
    4.moody overcast
    

    Leave the index off and the line number (1-based) is assigned at runtime. The target widgets - there are five here - select entries: target1 = 2 pulls "golden hour". strength wraps the selected tag in ComfyUI's weight syntax, so 1.2 becomes (golden hour:1.2) in the output and 0 drops the entry entirely. random only matters if an entry is written in dynamic-prompts syntax like {warm|moody|punchy}: -1 (the default) picks one at random each run, a specific number forces that option. delimiter just decides whether selected entries are joined with a comma or a space.

    The output is a single parsed_string. Because the node is an output node, it also prints the assembled prompt right on the node body - genuinely handy for checking what got selected before it reaches the sampler. Wire it into a prompt-builder like String Function Tree, a concat node, or straight into a CLIP Text Encode node.

    Install

    Use ComfyUI Manager (search "Simple String Repository") or clone it manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/IgalOgonov/ComfyUI_Simple_String_Repository
    

    Restart ComfyUI. There's no requirements.txt and no model download - pure Python plus a small JavaScript extension, so nothing heavy sneaks into your environment.

    Where people get burned

    • Dots break entries. The parser splits lines on ., so an unindexed entry containing a dot can crash with a ValueError, and an indexed one gets truncated at the second dot. Keep punctuation out of the entries - "No. 1" is a landmine.
    • Duplicate indexes. Only the first occurrence is selectable; the rest are silently dropped. If you've been mixing indexed and unindexed lines, run the "Add Missing Indexes" button on the node to clean up.
    • No caching. The node always re-runs, so random selections re-roll every time you queue. That's a feature if you're after batch variation, a surprise if you expected a locked prompt.

    Do you need it? Honestly, maybe not - Impact Pack ships the same {a|b|c} wildcard syntax, and plenty of text nodes assemble prompts. But if you work with a short list of hand-picked tags you reuse constantly, an always-visible curated list beats remembering which wildcard file holds "cinematic lighting". Zero dependencies, zero risk, and it's free.

    Categoryutils

    Inputs (17)

    NameTypeDefaultDescription
    stringSTRING
    delimiterCOMBO2 options: ,,
    target1optINT0–100000000
    strength1optFLOAT1.000–10
    random1optINT-1-1–1000
    target2optINT0–100000000
    strength2optFLOAT1.000–10
    random2optINT-1-1–1000
    target3optINT0–100000000
    strength3optFLOAT1.000–10
    random3optINT-1-1–1000
    target4optINT0–100000000
    strength4optFLOAT1.000–10
    random4optINT-1-1–1000
    target5optINT0–100000000
    strength5optFLOAT1.000–10
    random5optINT-1-1–1000

    Outputs (1)

    NameTypeDescription
    parsed_stringSTRING