Files
ComfyUI-Ethanfel-Prompt-Bui…/README.md
T
2026-06-24 18:42:36 +02:00

30 KiB

ComfyUI Prompt Builder

Custom ComfyUI node for building prompts from the existing generate_prompt_batches.py generator without writing image batches.

The node is registered as:

  • prompt_builder / SxCP Prompt Builder
  • prompt_builder / SxCP Seed Control
  • prompt_builder / SxCP Seed Locker
  • prompt_builder / SxCP Camera Control
  • prompt_builder / SxCP Camera Orbit Control
  • prompt_builder / SxCP Category Preset
  • prompt_builder / SxCP Cast Control
  • prompt_builder / SxCP Generation Profile
  • prompt_builder / SxCP Advanced Filters
  • prompt_builder / SxCP Prompt Builder From Configs
  • prompt_builder / SxCP Woman Slot
  • prompt_builder / SxCP Man Slot
  • prompt_builder / SxCP Character Slot
  • prompt_builder / SxCP Character Profile Save
  • prompt_builder / SxCP Character Profile Load
  • prompt_builder / SxCP Caption Naturalizer
  • prompt_builder / SxCP Krea2 Formatter
  • prompt_builder / SxCP Insta/OF Options
  • prompt_builder / SxCP Insta/OF Prompt Pair

It outputs:

  • prompt
  • negative_prompt
  • caption
  • metadata_json
  • category
  • subcategory

Split Workflow Nodes

The original SxCP Prompt Builder remains available as the full all-in-one node. For cleaner workflows, use the split nodes:

  • SxCP Category Preset outputs category_config for broad intent such as women casual, men casual, couple casual, provocative erotic, or hardcore pose.
  • SxCP Cast Control outputs cast_config plus raw women_count and men_count, so couple/two-women/two-men/group setups can be reused.
  • SxCP Generation Profile outputs generation_profile for common behavior presets such as casual-clean, evocative-softcore, hardcore-intense, Krea2-friendly, or Flux-original.
  • SxCP Advanced Filters outputs filter_config for appearance include checkboxes, figure, and plus-size inclusion.
  • SxCP Prompt Builder From Configs consumes those config outputs and produces the same prompt, negative, caption, metadata, category, and subcategory outputs as the full builder.

The practical compact workflow is:

Category Preset + Cast Control + Generation Profile + optional Advanced Filters, Seed Locker or Seed Control, Camera Control or Camera Orbit Control, Woman Slot / Man Slot, and Character Profile into Prompt Builder From Configs.

An importable default workflow is included at examples/default_task_lanes_workflow.json. It is laid out by task instead of as one long chain:

  1. A regular generation lane: config nodes into Prompt Builder From Configs, then optional Caption Naturalizer and Krea2 Formatter.
  2. An Insta/OF dual-generation lane: Insta/OF Options, seed/camera controls, Insta/OF Prompt Pair, then optional formatter/naturalizer nodes.
  3. Profile save/load tools parked as an adjacent side branch. They can be wired manually into either generation lane, but they are not part of the default main path.

Character Profiles

SxCP Woman Slot and SxCP Man Slot are the scalable per-participant control nodes. Cast Control still decides how many women and men are generated; slot nodes decide who those people are. Each slot defines one participant with optional overrides for age, ethnicity, body/body phrase, skin, hair, and eyes. Leave any field on random or blank to let the generator fill that part from the normal pools; set exact values only where you want control.

Use Woman Slot for women because it exposes woman-focused body choices and a figure_bias selector. Use Man Slot for men because it exposes man-focused body choices and omits figure bias. The older generic SxCP Character Slot remains available for compatibility and manual mixed use, but the gendered slots are the cleaner default.

Each slot also has descriptor_detail, which controls how much appearance text is emitted into named-cast descriptors:

  • auto: women use full; men use compact.
  • full: age, body, skin, hair, and eyes.
  • medium: age, body, skin, and hair.
  • compact: age, body, and skin.
  • minimal: age and body only.

