Nodes/ComfyUI-M-Nodes/Multi Note (Combine All)
ComfyUI Node

Multi Note (Combine All)

Multi Note (Combine All)

By oMoStudio·Created 5 months ago·Updated 4 months ago· 1
Multi Note (Combine All)
    • combined_text
    enable_1true
    title_1Title 1
    text_1

    If you've ever stared at a 200-word prompt jammed into one CLIP Text Encode box and lost track of which clause does what, this node is the fix. Multi Note (Combine All) turns your prompt into a stack of little labeled blocks - one for subject, one for pose, one for environment, one for style - and stitches them all back into a single string when it's time to generate. It's a prompt editor that lives inside the graph, not a text file on your desktop.

    It ships in ComfyUI-M-Nodes by oMo.Studio, a small utility pack whose whole pitch is "manage huge prompts without losing your mind." The name is the promise: combined_text out, ready to feed a CLIP Text Encode.

    How it works

    The node starts with one block: a toggle (enable_1), a title (title_1), and a multiline text area (text_1). The trick is what happens when you type - the moment you put text in the last block, the node's front-end JS spawns a fresh triplet (toggle, title, text) below it, up to as many as you need. Empty blocks don't pile up; they only appear once you've actually written something in the one before.

    On the backend it's dead simple. When you hit Queue, it walks every enable_N/text_N pair, keeps the blocks whose toggle is on and whose text isn't blank, and joins them with ", " into one string. That string is the combined_text output.

    The inputs that matter

    • enable_N - the toggle per block. Off means that block is skipped entirely. Great for A/B-ing a clause without deleting it.
    • title_N - pure organization. It's a label so you can tell "Pose" from "Environment" at a glance; it's not part of the output.
    • text_N - the actual prompt content.

    One output: combined_text (STRING). Wire it wherever a prompt string goes.

    The master-prompt pattern

    The README's own suggested workflow is worth copying:

    1. Add a Multi Note, make blocks for Subject, Pose, Environment, Style.
    2. Right-click a Random Prompt Selector (also in this pack) and choose Convert text to input.
    3. Connect combined_text to the Selector's text input.
    4. Feed the Selector's output to your CLIP Text Encode.

    Now your big prompt is both organized and randomized - you can put {red|blue|green} variations inside any block and let the selector shake it up. If you're on SDXL or Flux, a structured prompt like this is also just easier to debug than one wall of text.

    Installing it

    ComfyUI Manager: search "ComfyUI-M-Nodes" and install. Or do it by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/oMoStudio/ComfyUI-M-Nodes
    

    Then restart ComfyUI. There's no requirements.txt and no model to download - this is pure JS plus a small Python node, so it's one of the friendlier installs in the ecosystem. MIT licensed.

    Where people get burned

    • Commas are the separator, so mind the join. Blocks are combined with ", ". That's fine for prompts, but a block that ends mid-word or a tag list where you don't want a comma between two sections will read awkwardly.
    • Blank and disabled blocks vanish silently. If every block is toggled off, you get an empty string out, and your CLIP Text Encode will happily encode nothing.
    • The dynamic fields are the whole point, and they only exist in the UI. This is why the node reads the graph's widget state rather than a fixed schema - it's the same trick a few other "grows as you type" nodes use, and it means the fields do survive save/reload (that's the pack's headline feature), but it's worth knowing the blocks are front-end generated. On the Nodes 2.0 frontend rewrite, dynamic-widget packs like this are the ones that occasionally render oddly - if a loaded workflow looks off, re-add the node rather than fighting it.

    It won't generate anything on its own. But if your prompt workflow has become unreadable, this is the cheapest reorganization you'll find.

    CategoryM_nodes

    Inputs (3)

    NameTypeDefaultDescription
    enable_1BOOLEANtrue
    title_1STRINGTitle 1
    text_1STRING

    Outputs (1)

    NameTypeDescription
    combined_textSTRING