Nodes/arkennemasis Nodes/arkennemasis Contact Sheet (all stills in one image)
ComfyUI Node

arkennemasis Contact Sheet (all stills in one image)

Every scene's still, one image, no hunting

By Hishamahmer·Created 2 months ago·Updated 8 days ago· 9
arkennemasis Contact Sheet (all stills in one image)
  • images
  • sheet
columns5
cell_width420
labeltrue

ArkContactSheet tiles every scene's still into one numbered contact sheet - the quickest way to check that a character held across a whole storyboard, and honestly the first thing most people do after a video run anyway. Instead of opening twelve output images one by one, you get the entire run on one sheet with numbers on each tile so a drifting scene is easy to name.

It lives in the arkennemasis Utility category and is built to sit at the end of the pack's per-scene loop: Scene List fans the plan out, each scene renders its still, and the loop delivers every scene's image to this node's single images socket, in order. INPUT_IS_LIST is set, so it receives the whole run in one call.

The inputs that matter

  • images (required) - wire the scene chain's image output here. The loop delivers every scene to this one socket, in order.
  • columns - tiles per row, default 5.
  • cell_width - width of each tile in pixels, default 420. The height follows the first image's aspect ratio, so a mixed-resolution run stays aligned.
  • label - default on: number each tile. For checking character consistency across a storyboard, the numbering is the feature - "scene 7's face drifted" is a much more useful sentence than "the fourth one in the second row."

Output is a single sheet IMAGE. Preview it, save it, or feed it into a report node - it's just a picture.

Why this is the right tool for the job

Character consistency is one of the most discussed problems in the whole ComfyUI space - the KB tracks it as one of the most stable top-of-mind concerns across the community, and the standard failure mode is exactly this: a character that holds for six scenes and quietly changes at seven, where the change is invisible when you're looking at clips one at a time. A contact sheet compresses the whole run to a single glance so the drift becomes obvious. It doesn't fix the drift - no node does - but it turns "did it hold?" from a hopeful guess into something you can check in two seconds.

Installing

It's part of the comfyui-arkennemasis pack:

cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install replicate httpx

restart, and it's under arkennemasis/Utility. No models, no API keys, nothing heavy - it's tensor-to-PIL tiling with a dark background and labels, so it renders instantly.

The one thing to watch: it takes the first frame of each image batch it receives. If your scene chain outputs a batch of several frames, you get the first still, which is what you want for a consistency check - but if you wired the wrong output (a full video tensor, say), you'll see the first frame of the whole thing repeated in a way that makes no sense. Wire the still, not the clip, and this node does its quiet job exactly as advertised.

Categoryarkennemasis/Utility

Inputs (4)

NameTypeDefaultDescription
imagesIMAGEWire the scene chain's image output here. The loop delivers every scene to this one socket, in order.
columnsINT51–10Tiles per row.
cell_widthINT42064–2048Width of each tile. Height follows the first image's aspect ratio.
labelBOOLEANtrueNumber each tile, so a drifting scene is easy to name.

Outputs (1)

NameTypeDescription
sheetIMAGE