SxCP Man Slot defaults to compact, which keeps men readable in Krea-style couple/group prompts without turning every partner into a fully detailed primary character. Set a man slot to full when the partner needs exact hair/eye detail.

SxCP Man Slot also has presence_mode. Use visible for a normal rendered partner. Use pov when that man is the first-person camera participant: he remains part of the cast and role graph, but his appearance descriptor and per-character expression text are omitted, and pose wording is rendered from the POV participant's viewpoint. The generic SxCP Character Slot exposes the same field, but it only has an effect when subject_type=man.

Slots also expose expression_enabled and expression_intensity. Disable expression_enabled when that character should not receive a face/expression directive. Leave expression_intensity at -1 to use the generator or Insta/OF option fallback. Set it from 0.0 to 1.0 to make expression selection character-driven. For configured casts, matching enabled slots emit per-character expression text such as Woman A has ...; Man A has ...; Krea formatting naturalizes those labels in pair prompts.

For Insta/OF pairs, slots also expose character-level overrides:

  • softcore_expression_intensity and hardcore_expression_intensity: override the option-node expression fallback for that character and that output half.
  • softcore_outfit: overrides the character's softcore clothing. For Woman A this replaces the generated teaser outfit; for partners it replaces random partner styling.
  • hardcore_clothing: adds direct character clothing/nudity wording in the hardcore output. A Woman A hardcore clothing override replaces the global hardcore_clothing_continuity text to avoid contradictory clothing prompts.

Slots are chainable through the character_cast input/output. In automatic label mode, the slot closest to the final generator becomes A for its gender, the next upstream slot becomes B, then C, and so on. Example:

Woman slot 3 -> Woman slot 2 -> Woman slot 1 -> Insta/OF Prompt Pair

In that chain, Woman slot 1 resolves as Woman A, Woman slot 2 resolves as Woman B, and Woman slot 3 resolves as Woman C. Men resolve separately the same way, so the closest man slot becomes Man A.

Connect the final character_cast output to SxCP Prompt Builder, SxCP Prompt Builder From Configs, or SxCP Insta/OF Prompt Pair. It applies to JSON/custom single woman/man rows, JSON/custom configured-cast rows such as Hardcore sexual poses, and Insta/OF named casts. The older profile save/load nodes remain useful for one reusable primary character, but slots are better when you need different settings for each participant.

SxCP Character Profile Save extracts a reusable woman/man profile from metadata_json or from manual fields. The profile stores age, body/body phrase, skin, hair, eyes, figure, and subject type. It only writes a file when the Save Profile Now button is clicked; otherwise it just outputs profile JSON for direct wiring. Saved files are written under profiles/<profile_name>.json; saved profile files are ignored by git. The button is backed by the hidden save_now trigger and queues the workflow once.

SxCP Character Profile Load has an enabled switch. When disabled, it returns an empty profile so connected prompt builders ignore it. When enabled, it loads a saved profile by selector or passes through a connected fallback profile JSON. It also has explicit file-operation triggers:

  • Delete Selected Profile: deletes the selected saved profile.
  • Rename Selected Profile + rename_to: renames the selected saved profile.

Delete and rename are conservative: if both triggers are enabled together, nothing happens; rename does not overwrite an existing target profile. The buttons are backed by hidden delete_now and rename_now triggers and queue the workflow once.

Connect the loader's character_profile output to SxCP Prompt Builder, SxCP Prompt Builder From Configs, or SxCP Insta/OF Prompt Pair.

Profile reuse currently applies to structured JSON-category single woman/man rows and to the primary creator in Insta/OF pair mode. The outfit, scene, pose, expression, and composition can still change while the saved character appearance remains stable.

SxCP Seed Control outputs seed_config, which can be connected to the prompt builder's optional seed_config input.

