Telegram: Send Video
Send ComfyUI video to Telegram without babysitting a file save
- video
ComfyUI video is a ten-minute commitment. You hit Queue, go make coffee, come back, and if the render box is on another machine you're checking logs and ssh'ing around to see if it finished. Telegram: Send Video is the fix: it takes the VIDEO output from the built-in Create Video node (or anything else that produces the VIDEO type) and pushes the finished MP4 to a Telegram chat the moment it's done. Queue it, walk away, let your phone tell you the clip is waiting.
It's the video sibling of Telegram: Send Image, same pack, same credentials, same "output node that ends the workflow" shape. There's no output socket - connect it at the end and the graph stops there.
How it works
The clever bit is that "the VIDEO type" is not one thing - video nodes across the ecosystem hand you wildly different objects. This node normalizes whatever it gets before sending:
- Comfy video objects (
VideoFromComponents,VideoFromFile, etc.) that expose a.save_to(path)method - it writes a temporary MP4 via that. - A dict with a
path- used as-is. - A dict with
framesandfps- encoded into a temp MP4 withimageio/imageio-ffmpeg. - A plain string path, or a single-element list holding a path.
That covers essentially every VIDEO shape in the wild. Once it has a real .mp4, it POSTs it to Telegram - sendVideo with supports_streaming=True for a proper preview-and-stream video, and/or sendDocument for a plain file. Temporary files get deleted after sending, and it uses a generous 600-second timeout because a 1080p MP4 can take a while to upload.
The inputs that matter
video(VIDEO, required) - plug the output ofCreate Videoor any other video node straight in.caption(STRING, multiline) - message text, optional.send_as_video(boolean, defaultTrue) - sends as a Telegram video with streaming support. This is the one you want for a glanceable preview.send_as_document(boolean, defaultFalse) - sends the same file as a plain document.
Notice the default difference from the image node: here document mode is off by default. Video files are big, so the author didn't default you into sending everything twice. Turn send_as_document on only if you actually need the raw file as a download.
Installing it
ComfyUI Manager, search "TelegramSender". Or:
cd ComfyUI/custom_nodes
git clone https://github.com/smbdsbrain/ComfyUI-TelegramSender
Then install the real dependencies in ComfyUI's Python environment:
pip install requests imageio imageio-ffmpeg
Unlike the image node, this one genuinely needs all three - imageio-ffmpeg is what encodes frames to MP4 when you connect a frames + fps dict instead of a ready file. Restart ComfyUI, node lives under utils/telegram.
Credentials are shared across the whole pack, first source wins: ComfyUI Settings → Telegram Sender → Credentials (recommended, stored in user/default/comfy.settings.json), a telegram_config.json next to the node, or the TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID env vars. Token from @BotFather, chat ID numeric or @channel username.
Troubleshooting
- Error about
imageiobeing missing - you connected frames+fps but skipped the pip install. That package is what turns frames into an MP4. - The node sits there for ages - it's encoding the temp MP4 and uploading it, all blocking. A long render plus a slow uplink can push toward that 600s timeout. If it times out, the upload itself is the bottleneck; shorten the clip or try again when the uplink is freer.
- Video arrives but won't play inline - Telegram's preview generation can lag for big files; the file itself is fine. Re-send as a shorter clip if you care about the inline preview.
- "bot_token and/or chat_id not specified" - same credential resolution as the rest of the pack; the error points at Settings.
If you routinely produce a batch of clips, the video-album node in this pack groups several into one message instead of spamming one per render.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | — | |
| caption | STRING | — | |
| send_as_video | BOOLEAN | true | — |
| send_as_document | BOOLEAN | false | — |
Outputs (0)
No outputs