ComfyUI Node
Scene Weaver - Horror
Randomize a whole Horror scene in one click: an environment, up to 4 entities and the relationships between them, as natural-language prose plus structured JSON. Set 'Entities' to reveal and fill more subject slots. Every field can be locked to a value or set to None. Wire prompt_text into a Show Text node to read the prompt.
Scene Weaver - Horror
- entity_1_in
- entity_2_in
- entity_3_in
- entity_4_in
- prompt_text
- prompt_json
◄seed0►
◄entity_count1►
◄scene_filterNo gore►
◄set_all_fieldsOff►
◄environmentRandom►
◄entity1_kindRandom►
◄entity1_subkindRandom►
◄entity1_scaleRandom►
◄entity1_conditionRandom►
◄entity1_formRandom►
◄entity1_materialRandom►
◄entity1_primary_colorRandom►
◄entity1_accent_colorRandom►
◄entity1_markingsRandom►
◄entity1_surface_detailRandom►
◄entity1_appendagesRandom►
◄entity1_appendage_countRandom►
◄entity1_emittersRandom►
◄entity1_emitter_countRandom►
◄entity1_emitter_colorRandom►
◄entity1_armamentRandom►
◄entity1_armament_countRandom►
◄entity1_sensorsRandom►
◄entity1_sensor_countRandom►
◄entity1_apertureRandom►
◄entity1_extrasRandom►
◄entity1_situationRandom►
◄entity2_kindRandom►
◄entity2_subkindRandom►
◄entity2_scaleRandom►
◄entity2_conditionRandom►
◄entity2_situationRandom►
◄entity3_kindRandom►
◄entity3_subkindRandom►
◄entity3_scaleRandom►
◄entity3_conditionRandom►
◄entity3_situationRandom►
◄entity4_kindRandom►
◄entity4_subkindRandom►
◄entity4_scaleRandom►
◄entity4_conditionRandom►
◄entity4_situationRandom►
◄relation_1_2None►
◄relation_1_3None►
◄relation_1_4None►
◄relation_2_3None►
◄relation_2_4None►
◄relation_3_4None►
◄relation_1_2_positionNone►
◄relation_1_3_positionNone►
◄relation_1_4_positionNone►
◄relation_2_3_positionNone►
◄relation_2_4_positionNone►
◄relation_3_4_positionNone►
◄contextRandom►
Categoryconditioning/sceneweaver
Inputs (59)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00–18446744073709550000 | Seed for reproducible scenes. The control below defaults to 'randomize' so every run differs; set it to 'fixed' to reproduce a scene. |
| entity_count | COMBO | 1 | How many subjects the scene has. Slot 1 is described most fully and later slots a little less, because an image has one subject's worth of attention to share out however many things are in it. Raising this reveals that slot's widgets on the node; every slot it reveals is described, never just named. Two is the sweet spot -- three and four work, and read as a crowd. A Scene Entity wired into a slot occupies it whatever this says. How much a slot actually speaks is also capped by what kind of thing it is: a creature or a person carries its whole component list, a station or a wreck only its silhouette, so a slot full of locked widgets can still read shorter than you expect. |
| scene_filter | COMBO | No gore | What random draws may pick. 'No gore' (the default) leaves graphic wounds, blood and killing out of the description entirely; 'Gore only' favours them. A value you lock yourself is always kept. |
| set_all_fields | COMBO | Off | Bulk-edit every descriptive widget below. 'Randomize all' turns each one that says 'None' into 'Random'; 'Clear all' does the reverse. A field you locked to a value is never touched, and the control snaps back to 'Off' as soon as it has run, so it stays a one-shot action rather than a mode. |
| environment | COMBO | Random | Where the scene is: the wilds, a graveyard, the water, a town, a room, underground, or somewhere that should not exist. Scene | Random=randomize, value=lock, None=omit |
| entity1_kind | COMBO | Random | What this entity fundamentally is. Scopes every other field on this slot -- its options and its labels. Set to None to leave the slot empty. Identity | Random=randomize, value=lock, None=omit |
| entity1_subkind | COMBO | Random | The specific type within the kind -- a ghoul, a banshee, a porcelain doll. Identity | Random=randomize, value=lock, None=omit |
| entity1_scale | COMBO | Random | How big it is relative to a person. Identity | Random=randomize, value=lock, None=omit |
| entity1_condition | COMBO | Random | Age, decay and state -- rotting, freshly risen, entombed, boarded-up. Identity | Random=randomize, value=lock, None=omit |
| entity1_form | COMBO | Random | The silhouette: a gait, a build, a body plan, a building's shape. Form & Material | Random=randomize, value=lock, None=omit |
| entity1_material | COMBO | Random | What it is covered in, made of, or wearing. Form & Material | Random=randomize, value=lock, None=omit |
| entity1_primary_color | COMBO | Random | The colour of the thing itself -- skin, robes, wallpaper. Never the lighting. Surface & Colour | Random=randomize, value=lock, None=omit |
| entity1_accent_color | COMBO | Random | A secondary colour: trim, a stain, a sash. Surface & Colour | Random=randomize, value=lock, None=omit |
| entity1_markings | COMBO | Random | Scrawled sigils, stains, burn marks. Carries no readable lettering. Surface & Colour | Random=randomize, value=lock, None=omit |
| entity1_surface_detail | COMBO | Random | Finish and wear at close range -- cracked varnish, grave dirt, wet rot. Surface & Colour | Random=randomize, value=lock, None=omit |
| entity1_appendages | COMBO | Random | What sticks out: antlers, claws, tendrils, a lantern pole, a chimney. Components | Random=randomize, value=lock, None=omit |
| entity1_appendage_count | COMBO | Random | How many. Composed into the appendage phrase. Components | Random=randomize, value=lock, None=omit |
| entity1_emitters | COMBO | Random | What shines with its own light: eyes that catch the dark, a lantern, a cold spectral flame. Components | Random=randomize, value=lock, None=omit |
| entity1_emitter_count | COMBO | Random | How many. Components | Random=randomize, value=lock, None=omit |
| entity1_emitter_color | COMBO | Random | The colour of the unnatural light. Belongs to the subject, not the lighting. Components | Random=randomize, value=lock, None=omit |
| entity1_armament | COMBO | Random | Weapons and implements, carried or grown: a cleaver, a sickle, claws. Components | Random=randomize, value=lock, None=omit |
| entity1_armament_count | COMBO | Random | How many. Components | Random=randomize, value=lock, None=omit |
| entity1_sensors | COMBO | Random | How it watches: eyes, too many eyes, a blank stare. Components | Random=randomize, value=lock, None=omit |
| entity1_sensor_count | COMBO | Random | How many. Components | Random=randomize, value=lock, None=omit |
| entity1_aperture | COMBO | Random | The opening: a mouth, a mask, a door hanging open. Components | Random=randomize, value=lock, None=omit |
| entity1_extras | COMBO | Random | One more distinguishing thing -- a lantern, a satchel, a chain of keys. Components | Random=randomize, value=lock, None=omit |
| entity1_situation | COMBO | Random | What this entity is doing -- often something very still. Scene | Random=randomize, value=lock, None=omit |
| entity2_kind | COMBO | Random | What this entity fundamentally is. Scopes every other field on this slot -- its options and its labels. Set to None to leave the slot empty. Identity | Random=randomize, value=lock, None=omit |
| entity2_subkind | COMBO | Random | The specific type within the kind -- a ghoul, a banshee, a porcelain doll. Identity | Random=randomize, value=lock, None=omit |
| entity2_scale | COMBO | Random | How big it is relative to a person. Identity | Random=randomize, value=lock, None=omit |
| entity2_condition | COMBO | Random | Age, decay and state -- rotting, freshly risen, entombed, boarded-up. Identity | Random=randomize, value=lock, None=omit |
| entity2_situation | COMBO | Random | What this entity is doing -- often something very still. Scene | Random=randomize, value=lock, None=omit |
| entity3_kind | COMBO | Random | What this entity fundamentally is. Scopes every other field on this slot -- its options and its labels. Set to None to leave the slot empty. Identity | Random=randomize, value=lock, None=omit |
| entity3_subkind | COMBO | Random | The specific type within the kind -- a ghoul, a banshee, a porcelain doll. Identity | Random=randomize, value=lock, None=omit |
| entity3_scale | COMBO | Random | How big it is relative to a person. Identity | Random=randomize, value=lock, None=omit |
| entity3_condition | COMBO | Random | Age, decay and state -- rotting, freshly risen, entombed, boarded-up. Identity | Random=randomize, value=lock, None=omit |
| entity3_situation | COMBO | Random | What this entity is doing -- often something very still. Scene | Random=randomize, value=lock, None=omit |
| entity4_kind | COMBO | Random | What this entity fundamentally is. Scopes every other field on this slot -- its options and its labels. Set to None to leave the slot empty. Identity | Random=randomize, value=lock, None=omit |
| entity4_subkind | COMBO | Random | The specific type within the kind -- a ghoul, a banshee, a porcelain doll. Identity | Random=randomize, value=lock, None=omit |
| entity4_scale | COMBO | Random | How big it is relative to a person. Identity | Random=randomize, value=lock, None=omit |
| entity4_condition | COMBO | Random | Age, decay and state -- rotting, freshly risen, entombed, boarded-up. Identity | Random=randomize, value=lock, None=omit |
| entity4_situation | COMBO | Random | What this entity is doing -- often something very still. Scene | Random=randomize, value=lock, None=omit |
| relation_1_2 | COMBO | None | How two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit |
| relation_1_3 | COMBO | None | How two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit |
| relation_1_4 | COMBO | None | How two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit |
| relation_2_3 | COMBO | None | How two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit |
| relation_2_4 | COMBO | None | How two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit |
| relation_3_4 | COMBO | None | How two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit |
| relation_1_2_position | COMBO | None | Where the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit |
| relation_1_3_position | COMBO | None | Where the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit |
| relation_1_4_position | COMBO | None | Where the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit |
| relation_2_3_position | COMBO | None | Where the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit |
| relation_2_4_position | COMBO | None | Where the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit |
| relation_3_4_position | COMBO | None | Where the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit |
| context | COMBO | Random | What else is in the shot besides the subject -- a secondary detail for dread and story. Always a thing in the world, never a lighting instruction. Scene | Random=randomize, value=lock, None=omit |
| entity_1_inopt | SCENE_ENTITY | Optional. A Scene Entity wired here describes slot 1, replacing that slot's own descriptive widgets and giving it the top allowance for the scene. It is a promotion, not an exemption: how much the slot speaks is still capped by what kind of thing it is, so a station reads shorter than a creature. A field you locked on the Scene Entity is a choice: it wins over these widgets and over a coherence rule, and the rule's reason is reported in prompt_json._meta. A field the Scene Entity drew at random is a draw: this scene first picks a place that can hold the whole wired subject, and re-draws a drawn field only when no place can -- the node face then names what was re-drawn. What the entity is *doing* stays this node's: situation and relations are never taken from a wired entity. | |
| entity_2_inopt | SCENE_ENTITY | Optional. A Scene Entity wired here describes slot 2, replacing that slot's own descriptive widgets and giving it the top allowance for the scene. It is a promotion, not an exemption: how much the slot speaks is still capped by what kind of thing it is, so a station reads shorter than a creature. A field you locked on the Scene Entity is a choice: it wins over these widgets and over a coherence rule, and the rule's reason is reported in prompt_json._meta. A field the Scene Entity drew at random is a draw: this scene first picks a place that can hold the whole wired subject, and re-draws a drawn field only when no place can -- the node face then names what was re-drawn. What the entity is *doing* stays this node's: situation and relations are never taken from a wired entity. | |
| entity_3_inopt | SCENE_ENTITY | Optional. A Scene Entity wired here describes slot 3, replacing that slot's own descriptive widgets and giving it the top allowance for the scene. It is a promotion, not an exemption: how much the slot speaks is still capped by what kind of thing it is, so a station reads shorter than a creature. A field you locked on the Scene Entity is a choice: it wins over these widgets and over a coherence rule, and the rule's reason is reported in prompt_json._meta. A field the Scene Entity drew at random is a draw: this scene first picks a place that can hold the whole wired subject, and re-draws a drawn field only when no place can -- the node face then names what was re-drawn. What the entity is *doing* stays this node's: situation and relations are never taken from a wired entity. | |
| entity_4_inopt | SCENE_ENTITY | Optional. A Scene Entity wired here describes slot 4, replacing that slot's own descriptive widgets and giving it the top allowance for the scene. It is a promotion, not an exemption: how much the slot speaks is still capped by what kind of thing it is, so a station reads shorter than a creature. A field you locked on the Scene Entity is a choice: it wins over these widgets and over a coherence rule, and the rule's reason is reported in prompt_json._meta. A field the Scene Entity drew at random is a draw: this scene first picks a place that can hold the whole wired subject, and re-draws a drawn field only when no place can -- the node face then names what was re-drawn. What the entity is *doing* stays this node's: situation and relations are never taken from a wired entity. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt_text | STRING | The prompt. Wire this into the text encoder. |
| prompt_json | STRING | Structured scene data for other nodes or logs. Not a prompt: do not wire it into a text encoder. |