Layer Pack
The boring node that makes layered saves painless
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- image_10
- image_11
- image_12
- image_13
- image_14
- image_15
- image_16
- layers
- layer_names
Layer Pack is the least exciting node in the Save Image (XMP) pack, and the one you'll reach for every time you actually use the pack's headline feature. It generates nothing. It saves nothing. Its entire job is to take up to sixteen images with names and hand back two aligned lists - a layers list and a layer_names list - because that's exactly the shape Save Layered TIFF (XMP) wants its inputs in.
You can build those lists by hand, and you'll regret it the moment the naming drifts out of sync and Photoshop opens a TIFF full of generic layer-01, layer-02 pages. Layer Pack keeps the pairing automatic: whatever image slots you fill get names, in order, and empty slots are skipped entirely.
How it works
Sixteen optional inputs, image_1 through image_16, each with a matching name_1 through name_16 that defaults to "layer-1" through "layer-16". Whatever you actually connect gets collected; unconnected slots are skipped, so the lists stay compact with no gap-filling. Both outputs come out as lists - that's the part to remember, they're not single tensors.
The inputs that matter are just image_N and name_N. If you don't care about names, leave the defaults - but since the name is what shows up in the editor's Layers panel, spending ten seconds naming the four layers you actually use makes the final TIFF dramatically more pleasant to open. The outputs are layers (IMAGE list) and layer_names (STRING list), wired straight into the matching inputs of Save Layered TIFF (XMP).
Honestly, that's the whole node. It's small because it should be - it's the assembly step for the pack's real feature, and keeping it separate means you can organize layers without committing to the TIFF save.
Installing it
It ships in the same pack as everything else, so there's nothing extra to install: ComfyUI Manager → search "Save Image (XMP)", or
cd ComfyUI/custom_nodes
git clone https://github.com/connerkward/comfyui-save-image-xmp.git
then restart, and it appears in the image category. It needs no extra dependencies - it's pure graph plumbing.
Common issues
The one real trap is wiring it to the wrong kind of slot. Layer Pack's outputs are lists, so they feed list-expecting inputs - Save Layered TIFF (XMP)'s layers and layer_names - not a plain IMAGE input. Connect layers somewhere expecting a single image and you'll get a type mismatch. Names don't have to be unique, but duplicates make a multi-page TIFF annoying to read in an editor, so keep them descriptive.
Inputs (32)
| Name | Type | Default | Description |
|---|---|---|---|
| image_1opt | IMAGE | — | |
| name_1opt | STRING | layer-1 | — |
| image_2opt | IMAGE | — | |
| name_2opt | STRING | layer-2 | — |
| image_3opt | IMAGE | — | |
| name_3opt | STRING | layer-3 | — |
| image_4opt | IMAGE | — | |
| name_4opt | STRING | layer-4 | — |
| image_5opt | IMAGE | — | |
| name_5opt | STRING | layer-5 | — |
| image_6opt | IMAGE | — | |
| name_6opt | STRING | layer-6 | — |
| image_7opt | IMAGE | — | |
| name_7opt | STRING | layer-7 | — |
| image_8opt | IMAGE | — | |
| name_8opt | STRING | layer-8 | — |
| image_9opt | IMAGE | — | |
| name_9opt | STRING | layer-9 | — |
| image_10opt | IMAGE | — | |
| name_10opt | STRING | layer-10 | — |
| image_11opt | IMAGE | — | |
| name_11opt | STRING | layer-11 | — |
| image_12opt | IMAGE | — | |
| name_12opt | STRING | layer-12 | — |
| image_13opt | IMAGE | — | |
| name_13opt | STRING | layer-13 | — |
| image_14opt | IMAGE | — | |
| name_14opt | STRING | layer-14 | — |
| image_15opt | IMAGE | — | |
| name_15opt | STRING | layer-15 | — |
| image_16opt | IMAGE | — | |
| name_16opt | STRING | layer-16 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| layers | IMAGE | — |
| layer_names | STRING | — |