SxCP Seed Locker is the fast version for iteration. Set base_seed to a seed you like, choose one reroll_axis, and connect its seed_config. All other axes stay frozen to base_seed; the rerolled axis follows reroll_seed, or the main prompt seed when reroll_seed=-1.

SxCP Camera Control and SxCP Camera Orbit Control output camera_config, which can be connected to the prompt builder or the Insta/OF pair node. They make camera/framing first-class instead of relying on a weak phrase inside the prompt.

Camera controls:

  • camera_mode: disabled, standard, handheld_selfie, mirror_selfie, phone_tripod, creator_pov, bed_selfie, bathroom_mirror, phone_flash, or action_cam.
  • shot_size: auto, full_body, three_quarter, waist_up, close_up, or extreme_close_up.
  • angle: auto, eye_level, high_angle, low_angle, overhead, side_profile, rear_view, or mirror_reflection.
  • lens: auto, smartphone_wide, ultra_wide, portrait_lens, telephoto, or macro_detail.
  • distance: auto, arm_length, near_body, bedside, or room_corner.
  • orientation: auto, vertical_story, square_feed, or horizontal.
  • phone_visibility: auto, phone_visible, phone_hidden, screen_reflection, or ring_light_visible.
  • priority: soft_hint, strong, or locked.
  • camera_detail: off emits no camera sentence, compact emits one short camera sentence, and full emits the full detailed camera constraint.

SxCP Camera Orbit Control is the numeric/directable version inspired by multi-angle camera nodes. It maps horizontal_angle, vertical_angle, and zoom into a stable prompt such as 135-degree back-right quarter view, elevated shot, medium shot. Use it when the model needs an exact front, side, back-quarter, low, high, or overhead style camera anchor. Its first output is the same camera_config type, so it can replace SxCP Camera Control anywhere.

Orbit controls:

  • horizontal_angle: 0 front, 90 right side, 180 back, 270 left side, with quarter views between them.
  • vertical_angle: negative values are low-angle, 0 is eye-level, positive values move toward elevated/high-angle.
  • zoom: 0-2 wide, 2-6 medium, 6-10 close unless framing overrides it.
  • subject_focus: optionally centers face, torso, hips, full body, main action, contact points, or the environment.
  • include_degrees: keeps the numeric angle in the emitted camera phrase.

SxCP Caption Naturalizer rewrites tag-like captions or labeled prompts into more natural language. Connect the prompt builder's metadata_json output to source_text for the cleanest result. You can also connect caption or prompt; in that case the node falls back to prompt-label parsing or comma-tag cleanup.

When connected to SxCP Insta/OF Prompt Pair metadata, the naturalizer emits a single combined natural caption with the shared descriptor plus separate softcore and hardcore version descriptions. It uses the final selected expression and composition from the generated rows, including any expression pool and intensity settings.

Naturalizer controls:

  • input_hint: auto, metadata_json, or caption_or_prompt.
  • detail_level: concise, balanced, or dense.
  • style_policy: drop_style_tail removes old fixed style tails; keep_style_terms keeps style descriptions in the rewritten text.
  • trigger: defaults to sxcppnl7.
  • include_trigger: prepends the trigger as its own sentence.

It outputs:

  • natural_caption
  • method

SxCP Krea2 Formatter rewrites an existing prompt or metadata_json into a Krea2-oriented natural-language paragraph. It is a formatter, not a safety or content downgrade pass: hardcore items, role graphs, sexual pose wording, and camera controls are preserved. Negative prompts stay separate.

Important behavior:

  • Concrete age wording is preserved deliberately. Phrases like 25-year-old adult woman and late 60s adult man are kept because they help avoid unwanted young-looking outputs, while generic adult boilerplate is omitted from the Krea2 rewrite.
  • Trigger words are removed by default because Krea2 prompting generally reads better as natural language. Enable preserve_trigger if you still need a LoRA trigger in the positive prompt.
  • style_mode: preserve keeps the current generated style text, photographic converts the style tail toward creator-photo language, and minimal omits most style text.
  • For Insta/OF paired metadata, the node returns both krea_softcore_prompt and krea_hardcore_prompt, with separate softcore and hardcore negatives.
  • Insta/OF cast metadata is rewritten as direct named-character prose such as Woman A is ... and Man A is ..., so Krea2 does not have to interpret a Cast descriptors: label.
  • Man slots set to presence_mode=pov are not emitted as visible cast prose. The formatter keeps them in the role graph, rewrites the action from the first-person viewer position, and adds a POV camera sentence.

