JB · Location Block
A location generator with atmosphere and palette, output as JSON — the scene block
- location_json
- location_string
- palette_summary
Location is the half of a scene prompt that everyone forgets to build. You spend twenty minutes on the character and then write "city street" and hope. JB · Location Block is the fix: one node that generates a full scene - location, background/midground/foreground layers, time of day, weather, even an atmosphere-driving color palette - and outputs it as resolved JSON ready to merge into your character document via a JB · Stitcher.
It's the second "one-shot combo" block in the JB suite (Outfit Block being the first), and like its sibling it merges what used to be separate generator + combiner nodes into one. The location_lists/ data it draws from is the same folder the standalone SMP location generator used, and there are 245 location sets in the dropdown - from indoor/activities/axe_throwing_bar to indoor/archery_range, climbing gyms, karaoke rooms, and hundreds more, organized indoor/outdoor by activity. The Edit List modal edits the source files in place, next-run apply, no restart.
The structure you get
The generated location JSON is layered, which is the whole point of building it in a node rather than a flat sentence. The toggles control which layers exist:
enable_background(on by default) - the setting: what the space is, its scale, its mood.enable_midground- the fill between setting and subject.enable_architecture_detail- structural specifics (materials, fixtures, signage).enable_props- the objects that make a place feel used.enable_foreground_element(on) - a near-camera element for depth.enable_time_of_day(on) andenable_weather(on) - lighting and atmosphere.
Each layer is authored as its own sub-block, so a regional prompt can target location.background or location.props independently via JB · Extractor. That granularity is what makes the block feel like more than a fancy randomizer - you're building a scene you can dissect.
The color section (num_colors, harmony_type, palette_style, vibrancy, contrast, warmth, and the optional color_tone warm/cool/neutral override) drives an atmosphere palette that the location text references - "golden-hour amber light" rather than generic "warm lighting."
Outputs and install
Outputs: location_json (structured, colors resolved), location_string (flat form), and palette_summary (what the atmosphere palette resolved to). Installation is the usual pack clone with no extra deps:
cd ComfyUI/custom_nodes
git clone https://github.com/ping1979ping/comfyui-FVMtools
Restart ComfyUI; it's under FVM Tools/JB.
The honest note
This node is a catalog generator, and like any catalog it's only as good as its entries. The 245 sets are heavily weighted toward indoor activity venues - if you want a generic forest or an empty desert, you may find yourself scrolling past a lot of bowling alleys and pottery studios first, or editing a set to fit. That's the Edit List modal's job, and it's the reason the node lets you into the source files at all. Also remember: a location block produces JSON for structured-prompt models - if your encoder only reads flat text, use location_string and skip the structure.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| location_set | COMBO | 140 options: indoor/everyday_de/bathroom_mirror, indoor/everyday_de/kitchen_cooking, indoor/everyday_de/living_room_sofa, indoor/everyday_de/supermarket_aisle_de, indoor/everyday_us/dentist_waiting_room, indoor/everyday_us/family_living_room_tv, +134 | |
| seed | INT | 00–18446744073709550000 | — |
| enable_background | BOOLEAN | true | — |
| enable_midground | BOOLEAN | false | — |
| enable_architecture_detail | BOOLEAN | false | — |
| enable_props | BOOLEAN | false | — |
| enable_foreground_element | BOOLEAN | true | — |
| enable_time_of_day | BOOLEAN | true | — |
| enable_weather | BOOLEAN | true | — |
| color_mood | COMBO | everyday_muted | Picks the colour scheme with one setting instead of six sliders. auto: Keep the classic harmony engine and the six sliders. Unchanged behaviour for existing workflows. everyday_muted: What people actually wear: mostly neutrals with a few desaturated colours. Best default for casual sets. neutral_basics: White, grey, navy, beige, black only — plain basics, nothing that draws attention. one_accent: Neutral outfit plus exactly one saturated piece (the top). denim_casual: Denim bottoms and jacket with neutral tops and shoes. warm_earth: Cream, camel, rust, olive — warm and earthy. cool_muted: Grey, navy, slate, sage — cool and restrained. monochrome: One base colour in several shades. bold: Saturated and high contrast — designed, not everyday. pastel: Soft, light, low contrast. The six classic sliders (num_colors, harmony_type, palette_style, vibrancy, contrast, warmth) stay available as optional inputs and are used when the mood is 'auto' — or to override single values. |
| output_format | COMBO | loose_keys | natural: plain prose, no keys and no metadata — use this for Krea 2 / Qwen text encoders. loose_keys / pretty_json / compact_json: structured, for Ideogram 4 style JSON prompting. |
| overridesopt | STRING | Per-element overrides plus palette colour forcing. One directive per line — use the Edit Overrides button for a guided editor. Element lines (elements: background, midground, architecture_detail, props, foreground_element, time_of_day, weather): background: red brick wall with ivy force the phrase verbatim (may contain #tokens#) props: exclude drop the element even if enabled weather: auto explicit default (same as omitting) A forced element is active even when its enable toggle is off. Palette line — force the colours behind the roles instead of the mood/harmony pick: palette: ambient_light=dim tungsten evening, shadow_tone=inky shadows, primary=navy Roles: primary, secondary, accent, neutral, metallic, tertiary, ambient_light, shadow_tone. Unlisted roles keep their generated value. Lines starting with # are comments. | |
| color_toneopt | COMBO | Overrides the tone derived from the palette. | |
| num_colorsopt | INT | 52–8 | How many colours the scene draws from. |
| harmony_typeopt | COMBO | auto | Harmony engine only (color_mood = auto). |
| palette_styleopt | COMBO | general | Harmony engine only (color_mood = auto). |
| vibrancyopt | FLOAT | 0.500–1 | Harmony engine only (color_mood = auto). |
| contrastopt | FLOAT | 0.500–1 | Harmony engine only (color_mood = auto). |
| warmthopt | FLOAT | 0.500–1 | Warm/cool bias for ambient light and shadow phrases. Applies in every mood. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| location_json | STRING | — |
| location_string | STRING | — |
| palette_summary | STRING | — |