DiffusionGemma Advertisement Campaign Contract
Type It Once, and the Whole Ad Stack Can't Drift
- campaign_contract_json
- director_brief
- exact_copy_json
- contract_sha256
- status
- ready
DiffusionGemmaAdvertisementCampaignContract is where every governed advertisement in this pack begins: the single text-filled node where you type the brand, the product, the audience, the exact copy, and the deliverables, and it freezes all of that into one versioned JSON contract that the rest of the MiniMax-H3 Ref2VA stack reads. If you've ever lost a campaign because a headline in one node disagreed with a headline in another, this is the node that makes that class of bug structurally impossible downstream.
Think of it as a contract in the legal sense, not just a JSON blob. The node takes your human inputs and emits four outputs you actually use: campaign_contract_json (the authoritative document every later node checks against), director_brief (a prose brief the DiffusionGemma Director consumes to author the video prompt), exact_copy_json (the versioned, locked copy that the end-card renderer later draws - this is what guarantees your CTA and legal line appear exactly on screen), and contract_sha256, a hash that every downstream manifest embeds so a stale or hand-edited contract can never silently pass.
The fields that matter most for a beginner: brand_name, product_name, headline, and call_to_action are your non-negotiables - the end card requires brand, product, and headline or it rejects the run. Then there's claims_json, which is the interesting one and easy to misuse. It's a JSON array where each claim carries {text, status, evidence}, and only substantiated, approved claims are allowed into production guidance. This pack takes the "don't generate a claim you can't back up" idea seriously: an unsubstantiated superlative typed here doesn't get fixed later, it stays out. aspect_ratio defaults to 9:16, production_duration_seconds to 30, end_card_duration_seconds to 3, and deliverables_json already asks for 1:1 and 16:9 adaptations plus 15- and 6-second cutdowns. Those defaults match the governed v1 workflow, which is deliberate.
One thing the node refuses to do is pretend. It types deliverables you requested; it does not claim any of the aspect variants were actually rendered - that honesty is enforced by a later Adaptation Status node, not here. This "never claim media was rendered" discipline runs through the entire stack and is the difference between this and a demo-ware pack.
The usual beginner trap: treating claims_json and the copy fields as loose prompt text. They're not. Downstream validation checks exact strings - the end card verifies brand/product/CTA agree with the root contract, and the Media QA gate won't pass copy legibility without evidence. So type the exact final copy you're legally comfortable with here, once, and treat every later copy-adjacent node as a reader of this contract, not a place to re-edit it. If you need to change the campaign, change this node and let the chain regenerate - hand-editing a downstream contract to "match" will trip the SHA-256 checks instead.
Install is the whole-pack install: ComfyUI Manager search "DiffusionGemma Prompt Builder", or git clone https://github.com/exportAnything/ComfyUI-DiffusionGemmaPromptBuilder into custom_nodes and restart. The surrounding ad workflow needs ComfyUI 0.33.1+ and the MiniMax H3/Music 3 model downloads; this node is pure typed-JSON authoring and costs you no VRAM. If you plan to run a real campaign, also keep the pack's own warning close: generated in-scene labels are not reliable typography - only the deterministic end card guarantees exact copy.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| brand_name | STRING | — | |
| product_name | STRING | — | |
| variant_name | STRING | — | |
| audience | STRING | — | |
| campaign_objective | STRING | — | |
| headline | STRING | — | |
| call_to_action | STRING | — | |
| claims_json | STRING | [] | Each claim is {text,status,evidence}. Only substantiated approved claims enter production guidance. |
| production_duration_seconds | FLOAT | 30.00000.04166666666666666–60 | — |
| aspect_ratio | COMBO | 9:16 | 8 options: 9:16, 16:9, 1:1, 4:3, 3:4, 3:2, +2 |
| end_card_duration_seconds | FLOAT | 3.00000.04166666666666666–10 | — |
| deliverables_json | STRING | {"primary":"9:16","adaptations":["1:1","16:9"],"cutdowns_seconds":[15,6]} | — |
| campaign_nameopt | STRING | — | |
| legal_lineopt | STRING | — | |
| offer_textopt | STRING | — | |
| price_textopt | STRING | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| campaign_contract_json | STRING | — |
| director_brief | STRING | — |
| exact_copy_json | STRING | — |
| contract_sha256 | STRING | — |
| status | STRING | — |
| ready | BOOLEAN | — |