It outputs:

  • krea_prompt
  • negative_prompt
  • krea_softcore_prompt
  • krea_hardcore_prompt
  • softcore_negative_prompt
  • hardcore_negative_prompt
  • method

SxCP Insta/OF Prompt Pair is a special paired-output mode. It creates one primary creator descriptor internally, then returns both a softcore prompt and a hardcore prompt from that descriptor. This is useful when you want matching person/look/scene continuity but need two different prompt strengths.

When the hardcore cast includes partners, pair mode also creates deterministic cast descriptors such as Woman A and Man A. Use softcore_cast=same_as_hardcore, hardcore_cast=couple, and continuity=same_creator_same_room when you want both outputs to reuse the cast and location. The generated positive prompts are still standalone: each output lists the relevant cast descriptors directly and does not depend on the image model carrying context from another prompt.

For per-character control, chain SxCP Woman Slot and SxCP Man Slot nodes into the pair node's character_cast input. The nearest woman slot controls the shared primary creator (Woman A) in both softcore and hardcore outputs; additional woman/man slots fill partner descriptors before random fallback descriptors are used.

For POV pair prompts, set the relevant SxCP Man Slot to presence_mode=pov. The softcore output frames the primary creator from that participant's camera, while the hardcore output keeps the same cast and scene but converts the role graph into first-person positioning.

It outputs:

  • softcore_prompt
  • hardcore_prompt
  • softcore_negative_prompt
  • hardcore_negative_prompt
  • softcore_caption
  • hardcore_caption
  • shared_descriptor
  • metadata_json

The positive Insta/OF outputs do not embed an Avoid: section; use the matching negative prompt outputs when wiring the sampler.

SxCP Insta/OF Options outputs options_json, which can be connected to the pair node. Defaults are set so the softcore prompt is solo while the hardcore prompt can include partners. Softcore defaults to handheld selfie framing; hardcore defaults to from_camera_config, which emits no camera sentence unless a camera config is connected or you select an explicit hardcore camera mode. For stronger camera control, connect SxCP Camera Control or SxCP Camera Orbit Control to the pair node's optional camera_config input.

Options:

  • softcore_cast: solo or same_as_hardcore.
  • hardcore_cast: use_counts, couple, threesome, or group.
  • hardcore_women_count and hardcore_men_count: used when hardcore_cast is use_counts. The pair mode always keeps at least one adult woman as the primary creator so the shared descriptor remains valid.
  • softcore_level: social_tease, lingerie_tease, implied_nude, explicit_tease, or explicit_nude. Insta/OF softcore uses dedicated outfit pools so teaser prompts do not randomly pull hardcore-adjacent harness, microwear, or shirtless partner styling. explicit_nude is available when you want visible nude creator-shot framing without a sex act.
  • hardcore_level: explicit or hardcore.
  • softcore_expression_intensity: fallback when no connected character slot sets softcore_expression_intensity. 0.0 is mild/controlled, 0.5 is sensual, 1.0 strongly favors more heated softcore faces.
  • hardcore_expression_intensity: fallback when no connected character slot sets hardcore_expression_intensity. 0.0 is controlled, 0.5 is balanced hardcore, 1.0 strongly favors stronger hardcore expressions.
  • softcore_expression_enabled and hardcore_expression_enabled: disable the expression sentence for that half of the Insta/OF pair. The intensity values are fallbacks; SxCP Woman Slot / SxCP Man Slot expression_intensity overrides them when character slots are connected, and a disabled slot omits that character's expression.
  • platform_style: hybrid, instagram, or onlyfans.
  • continuity: same_creator_same_room keeps the scene aligned while each output keeps its own pose/composition; same_creator_new_scene keeps the same creator descriptor but lets the hardcore scene use its own setting.
  • hardcore_clothing_continuity: none, same_outfit, partially_removed, implied_nude, or explicit_nude. This controls whether the hardcore prompt references the softcore outfit, uses it displaced/removed, or makes Woman A explicitly nude. It is a fallback for Woman A; hardcore_clothing on SxCP Woman Slot or SxCP Man Slot takes priority for that character.
  • softcore_camera_mode: from_camera_config or a base camera mode for the softcore output. The default is still handheld_selfie.
  • hardcore_camera_mode: from_camera_config, same_as_softcore, or a separate base camera mode for the hardcore output. from_camera_config is neutral with no connected camera config, and uses SxCP Camera Control or SxCP Camera Orbit Control when one is connected.
  • camera_detail: off, compact, or full for the pair prompt camera text.
  • hardcore_detail_density: compact keeps the Krea hardcore rewrite mostly to the position/action sentence, balanced keeps one useful non-duplicated motion or aftermath detail, and dense keeps more detail after dedupe. This is separate from expression intensity.

