ComfyUI Extension: comfyui_psd_smart_object
ComfyUI nodes for working with Photoshop mockup files - automatically project images onto PSD smart objects while preserving perspective, rotation, and scale transforms for seamless mockup rendering.
Custom Nodes (0)
README
ComfyUI PSD Smart Object Nodes
Custom ComfyUI nodes that understand Photoshop mockup files. Drop a PSD/PSB
into ComfyUI/input, feed any image (from the usual Load Image node or by
providing a path on disk), and the node will automatically project that image
onto every smart-object layer you select. Perspective, rotation, and scale
follow the transform data stored inside the PSD smart object, so the result
matches what you would get when replacing the layer inside Photoshop.
Features
- PSD Smart Object Inspector – Lists each smart-object layer (name, id, bounding box, transform box). Use it to confirm the layer names you want to target.
- PSD Mockup Embedder – Uploads PSD/PSB files directly from the node, reuses the PSD’s original clipping stack (shadows, highlights, rounded corners, etc.), projects your image into the smart objects, resizes the result to any width (default 800 px), and emits the composited tensor plus an auto-saved PNG.
- Works with PSD/PSB files, multiple smart objects, and either ComfyUI
IMAGEtensors or file paths.
Installation
- Copy this folder into
ComfyUI/custom_nodes/comfyui_psd_smart_object. - (Optional) install the lightweight dependencies inside your ComfyUI
environment:
pip install -r requirements.txt - Restart ComfyUI so it can discover the new nodes.
Usage
- Place PSD/PSB mockups under
ComfyUI/input/psd(or pass an absolute path). - On PSD Mockup Embedder, click “choose PSD to upload” (or drag a PSD onto
the node). The bundled frontend script uploads the file into
ComfyUI/inputand fills thepsd_filefield automatically. - Load your artwork with any stock
Load Image(orUpload Image) node and connect itsIMAGEoutput to the embedder. Leavesmart_object_namesempty to target the first smart object automatically, or pass a comma-separated list to specify others. - Adjust
output_widthif you need a specific export size (set to0to keep the PSD’s native resolution), then trigger the workflow. The node outputs:mockup_image: anIMAGEtensor that you can preview or post-process.debug_info: JSON describing the layers that were replaced.png_path: the auto-saved PNG underComfyUI/output, so you no longer need an extraSave Imagenode to receive a PNG file.
Notes & Limitations
- The result is flattened, so advanced Photoshop blend modes (e.g., highlight or shadow layers that sit on top of the smart object) are baked into the background. Complex lighting stacks may still need Photoshop for final touch-ups.
- Smart objects without transform metadata fall back to their axis-aligned bounding boxes.
- Perspective warping depends on OpenCV. If ComfyUI logs an import error,
install
opencv-python-headlessin the same environment.
Requirements
See requirements.txt. ComfyUI already brings Torch and Pillow, so the
additional runtime dependencies are:
psd-tools– parses PSD/PSB files and exposes smart-object metadataopencv-python-headless– handles the perspective warpnumpy– tensor and array glue code
Development
The nodes live in psd_mockup_node.py. Run
PYTHONPYCACHEPREFIX=/tmp/pycache python -m py_compile psd_mockup_node.py
before shipping changes to make sure there are no syntax issues.