Nodes/ComfyUI PS Connector/PS Workflow Config (PS)
ComfyUI Node

PS Workflow Config (PS)

The 'configuration sheet' that makes Photoshop understand your graph

By doubley2000·Created 5 months ago·Updated 4 months ago· 5
PS Workflow Config (PS)
  • model
  • lora
  • image1
  • mask1
  • image2
  • mask2
  • image3
  • mask3
  • image4
  • mask4
    prompt
    size_logictrue
    width512
    height512
    long_side_pixels1024
    img1_reqtrue
    msk1_reqtrue
    img2_reqtrue
    msk2_reqtrue
    img3_reqtrue
    msk3_reqtrue
    img4_reqtrue
    msk4_reqtrue
    neg_prompt

    This is the node that turns a ComfyUI workflow into something a Photoshop user can actually drive, and the README says it plainly: only workflows containing it function properly in the PS plugin's Default mode. The analogy the author uses is a "configuration sheet," and it fits. PS Workflow Config doesn't generate anything - its do_nothing function literally returns nothing at runtime. Its job happens before generation, when the PS frontend loads your workflow JSON, finds this node, and traces every wire attached to it to learn the graph's anatomy: which node is the base model, which is image 1, which inputs control width and height.

    That's the mechanism, and it's why it has no output ports. You connect other nodes' outputs into it, and the PS panel reads those connections as instructions for what UI to draw. It's a metadata hub wearing a node's clothes.

    The inputs that matter, from the schema:

    • model (MODEL, required) - your checkpoint loader's MODEL output (or a UNETLoader, as the pack's Flux example does).
    • lora (MODEL, required) - a LoRA loader's MODEL output. Both are required, so with no LoRA you feed the checkpoint's MODEL here too.
    • prompt (STRING, required) - your positive prompt, wired from a primitive.
    • width / height (INT) - whatever controls generation size (primitives, or converted size inputs).
    • image1image4, mask1mask4 (optional) - the Load Image / Load Image (as Mask) slots; whatever you upload in PS replaces these.
    • neg_prompt (optional STRING) - connect it and PS adds a negative prompt box.
    • img1_reqmsk4_req (BOOLEAN, default true) - the fool-proofing switches. true shows an orange plus and PS blocks generate if that image isn't uploaded; false shows a grey plus and the plugin silently deletes the unused node and wiring at generate time.
    • size_logic and long_side_pixels - the README says don't fill these by hand; the PS panel's "As Img1" checkbox and Size setting control them.

    For a beginner the practical recipe is: drop this node in a standard txt2img or img2img graph, wire model, lora, prompt, and a couple of image/mask slots, set the _req toggles to match which slots you want mandatory, and save the workflow to ComfyUI/user/default/workflows/PSflows/ in API format with a filename starting with ( (no (C) prefix - that's for Custom mode). The PS panel then shows fixed image and mask upload slots, and whatever you upload replaces the corresponding loader nodes. Right-click an image slot to extract the canvas or a selection; double-click a layer to run an LLM tagger on it.

    Install is the shared pack install: ComfyUI Manager, search "ComfyUI PS Connector", or

    cd ComfyUI/custom_nodes
    git clone https://github.com/doubley2000/ComfyUI-PS-Connector
    

    then restart ComfyUI. First boot auto-clones ComfyUI-Lora-Manager and copies three example workflows, so restart once more after that. No extra Python deps - the pack's pyproject.toml declares none.

    The classic failures all come from the two "format" rules: the workflow must be exported in API format (the README stresses this in its very first note), and the filename must start with (. Miss either and PS simply never sees it. The other gotcha is the _req toggles - leave something true that you never supply and generate gets blocked with a popup, which reads as "broken" when it's just the safety catch doing its job. One more thing worth knowing: this is a young pack from a solo author who's upfront that the code is AI-generated, so the ambitious bits (like the smart size logic) can evolve between versions. When in doubt, copy the wiring from the shipped (Flux.2 Klein 9B) example - it shows the full Default-mode configuration in one place.

    CategoryPS_Connector

    Inputs (24)

    NameTypeDefaultDescription
    modelMODEL
    loraMODEL
    promptSTRING
    size_logicBOOLEANtrue
    widthINT512
    heightINT512
    long_side_pixelsINT1024256–8192
    img1_reqBOOLEANtrue
    msk1_reqBOOLEANtrue
    img2_reqBOOLEANtrue
    msk2_reqBOOLEANtrue
    img3_reqBOOLEANtrue
    msk3_reqBOOLEANtrue
    img4_reqBOOLEANtrue
    msk4_reqBOOLEANtrue
    image1optIMAGE
    mask1optMASK
    image2optIMAGE
    mask2optMASK
    image3optIMAGE
    mask3optMASK
    image4optIMAGE
    mask4optMASK
    neg_promptoptSTRING

    Outputs (0)

    No outputs