Nodes/dAIly Prompt & Token Utils/Prompt Mixer dAIly v2 (Dynamic CSV)
ComfyUI Node

Prompt Mixer dAIly v2 (Dynamic CSV)

CSV wildcards where your headers are the placeholders

By DailyMok·Created 6 months ago·Updated 2 months ago· 0
Prompt Mixer dAIly v2 (Dynamic CSV)
    • PROMPT
    • USED_JSON
    • ATTR_001
    • ATTR_002
    • ATTR_003
    • ATTR_004
    • ATTR_005
    • ATTR_006
    • ATTR_007
    • ATTR_008
    • ATTR_009
    • ATTR_010
    • ATTR_011
    • ATTR_012
    • ATTR_013
    • ATTR_014
    • ATTR_015
    • ATTR_016
    • ATTR_017
    • ATTR_018
    • ATTR_019
    • ATTR_020
    • ATTR_021
    • ATTR_022
    • ATTR_023
    • ATTR_024
    • ATTR_025
    • ATTR_026
    • ATTR_027
    • ATTR_028
    • ATTR_029
    • ATTR_030
    • ATTR_031
    • ATTR_032
    • ATTR_033
    • ATTR_034
    • ATTR_035
    • ATTR_036
    • ATTR_037
    • ATTR_038
    • ATTR_039
    • ATTR_040
    • ATTR_041
    • ATTR_042
    • ATTR_043
    • ATTR_044
    • ATTR_045
    • ATTR_046
    • ATTR_047
    • ATTR_048
    • ATTR_049
    • ATTR_050
    • ATTR_051
    • ATTR_052
    • ATTR_053
    • ATTR_054
    • ATTR_055
    • ATTR_056
    • ATTR_057
    • ATTR_058
    • ATTR_059
    • ATTR_060
    • ATTR_061
    • ATTR_062
    • ATTR_063
    • ATTR_064
    csv_path
    templateA portrait with {Skin}, {Haircolor} hair, and {Eyes} eyes. Scene: {Locate}. Tip: click Refresh CSV after changing headers.
    flat_modetrue
    show_attribute_outputstrue
    seed0
    schema_json[]
    attr_001
    attr_002
    attr_003
    attr_004
    attr_005
    attr_006
    attr_007
    attr_008
    attr_009
    attr_010
    attr_011
    attr_012
    attr_013
    attr_014
    attr_015
    attr_016
    attr_017
    attr_018
    attr_019
    attr_020
    attr_021
    attr_022
    attr_023
    attr_024
    attr_025
    attr_026
    attr_027
    attr_028
    attr_029
    attr_030
    attr_031
    attr_032
    attr_033
    attr_034
    attr_035
    attr_036
    attr_037
    attr_038
    attr_039
    attr_040
    attr_041
    attr_042
    attr_043
    attr_044
    attr_045
    attr_046
    attr_047
    attr_048
    attr_049
    attr_050
    attr_051
    attr_052
    attr_053
    attr_054
    attr_055
    attr_056
    attr_057
    attr_058
    attr_059
    attr_060
    attr_061
    attr_062
    attr_063
    attr_064

    The v1 prompt mixer in this pack is a solid CSV wildcard node, but it has one structural quirk: the attributes it knows about are hardcoded to the example columns, so a CSV with different headers leaves you stuck inside its little box. Prompt Mixer dAIly v2 (Dynamic CSV) is the author's fix, and it's a good one. Your CSV headers become the placeholders - rename a column and the node follows - so any CSV you already have works instead of one that matches the template.

    What changed, and why it's worth it

    Everything in v2 flows from one idea: read the headers, build the node around them. The big wins:

    • Headers as placeholders. If your CSV has a column called Setting, you write {Setting} in the template. No fixed inventory of attribute names to stay inside.
    • Dynamic inputs and outputs. The node grows attr_001attr_064 ports to match your columns (or however many it needs), and an ATTR_* output per column so you can wire a specific picked value elsewhere in the graph.
    • Empty columns are allowed. A column can stay empty and its value gets supplied from upstream nodes instead - handy when one attribute shouldn't come from the file.
    • File picker + refresh. You can pick a CSV from a browser-style dialog, which copies it into the pack's local csv/ folder, and a Refresh button reloads the current file without re-copying. The template autocompletes {...} from the loaded headers, and the node keeps its size when you reload.
    • Toggle the noise. show_attribute_outputs hides the attribute ports when you only care about the prompt, which keeps the graph from turning into a cable spaghetti monster.

    Inputs that matter

    • csv_path (STRING) - the CSV to load, absolute or relative to the ComfyUI root. v2 keeps the same path semantics as v1.
    • template (STRING, multiline) - write it with {HeaderName} placeholders matching your CSV columns.
    • flat_mode (BOOLEAN) - ON merges everything to a single line; OFF preserves your paragraphs and line breaks.
    • show_attribute_outputs (BOOLEAN) - toggle the per-column output ports on or off.
    • seed (INT) - pick the same seed, get the same combination. This is the whole reproducibility story, so set it deliberately if you plan to re-run or compare batches.
    • schema_json (STRING) - the internal schema the dynamic ports are built from; you'll normally leave it as [] and let the node populate it from the CSV.

    Outputs are PROMPT (STRING, always the first one - wire this to your text encoder), USED_JSON (STRING, the picked values plus seed for your metadata), and the dynamic ATTR_* outputs. That USED_JSON is the feature that keeps you honest in a batch: attach it to the image metadata and "which prompt made this one?" stops being a mystery.

    A quick note on v1 vs v2

    If you're starting fresh, start with v2 - it does everything v1 does plus the dynamic headers. The author kept v1 around for existing workflows, not because it's better. If you're using v1 only because a shared workflow references it, swap and don't look back.

    Installation

    Same pack, same install: ComfyUI Manager, search "dAIly Prompt & Token Utils" (or just "dAIly"). Or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/DailyMok/ComfyUI-dAIly.git
    

    Restart ComfyUI. No model files or heavy dependencies.

    Gotchas

    Two things trip people up. If you change a CSV's headers after the node loaded, the ports and placeholders can go stale - hit Refresh (the template default literally tells you to "click Refresh CSV after changing headers") before you blame the output. And keep the encoding happy: UTF-8-SIG is preferred, so save from Excel as "CSV UTF-8" or you'll be debugging mojibake in your options instead of generating.

    CategoryPrompt/Utility

    Inputs (70)

    NameTypeDefaultDescription
    csv_pathSTRING
    templateSTRINGA portrait with {Skin}, {Haircolor} hair, and {Eyes} eyes. Scene: {Locate}. Tip: click Refresh CSV after changing headers.
    flat_modeBOOLEANtrue
    show_attribute_outputsBOOLEANtrue
    seedINT00–18446744073709550000
    schema_jsonSTRING[]
    attr_001optSTRING
    attr_002optSTRING
    attr_003optSTRING
    attr_004optSTRING
    attr_005optSTRING
    attr_006optSTRING
    attr_007optSTRING
    attr_008optSTRING
    attr_009optSTRING
    attr_010optSTRING
    attr_011optSTRING
    attr_012optSTRING
    attr_013optSTRING
    attr_014optSTRING
    attr_015optSTRING
    attr_016optSTRING
    attr_017optSTRING
    attr_018optSTRING
    attr_019optSTRING
    attr_020optSTRING
    attr_021optSTRING
    attr_022optSTRING
    attr_023optSTRING
    attr_024optSTRING
    attr_025optSTRING
    attr_026optSTRING
    attr_027optSTRING
    attr_028optSTRING
    attr_029optSTRING
    attr_030optSTRING
    attr_031optSTRING
    attr_032optSTRING
    attr_033optSTRING
    attr_034optSTRING
    attr_035optSTRING
    attr_036optSTRING
    attr_037optSTRING
    attr_038optSTRING
    attr_039optSTRING
    attr_040optSTRING
    attr_041optSTRING
    attr_042optSTRING
    attr_043optSTRING
    attr_044optSTRING
    attr_045optSTRING
    attr_046optSTRING
    attr_047optSTRING
    attr_048optSTRING
    attr_049optSTRING
    attr_050optSTRING
    attr_051optSTRING
    attr_052optSTRING
    attr_053optSTRING
    attr_054optSTRING
    attr_055optSTRING
    attr_056optSTRING
    attr_057optSTRING
    attr_058optSTRING
    attr_059optSTRING
    attr_060optSTRING
    attr_061optSTRING
    attr_062optSTRING
    attr_063optSTRING
    attr_064optSTRING

    Outputs (66)

    NameTypeDescription
    PROMPTSTRING
    USED_JSONSTRING
    ATTR_001STRING
    ATTR_002STRING
    ATTR_003STRING
    ATTR_004STRING
    ATTR_005STRING
    ATTR_006STRING
    ATTR_007STRING
    ATTR_008STRING
    ATTR_009STRING
    ATTR_010STRING
    ATTR_011STRING
    ATTR_012STRING
    ATTR_013STRING
    ATTR_014STRING
    ATTR_015STRING
    ATTR_016STRING
    ATTR_017STRING
    ATTR_018STRING
    ATTR_019STRING
    ATTR_020STRING
    ATTR_021STRING
    ATTR_022STRING
    ATTR_023STRING
    ATTR_024STRING
    ATTR_025STRING
    ATTR_026STRING
    ATTR_027STRING
    ATTR_028STRING
    ATTR_029STRING
    ATTR_030STRING
    ATTR_031STRING
    ATTR_032STRING
    ATTR_033STRING
    ATTR_034STRING
    ATTR_035STRING
    ATTR_036STRING
    ATTR_037STRING
    ATTR_038STRING
    ATTR_039STRING
    ATTR_040STRING
    ATTR_041STRING
    ATTR_042STRING
    ATTR_043STRING
    ATTR_044STRING
    ATTR_045STRING
    ATTR_046STRING
    ATTR_047STRING
    ATTR_048STRING
    ATTR_049STRING
    ATTR_050STRING
    ATTR_051STRING
    ATTR_052STRING
    ATTR_053STRING
    ATTR_054STRING
    ATTR_055STRING
    ATTR_056STRING
    ATTR_057STRING
    ATTR_058STRING
    ATTR_059STRING
    ATTR_060STRING
    ATTR_061STRING
    ATTR_062STRING
    ATTR_063STRING
    ATTR_064STRING