ComfyUI Node

String _O

The String _O Node Is a Ghost — Meet Its Replacement Instead

By omar92·Created 3 years ago·Updated 5 months ago· 181
String _O
    • STR
    string

    String _O is a text-holder node from the old StringSuit days: one multiline input, one string output, nothing else. It doesn't generate, transform, or condition anything. And here's the thing - you probably shouldn't use it. The name shows up in the O/deprecated/string menu because the node ships in the deprecated half of the Quality of Life Suit pack, kept around so old workflows still load. The modern replacement, Text _O under O/utils, does the same job the way current ComfyUI expects.

    If you loaded a workflow that has it, fine - leave it be and it'll work. If you're adding it fresh, add Text _O instead.

    Why it exists at all

    This pack (from omar92, aka Omar, a well-known CivitAI/ComfyUI community member) was one of the earliest "quality of life" suites, and it grew by accretion. The string nodes here predate the current one and pass text around as a custom STR socket - not the standard STRING type. Under the hood the node returns a little dict, {"string": your_text}, rather than a plain Python string. That's fine inside the old node chain: String _Oconcat Strings _ODebug String _O all speak STR fluently.

    The catch is ComfyUI matches wires by type name, and STR is not STRING. So you can't plug String _O into a normal CLIPTextEncode prompt input. If that connection refuses to snap into place, it isn't you doing it wrong - the node is speaking a dead dialect. Text _O outputs a proper STRING and drops into any prompt box without drama.

    What you actually get

    • Input: string - a multiline text field. That's the whole config surface.
    • Output: STR - the text, wrapped in the legacy dict format, for the old O/ string chain only.

    So the entire node is: type text, get text. The honest use case is backward compatibility. If a workflow you saved in 2023 references it, you need this pack installed just to load that graph, and the pack's auto-updater (see below) keeps it working without you thinking about it.

    Installing it

    The node comes with the whole pack, so install the pack once:

    cd ComfyUI/custom_nodes
    git clone https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92.git
    

    Then restart ComfyUI - a browser refresh isn't enough, the README is explicit about that. Or use ComfyUI Manager and search for "Quality of Life Suit" / QualityOfLifeSuit. Everything lands under the O/ menu. There's no requirements.txt to worry about for the string nodes - they only use PIL and numpy, which ComfyUI already has. The pack does create a config.json on first run and, by default, tries to self-update from GitHub on every startup (it needs pygit2, which it pip-installs itself). You can set "autoUpdate": false if you'd rather control updates.

    Gotchas worth knowing

    Two things trip people up. First, expect to see QualityOfLifeSuit_Omar92::NSP ready and sometimes Error. No styles.csv found. Put your styles.csv in the root directory of ComfyUI. on startup - that's the Noodle Soup Prompts feature complaining, harmless to your string nodes. Second, the pack auto-archives its old standalone files (like the original StringSuit_Omar92.py) into a zip on startup. That's cleanup, not breakage, but if you see a QualityOflife_Backup_*.zip appear in custom_nodes, that's what did it.

    The shortcut: if you're building a new workflow and you find yourself reaching for this node, you've grabbed the deprecated one. Take Text _O from the same pack and save yourself the type-mismatch headache.

    CategoryO/deprecated/string

    Inputs (1)

    NameTypeDefaultDescription
    stringSTRING

    Outputs (1)

    NameTypeDescription
    STRSTR