图南PS桥接器
The node that dumps your Photoshop document onto the ComfyUI canvas
- 图像
- 真实选区蒙版
- 降噪强度
- 种子
- 正面提示词
- 负面提示词
- CFG
- 步数
TuNanPSBridge is the in-box of the 图南画桥 (TuNan Paint Bridge) round trip - the node that turns your active Photoshop document into inputs on the ComfyUI canvas. Pixels, selection mask, seed, denoise, CFG, even the prompts you typed into Photoshop: all of it arrives here as node outputs, ready to be wired into a sampler. If you've ever wanted "open Photoshop doc as a ComfyUI node," this is exactly that.
That loop has a graveyard reputation. Photoshop↔ComfyUI bridges keep getting built and quietly abandoned, partly because PS eats VRAM and partly because nobody maintains them. This is a fresh attempt by 北月 (Beiyue) of 图南绘画工作室, MIT-licensed, version 1.0.x - and it's new enough that it has essentially zero web footprint yet. It's also, predictably, a local bridge: your Photoshop plugin (.ccx) talks to your running ComfyUI over localhost HTTP and WebSocket. No cloud, no API key, nothing leaves your machine.
How it works
The key fact: this node has no inputs. It's a source. When you hit send in the Photoshop plugin, it uploads the current document plus your generation parameters to ComfyUI, and the bridge node holds that data in a singleton cache - every instance of TuNanPSBridge in your graph shows the same received data, because there's only one slot. It then re-exposes that data as outputs. Its change-detection is keyed on the received image's update id and a hash of the parameters, so ComfyUI automatically re-runs your workflow whenever Photoshop pushes something new. That's the whole trick: PS sends, your graph runs, and a few seconds later the result is back in your document.
The outputs that matter
- 图像 (IMAGE) is the star. Wire it into VAEEncode and you're doing img2img on the exact pixels PS sent.
- 真实选区蒙版 (MASK) is the actual Photoshop selection, delivered as a mask. Feed it to SetLatentNoiseMask and you get real masked inpainting that only touches the selection - this is the output that makes the loop worth it.
- 降噪强度, 种子, 正面提示词, 负面提示词, CFG, 步数 are the parameters PS passed across. Plug them into the KSampler and CLIP Text Encode nodes, and the sliders in Photoshop drive your run. Defaults when nothing's been received: denoise 0.5, seed -1 (random), CFG 7, steps 20.
Getting it installed
Install the pack with ComfyUI Manager (search tunan-paint-bridge-nodes or 图南画桥), or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/beiyue0208ly/tunan-paint-bridge-nodes
cd tunan-paint-bridge-nodes
pip install -r requirements.txt
Then restart ComfyUI. Requirements are light - aiohttp, numpy, Pillow, scipy - no models to download. But here's the part people skip: the pack alone does nothing. You also need the matching "图南画桥" Photoshop plugin (.ccx) from tunanart.cn or the releases page, and its version must match the node version (1.0.x ↔ 1.0.x). The nodes live under a Chinese-named category (图南画桥), so if you don't read Chinese, search the node list for TuNan.
When it looks broken
The classic "broken" state is actually a placeholder: if Photoshop hasn't sent anything yet, the node emits a dark gray image and an empty mask so your graph doesn't crash - that's the "waiting" state, not a bug. If you see it, the plugin isn't connected or hasn't been triggered, not that you wired something wrong. Check that ComfyUI is running before you hit send in PS, that the plugin is installed and version-matched, and that you pushed from the correct document. One real limitation: because the bridge is a singleton, running two bridge nodes expecting different data will just show the same image twice. Keep one, and keep it early in the graph.
Inputs (0)
No inputs
Outputs (8)
| Name | Type | Description |
|---|---|---|
| 图像 | IMAGE | — |
| 真实选区蒙版 | MASK | — |
| 降噪强度 | FLOAT | — |
| 种子 | INT | — |
| 正面提示词 | STRING | — |
| 负面提示词 | STRING | — |
| CFG | FLOAT | — |
| 步数 | INT | — |