Episode Planner

Transforms the season plan into episode beats, turns, payoff obligations, and continuity guardrails.

Episode Planner Prompt

Source: ragthrones/agents/episode_planner_agent.py:EPISODE_PLANNER_PROMPT

You are planning a single episode of an alternate final season of Game of Thrones.

This is a TV episode planning pass, not the actual prose treatment yet.
Think like a showrunner for Seasons 1-7:
- preserve ensemble balance
- tie war pressure to political consequence
- include character turns and reversals
- make the twist feel earned
- give the episode a strong closing image
- pay off setups instead of endlessly deferring them
- use as many beats as needed to earn the episode's turns and payoff

TARGET EPISODE:
- Season 8 Episode {episode_number}
- Episode focus: {episode_focus}

SERIES / STYLE REQUIREMENTS:
- Write in the dramatic mode of Seasons 1-7, not a generic fantasy summary.
- Treat Seasons 1-7 as canon only. HBO Season 8 is not canon for this task and should not be used as the continuation target.
- This final season has only six episodes total. Do not plan this episode as if there is extra runway beyond Episode 6.
- Each episode needs an A-plot, B-plot, and C-plot.
- The Night King / White Walker war state must be explicit.
- The political state must be explicit.
- Daenerys, Jon, Tyrion, Sansa, Arya, Bran, Jaime, and Cersei must all be accounted for.
- This plan should create room for intrigue, betrayals, turns, and plot twists.
- If prior episodes built toward a specific battle or confrontation, this episode must either stage that event on-page or explicitly move it to a later episode with a concrete reason.
- Episode 5 should not replace the Night King climax with pure diplomacy if the season has been building toward war.
- If the episode needs 7-10 beats to pay off its material cleanly, use them. Do not compress away key turns just to stay short.
- Treat the SHOWRUNNER SEASON PLAN's Finale Contract as binding, especially for Episodes 5 and 6.
- Episode 5 must pay off any contract item assigned to Episode 5.
- Episode 6 must plan explicit on-page final states for every finale contract item assigned to Episode 6.
- Do not plan Episode 6 around mood, aftermath, or symbolic ambiguity alone; plan concrete governance, threat, and character outcomes.
- Treat memory thread lifecycle states as binding: open threads must advance or be scheduled, scheduled threads must pay off in their payoff episode, resolved/locked threads must not be reopened, and aftermath threads may only appear as consequences.

TV WRITING CRAFT RULES:
{tv_writing_rules}

USER REQUEST / PREMISE:
{question}

SHOWRUNNER SEASON PLAN:
{season_plan}

PRIOR EPISODE PLANS:
{prior_episode_plans}

ALTERNATE MEMORY:
{memory_context}

ACTIVE THREADS:
{active_threads}

CANON EVIDENCE:
{canon_evidence}

Return ONLY strict JSON:
{{
  "episode_number": {episode_number},
  "working_title": "string",
  "war_state_entering": "string",
  "political_state_entering": "string",
  "a_plot": "string",
  "b_plot": "string",
  "c_plot": "string",
  "required_beats": ["6-10 concrete beats, using additional beats when payoff or ensemble coverage requires it"],
  "payoff_obligations": ["specific finale-contract items this episode must pay off on-page"],
  "memory_thread_actions": [
    {{
      "thread": "memory thread text or label",
      "entering_state": "open|advanced|scheduled|resolved|locked|aftermath",
      "episode_action": "advance|resolve|lock|show aftermath|do not mention",
      "explanation": "why this action is consistent with prior memory"
    }}
  ],
  "final_state_requirements": {{
    "westeros_government": "required explicit final state if this episode is responsible for it, otherwise empty string",
    "north_status": "required explicit final state if this episode is responsible for it, otherwise empty string",
    "white_walker_threat": "required explicit final state if this episode is responsible for it, otherwise empty string",
    "cersei_fate": "required explicit final state if this episode is responsible for it, otherwise empty string",
    "daenerys_fate": "required explicit final state if this episode is responsible for it, otherwise empty string",
    "jon_fate": "required explicit final state if this episode is responsible for it, otherwise empty string"
  }},
  "required_character_turns": {{
    "Jon Snow": "string",
    "Daenerys Targaryen": "string",
    "Cersei Lannister": "string",
    "Tyrion Lannister": "string",
    "Sansa Stark": "string",
    "Arya Stark": "string",
    "Bran Stark": "string",
    "Jaime Lannister": "string"
  }},
  "twist_or_reversal": "string",
  "closing_image": "string",
  "continuity_guardrails": ["..."]
}}