Prompt Mixer dAIly (CSV Wildcards)
CSV wildcards with a seed, so every batch is repeatable
- PROMPT
- USED_JSON
- Skin
- Bodytype
- Hairstyle
- Haircolor
- Eyes
- Clothes
- Expression
- Pose
- Locate
- LightSource
- LightingType
- ShotSize
- Composition
- FocalLength
- CameraAngle
- LensType
- Color
- Effect
- Extra1
- Extra2
- Extra3
- Accessories
Wildcards are old news in image generation - {brown|blonde|black} has been around since A1111, and the bracket syntax is how people batch a character across moods and settings without writing 30 prompts. The problem with old-school wildcards is that a random pick is a random pick: reproduce the exact same combo later and you're back to guessing. Prompt Mixer dAIly (CSV Wildcards) is the dAIly pack's answer - it moves your options into a CSV file, drives the prompt from it, and keys the whole selection off a seed so every run is reproducible.
How it works
You point it at a CSV where each column is one attribute and each row is one option - columns like Skin, Hairstyle, Eyes, Pose, Locate, FocalLength. Then you write a template that references them as {Skin}, {Hairstyle}, and so on, exactly like the placeholders in the default template. The node reads the CSV, picks values for the seed, and fills the template.
Two details sell it. First, the seed: set the same seed and you get the same combination back, every time - which is what makes a batch actually reviewable instead of a slot machine. Second, the USED_JSON output: a clean JSON of which values were used plus the seed, so you can stash it next to an image and know precisely what generated it. If you've ever squinted at a batch and wondered which prompt made which image, that's the feature.
Inputs that matter
- csv_path (STRING) - path to your CSV, absolute or relative to the ComfyUI root. Your column headers must match the
{placeholders}in the template. - template (STRING, multiline) - the prompt with
{Header}placeholders. The default is a fully worked example, so you can test before writing your own. - flat_mode (BOOLEAN) - ON flattens everything to one line (classic ComfyUI style); OFF keeps your paragraphs and line breaks. If you write structured, multi-paragraph prompts, this is the setting that decides whether the model sees a block or a wall of text.
- seed (INT) - controls which values get picked.
There are also optional override inputs for each attribute - Skin, Eyes, Pose, and about twenty more - and any override you fill in takes priority over the CSV for that field. The output you'll wire forward is PROMPT (STRING); USED_JSON goes wherever you collect metadata.
The catch: it's hardcoded
Here's the thing that matters before you build a whole workflow on it: the attribute inputs and outputs are fixed to the columns in the author's example CSV. If your spreadsheet uses headers the node doesn't have slots for, those columns just won't reach the template. The author clearly hit this too, because v2 of the same node in this pack fixes it by building the attributes dynamically from your actual headers. For v1, stay inside the provided column names and it's fine.
Installation
It ships in the dAIly Prompt & Token Utils pack alongside the token counter. Install via ComfyUI Manager (search "dAIly Prompt & Token Utils" or just "dAIly"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/DailyMok/ComfyUI-dAIly.git
Restart after cloning. No models, no extra downloads.
Troubleshooting
The README is upfront about the encoding gotcha: CSV loading supports multiple encodings but UTF-8-SIG is preferred. If your non-ASCII options show up garbled, resave the file as UTF-8 with BOM (Excel's default "CSV UTF-8" does this). And if a placeholder comes through empty, check that the header name matches the {...} exactly - case-sensitive, no spaces.
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| csv_path | STRING | — | |
| template | STRING | A stunning graphic anime illustration image with one stunning young woman, with a beautiful anatomy in her 20s. About the woman : she is a {ShotSize} woman, named Amanda : she have {Skin} with a {Bodytype}. She have beautiful {Haircolor} hair styled in a {Hairstyle} and stunning {Eyes} eyes. She is wearing {Clothes}. Alone, She {Pose} . About the locate : a unique mix between {Locate} and {FocalLength}. Tip: turn flat_mode OFF to preserve paragraphs and line breaks. | — |
| flat_mode | BOOLEAN | true | ON = aplatit tout en une ligne (comme avant) OFF = conserve les sauts de ligne et la mise en forme |
| seed | INT | 00–18446744073709550000 | — |
| Skinopt | STRING | — | |
| Bodytypeopt | STRING | — | |
| Hairstyleopt | STRING | — | |
| Haircoloropt | STRING | — | |
| Eyesopt | STRING | — | |
| Clothesopt | STRING | — | |
| Expressionopt | STRING | — | |
| Poseopt | STRING | — | |
| Locateopt | STRING | — | |
| LightSourceopt | STRING | — | |
| LightingTypeopt | STRING | — | |
| ShotSizeopt | STRING | — | |
| Compositionopt | STRING | — | |
| FocalLengthopt | STRING | — | |
| CameraAngleopt | STRING | — | |
| LensTypeopt | STRING | — | |
| Coloropt | STRING | — | |
| Effectopt | STRING | — | |
| Extra1opt | STRING | — | |
| Extra2opt | STRING | — | |
| Extra3opt | STRING | — | |
| Accessoriesopt | STRING | — |
Outputs (24)
| Name | Type | Description |
|---|---|---|
| PROMPT | STRING | — |
| USED_JSON | STRING | — |
| Skin | STRING | — |
| Bodytype | STRING | — |
| Hairstyle | STRING | — |
| Haircolor | STRING | — |
| Eyes | STRING | — |
| Clothes | STRING | — |
| Expression | STRING | — |
| Pose | STRING | — |
| Locate | STRING | — |
| LightSource | STRING | — |
| LightingType | STRING | — |
| ShotSize | STRING | — |
| Composition | STRING | — |
| FocalLength | STRING | — |
| CameraAngle | STRING | — |
| LensType | STRING | — |
| Color | STRING | — |
| Effect | STRING | — |
| Extra1 | STRING | — |
| Extra2 | STRING | — |
| Extra3 | STRING | — |
| Accessories | STRING | — |