Built-In Categories

The node keeps the original generator controls:

  • category: auto_weighted, woman, man, couple, group_or_layout, or a custom JSON category.
  • clothing: full or minimal.
  • minimal_clothing_ratio: -1 disables mixing; 0.0 to 1.0 mixes minimal/full clothing.
  • ethnicity: any, european, mediterranean_mena, latina, east_asian, southeast_asian, south_asian, black_african, indigenous, mixed, asian, or white_asian. Combined filter strings such as latina+south_asian are also accepted in config JSON.
  • poses: standard or evocative.
  • expression_enabled: disable facial-expression text entirely for this row.
  • expression_intensity: 0.0 favors mild, neutral, controlled expressions; 0.5 favors balanced category expressions; 1.0 strongly favors the most intense expressions available in the selected category. This affects custom JSON categories such as Provocative erotic clothes and Hardcore sexual poses.
  • standard_pose_ratio: -1 disables mixing; 0.0 to 1.0 mixes standard/evocative poses.
  • backside_bias: 0.0 to 1.0, applies to evocative single-subject poses.
  • figure: curvy, balanced, bombshell.
  • In split workflows, use SxCP Advanced Filters checkboxes instead of negative toggles. Black/African and plus-size are positive include choices there.
  • Optional camera_config: connect SxCP Camera Control or SxCP Camera Orbit Control to force selfie, phone, lens, angle, numeric orbit, crop, and camera-priority behavior. This applies to custom categories too, including Hardcore sexual poses.

auto_weighted uses the original batch mix: mostly women, then men, couples, and group/layout rows. Direct categories generate only that selected category.

Custom Categories

Add or edit JSON files in categories/*.json. Each file can define new main categories, subcategories, and optional extensions to the built-in pools. Restart or reload ComfyUI after changing JSON so dropdown choices are rebuilt.

Included JSON categories:

  • Casual clothes
  • Men casual clothes
  • Couple casual clothes
  • Provocative erotic clothes
  • Hardcore sexual poses

Example:

{
  "version": 1,
  "categories": [
    {
      "name": "Casual clothes",
      "slug": "casual_clothes",
      "subject_type": "woman",
      "item_label": "Clothing",
      "style": "tasteful adult fashion-editorial coloured-pencil comic illustration",
      "subcategories": [
        {
          "name": "Streetwear",
          "slug": "streetwear",
          "items": [
            "oversized hoodie with slim jeans and clean sneakers",
            "cropped bomber jacket with cargo pants and chunky trainers"
          ],
          "scenes": [
            {
              "slug": "city_crosswalk",
              "prompt": "sunlit city crosswalk with storefront reflections"
            }
          ],
          "poses": [
            "standing with one hand in a pocket",
            "walking forward with a casual runway stride"
          ]
        }
      ]
    }
  ]
}

Custom categories do not need a Python generator. If no prompt_template is provided, the node uses a generic composer that selects subject appearance, scene, pose, expression, composition, and a random item from the selected subcategory.

Reusable banks can be defined with top-level scene_pools, expression_pools, and composition_pools in any categories/*.json file. Categories, subcategories, and items can reference them with scene_pools, expression_pools, and composition_pools; referenced pools are merged with any local scenes, expressions, or compositions. This keeps expansion scalable without duplicating the same bedroom, selfie, mirror, creator, expression, camera, or group-sex framing across every subcategory.

Set "inherit_scenes": false, "inherit_expressions": false, or "inherit_compositions": false on a subcategory or item when it should use only its own pools instead of also inheriting parent category values. This is useful for narrow subcategories such as group scenes, fetish sets, outdoor-only sets, or any category where generic parent wording would be a bad match.

Example:

{
  "expression_pools": {
    "creator_tease_faces": [
      "direct creator-shot eye contact",
      "heavy-lidded bedroom gaze"
    ]
  },
  "composition_pools": {
    "creator_selfie_frames": [
      "handheld selfie crop from face to hips",
      "mirror selfie with phone visible and body framed clearly"
    ]
  },
  "scene_pools": {
    "creator_selfie_rooms": [
      {
        "slug": "bedroom_phone_tripod",
        "prompt": "private creator bedroom with a phone tripod, rumpled bedding, and warm lamps"
      }
    ]
  },
  "categories": [
    {
      "name": "Example",
      "subcategories": [
        {
          "name": "Selfie set",
          "inherit_scenes": false,
          "inherit_expressions": false,
          "inherit_compositions": false,
          "scene_pools": ["creator_selfie_rooms"],
          "expression_pools": ["creator_tease_faces"],
          "composition_pools": ["creator_selfie_frames"],
          "items": ["simple outfit prompt"]
        }
      ]
    }
  ]
}

For large categories, prefer item_templates plus item_axes instead of writing every final item by hand:

{
  "name": "Example clothes",
  "subject_type": "woman",
  "subcategories": [
    {
      "name": "Lingerie",
      "item_templates": [
        "{color} {fabric} {top} with {bottom} and {stockings}"
      ],
      "item_axes": {
        "color": ["black", "red", "ivory"],
        "fabric": ["lace", "satin", "transparent mesh"],
        "top": ["balconette bra", "open-cup bra"],
        "bottom": ["matching thong", "high-cut g-string"],
        "stockings": ["thigh-high stockings", "fishnet stockings"]
      }
    }
  ]
}

The node chooses one template, fills each placeholder from the matching axis, then records the selected axis values in metadata_json.

Supported subject_type values:

  • single_any
  • woman
  • man
  • couple
  • group
  • layout
  • scene
  • configured_cast

configured_cast uses the node's women_count and men_count inputs. It adds template fields for {women_count}, {men_count}, {person_count}, {cast_summary}, {scene_kind}, and {role_graph}. This is intended for categories where the same prompt generator should support couples, threesomes, and larger groups.

{role_graph} is a generated choreography sentence that assigns roles to the cast, such as who penetrates, who receives oral, and who joins from the side. It is currently most useful for Hardcore sexual poses.

Subcategories, templates, and axis values can declare cast constraints:

{
  "name": "Threesomes",
  "min_people": 3,
  "item_axes": {
    "act": [
      {
        "text": "strap-on penetration and cunnilingus",
        "cast": "women_only"
      },
      {
        "text": "male/male oral and anal contact",
        "cast": "men_only"
      },
      {
        "text": "front-and-back penetration",
        "cast": "mixed"
      }
    ]
  }
}

Supported constraints:

  • min_women, max_women
  • min_men, max_men
  • min_people, max_people
  • cast or requires: women_only, men_only, mixed, has_women, has_men, solo, couple, threesome, group

If an exact subcategory has a larger minimum cast size than the current women_count and men_count, the node raises the effective cast count to that minimum instead of failing. The original and effective counts are recorded in metadata_json.cast_count_adjustment. Other impossible cast constraints still raise a clear error instead of generating an impossible prompt. When both cast counts are 0, custom category selection treats the effective configured cast as one adult woman so random filtering still has a valid cast.

Use the subcategory dropdown to select either random or an exact Main category / Subcategory path. Exact paths override the category dropdown, which is useful because ComfyUI does not provide dependent dropdowns from Python alone.

Seed Control

The main seed input is still the default master seed. Connect SxCP Seed Control to seed_config when you want to lock or vary specific axes. Each axis has its own mode plus seed value:

  • auto: legacy behavior; -1 follows the main seed, 0 or higher fixes that axis to the entered value.
  • follow_main: always follows the final generator's main seed input and ignores the entered axis seed.
  • fixed: always uses the entered axis seed.
  • random: generates a fresh axis seed when the node runs.

For normal prompt iteration, SxCP Seed Locker is usually simpler:

  • base_seed: the seed whose character/location/etc. you want to keep.
  • reroll_axis: none, content, person, scene, pose, role, expression, composition, content_pose, or scene_pose.
  • reroll_seed: -1 makes the selected axis follow the main prompt seed; 0 or higher pins that selected axis to a specific seed.

Seed values in auto mode:

  • -1: follow the main seed.
  • 0 or higher: override only that axis.

Axes:

  • category_seed: custom category selection when custom_random is used.
  • subcategory_seed: random subcategory selection.
  • content_seed: generated item content, such as outfit wording.
  • person_seed: appearance/person selection.
  • scene_seed: scene/environment selection.
  • pose_seed: body pose selection. For Hardcore sexual poses, this also drives the generated sexual pose content.
  • role_seed: participant choreography for {role_graph}. If left at -1, it follows pose_seed.
  • expression_seed: facial expression selection.
  • composition_seed: camera/composition selection.

Example workflow: if the person and scene are right but the pose is wrong, keep person_seed and scene_seed fixed, then change pose_seed. If the cast roles are wrong but the act wording is good, change role_seed. If the clothing or sexual act wording is wrong, change content_seed; for pose-driven categories, change pose_seed.

Pool Extensions

Use pool_extensions to add new entries to built-in pools without editing Python:

{
  "pool_extensions": {
    "women_clothes": ["relaxed high-waist jeans with a fitted ribbed tank top"],
    "men_clothes": ["clean white T-shirt with relaxed jeans and canvas sneakers"],
    "poses": ["standing with a relaxed hand-on-hip pose"],
    "expressions": ["easygoing half-smile"],
    "scenes": [
      {
        "slug": "city_cafe",
        "prompt": "quiet city cafe terrace with morning light and small round tables"
      }
    ]
  }
}

Known extension pools:

women_clothes, women_clothes_minimal, men_clothes, men_clothes_minimal, couple_outfits, couple_outfits_minimal, poses, evocative_poses, backside_poses, expressions, compositions, props, figure_curvy, figure_athletic, figure_bombshell, scenes, group_scenes, layouts_full, layouts_minimal, group_compositions, group_ages.

Templates

A category, subcategory, or individual item can provide prompt_template and caption_template. Templates can use these fields:

{trigger}, {main_category}, {subcategory}, {item}, {item_label}, {subject}, {subject_phrase}, {age}, {body}, {body_phrase}, {skin}, {hair}, {eyes}, {figure}, {scene}, {pose}, {expression}, {composition}, {style}, {positive_suffix}, {negative_prompt}, {women_count}, {men_count}, {person_count}, {cast_summary}, {scene_kind}, {role_graph}.

If prepend_trigger_to_prompt is enabled, the node prepends the trigger to the positive prompt. Disable it for output closer to the original script's prompt field.