arkennemasis Catalogue Board (product x shot, Excalidraw + HTML)
The review board that shows you the gaps, not just the wins
- excalidraw_path
- html_path
- report
ArkCatalogueBoard is how you actually see a delivered catalogue instead of scrolling a folder. It lays every delivered image out as an .excalidraw board - a row per product, a column per shot - and writes an HTML contact sheet of the same layout. The thing that makes it more than a contact sheet is what it does with missing images: it draws them as gaps rather than silently closing up. The board doubles as the run's to-do list, because "which four am I still waiting on" is the question a review board exists to answer.
It reads the CSV and the output directory, not some in-memory state, so it's always a picture of what's actually on disk. A half-finished run shows you exactly the half that's missing.
How it works
Point csv_path at the catalogue CSV, set output_dir to the same catalogue the Save node used, and choose your axes: row_by defaults to garment (one product per row) and column_by to shot (front / detail / full / back across the page). The node scans the output directory and places each found image at its grid cell; missing cells are drawn as empty outlines.
The one input that will bite you is after. It's a STRING input whose value is deliberately unused - wire Catalogue Save's path into it purely to force an execution order. The tooltip explains the trap: without the edge, the board is free to read the output folder before the images land in it, and reports a set as half-missing that was actually complete. This is the classic ComfyUI ordering problem, and the pack solves it with a dummy dependency rather than hoping the scheduler guesses right.
Useful knobs: thumb_size (0 = match the source so nothing is downsampled; set 640 or 1024 if the board is too heavy to open), write_excalidraw and write_html (both on), and board_dir (default catalogue/review).
Outputs: excalidraw_path (open it in excalidraw.com or the desktop app to annotate), html_path (the contact sheet), and report.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install replicate httpx
Restart ComfyUI. No models or keys - it reads the folder and writes files.
Troubleshooting
- Board shows everything missing - you forgot the
afteredge, oroutput_dirdoesn't match the Save node's. The dummyafterwire isn't optional; it's the ordering fix. - Rows/columns look scrambled -
row_byandcolumn_byname CSV columns. A typo or a renamed column produces a weird grid. - Board is slow to open - drop
thumb_sizeto 640 or 1024. 0 means "full-res tiles," which is beautiful and heavy.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| csv_path | STRING | — | |
| output_diropt | STRING | catalogue | Where the generated images landed — the same value the Save node used. |
| board_diropt | STRING | catalogue/review | Where the board and contact sheet are written. |
| row_byopt | STRING | garment | CSV column that becomes the rows. 'garment' gives one product per row. |
| column_byopt | STRING | shot | CSV column that becomes the columns. 'shot' gives front / detail / full / back across the page. |
| thumb_sizeopt | INT | 00–4096 | Tile size. 0 = match the source, so nothing is downsampled. Set 640 or 1024 if the board is too heavy to open. |
| write_excalidrawopt | BOOLEAN | true | — |
| write_htmlopt | BOOLEAN | true | — |
| afteropt | STRING | Wire Catalogue Save's `path` here. The value is unused - it exists purely to make this node run AFTER the saves. Without the edge the board is free to read the output folder before the images land in it, and reports a set as half-missing that was actually complete. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| excalidraw_path | STRING | — |
| html_path | STRING | — |
| report | STRING | — |