PostImage2Discord
Drop your finished renders straight into a Discord channel
- images
PostImage2Discord is the node that makes your ComfyUI output show up in a Discord channel automatically, text and image together, the moment a job finishes. If you've ever wanted your render server to report back to the gang channel - or just to yourself on your phone - this is the easiest way to get there.
The best part: no bot, no token, no OAuth dance. A Discord webhook URL is all it needs.
How it works
The node does three things in sequence, and the source is short enough to read in one sitting:
- It saves the first image in your batch to ComfyUI's output folder (timestamped PNG, using the
filename_prefixyou set). - It opens that file and POSTs it to your webhook URL as a multipart upload.
- It attaches your text as the message content, with the image wired in as an embed via Discord's
attachment://convention.
So it's requests.post(url, files=..., data=payload_json). No SDK, no Discord library - just the standard requests module that ships with just about every Python environment.
Because it saves the image locally first, you also get a permanent copy in your output folder even though the node has no outputs of its own. Bonus.
The inputs that matter
images- plug in the IMAGE output from your sampler or VAE decode. It's a required input, so the node can't fire until an actual image exists.url- your webhook URL. Get it from a server you can manage: Server Settings → Integrations → Webhooks → "New Webhook" → "Copy Webhook URL".text- the message. Default is "Image generation is complete." You can put a caption, a prompt summary, whatever. It's multiline, so paragraphs work.filename_prefix- the prefix for the saved file in the output folder. Defaults toPostImage2Discord. Change it if you're running multiple of these and want to tell the outputs apart.execute- master switch. Set false to keep the wiring but skip the post.
There are no outputs. Like PostText, this is a terminal node - the last stop on the graph.
Installing it
It ships in the aburahamu/ComfyUI-RequestsPoster pack. Via ComfyUI Manager: "Install Custom Nodes" → search "requests" → install ComfyUI-RequestPoster → restart. Or the clone route:
cd ComfyUI/custom_nodes
git clone https://github.com/aburahamu/ComfyUI-RequestsPoster.git
Restart after installing. The pack's requirements.txt is requests, tweepy, Pillow, numpy, torch - for this node you only need requests, which is practically guaranteed to be installed already.
Common issues
"Webhook URL not working." Make sure you copied the full webhook URL, not the channel link. A channel link can't receive posts. Test it standalone first with a text-only post in Discord - if that works, the URL is fine.
Image shows as a broken embed or as an attachment file. Discord is picky about the attachment:// filename matching the uploaded filename. This node names the upload after the full saved path, which has worked since it was written in 2024, but if you're on a Discord that's strict about it, the fix is to use the simpler PostText for text-only and treat image embeds as best-effort.
Image didn't get saved anywhere. Check your ComfyUI output directory. If the save failed, the node raises before it even attempts the webhook call, so you'd see the error in the console rather than a silent miss.
Your webhook is now public knowledge. Anyone holding the URL can post to your channel, and it lives in your workflow JSON, which ComfyUI bakes into every saved PNG. Don't share workflows that contain a live webhook - rotate the URL if you think it leaked.
This is the node to reach for when "did it finish?" should be answered by Discord, not by checking a queue every five minutes.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | PostImage2Discord | — |
| url | STRING | https://~ | — |
| text | STRING | Image generation is complete. | — |
| execute | BOOLEAN | true | — |
Outputs (0)
No outputs