Nodes/comfyui_photoshop_bridge/Load from Photoshop
ComfyUI Node

Load from Photoshop

Push layers in, skip the file dance

By stevanisya·Created 8 months ago·Updated 6 months ago· 0
Load from Photoshop
    • IMAGE
    • MASK
    ◄image▾►

    If you do real design work in Photoshop and generation in ComfyUI, you know the hand-off: export a PNG, drag it into the browser, wire up a Load Image node, and pray the file you just saved is the one the dropdown shows. LoadFromPhotoshop kills that dance. Export a layer from Photoshop, and it shows up in this node's dropdown automatically - no file dragging, no path typing.

    There's a catch, and it's the first thing to understand: the node itself never talks to Photoshop. The name is a lie in the best way. It's just a smarter Load Image node that reads from a dedicated subfolder, ComfyUI/input/photoshop_bridge/. All the Photoshop magic lives elsewhere in the pack - a UXP plugin that exports your layer as a PNG, and an rsync agent that shuttles it over SSH to wherever ComfyUI runs. The node's only job is to notice the file landed and hand you its pixels.

    What you plug in

    The input side is as thin as it gets: a single image dropdown listing every PNG/JPG/JPEG/WebP in that bridge folder, newest first. That's it. No filenames to type, no path to configure - if it's in the folder, it's in the list.

    The outputs are where it earns its keep:

    • IMAGE - the pixels, straight from the file.
    • MASK - a real mask, but only if your export had an alpha channel. Load an RGBA PNG (Photoshop exports transparency when you export a layer with transparent areas) and the alpha becomes the mask. Export flat RGB and you get an all-zero mask.

    That mask output is the reason to reach for this over a plain Load Image: it feeds straight into a Set Latent Noise Mask for img2img or masked inpainting, so your Photoshop selection is your inpaint region. Keep the layer transparency and you've skipped the "paint the mask" step entirely. If you've ever hand-drawn a mask in ComfyUI after spending an hour on a selection in Photoshop, this pays for itself.

    The node is also live in a useful way: it checks each file's modified time, so when a new export lands, the node re-runs on its own rather than caching the old frame.

    Getting it installed

    This is a two-machine setup, and the README is written for a specific one: Photoshop on your Mac, ComfyUI on a RunPod pod. That's the whole design.

    1. On the pod: cd /workspace/ComfyUI/custom_nodes && git clone https://github.com/stevanisya/comfyui_photoshop_bridge.git, restart ComfyUI. The node appears under PhotoshopBridge. No pip install needed - the code uses only stock ComfyUI dependencies (Pillow, numpy, torch), and requirements.txt is empty on purpose.
    2. On the Mac: load photoshop_plugin/ via Plugins → Development → Load Plugin, pick an export folder, then run bash install-sync.sh to register a launchd service that watches that folder and rsyncs any change to the pod over SSH. Logs land in /tmp/comfyui-sync.log.
    3. One-time SSH key: generate one, paste the public key into RunPod → Settings → SSH Public Keys, and each new pod needs a short bootstrap (start sshd, install rsync, authorize the key).

    ComfyUI Manager can probably find it by searching "photoshop bridge," but the README's path is the clone. Given it's a two-host pipeline, you'll likely be editing sync-to-pod.sh anyway.

    Where people get burned

    • The dropdown shows "none" and the node outputs a black image. That's the not-found fallback - the node returns a blank 64×64 frame when the file isn't there. The sync didn't run. Check /tmp/comfyui-sync.log first, then confirm POD_IP and POD_PORT are filled in.
    • Old tutorials don't match. This repo was rewritten. Earlier versions shipped LoadImageFromPhotoshop and a SendImageToPhotoshop node that talked to the plugin over ports 8190/8191. The current code is file-sync only - one node, no ports, no server. If a video shows "Send Image to Photoshop," it's showing a version that no longer ships.
    • Every new pod resets everything. The rsync agent is installed on your Mac but points at a specific pod. Spin up a fresh RunPod and you must redo the pod bootstrap and re-run install-sync.sh with the new address.
    • Files older than 30 days get deleted by the sync script on each run. Fine if you're moving images out, annoying if you treat exports/ as a library.

    The honest verdict: if ComfyUI lives locally, this whole SSH-rsync rig is overkill and you're better off with a plugin that saves to your input folder directly. But if you're on RunPod - the exact situation this was built for - it's the least-friction way to get a Photoshop layer into a node, mask intact.

    CategoryPhotoshopBridge

    Inputs (1)

    NameTypeDefaultDescription
    imageCOMBO1 options: none

    Outputs (2)

    NameTypeDescription
    IMAGEIMAGE—
    MASKMASK—