{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "wb-game-video:generate-shot-script args",
  "type": "object",
  "additionalProperties": false,
  "required": ["nodeName", "storyText"],
  "properties": {
    "sceneNodeId": { "type": "string", "description": "Owning GameGraph node id (one node = one shot)." },
    "nodeName": { "type": "string", "description": "Stable node name used to refer to the subject." },
    "storyText": { "type": "string", "description": "The node's story/performance intent text." },
    "durationSeconds": { "type": "number", "minimum": 1, "maximum": 60, "description": "Target performance duration in seconds (default 8)." },
    "artStyle": { "type": "string", "description": "Art-style preset id (see prompts/_shared/style-bible)." },
    "styleKeywords": { "type": "array", "items": { "type": "string" }, "description": "Extra style keywords." },
    "perspective": { "enum": ["first", "third"], "description": "first = POV, third = cinematic." },
    "tone": { "type": "string", "description": "Genre/tone (e.g. urban thriller)." },
    "characters": {
      "type": "array",
      "items": { "type": "object", "additionalProperties": false, "required": ["name"], "properties": { "name": { "type": "string" }, "desc": { "type": "string" } } },
      "description": "On-screen characters (thin info mapped from character_ref)."
    },
    "location": { "type": "string", "description": "Scene description (thin info mapped from scene_ref)." },
    "interactive": { "type": "boolean", "description": "Whether this node is interactive (>=2 choices, non-ending)." },
    "choiceCount": { "type": "number", "description": "Number of choices when interactive." },
    "styleAxes": {
      "type": "object",
      "additionalProperties": false,
      "description": "Per-node style-axis override (wb-reel 3-axis). Falls back to game-level manifest.styleAxes. artMedia/filmLook fold into art style + keywords; director folds into the system prompt (director persona).",
      "properties": {
        "artMedia": { "type": "string", "description": "Art-media axis id (e.g. photoreal / anime / ink)." },
        "director": { "type": "string", "description": "Director axis id (e.g. minimal-epic / precision-noir)." },
        "filmLook": { "type": "string", "description": "Film-look axis id (e.g. teal-orange / noir-lowkey)." }
      }
    }
  }
}
