VULCA Layers (Analyze)
Split a painting into semantic layers, like a restorer's plan
- layers_json
VULCA Layers (Analyze) decomposes an artwork into its semantic layers and returns the structure as JSON. The SDK's showcase example is Michelangelo's Creation of Adam split into five layers - background, Adam, God and the angels, the red cloak, the ground - each with a hierarchical semantic path. That's the mental model: instead of treating an image as one flat thing, this node identifies the meaningful parts a creator (or a restorer) would think in terms of.
Why bother? Because once you have the layer structure, you can do surgical things the single-image nodes can't: redraw one layer without touching the rest, composite pieces back, or evaluate layers independently. It's the analysis half of the pack's layer story; VULCA Layers (Export) and VULCA Layers (Composite) are the output half.
How it works
It's a thin call into the SDK's analyze_layers, wrapped in an async loop. It takes an image file path and returns layers_json - a JSON string describing the detected layer structure, including those semantic paths (like subject.person[0] for a figure). The actual pixel-cutting happens in the SDK's segmentation stack - SAM, YOLO, DINO and SegFormer are the tools the SDK docs name - but this ComfyUI node itself only hands you the structure. It's worth knowing that the real layer-cutting tools live in the SDK (vulca layers split), and this node is the part that got wired into ComfyUI.
Inputs and output
One required input, image_path, and one output, layers_json. That's the whole surface. Wire the JSON into a text preview to read it, or pass the image onward to the export/composite nodes for the full layer flow.
Install and troubleshooting
Same as the pack:
cd ComfyUI/custom_nodes/
git clone https://github.com/vulca-org/comfyui-vulca
pip install "vulca>=0.12.0"
Restart, or use ComfyUI Manager (search "VULCA"). No API key needed for the analysis itself.
Where people get confused: the layer structure JSON isn't the layer files. Analyze returns the plan, not the cut PNGs - if you wire it expecting images, you'll get a string. And if the segmentation models behind the SDK aren't installed (they come with the SDK's extras, not this pack), the deeper layer operations can fail even though Analyze itself runs. Start with the structure, check it, then decide whether you need the full split.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image_path | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| layers_json | STRING | — |