Nodes/ComfyUI-Slack/Send Video to Slack
ComfyUI Node

Send Video to Slack

Encode and post your video to Slack in one node — FFmpeg included

By claussteinmassl·Created 4 months ago·Updated 3 months ago· 1
Send Video to Slack
  • images
  • audio
    channel
    filename_prefixComfyUI
    save_outputfalse
    save_location
    output_folder
    frame_rate24.0
    format
    quality81
    title
    message
    thread_ts
    user_id

    Sharing video out of ComfyUI is two annoying jobs: encoding a frame batch into something that plays, and getting that file somewhere someone else can watch it. Send Video to Slack collapses both into one output node. Feed it the frame batch at the end of your video pipeline, pick a format and a frame rate, and it pipes the frames through the bundled FFmpeg into an MP4 (or WebM, or GIF) and uploads the result to your channel. "Bundled" is doing real work there - the pack pulls in imageio-ffmpeg, which ships a static FFmpeg binary, so you don't need a separate system FFmpeg install.

    How it works

    The node is a sibling of Send Image to Slack with an encode step bolted on. It takes an IMAGE frame batch (B, H, W, C), pads frames to even dimensions automatically (most codecs refuse odd sizes, and this removes a whole class of "why did the encode die" errors), runs them through FFmpeg at your chosen frame_rate, and uploads the resulting file. If you feed the optional audio input an AUDIO tensor, it muxes the sound in - handy when your video pipeline also produces a soundtrack, and impossible for GIF, which has no audio track.

    The settings that matter

    • format - h264-mp4, h265-mp4, vp9-webm, or gif. h264-MP4 is the one that just works everywhere, and it's what I'd leave it on. h265-MP4 gets you smaller files at similar quality but some players choke; vp9-WebM is great for low bitrates but Slack's playback is more predictable with MP4. GIF is the fallback for "must play literally anywhere," at the cost of file size.
    • frame_rate - 1–120 fps, default 24. Set it to whatever your sampler's frames were generated for; too high just makes the upload bigger.
    • quality - 0–100 (default 81), mapped to an FFmpeg CRF. 100 = best quality/biggest file, 0 = smallest. Ignored for GIF.

    channel, filename_prefix, save_output/save_location/output_folder, and the optional title/message/thread_ts/user_id all behave exactly like the image node: names resolve automatically, DMs work with @user, and saving a local copy is additive and happens before upload.

    Install

    Same pack, same steps as the rest of ComfyUI-Slack - ComfyUI Manager (search "ComfyUI-Slack") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/claussteinmassl/ComfyUI-Slack
    pip install -r requirements.txt
    

    No models to download. The only setup that takes real minutes is the Slack app: create it from the README's manifest, install it, set SLACK_BOT_TOKEN in the environment that launches ComfyUI, and /invite @ComfyUI to the channel. That token is read from the environment, never typed into the node.

    Troubleshooting

    The one failure mode you're likely to hit is FFmpeg encoding failed - the README points at an empty frame batch or a codec your FFmpeg build doesn't support, which is rare since the binary is bundled. A frame batch with an odd dimension used to be the silent killer here; the even-padding handles it for you. And the usual Slack gotchas apply: not_in_channel means you skipped the invite, and a private channel won't resolve until the bot is a member.

    CategorySlack

    Inputs (14)

    NameTypeDefaultDescription
    imagesIMAGE
    channelSTRINGChannel or user: #general, @alice, or a raw ID. A user (@name or U…) is sent as a direct message. Names resolve automatically; the bot must be a member of private channels.
    filename_prefixSTRINGComfyUI
    save_outputBOOLEANfalseAlso write the video to disk in addition to sending it to Slack.
    save_locationCOMBOWhere the saved copy is written. 'ComfyUI output folder' uses ComfyUI's output directory with an auto-incrementing counter; 'Absolute path' writes into the folder set below.
    output_folderSTRINGBase folder for the saved copy. Used only when save_location is 'Absolute path'; combined with filename_prefix.
    frame_rateFLOAT24.01–120
    formatCOMBO4 options: h264-mp4, h265-mp4, vp9-webm, gif
    qualityINT810–100
    audiooptAUDIO
    titleoptSTRING
    messageoptSTRING
    thread_tsoptSTRINGSlack thread to reply under. Connect a Slack Thread Start node here to post into the same thread as other send nodes. Leave unconnected to post to the channel root. Also auto-filled by the Slack listener.
    user_idoptSTRINGSlack user ID to @-mention in the result message. Auto-filled by the Slack listener.

    Outputs (0)

    No outputs