✦ Smart Scene Generator
The full scene-to-finished-prompt pipeline
- prompt
- negative
- metadata
Think of this as IllustriousScenesPlus after it went through a growth spurt. Same scene-generation core - category, complexity, the Include * toggle grid for weather/props/pose/clothing - but IllustriousSmartSceneGenerator bolts on an expression picker, a full quality-tag block, a negative-prompt generator, and subject/upscale-tag fallbacks, so it can hand you a complete, ready-to-encode positive-and-negative pair instead of just a scene fragment. It's the "give me the whole thing" version.
What's layered on top of the scene core
The Emotion/Expression, Emotion Group, Emotion Weight, and Wrap Emotion fields fold in everything the standalone IllustriousEmotions node does, right into the scene pipeline. Then comes the quality-block system the README calls out as its v2.6 addition: Use Quality Block (default on) auto-prepends a token list - default masterpiece, best quality, ultra-detailed, highres - unless one's already present in your prompt. Quality Weight and Quality Weight Scheme (auto/comfy/A1111) decide whether that block gets grouped weighting like (masterpiece, best quality:1.2) or expanded per-token like (masterpiece:1.2), (best quality:1.2); Per-Token Quality Weights forces the per-token form even under comfy/auto.
Subject Fallback (none/1girl/1boy/solo/1girl, solo) injects a baseline subject tag when you've left Person Description off, with Subject Fallback Order choosing whether it lands before or after Upscale Tags (none/anime_hd/ultra_hd/photo_8k), a set of extra resolution/detail tokens. Negative Preset (standard/aggressive/anime_clean/photoreal/custom) generates a matching negative prompt; flip Generate Negative Output on to actually get it on the second output port, and use Custom Negative Preset to supply your own string when the preset is custom. Weight Interpretation and Token Normalization are worth reading as hints, not enforcement - the tooltips are explicit that the actual weighting happens at your encoding node, this just tags what convention the output was written for.
The same Enable TIPO Optimization block from IllustriousScenesPlus (TIPO Candidates/Flavor/Max Length/Seed) is here too, generating and ranking prompt variants before the quality block and fallbacks get layered on.
Outputs
Three of them: prompt, negative (empty unless Generate Negative Output is on), and metadata - a JSON string documenting what the node actually decided, including pruning info when the token budget forced it to drop upscale tags. Check metadata before assuming the model is ignoring part of your prompt; it'll often show you it pruned something you didn't notice.
Installing it
ComfyUI Manager: search "EasyIllustrious," install, restart. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/regiellis/ComfyUI-EasyIllustrious, then pip install -r ComfyUI-EasyIllustrious/requirements.txt inside your ComfyUI environment, then restart.
Where people get surprised
With this many toggles defaulting to on, a first run through this node tends to produce a noticeably longer, more heavily-tagged prompt than a beginner expects - the quality block, subject fallback, and TIPO optimization can all fire at once without you touching a single field. This is exactly the kind of behavior that confused a user on the pack's Reddit launch thread, who found random tags appearing in their prompt and traced it back to having a scene generator wired into their chain and quietly injecting content. If you want tight control, start by turning off Use Quality Block, Enable TIPO Optimization, and Generate Negative Output, confirm the bare scene output looks right, then re-enable pieces one at a time.
Inputs (46)
| Name | Type | Default | Description |
|---|---|---|---|
| Category | COMBO | Outdoor | Select anime scene category with extensive vocabulary |
| Complexity | COMBO | medium | Control number of scene elements generated |
| Include Time/Weather | BOOLEAN | true | Add time of day and weather conditions |
| Include Ambience | BOOLEAN | true | Add atmospheric mood and feeling |
| Include Event | BOOLEAN | false | Add specific events or activities |
| Include Prop | BOOLEAN | true | Add scene props and objects |
| Include Density | BOOLEAN | false | Add crowd density and population info |
| Include Person Description | BOOLEAN | false | Add basic person description (use only if no character nodes) |
| Include Pose/Action | BOOLEAN | true | Add pose and action descriptions |
| Include Clothing | BOOLEAN | false | Add clothing descriptions (use only if no clothing nodes) |
| Outfits | COMBO | - | Pick a full outfit or leave '-' for random. |
| Top | COMBO | - | Pick a top; used if no Outfit is chosen. |
| Bottoms | COMBO | - | Pick bottoms; used if no Outfit is chosen. |
| General Style | COMBO | - | Overall clothing style/aesthetic. |
| Headwear | COMBO | - | Specific headwear item to include. |
| Emotion/Expression | COMBO | - | Optional expression/emote to include. |
| Emotion Group | COMBO | - | Pick a group to browse or randomize when token is '-' |
| Emotion Weight | FLOAT | 1.000.1–2 | Weight applied to emotion (tag:weight). |
| Wrap Emotion | BOOLEAN | true | Wrap emotion as (tag:weight). |
| Safe Adult Subject | BOOLEAN | true | Use adult-safe subject terms |
| Use Chain Insert | BOOLEAN | true | Enable chain token integration with other nodes |
| Strict Tags (no phrases) | BOOLEAN | true | Use individual tags instead of phrases for better compatibility |
| De-duplicate With Prefix/Suffix | BOOLEAN | true | Remove duplicate terms when chaining with other nodes |
| Danbooru Tag Style | BOOLEAN | true | Format output as lowercase, underscore-separated tags (community style) |
| Token Count | COMBO | 77 | Approximate token budget. Drives a soft character cap and selection size. |
| Enable TIPO Optimization | BOOLEAN | true | Generate prompt candidates and pick the best for Illustrious |
| TIPO Candidates | INT | 83–32 | Number of variants to consider |
| TIPO Flavor | COMBO | balanced | Illustrious-oriented flavor to bias scoring |
| TIPO Max Length | INT | 32080–800 | Soft cap for final prompt length (characters) |
| TIPO Seed | INT | 00–2147483647 | Randomization seed (0 = auto) |
| Subject Fallback | COMBO | none | Inject baseline subject tokens when person description is off. |
| Upscale Tags | COMBO | none | Prepend additional high-resolution/upscale tags after quality block. |
| Negative Preset | COMBO | none | Generate a negative prompt using a curated or custom preset. |
| Generate Negative Output | BOOLEAN | false | If true, second output returns the negative prompt string. |
| Use Quality Block | BOOLEAN | true | Automatically prepend a quality/emphasis block unless already present. |
| Quality Block Text | STRING | masterpiece, best quality, ultra-detailed, highres | Comma separated quality tokens. Will be auto-weighted if enabled. |
| Quality Weight | FLOAT | 1.200.1–2.5 | Weight applied per token or to group depending on scheme. |
| Quality Weight Scheme | COMBO | auto | How to format weighted quality tokens (grouped vs per-token). |
| Per-Token Quality Weights | BOOLEAN | false | Force apply weight to every quality token even in comfy/auto grouped modes. |
| Subject Fallback Order | COMBO | after_upscale | Choose whether subject fallback tokens are inserted before or after Upscale Tags. |
| Weight Interpretationopt | COMBO | comfy | How to hint weights in text; actual enforcement happens at encoding stage. |
| Token Normalizationopt | COMBO | none | Normalization hint for downstream encoders; used to shape emphasis strength. |
| prefixopt | STRING | Input from previous node in chain | |
| suffixopt | STRING | Additional suffix text | |
| tipo_extra_negativesopt | STRING | Comma-separated terms to downweight/remove | |
| Custom Negative Presetopt | STRING | If Negative Preset is 'custom', use this string as the negative prompt. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| negative | STRING | — |
| metadata | STRING | — |