Nodes/comfyui-tgbridge/Telegram Workflow Report
ComfyUI Node

Telegram Workflow Report

The node that DMs you your finished video

By blkot·Created 2 months ago·Updated 2 months ago· 0
Telegram Workflow Report
  • filenames
  • base_model_obj
  • high_model_obj
  • low_model_obj
  • high_loras_obj
  • low_loras_obj
  • reference_image
  • filenames
  • message_preview
enabledtrue
upload_modefinal_only
send_asauto
message_modecaption_and_reply
failure_modewarn
title
positive_prompt
negative_prompt
extra_notes
base_model
high_model
low_model
vae
lora_1_name
lora_1_strength0.00
lora_2_name
lora_2_strength0.00
lora_3_name
lora_3_strength0.00
lora_4_name
lora_4_strength0.00
lora_5_name
lora_5_strength0.00
high_loras
low_loras
extra_loras
seed-1
steps0
cfg0.0
sampler
scheduler
width0
height0
frames0
fps0.00
reference_label
send_reference_imagefalse

Wan 2.2 is not a one-minute hobby. A 720p clip costs the better part of a work meeting on a 4090, and a VACE 14B generation can run 15–40 minutes. You're going to step away from the box, and when you come back you want the finished file on your phone with its settings attached - not a folder full of ComfyUI_00047_.mp4 to go hunting through. Telegram Workflow Report, the flagship node of the blkot/ComfyUI-tgBridge pack, is that node.

The connection is a single wire:

VideoHelperSuite Video Combine → Telegram Workflow Report

It takes the VHS_FILENAMES output, uploads the finished video to a Telegram chat, group, or channel through the Bot API, and posts a compact caption plus an optional detailed reply. Direction matters: this is the "here's your result" node, not a remote-control bot. People have wired Telegram to ComfyUI for remote control since 2023; this pack only ships results one way.

How it works

The node reads the (save_dir, [file paths]) tuple that VideoHelperSuite's Video Combine emits, checks which files actually exist, and picks what to send. upload_mode = final_only (the default) sends just the last output; all_files sends everything. With send_as = auto it guesses the Telegram method from the extension - .mp4/.mov/.webm/.mkv to video, .png/.jpg/.gif to photo, anything else to document. It's plain HTTP to api.telegram.org via the requests library - no paid API, just the free BotFather token.

The report respects Telegram's limits: the caption is trimmed to 1024 characters and detail messages are split into multiple messages at 4096. The caption is a compact "Generation Complete" header; the reply thread carries prompt, model, LoRA, and settings sections, and message_mode = caption_reply_and_json also attaches a comfyui_generation_metadata.json.

The inputs that actually matter

There are a lot of widgets, and you don't need most of them on day one:

  • filenames - the VHS_FILENAMES from Video Combine. Technically optional, but without it there's nothing to send.
  • enabled - set to false and nothing uploads, but message_preview still builds. This is your test switch.
  • upload_mode / send_as - covered above.
  • failure_mode - warn (default) logs errors and lets the workflow finish; raise stops the run. Use raise while debugging.

Everything else is optional metadata: title, prompts, model fields (base_model, high_model, low_model, vae), five LoRA name/strength slots, and seed, steps, cfg, sampler, scheduler, width, height, frames, fps. There's also a reference_image + send_reference_image pair to attach a before-shot to the same thread.

Here's the part that makes it painless for Wan workflows: alongside each string field there's an object variant - base_model_obj, high_model_obj, low_model_obj (WANVIDEOMODEL) and high_loras_obj, low_loras_obj (WANVIDLORA). Wire the object straight out of Kijai's WanVideoWrapper and the node extracts the name and LoRA list itself; the object wins if both are connected. Wan 2.2 is a two-expert MoE, so "high" and "low" map to the high-noise and low-noise passes - the same split behind putting speed LoRAs on the low pass only.

Both outputs are useful: filenames passes through unchanged so your graph stays chainable, and message_preview is a STRING showing exactly what it would have sent.

Installing it

Grab it with ComfyUI Manager (search "tgBridge") or:

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

Restart ComfyUI; the nodes appear under a Telegram category. Dependencies are just Pillow and requests - no model downloads. The external setup is the Telegram side: a BotFather token, the bot added to the chat with posting rights, and the chat's numeric ID (group/channel IDs look like -1001234567890, not the visible name).

Configure without leaking secrets

The pack deliberately keeps tokens out of workflow JSON. Recommended path is environment variables:

export COMFY_TG_BOT_TOKEN="123456:ABC..."
export COMFY_TG_CHAT_ID="-1001234567890"

For a forum topic, add export COMFY_TG_MESSAGE_THREAD_ID="7". A git-ignored config/telegram.json in the pack folder works too, with the same fields; env vars win if both exist.

Testing without spamming your chat

Set enabled = false, run, and read message_preview - it prints the caption, follow-up messages, and files it would have uploaded. Flip enabled = true when it looks right. The author's framing is worth respecting: this is a usable but early pack built for personal Wan workflows, so test before bolting it onto a production graph.

Two failure modes bite people. "Chat not found" means the bot isn't in that chat, or you pasted the name instead of the numeric ID. And if the node isn't configured at all, it runs a test mode that builds the preview but skips the upload - handy, but easy to misread as "broken". When debugging, set failure_mode = raise so real errors stop the run; once it's stable, warn is right - you don't want a notification node killing a finished render.

CategoryTelegram

Inputs (44)

NameTypeDefaultDescription
enabledBOOLEANtrue
upload_modeCOMBOfinal_only2 options: final_only, all_files
send_asCOMBOauto4 options: auto, video, photo, document
message_modeCOMBOcaption_and_reply3 options: caption_only, caption_and_reply, caption_reply_and_json
failure_modeCOMBOwarn2 options: warn, raise
filenamesoptVHS_FILENAMES
titleoptSTRING
positive_promptoptSTRING
negative_promptoptSTRING
extra_notesoptSTRING
base_modeloptSTRING
base_model_objoptWANVIDEOMODEL
high_modeloptSTRING
high_model_objoptWANVIDEOMODEL
low_modeloptSTRING
low_model_objoptWANVIDEOMODEL
vaeoptSTRING
lora_1_nameoptSTRING
lora_1_strengthoptFLOAT0.00
lora_2_nameoptSTRING
lora_2_strengthoptFLOAT0.00
lora_3_nameoptSTRING
lora_3_strengthoptFLOAT0.00
lora_4_nameoptSTRING
lora_4_strengthoptFLOAT0.00
lora_5_nameoptSTRING
lora_5_strengthoptFLOAT0.00
high_loras_objoptWANVIDLORA
high_lorasoptSTRING
low_loras_objoptWANVIDLORA
low_lorasoptSTRING
extra_lorasoptSTRING
seedoptINT-1
stepsoptINT0
cfgoptFLOAT0.0
sampleroptSTRING
scheduleroptSTRING
widthoptINT0
heightoptINT0
framesoptINT0
fpsoptFLOAT0.00
reference_labeloptSTRING
reference_imageoptIMAGE
send_reference_imageoptBOOLEANfalse

Outputs (2)

NameTypeDescription
filenamesVHS_FILENAMES
message_previewSTRING