Nodes/DiffusionGemma Prompt Builder/DiffusionGemma Advertisement End Card Renderer
ComfyUI Node

DiffusionGemma Advertisement End Card Renderer

The Only Place Your Brand Copy Is Guaranteed to Appear Verbatim

By exportAnything·Created 2 months ago·Updated a day ago· 44
DiffusionGemma Advertisement End Card Renderer
    • end_card_images
    • end_card_report_json
    • status
    • ready
    advertisement_contract_json
    width720
    height1280
    background_color#10141f
    brand_color#ffffff
    accent_color#76f7c5

    DiffusionGemmaAdvertisementEndCardRenderer is where the advertisement stack finally stops generating and starts typesetting. Everything before it - the DiffusionGemma Director, MiniMax H3, even the music - is stochastic. This node is not. It takes the campaign-locked finishing copy from the contract and renders it onto an end card deterministically, in a legible hierarchy, for the exact contracted number of frames. And its signature rule is refreshingly hard-nosed: copy that cannot fit is rejected, never clipped. If your legal line is too long for the card, you get an error and a fixable problem, not a truncated sentence that could get an actual lawyer annoyed.

    The inputs are the advertisement_contract_json and the card geometry: width/height (defaults 720×1280 for the 9:16 master) plus three colors - background_color (#10141f, a near-black), brand_color (white), and accent_color (a mint green). The node validates that the contract carries an exact end-card frame count matching the contracted duration, checks the tensor won't blow past a 2 GiB allocation ceiling, and then lays out the fields in a hierarchy: brand name largest, then product, headline, variant, offer, price, CTA, approved claims, and the legal line. It reads those fields from the contract's exact finishing copy - the same SHA-locked strings the campaign contract froze - and verifies the card's brand/product/CTA actually agree with the root contract before it renders a single pixel. Outputs are end_card_images (a batch, one frame for each of the 3-second card's 72 frames at 24 fps), end_card_report_json, and status/ready.

    The reason this node exists is worth dwelling on, because it's the pack's strongest opinion. Generated in-scene text in AI video is unreliable - labels warp, spelling drifts, claims get mangled - and no amount of prompt engineering fixes it reliably. So instead of trusting the video model with your brand, the stack routes all legal and contractual copy to a deterministic renderer where it cannot be misspelled. The README is blunt about it: treat generated in-scene labels as unreliable typography; exact brand, CTA, and legal copy is guaranteed only in the deterministic end card.

    For a beginner, the practical knobs are the three colors (pick brand-appropriate values) and - much more importantly - the copy you typed upstream in the Campaign Contract. The end card is only as good as the exact copy it draws from. If it rejects, the error message is the useful part: it'll tell you which field couldn't fit or which hierarchy rule broke. Adjust the copy or the card size, not the node.

    Install is pack-wide: ComfyUI Manager search "DiffusionGemma Prompt Builder", or git clone https://github.com/exportAnything/ComfyUI-DiffusionGemmaPromptBuilder into custom_nodes and restart. The ad workflow wants ComfyUI 0.33.1+ and the H3 model files for the video; this node renders its frames locally with Pillow-style drawing - fast, deterministic, and free of GPU sampling. When the Master Finisher later replaces the master's tail with this card, the delivered ad finally contains text you can stand behind.

    Categoryprompt/diffusiongemma/advertising

    Inputs (6)

    NameTypeDefaultDescription
    advertisement_contract_jsonSTRING
    widthINT72064–4096
    heightINT128064–4096
    background_colorSTRING#10141f
    brand_colorSTRING#ffffff
    accent_colorSTRING#76f7c5

    Outputs (4)

    NameTypeDescription
    end_card_imagesIMAGE
    end_card_report_jsonSTRING
    statusSTRING
    readyBOOLEAN