Nodes/arkennemasis Nodes/arkennemasis Catalogue Board (product x shot, Excalidraw + HTML)
ComfyUI Node

arkennemasis Catalogue Board (product x shot, Excalidraw + HTML)

The review board that shows you the gaps, not just the wins

By Hishamahmer·Created about a month ago·Updated a day ago· 6
arkennemasis Catalogue Board (product x shot, Excalidraw + HTML)
    • excalidraw_path
    • html_path
    • report
    csv_path
    output_dircatalogue
    board_dircatalogue/review
    row_bygarment
    column_byshot
    thumb_size0
    write_excalidrawtrue
    write_htmltrue
    after

    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 after edge, or output_dir doesn't match the Save node's. The dummy after wire isn't optional; it's the ordering fix.
    • Rows/columns look scrambled - row_by and column_by name CSV columns. A typo or a renamed column produces a weird grid.
    • Board is slow to open - drop thumb_size to 640 or 1024. 0 means "full-res tiles," which is beautiful and heavy.
    Categoryarkennemasis/Variation

    Inputs (9)

    NameTypeDefaultDescription
    csv_pathSTRING
    output_diroptSTRINGcatalogueWhere the generated images landed — the same value the Save node used.
    board_diroptSTRINGcatalogue/reviewWhere the board and contact sheet are written.
    row_byoptSTRINGgarmentCSV column that becomes the rows. 'garment' gives one product per row.
    column_byoptSTRINGshotCSV column that becomes the columns. 'shot' gives front / detail / full / back across the page.
    thumb_sizeoptINT00–4096Tile size. 0 = match the source, so nothing is downsampled. Set 640 or 1024 if the board is too heavy to open.
    write_excalidrawoptBOOLEANtrue
    write_htmloptBOOLEANtrue
    afteroptSTRINGWire 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)

    NameTypeDescription
    excalidraw_pathSTRING
    html_pathSTRING
    reportSTRING