π§ Scene Context Picker
The Picker is the Scene Generator's co-pilot
- context_text
- scene_type_suggestion
- resolved_setting
- resolved_tone
- seed_used
π§ Scene Context Picker is the node you run before you prompt. It procedurally resolves a narrative context - which setting, which situation, which tone, which atmosphere flourish - and hands it to you as structured text plus a suggestion for how to frame the shot. No LLM in sight, no API key, no model weights to download: it's pure template sampling from the JSON that ships in the pack.
Think of it as the recommendation layer. The Scene Generator in the same pack is a structured multi-character prompt engine with spatial layout; the Picker is its upstream companion. Wire context_text into the Generator's theme input, feed scene_type_suggestion to its scene_type, and let one seed drive both nodes. That one-seed coupling is the trick - the whole deterministic design exists so your story stays coherent across rolls instead of fighting itself.
How it works
Same machinery as the Composer sibling, simpler surface. Your genre filters the eligible settings; genre2 adds a union mashup so settings matching either genre roll. The node picks a setting, then a situation from that setting's pool, then pulls a tone modifier and an environment-aware atmosphere flourish ("beneath driving rain and storm-lit skies" for a storm scene, not a clear-sky line). The assembled context_text is subject + situation + tone modifier + atmosphere, comma-joined. scene_type_suggestion is the situation's composition bias - face_off, gathering, at_work, and the like - which is exactly what the Generator's layout engine wants to know.
The inputs and outputs that matter
You set genre, genre2, tone, setting, and seed. Note the setting list here is venue-level (cruise_ship, harbor_tavern, pirate_ship) - the two-tier archetype filtering ("on a nautical vessel" gating venues by facet tags) is a Composer feature, not a Picker one. If you want that, use the Composer. The Picker's five outputs are the payoff:
context_text- the prose context, ready to wire into the Generator'stheme.scene_type_suggestion- the composition bias, feeds the Generator'sscene_type.resolved_settingandresolved_tone- the actual values that got rolled, handy for logging or for checking "why did this come out as a tavern?" when the dice landed.seed_used- the seed that produced everything, so a sampler can share the roll.
That's the real difference from the Composer: no render_prompt, no composition axis - but you get the resolved values and the scene-type suggestion, which is exactly what pairing it with the Generator needs.
Install
It's the same pack as the Composer, so one install covers both:
cd ComfyUI/custom_nodes/
git clone https://github.com/elliefox-ai/comfyui-scene-generator.git ComfyUI-EllieFoxAI-scene-gen
Restart ComfyUI, look under SceneGen. ComfyUI Manager search for "comfyui-scene-generator" works too. No requirements.txt, no model downloads - the README's claim of zero extra Python dependencies checks out against the shipped code.
Where people get burned
This pack barely registers in the community yet - a corpus search for "scene generator" in r/comfyui returns single-digit mentions, mostly unrelated. You're an early adopter, so keep the README open. Two things to remember: if a downloaded workflow references the Picker and also wants Outpaint Controller or PromptPeek, those nodes moved to sibling repos (comfyui-elliefoxai-canvas, comfyui-elliefoxai-diagnostics), not here. And the prose it emits is natural language for text-conditioned models - if your checkpoint is tag-trained (Illustrious, Pony), don't be shocked when it underperforms; this is built for the structured-prompt / LLM-encoder school of prompting. Wire seed_used into the Generator's seed so the context and the composition stay on the same page.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| genre | COMBO | π² random | 8 options: π² random, historical, modern, sci_fi, fantasy, western, +2 |
| genre2 | COMBO | none | Optional second genre. Union with genre β settings matching EITHER are eligible (mashup). |
| tone | COMBO | π² random | 11 options: π² random, violent, charming, satirical, eerie, mundane, +5 |
| setting | COMBO | π² random | Force a specific setting, or let Genre(s) filter randomly. |
| seed | INT | 420β4294967295 | β |
| pose | BOOLEAN | false | Append a posture phrase to each staged character (static stance register). The Scene Character Roller has the same toggle β if both fire, doubled cues are yours. |
| positioning | BOOLEAN | false | Stage the cast with placement templates β lateral/relational phrases per cast size ('on the near side of the frame, β¦'). Off (default) = no placement language; the renderer arranges. |
| expression | BOOLEAN | false | Append a facial-expression phrase to each staged character ('brow knotted, lips a thin line'). Pairs with pose; if both fire, the cues compound. |
| character_1opt | STRING | Wire a character description ('a fisher in a yellow slicker'). Default staging adds no placement β enable the positioning toggle for template staging. Soft cap: 4; beyond that, extras are ignored. | |
| character_2opt | STRING | Additional character. Leave unwired to drop. | |
| character_3opt | STRING | Additional character. Leave unwired to drop. | |
| character_4opt | STRING | Additional character. Leave unwired to drop. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| context_text | STRING | β |
| scene_type_suggestion | STRING | β |
| resolved_setting | STRING | β |
| resolved_tone | STRING | β |
| seed_used | INT | β |