Nodes/MKRShift_Nodes/Publish End Card
ComfyUI Node

Publish End Card

Drop a branded end card on a video you never rendered in an NLE

By criskb·Created 7 months ago·Updated 5 months ago· 0
Publish End Card
  • background_image
  • image
  • end_card_info
width1080
height1350
titleThanks for watching
subtitleSee the full drop in the next post
body
ctaFollow for the next release
footerMKRShift Nodes
themeCarbon
margin_px64

Every video ends with a card: thanks for watching, follow for the next one, here's what else to check out. Normally that's an NLE or design-app job, which means breaking out of ComfyUI to make one static frame. MKRPublishEndCard renders the whole thing in the graph - title, subtitle, body, CTA, footer, on a themed background, with your generated image optionally sitting behind it. Bake it as the last frame of your render and your video ships with an outro it didn't need an editor for.

What it's for

It's the last-frame-of-the-video move in the pack's Publish lane. Feed it a finished render as background_image (or nothing, for a pure themed card), set the text, pick a theme, and out comes an IMAGE you can save or tack onto the end of your clip. It's also the natural companion to MKRPublishPromoFrame - the promo frame opens the video, the end card closes it.

How it works

Pure Pillow drawing. It creates a canvas at width × height (default 1080×1350 - a 4:5-ish portrait card), fills it from a theme palette, renders a themed background pattern, and draws the text block: title, subtitle, body, cta, footer, all inset by margin_px. Fonts auto-fit to the available space, and background_image gets fitted in behind the text. The four themes - Carbon, Paper, Signal, Blueprint - are flat color palettes, not templates; pick the one that matches your brand and move on.

Inputs and outputs

Inputs: width, height, title, subtitle, body, cta, footer, theme, margin_px, plus optional background_image. Outputs: image (the rendered IMAGE - wire it into a save or presave node) and end_card_info (a JSON string describing the card, handy for logging or a manifest).

Installing it

Pack install as always:

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

restart ComfyUI, or Manager → MKRShift_Nodes. Pure PIL - no ffmpeg, no dependencies.

Common issues

Remember it renders to image as an IMAGE tensor - nothing is written to disk until you add a save node, and that trips people up on a node that feels like it "outputs a file." Also, the copy area is real but bounded: very long body text will crowd the card, so write tight. And the default 1080×1350 is a portrait card - if your video is 16:9 landscape, set width/height to match or the card won't sit right on the frame.

CategoryMKRShift Nodes/Publish/Build

Inputs (10)

NameTypeDefaultDescription
widthINT1080256–4096
heightINT1350256–4096
titleSTRINGThanks for watching
subtitleSTRINGSee the full drop in the next post
bodySTRING
ctaSTRINGFollow for the next release
footerSTRINGMKRShift Nodes
themeCOMBOCarbon4 options: Carbon, Paper, Signal, Blueprint
margin_pxINT6412–256
background_imageoptIMAGE

Outputs (2)

NameTypeDescription
imageIMAGE
end_card_infoSTRING