Publish Promo Frame
Frame your renders as launch cards
- image
- image
- publish_frame_info
A promo frame is the launch card you drop on social media when a release drops: your render, a badge, a title, a line of copy, a call to action. MKRPublishPromoFrame does the layout in ComfyUI - feed it an image (or a whole batch of them), set the text, pick a theme, and get back properly framed cards ready to post. If MKRPublishEndCard closes the video, this one opens the announcement.
What it's for
You've generated the artwork for a release and you need the social-ready version: the image with "FEATURED" up top, a title, a subtitle, a line of body copy, and "See more" at the bottom. Instead of compositing it in a design app by hand for every variant, this node does it in-graph - and because it takes an IMAGE batch, one run frames every variant you generated. It's the batch-friendly, on-brand version of "slap text on my render."
How it works
Pure Pillow compositing. For each frame in the batch it builds a card: a themed background, the image fitted in, a header band with badge + title + subtitle, a body copy block of copy_height_px, and a footer with the CTA. Layout is driven by the pixel knobs - margin_px, header_px, copy_height_px - which are genuinely useful for fitting your image's aspect ratio. show_index stamps a number on each card so a 20-variant batch stays identifiable. The Carbon/Paper/Signal/Blueprint themes are the same flat palettes the end card uses, so the two match when used together.
Inputs and outputs
Inputs: image, title, subtitle, body, badge, cta, footer, theme, margin_px, header_px, copy_height_px, show_index. Outputs: image (the framed batch - one card per input frame) and publish_frame_info (JSON with the card layout facts, useful for logging or a manifest).
Installing it
Pack install as usual:
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
restart ComfyUI, or Manager → MKRShift_Nodes. Pure PIL, no ffmpeg, no extra deps. (It's also one of the pack's nodes with a custom frontend via WEB_DIRECTORY.)
Common issues
Output is IMAGE, not files - add a save or MKRPreSave node to actually write your cards. The copy areas are fixed pixel heights: a long body gets clipped rather than auto-expanding, so keep it short or raise copy_height_px. And show_index is on by default, which is great for a batch but means your final "clean" post card will carry a number - flip it off for the one you actually publish.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| title | STRING | New Release | — |
| subtitle | STRING | Feature highlight | — |
| body | STRING | — | |
| badge | STRING | FEATURED | — |
| cta | STRING | See more | — |
| footer | STRING | MKRShift Nodes | — |
| theme | COMBO | Carbon | 4 options: Carbon, Paper, Signal, Blueprint |
| margin_px | INT | 4812–256 | — |
| header_px | INT | 10436–256 | — |
| copy_height_px | INT | 16880–320 | — |
| show_index | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| publish_frame_info | STRING | — |