An integrated orchestrator that produces a single webtoon episode from trend research to a finished viewer. It sequentially operates 27 specialized agents as 4 stage-based teams.
Execution mode: Agent team (reconfigured per stage)
Since only 1 team is active per session, for each Phase create a team with TeamCreateand when the work is done clean up with TeamDelete, then create the next Phase team. The previous team's outputs remain in _workspace/and are carried over by the next team via Read. For every team member spawn and Agent call, specify **model: "opus"**.
Agent composition (27 members, 4 teams)
| 팀 | Team member | Role | Skill | Main output |
|---|---|---|---|---|
| Research team | trend-scout | Genre/trope trends | webtoon-trend-research | 01_research/trend-scout.md |
| platform-ranker | Platform rankings·serialization structure | webtoon-trend-research | 01_research/platform-ranker.md | |
| audience-analyst | Readership·churn·immersion | webtoon-trend-research | 01_research/audience-analyst.md | |
| hook-analyst | Reverse-engineering hooking/twist mechanisms | webtoon-trend-research | 01_research/hook-analyst.md | |
| trend-synthesizer | Comprehensive planning brief | webtoon-trend-research | 01_research/trend-brief.md | |
| Scenario team | concept-architect | High concept/logline | webtoon-scenario | 02_story/concept.md |
| worldbuilder | Worldbuilding·rules | webtoon-scenario | 02_story/world.md | |
| character-designer | Cast (appearance + personality + arc) | webtoon-scenario | 02_story/characters.md | |
| series-plotter | Series arc·episode map | webtoon-scenario | 02_story/series-arc.md | |
| twist-master | Per-episode twist design | webtoon-scenario | 02_story/twist-plan.md | |
| tension-engineer | Tension curve·cliffhanger | webtoon-scenario | 02_story/tension-curve.md | |
| episode-outliner | Episode beat sheet (50+ panels) | webtoon-scenario | 03_episode/ep{NN}_beatsheet.md | |
| dialogue-writer | Dialogue-driven script | webtoon-scenario | 03_episode/ep{NN}_script.md | |
| script-editor | Proofreading·twist clarity | webtoon-scenario | 03_episode/ep{NN}_script_final.md | |
| Visual team | art-director | Style bible·consistency tokens·location tokens·speech bubble conventions | webtoon-panel-breakdown | 04_visual/style-bible.md, character-sheets.md |
| ref-sheet-artist | Character multi-angle/expression reference sheets (preceding all panels) | webtoon-panel-render | 04_visual/refs/*.png, refs/INDEX.md | |
| panel-director | 50+ panel shot list (scene_id/location) | webtoon-panel-breakdown | 04_visual/ep{NN}_shotlist.md | |
| letterer | In-image speech bubble/dialogue bake spec | webtoon-assembly | 04_visual/ep{NN}_lettering.md | |
| prompt-smith | Per-panel codex prompt (bake + location + reference) | webtoon-panel-render | 04_visual/ep{NN}_prompts.md | |
| panel-artist-a | scene group A render | webtoon-panel-render | 05_panels/ep{NN}/panel_*.png | |
| panel-artist-b | scene group B render | webtoon-panel-render | 05_panels/ep{NN}/panel_*.png | |
| panel-artist-c | scene group C render | webtoon-panel-render | 05_panels/ep{NN}/panel_*.png | |
| panel-validator | Panel 6-axis validation·regeneration loop gate (general-purpose) | webtoon-panel-render | 04_visual/ep{NN}_validation.md | |
| Assembly & review team | episode-compositor | Vertical scroll viewer assembly | webtoon-assembly | 06_assembly/ep{NN}/index.html |
| quality-reviewer | QA review (general-purpose) | webtoon-assembly | 06_assembly/ep{NN}/qa_report.md | |
| continuity-manager | Inter-episode continuity | webtoon-assembly | 06_assembly/continuity.md | |
| showrunner | Oversight·sign-off·packaging | webtoon-assembly | RELEASE/ep{NN}/ |
Workflow
Phase 0: Context check (determine follow-up work)
_workspace/ Determine the execution mode based on existence and the user request.
_workspace/Does not exist → Initial run. Phase 1로._workspace/Exists + "next episode" request → New episode run. Increment {NN}, and 02_story·style-bible·character-sheets·refs/ (reference sheets)·continuity.md is reused (Read, no re-render — series consistency), only newly generated after 03_episode._workspace/exists + "only redo this episode's OO" request → partial re-run. Restructure and invoke only that stage's team, and overwrite only its outputs. For downstream stages (e.g., when the script is revised: shot list → render → assembly), re-run only as much as is affected._workspace/exists + new planning input → new planning run. Move to the existing_workspace/를_workspace_{YYYYMMDD_HHMMSS}/and then Phase 1.
When partially re-running or running a new episode, include the previous output paths in the team members' prompts and instruct them to "Read first and reflect only the improvements."
Phase 1: Preparation
- Analyze user input — episode number {NN}, genre direction (if any), constraints (rating·length·tone).
_workspace/00_input/brief.mdRecord input·episode number·constraints in .- Ensure working directory:
mkdir -p _workspace/{00_input,01_research,02_story,03_episode,04_visual,05_panels,06_assembly,RELEASE}.
Phase 2: Trend Research (Research Team)
Execution mode: agent team
TeamCreate(team_name: "webtoon-research", members: [trend-scout, platform-ranker, audience-analyst, hook-analyst, trend-synthesizer])— allagent_type=custom name,model: "opus".TaskCreateregister 5 tasks with . For the trend-synthesizer task, [coordinate] with the other 4 viadepends_on.- 4 researchers investigate in parallel and share interesting findings via SendMessage (hook-analyst↔trend-scout, etc.).
- trend-synthesizer synthesizes the 4 outputs → organize into
01_research/trend-brief.md. TeamDelete. (Outputs are preserved in_workspace/)
Phase 3: Scenario (Scenario Team)
Execution mode: agent team (pipeline + fan-out)
TeamCreate(team_name: "webtoon-story", members: [concept-architect, worldbuilder, character-designer, series-plotter, twist-master, tension-engineer, episode-outliner, dialogue-writer, script-editor]).- Task dependencies: concept → world → characters (sequential coordination) → series-arc → {twist-plan, tension-curve} (mutual coordination) → beatsheet → script → script_final.
- Guarantee a twist every episode: twist-master specifies a per-episode twist in twist-plan, and script-editor verifies in script_final that the twist is conveyed clearly.
- Secure 50+ panels' worth of content: episode-outliner splits the beats finely enough to produce 50+ panels' worth of content.
- Outputs: organize into
02_story/*,03_episode/ep{NN}_script_final.md. TeamDelete.
Phase 4: Visual Production (Visual Team)
Execution mode: agent team (supervisor + generate-verify loop). Strictly enforce codex concurrent sessions ≤ 5.
TeamCreate(team_name: "webtoon-visual", members: [art-director, ref-sheet-artist, panel-director, letterer, prompt-smith, panel-artist-a, panel-artist-b, panel-artist-c, panel-validator]).- Art direction: art-director가
style-bible.md(art style·location token LOC_*·speech bubble visual conventions included) +character-sheets.md(consistency tokens + reference specs) and share with the team. - Reference sheets first (consistency SSOT): ref-sheet-artist renders multi-angle/expression references of the main characters with codex (concurrent ≤5) → confirm in
04_visual/refs/→ hand off INDEX.md to prompt-smith·panel-validator. Panel rendering starts after references are confirmed. (For subsequent episodes, reuse the existing refs/.) - Storyboard+lettering in parallel: panel-director가
ep{NN}_shotlist.md(50+ panels, each panel's scene_id/location), letterer works in parallel writingep{NN}_lettering.md(in-image speech bubble bake spec, Korean kept short). - Prompt synthesis: prompt-smith synthesized [style+location token+character token&reference anchor+composition/state color+speech bubble/Korean bake]
ep{NN}_prompts.mdand distributed scene groups A/B/C.no textprohibited (speech bubbles must be drawn), negationno English/gibberish/misspelled text. - Rendering (concurrency core): Render panels in batches of 5. Even with 3 panel-artists, total concurrent codex exec executions ≤ 5. The leader dispatches render passes sequentially or uses a single driver (
scripts/codex_imagegen_batch.shor episode render script) to auto-batch 5 at a time. 50 panels ≈ 10 waves. - Validation-regeneration loop (core — until criteria are met): Immediately after batch rendering, panel-validator validates 6 axes (C1 character/reference, C2 background·location continuity, C3 speech bubble·Korean text, C4 prompt fidelity, C5 dialogue flow, C6 integrity·md5 duplication) → ACCEPT/REGEN decision. For REGEN panels, prompt-smith reinforces the prompt → the responsible panel-artist re-renders only that panel → re-validation. Maximum 3 times per panel, if exceeded, ACCEPT-FLAG (pass + record limit). When all panels pass,
04_visual/ep{NN}_validation.mdcomplete. - Deliverables:
04_visual/*(style-bible/character-sheets/refs/shotlist/lettering/prompts/validation),05_panels/ep{NN}/panel_*.png(validation-passed version). TeamDeleteorganized as.
Phase 5: Assembly · Review (Assembly Review Team)
Execution mode: Agent team (generation-validation)
TeamCreate(team_name: "webtoon-assembly", members: [episode-compositor, quality-reviewer, continuity-manager, showrunner]).- episode-compositor assembles (speech-bubble-already-baked) panel PNGs into without overlay vertical scroll
index.html(designing only spacing·rhythm). - quality-reviewer performs progressive QA — first reads panel-validator's
validation.md(identifying ACCEPT-FLAG), then reviews the entire episode for panel count 50+, reference appearance consistency, background continuity, baked Korean text accuracy/readability, dialogue flow, twist delivery, and damaged/duplicate images. PASS/FIX/REDO decision. - FIX/REDO panels → re-inject into panel-validator loop (prompt-smith reinforcement + panel-artist re-render) or rework only that panel via SendMessage feedback (maximum 2 loops). If the twist is not revealed, feedback to the scenario team/letterer.
- continuity-manager가
continuity.mdupdate (inter-episode appearance/settings/hooks). - After showrunner signs off,
RELEASE/ep{NN}/final packaging + next episode seed (cliffhanger continuation) proposal. TeamDeleteorganized as.
Phase 6: Wrap-up
_workspace/fully preserved (intermediate deliverables = audit trail).- Result summary to user: episode title·logline·one-line twist·panel count·viewer path (
RELEASE/ep{NN}/index.html)·next episode seed. - Feedback request: "Is there anything you'd like to fix in twist intensity/dialogue tone/art consistency?" (connects to Phase 7 evolution)
Data flow
trend-brief.md
└→ concept → world → characters → series-arc → {twist-plan, tension-curve}
└→ beatsheet → script → script_final
script_final + characters
└→ style-bible(+장소토큰 LOC_*, 말풍선 규약)/character-sheets
└→ refs/*.png (레퍼런스 시트, 패널 전 선행)
└→ shotlist(scene_id/location) + lettering(in-image 말풍선 명세)
└→ prompts(스타일+장소+레퍼런스앵커+말풍선 베이크, scene A/B/C)
└→ panel_*.png ⇄ panel-validator 6축 검증-재생성 루프 ⇄ prompt-smith/panel-artist
└→ validation.md (전 패널 통과)
panel_*.png(말풍선 포함) → index.html(오버레이 없음) → qa_report → (재작업 루프) → RELEASE/ep{NN}/
Error handling
| Situation | Strategy |
|---|---|
| 1 team member fails/stops | Leader detects idle notification → SendMessage status check → restart or create replacement team member |
| Majority of team members fail | Notify the user and confirm whether to proceed |
| codex render 0 bytes/corrupted | Re-render only that panel (batch-wide rerender prohibited). After 2 failures, warn and pass, specify in report |
| Panel md5 duplicate (different panels have identical images) | Delete the duplicate panel and re-render it individually. Size/header checks cannot catch this, so md5 checking is mandatory (actually occurred in EP01) |
| Abrupt background change (road→indoors, etc.) | panel-validator C2 REGEN → prompt-smith strengthens location tokens (LOC_*) then re-renders only that panel |
| Korean speech bubble broken/typos | panel-validator C3 REGEN → reinforce with shorter text, quotes, bold and re-render. After 3 failures, ACCEPT-FLAG the most accurate version + specify in report |
| Character appearance deviation | panel-validator C1 REGEN → emphasize reference anchors and identifying markers then re-render |
| Entire codex is slow (450 seconds+) | Suspect plan limit → codex login status check, reduce concurrency and retry |
| Fewer than 50 panels | Request episode-outliner/panel-director to split and add beats |
| Twist unclear (QA REDO) | Give feedback to scenario team (twist-master/script-editor) or letterer then rework |
| Data conflict | Cite sources, deletion prohibited |
| Infinite rework | Maximum 3 regenerations per panel, maximum 2 step-wise rework loops. If exceeded, proceed with current state and report the limits |
Test scenario
Normal flow
- User: "Make episode 1 of a webtoon reflecting trends."
- Phase 1: record brief,
_workspace/create. - Phase 2: 5 research team members → trend-brief.md.
- Phase 3: 9 scenario team members → script_final.md (1+ twists, 50+ panels worth of content).
- Phase 4: 9 visual team members → reference sheets first → 50+ panel PNGs (speech bubbles baked in, batches of 5, concurrency ≤5) → panel-validator 6-axis validation-regeneration loop passes all panels → validation.md.
- Phase 5: 4 assembly/inspection team members → index.html without overlays + qa PASS → RELEASE/ep01/.
- Result:
RELEASE/ep01/index.htmlvertical-scroll webtoon (including speech bubbles) + next episode seed.
Error flow (abrupt background change + Korean text corruption regeneration)
- After Phase 4 rendering, panel_023's background is the same scene (road) but comes out as indoors, and panel_031's speech bubble Korean text is corrupted.
- panel-validator judges C2 (023) and C3 (031) as REGEN → records reasons and correction instructions in validation.md.
- prompt-smith strengthens location tokens (LOC_*) for 023 and reinforces text with quotes, bold, shorter for 031 → the responsible panel-artist re-renders only those 2.
- panel-validator re-validates: 023 ACCEPT, 031 still has some shaky characters even after 3 attempts → ACCEPT-FLAG the most accurate version + specify in report.
- After all panels pass, proceed with assembly, specify flagged panel limitations in qa_report and RELEASE notes.
Follow-up work guide
- "Next episode" → Phase 0 case 2 (new episode). Reuse worldbuilding/style/continuity, only new content after 03_episode.
- "Make the twist stronger" → Partial re-run of the scenario team (twist-master, script-editor) → re-run affected downstream stages.
- "Redo panel N" → Partial re-run of the visual team (prompt-smith reinforcement + re-render by the relevant panel-artist + re-validation by panel-validator) → reassembly.
- If the same type of feedback repeats 2+ times, propose improvements to the relevant skill/agent definition (harness evolution). Record changes in the CLAUDE.md change history.