Read CSV Row Node
Your prompts live in a CSV now — this node dials through them
- prompt
ReadCSVRowNode is the smallest idea in this pack and honestly the most useful one: you drop a .csv file with one prompt per line into the node's folder, pick a row index, and it hands you that line's text as a prompt string. That's it. No API, no key, no model downloads, no dependencies beyond Python's standard library. The whole node is a prompt library on a dial.
You reach for it when you want the same workflow to produce a batch of different images, one per prompt. Put your ten favorite styles in a CSV, set row_index to 0, queue, set it to 1, queue again. It's the explicit, spreadsheet-editable cousin of the {a|b|c} wildcard trick from the prompt-engineering playbook - same goal (variety without writing new prompts), but you can hand the list to someone who'll never touch your graph. The author posted it on r/StableDiffusion as a "workflow included" share, and the README is refreshingly honest about the origin: "95% ChatGPT/DeepSeek | 5% me."
How it actually works
On load, the node walks the pack's own CSV/ folder (custom_nodes/ReadCSV_ComfyUI/CSV/) and turns every .csv it finds into the csv_file dropdown. When you run it, it opens that file, reads all rows, and returns rows[row_index][0].strip() - i.e. it only ever looks at the first column of the row you picked. One prompt per line, no commas in your prompts unless they're inside quotes, or it'll split weird.
Two inputs, and only two matter:
csv_file- dropdown of every CSV found in the folder. Add files, restart (or re-add the node) to refresh the list.row_index- INT, default 0, min 0, max 1000. Row 0 is the first line. The 1000 cap means your file can have at most 1001 lines; nobody's hitting that with hand-written prompts.
One output: prompt (STRING). Wire it straight into the prompt input of a CLIPTextEncode node and forget about it.
Where people get burned
The errors don't throw - they return. If row_index is past the end of the file, the node prints to the console and hands back the literal string Erro: Índice de linha inválido ("invalid row index" - the author's Brazilian Portuguese leaks out here). That string then goes straight into your CLIP encoder as if it were a real prompt. You'll render a baffling image instead of getting an error, which is exactly backwards from what you want when you're iterating. Same story for a missing file: Erro: Arquivo CSV não encontrado. So when your output suddenly looks like a typo-art piece, check the terminal, not the image.
Also worth knowing: the dropdown list is built when the node is created, so a new CSV you add to the folder won't show up until you restart ComfyUI or delete and re-add the node.
Installing it
ComfyUI Manager → search "ReadCSV_ComfyUI" and install, or from a terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/Arkanun/ReadCSV_ComfyUI
Then restart ComfyUI. There's no requirements.txt and nothing to download - the pack imports only csv, os, and standard ComfyUI internals, so it works out of the box. Drop your prompts file at custom_nodes/ReadCSV_ComfyUI/CSV/my_styles.csv (the repo ships a small my_styles.csv to copy) and you're generating.
It's a one-trick node with a hard row cap and error strings that sneak into your prompts - but for the "one list, batch of variants" workflow, it's genuinely the thing you reach for.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| csv_file | COMBO | 1 options: my_styles.csv | |
| row_index | INT | 00–1000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |