{
  "tab": "ai",
  "section": "imagePromptConfiguration",
  "title": "Image Prompt Configuration",
  "summary": "Custom prompt templates for AI image generation per content category. Author-provided strings layered on top of Voyage's default image prompts for NPC portraits, location art, and region art.",
  "uiLocation": "AI → Image Prompts",
  "uiSubtitle": "\"Custom prompt templates for NPC, location, and region art\"",
  "editor": "JSON only",
  "sizeLimits": [
    {
      "field": "`imagePromptConfiguration.npcs` / `.locations` / `.regions`",
      "limit": "5,000 chars",
      "sections": [
        "ai/imagePromptConfiguration"
      ]
    },
    {
      "field": "`imagePromptConfiguration` (combined npcs+locations+regions)",
      "limit": "15,000 chars",
      "sections": [
        "ai/imagePromptConfiguration"
      ]
    }
  ],
  "related": "npcs - per-NPC portrait generation uses these templates; locations - location art layered onto location image generation; regions - region art layered onto region image generation",
  "wikiUrl": "/ai/imagePromptConfiguration",
  "schema": {
    "_type": "partial",
    "fields": {
      "npcs": "string",
      "locations": "string",
      "regions": "string"
    }
  },
  "body": "## Example\r\n\r\n```json\r\n{\r\n  \"imagePromptConfiguration\": {\r\n    \"npcs\": \"Style: painted oil portrait, soft warm light, period clothing, head-and-shoulders composition, neutral background.\",\r\n    \"locations\": \"Style: matte painting, dramatic atmospheric lighting, weathered surfaces, no people in frame.\",\r\n    \"regions\": \"Style: aerial concept art, broad landscape, painterly, time of day appropriate to region biome.\"\r\n  }\r\n}\r\n```\r\n\r\n## Fields\r\n\r\nPopulating a field injects your text into every image request for that category, useful for enforcing a consistent style across the world (e.g. \"watercolor, soft edges, painterly\" applied to every NPC portrait).\r\n\r\n### npcs\r\n\r\n`npcs`: prepended/appended to every NPC portrait generation request. Useful for locking down portrait style and framing without writing the same instruction in every NPC's `basicInfo`.\r\n\r\n### locations\r\n\r\n`locations`: applied to every location art request. Use for environment-consistency directives (camera angle, mood, art style).\r\n\r\n### regions\r\n\r\n`regions`: applied to every region art request. Region art is typically broader landscape framing; this slot enforces that.\r\n\r\n> **📋 Note:** All three fields are optional. The engine substitutes Voyage's default prompt when a field is empty or absent. There is no length limit documented; treat as a normal narrative prompt and keep it concise enough to not crowd out the actual content prompt.\r\n\r\n## Differentiated prompts via labelled sections\r\n\r\nA single `npcs` (or `locations` or `regions`) string can contain multiple labelled sections, and the image model sorts on the NPC's type/category when generating. Use this pattern when you want different style guidance for distinct character classes (humanoid vs. creature, civilian vs. military, undead vs. living) without authoring per-NPC prompts.\r\n\r\n```json\r\n{\r\n  \"imagePromptConfiguration\": {\r\n    \"npcs\": \"Humanoid:\\n[Style directives for human-form characters: anime portrait, cell-shaded line art, period-appropriate clothing tags, eye and hair colour anchors, full-body composition.]\\n\\nCreature / Non-humanoid:\\n[Style directives for monsters, beasts, summons, constructs: scale and feature tags (horns, wings, tails, claws), no clothing tags, natural-stance posing, full-body silhouette must be visible.]\\n\\nUndead / Skeletal:\\n[Style directives for undead characters: skeletal features, hollow or glowing eye treatment, decay-state tags by stage, posture and clothing reflecting the character's pre-death role.]\"\r\n  }\r\n}\r\n```\r\n\r\n### How the sort works\r\n\r\n**How the sort works:** the AI reads the NPC's `type`, `basicInfo`, and `visualDescription` together with the full IPC string and matches the section whose label best fits the character it is generating. A section labelled `Humanoid:` applies when the character reads as human-form; `Creature:` applies when the character reads as a beast or non-humanoid; etc. Sections that don't match are ignored for that generation.\r\n\r\n### Labelling rules\r\n\r\n**Labelling rules that improve sorting accuracy:**\r\n\r\n- **Bold, capitalised labels** with a trailing colon — `Humanoid:`, `Creature:`, `Undead:`. The model uses the label as the sort key; lowercase or punctuation-soft labels read as prose.\r\n- **One blank line between sections.** Helps the model treat them as distinct branches.\r\n- **Mutually exclusive categories.** Overlapping labels (`Humanoid` + `Civilian` + `Military` all valid at once) produce inconsistent output. Pick one axis (form, role, faction, status) per IPC field.\r\n- **Cover the full space.** If your NPC roster includes a category not represented by any section, the model falls back to whichever section is closest or to the engine default. A `Default:` or `Other:` catch-all section is worth including.\r\n\r\n### Applying to locations and regions\r\n\r\nThe same pattern works for `locations` (interior vs. exterior, urban vs. wilderness, settled vs. ruined) and `regions` (climate biome, faction-controlled vs. wilderness, day vs. night).\r\n\r\n> **📋 Note:** For a more structured pattern that splits each category prompt into a fixed style scaffold plus per-instance variable slots (and combines naturally with the labelled-sections approach above), see [Scaffold and variable-slot image prompts](/appendix/ai-advanced-techniques#scaffold-and-variable-slot-image-prompts) in the Advanced AI Techniques appendix."
}