DiffusionGemma Advertisement Workflow Controls
The one settings authority that keeps the whole ad campaign governed
- master_duration_seconds
- native_shot_count
- performance_mode
- cutdown_15_start_seconds
- cutdown_6_start_seconds
- deliverables_json
- master_aspect_ratio
- h3_generation_mode
- h3_shot_count_mode
- h3_shot_count_override
- h3_audio_mode
- h3_dialogue_mode
- excerpt_start_seconds
- generation_model
- max_h3_lane_seconds
- master_aspect_ratio_override
- status
- ready
Complicated commercial workflows die from setting drift: the duration widget over here says 30s, the aspect over there says 9:16, and the deliverable list in a third place says something else entirely, and nobody notices until the master comes out wrong. DiffusionGemma Advertisement WorkflowControls is the advertisement system's answer - one node that is the shared settings authority for the whole saved campaign, and its settings are deliberately locked down.
Look at the inputs and you'll see the governance philosophy immediately. master_duration has exactly one choice (30 seconds). performance_mode exposes only Natural and Dance - no Lyrics mode, because v1 of this workflow refuses to offer lyrics without timed-evidence infrastructure. This is intentional hiding, not missing features: the README says v1 locks the governed 30-second 9:16 master and 30/15/6 deliverable contract, Ref2VA mode, H3 audio/dialogue policies, zero-second excerpt start, the MiniMax H3 generation model, and a 15-second lane ceiling. Unsupported reference layouts, non-relay seam modes, Lyrics performance without timed evidence, and separate VO without an input path are hidden rather than offered as broken choices.
The one thing you actually set
native_shot_count (default 8) - how many native [Shot N] camera blocks Director plans inside the master. That single number is shared with the Director and the Advertisement planner, so changing it here ripples through prompt authoring and lane planning consistently instead of leaving the two disagreeing. Everything else is locked, and the outputs broadcast the resolved contract to every consumer:
master_duration_seconds, native_shot_count, performance_mode, cutdown_15_start_seconds and cutdown_6_start_seconds (derived tail starts for the real cutdowns), deliverables_json (the 30/15/6 contract), master_aspect_ratio, h3_generation_mode (ref2va), h3_shot_count_mode and h3_shot_count_override, h3_audio_mode, h3_dialogue_mode, excerpt_start_seconds, generation_model, max_h3_lane_seconds, and master_aspect_ratio_override, plus status and ready.
Why it's built this way
The pack treats advertisement work as a separate, versioned contract stack precisely so commercial fields and delivery rules can't leak into the generic Director or the known-good music-video V6 graph. Duplicated consumer widgets elsewhere in the workflow are linked to this node rather than independently editable - the README says it outright: "duplicated consumer widgets are linked rather than independently editable." One authority, many readers. If you're handed a campaign workflow, the first thing to understand is that most of what you'd normally fiddle with isn't yours to fiddle with; your creative lever is the shot count (and, conceptually, the upstream creative brief).
The outputs also expose what the advertisement version deliberately restricts versus the general music-video path: only Natural or Dance performance is exposed, H3 audio and dialogue policies are pinned, and the splitter's aspect is driven from here (9:16) so the rendered master and the QA'd cutdowns all agree on the frame.
Installing it
One of 55 nodes in exportAnything/ComfyUI-DiffusionGemmaPromptBuilder, under prompt/diffusiongemma/advertising:
cd ComfyUI/custom_nodes
git clone https://github.com/exportAnything/ComfyUI-DiffusionGemmaPromptBuilder
or ComfyUI Manager → DiffusionGemma Prompt Builder → restart. The full governed campaign also expects ComfyUI ≥0.33.1 and the MiniMax H3 + Music 3 model files from the README; the DiffusionGemma Director model folder lives at ComfyUI/models/LLM/diffusiongemma-26B-A4B-it-NVFP4 (edit the loader's path if you launched from a different working directory).
Common issues
- "Why can't I change the duration/performance?" Because v1 locks them - read the node as a contract, not a control panel. If a campaign genuinely needs 15 seconds or Lyrics mode, that's a v1 contract limitation, not a bug to hack around.
- Aspect or duration mismatch on output. If the rendered master disagrees with the contract, check that downstream is consuming this node's outputs (linked widgets) rather than its own baked-in settings.
- Deliverable expectations vs. reality. The 15s and 6s cutdowns are real temporal cutdowns; requested 1:1 and 16:9 adaptations are plan-only until a semantic reframe renderer is connected. The status outputs exist so you can see what was actually rendered versus merely recorded as desired.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| master_duration | COMBO | 30 seconds | 1 options: 30 seconds |
| native_shot_count | INT | 81–99 | — |
| performance_mode | COMBO | Natural / audio-led sync | 2 options: Natural / audio-led sync, Dance / music sync |
Outputs (18)
| Name | Type | Description |
|---|---|---|
| master_duration_seconds | FLOAT | — |
| native_shot_count | INT | — |
| performance_mode | Dance / music sync,Lyrics + lip sync,Natural / audio-led sync | — |
| cutdown_15_start_seconds | FLOAT | — |
| cutdown_6_start_seconds | FLOAT | — |
| deliverables_json | STRING | — |
| master_aspect_ratio | 9:16,16:9,1:1,4:3,3:4,3:2,2:3,21:9 | — |
| h3_generation_mode | t2va,ref2va | — |
| h3_shot_count_mode | auto,1,2,3,4,5,6,7,8,9,10,11,12,custom | — |
| h3_shot_count_override | INT | — |
| h3_audio_mode | auto_scene_audio,explicit_sound_design,visual_only | — |
| h3_dialogue_mode | auto,required,off | — |
| excerpt_start_seconds | FLOAT | — |
| generation_model | STRING | — |
| max_h3_lane_seconds | FLOAT | — |
| master_aspect_ratio_override | STRING | — |
| status | STRING | — |
| ready | BOOLEAN | — |