VRGDG_ThemeSplitter
One block of ideas in, ten prompt ingredients out
- character_description
- song_theme_style
- environment
- lighting
- camera_motion
- physical_interaction
- facial_expression
- shots
- outfit_rules
- character_visibility
If you've ever tried to keep a character's face, outfit, and environment consistent across a dozen AI-generated scenes, you know the pain this node exists to kill. VRGDG_ThemeSplitter takes one wall of ideas - a "context block" describing your song, character, and scenes - and splits it into the ten separate prompt ingredients your video workflow actually needs. It's the structuring step between "here's my concept" and "generate scene 7."
Think of it as the skeleton key for VRGameDevGirl's music video pipeline. The workflow starts from a reference image and an audio track, then everything downstream depends on having clean, separate descriptions for character, environment, lighting, and so on. This node is what produces that separation, so the per-scene prompt builder can assemble shots that stay on-theme instead of drifting.
How it works
One input, ten outputs:
context_block(multiline text) - paste your whole concept here: who's in it, what the song's about, the mood, the look you're going for.
Out of it come ten separate strings:
character_description,song_theme_style,environment,lightingcamera_motion,physical_interaction,facial_expression,shotsoutfit_rules,character_visibility
Each output is a focused snippet you can wire into a prompt template. Keeping character_description and outfit_rules separate is the trick that keeps your character looking like the same person across scenes - the outfit can change per scene without the base description drifting. The character_visibility output tells you how much of the character to show, which matters when a video model otherwise decides to crop or transform them between shots.
The philosophy here is straight out of good character-consistency practice: separate the things that must stay constant from the things that can vary, and let a template recombine them. The node is essentially a structured prompt parser - you get the benefit of a well-organized prompt without having to hand-write the same skeleton ten times.
Installing it
It's part of the VRGameDevGirl Video Enhancement Nodes pack. Install via ComfyUI Manager (search vrgamedev) or:
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl
Restart ComfyUI afterward. No model downloads, no API keys - this node is pure text processing and runs entirely locally. The pack's requirements.txt (kornia, librosa, imageio) is mostly for the image/video processing nodes; if Manager installed the pack you shouldn't need to touch pip at all.
Common issues
Outputs come back empty or lumped together. The splitter works on how you wrote the context block. If your context is a single run-on sentence, don't expect clean separation - write the concept as distinct ideas (character, environment, lighting, shots) and the outputs come out much cleaner.
You can't find the outputs in your graph. The ten outputs are all STRING, and they're easy to miss if you're used to a node that returns one image tensor. Look for the text outputs on the right side of the node, and wire them into your prompt template nodes.
It's a niche node if you're not building a full music video, but for anyone who is, it's the difference between a coherent multi-scene video and ten videos that happen to share a character name.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| context_block | STRING | — |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| character_description | STRING | — |
| song_theme_style | STRING | — |
| environment | STRING | — |
| lighting | STRING | — |
| camera_motion | STRING | — |
| physical_interaction | STRING | — |
| facial_expression | STRING | — |
| shots | STRING | — |
| outfit_rules | STRING | — |
| character_visibility | STRING | — |