arkennemasis Catalogue Load (CSV in, one row per image)
Checking every reference before you pay for a single image
- rows_json
- count
- report
ArkCatalogueLoad is the front door to the pack's short CSV catalogue path - the one for when the prompts already exist and one row means one image. It reads a catalogue spreadsheet and turns it into the rows that a fan-out node renders. But its real job is cheaper than reading: it validates that every referenced file actually exists before anything is generated, because a missing reference discovered at row 60 has already cost you 59 images.
That ordering is the whole point. Catalogue generation is paid per image, and this node exists to make the expensive part fail-safe. The tooltip frames it as a design rule: validate first, generate second.
How it works
Point csv_path at a catalogue CSV with the columns output_filename, input_1_model_ref, input_2_cloth_ref, and full_prompt. One row is one output image - the model reference, the cloth reference, and the prompt are all right there in the row. The node loads the rows, applies your filters, and - the important bit - verifies on disk that every model and cloth reference exists. With strict on (the default), a single missing reference fails the whole run before anything is billed. With strict off, those rows are skipped and the rest carry on.
The knobs you'll actually use:
only- a filter, onecolumn=valueper line.shot=frontrenders every front shot;garment_code=m01renders one product. Blank runs everything.limit- render at most this many rows. 0 = all. The tooltip's suggestion is the right one: set 1 for the first end-to-end test, because a one-row run proves the whole chain cheaply.offset- skip that many matching rows first. Withlimitit renders a deliberate slice.output_dir- where results are written, underComfyUI/output(defaultcatalogue).skip_existing- on by default. Rows whose output file already exists are left out. This is how a part-finished run resumes without paying twice.
Outputs: rows_json (the ready-to-fan-out rows), count, and a report.
Installing
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install replicate httpx
Restart ComfyUI (ComfyUI Manager finds it as arkennemasis). No models or keys for this node - the generation nodes downstream are where the money goes.
Troubleshooting
- "Every row is already delivered" -
skip_existingsaw existing files. That's resume working, not a bug. - A strict failure on a missing reference is the feature: fix the path in the CSV, don't flip
strictoff and hope. You can, but you're choosing to discover the miss at the save stage instead. - Remember the pack's own warning about this path: it gives up the ten-stage pipeline's measurement, bounded retry, job records, drift audit, and human gate. Use the short path when the answers are already written, not when they still need working out.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| csv_path | STRING | The catalogue CSV. Needs the columns output_filename, input_1_model_ref, input_2_cloth_ref, full_prompt. | |
| onlyopt | STRING | Filter, one 'column=value' per line. e.g. 'shot=front' to render every front shot, or 'garment_code=m01' to render one product. Blank runs everything. | |
| limitopt | INT | 00–100000 | Render at most this many rows. 0 = all. Set 1 for the first end-to-end test. |
| offsetopt | INT | 00–100000 | Skip this many matching rows first. With limit, renders a deliberate slice. |
| output_diropt | STRING | catalogue | Where results are written, under ComfyUI/output. Also what skip_existing looks in. |
| skip_existingopt | BOOLEAN | true | Leave out rows whose output file already exists. This is how a part-finished run resumes without paying twice. |
| strictopt | BOOLEAN | true | Fail the run if any row's model or cloth reference is missing from disk. Off = skip those rows and carry on. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| rows_json | STRING | — |
| count | INT | — |
| report | STRING | — |