| name | webtoon-producer |
| description | systemless-player 시나리오를 토대로 세로 스크롤 웹툰을 회차 단위로 제작하는 오케스트레이터 스킬. 8인 전문가 팀(character-designer / scene-director / dialogue-writer / narrative-doctor / image-prompt-engineer / image-generator / panel-assembler / consistency-qa)을 조율하여 캐릭터 일관성 보장된 마우스 스크롤 가능한 HTML 웹툰을 출력한다. 트리거 - "웹툰 그려줘", "1화 그려줘", "에피소드 N 제작", "시즌 1 시작", "캐릭터 시트 만들어줘", "다시 그려줘", "재실행", "수정", "보완", "대사 보강", "대사 추가", "장면 추가", "서사 보완", "갭 채우기", "연결성 점검", "{회차}의 {특정 컷}만 다시", "이전 결과 기반으로 개선", "다음 화 작업" 등 시스템리스 플레이어 웹툰 제작 관련 모든 요청에 사용. 단, 시나리오/줄거리 자체를 새로 쓰는 것은 이 스킬의 범위가 아니다. |
Webtoon Producer — 6인 팀 오케스트레이터
목표
systemless-player/ 폴더의 시나리오 문서를 입력으로 받아, 캐릭터 일관성이 보장된 세로 스크롤 HTML 웹툰 페이지를 회차 단위로 생성한다. 최종 산출물은 마우스 스크롤(데스크탑) 또는 터치 스크롤(모바일)로 읽을 수 있다.
팀 구성 (9인)
| 역할 | 에이전트 | 책임 |
|---|
| 캐릭터 디자이너 | character-designer | 5인 캐릭터 시트(SSOT) 작성·유지 |
| 콘티 디렉터 | scene-director | 시놉시스 → 컷 리스트 분해 |
| 대사 작가 | dialogue-writer | shot_list → 6타입 풍부 대사 + render_target 분류 |
| 서사 의사 | narrative-doctor | 시즌 전체 갭 진단 + 보완 컷 처방 |
| 프롬프트 엔지니어 | image-prompt-engineer | 컷 → 영문 프롬프트 (일관성 보장) |
| 이미지 생성자 | image-generator | codex-image 5장 병렬 배치 실행 |
| 말풍선 작가 | bubble-artist | shout·큰 SFX·강조 dialogue를 이미지에 손그림 박기 (image-to-image) |
| 패널 어셈블러 | panel-assembler | HTML 세로 스크롤 페이지 조립 (image-박힘 텍스트 제외하고 6 CSS 스타일) |
| QA 검수자 | consistency-qa | 4축 교차 비교 검수 (각 단계 직후 점진 QA) |
실행 모드
에이전트 팀 (TeamCreate + TaskCreate + SendMessage) — 6명이 동시 활성, 단계별로 핸드오프하며 QA가 모든 단계에 끼어든다.
오케스트레이터(메인 Claude)가 리더 역할:
TeamCreate로 팀 구성
TaskCreate로 작업 발행
- 팀원들이
SendMessage로 직접 조율
- 리더는 진행 상황 모니터링 + 사용자 피드백 처리
모든 Agent 호출은 model: "opus" 명시 필수.
Phase 0 — 컨텍스트 확인 (초기/후속/부분 재실행 판별)
워크플로우 시작 시 반드시 다음을 확인:
| 상태 | 판별 | 실행 모드 |
|---|
_workspace/characters/가 비어 있음 | 시즌 첫 작업 | 초기 실행: Phase 1부터 |
_workspace/characters/ 있고 _workspace/episodes/가 비어 있음 | 캐릭터만 셋업됨 | 회차 작업: Phase 2부터 |
| 사용자가 "ep{NN} 다시 그려줘" / "{회차} 컷 N만 다시" | 부분 재실행 | 부분 재실행: 해당 에이전트만 호출 |
| 사용자가 "다음 화 작업" / 새 회차 번호 지시 | 차회차 진입 | 회차 작업: Phase 2 (해당 회차만) |
| 사용자가 새 시나리오 파일 제공 | 새 시즌 | 기존 _workspace/를 _workspace_prev/로 이동 후 초기 실행 |
부분 재실행 시 해당 단계의 산출물만 갱신, 후속 단계는 갱신된 입력으로 자동 재실행.
Phase 1 — 시즌 셋업 (캐릭터 시트, 1회만)
실행 모드: 에이전트 팀 (character-designer + consistency-qa)
TeamCreate로 팀 구성: 멤버 = character-designer, consistency-qa
- character-designer에 다음 작업 발행:
- 5인 sheet.json 작성 (
systemless-player/01_world_chars.md + 03_visual.md의 캐릭터 시그니처 색 테이블 기반)
- 5인 portrait_*.png 생성 (codex-image 5장 병렬 × 5인 = 5회 배치)
_workspace/characters/INDEX.md 작성
- character-designer 완료 후 consistency-qa에 시트 검수 의뢰
- blocker 있으면 character-designer 재호출, 없으면 Phase 2로 진행
Phase 2 — 회차 제작 (회차당 1회)
실행 모드: 에이전트 팀 (5인: scene-director + image-prompt-engineer + image-generator + panel-assembler + consistency-qa)
사용자가 회차 번호(1~30)를 지정. 한 번에 1회차씩 생성을 기본으로 함.
Phase 2-A: 컷 리스트 작성
- scene-director에 발행:
_workspace/episodes/ep{NN}/shot_list.json 작성
- 03_visual.md의 시퀀스 회차(1·5·15·23·28·29·30)는 그대로 변환
- 완료 후 consistency-qa에 스크롤 호흡 사전 검수 의뢰
Phase 2-A.5: 대사 강화 (신규)
- dialogue-writer에 발행:
shot_list.json → shot_list_enriched.json 작성
- 회차당 25-40개 텍스트, 6타입(dialogue/thought/shout/whisper/narration/sfx) 활용
- 캐릭터 음색 가이드 준수 (dialogue-writer.md 참조)
- 완료 후 consistency-qa에 음색 일관성 검수 의뢰
Phase 2-B: 프롬프트 작성
- image-prompt-engineer에 발행:
prompts.json 작성
- 캐릭터 sheet.json의 prompt_block 그대로 주입
- 완료 후 consistency-qa에 프롬프트 사전 검수 의뢰 (캐릭터 디스크립터 누락 체크)
Phase 2-C: 이미지 생성 (병렬 핵심)
- image-generator에 발행: codex-image 5장 병렬 배치로 회차 컷 전체 생성
- 8-15컷 회차는 2-3개 배치로 처리, 시드 그룹 단위 묶음
- 완료 후 consistency-qa에 이미지 일관성 검수 의뢰
Phase 2-C.5: 손그림 말풍선 박기 (신규, 하이브리드)
- bubble-artist에 발행: shot_list_enriched.json에서
render_target: "image" 텍스트 추출
- 각 임팩트 컷에 대해 codex
-i 옵션으로 image-to-image 처리
- 원본 백업(
cut_{NN}.orig.png) 후 새 cut_{NN}.png 생성
- 회차당 평균 2-3컷 처리 (5장 병렬, 약 3분)
- 완료 후 panel-assembler에 통지 (HTML에서 박힌 텍스트 제외)
Phase 2-D: HTML 조립
- panel-assembler에 발행:
index.html 생성 + INDEX.html 갱신
render_target: "html" 텍스트만 HTML 오버레이 (image 박힌 텍스트는 자동 제외)
- 완료 후 consistency-qa에 최종 4축 검수 의뢰
Phase 2-E: 최종 검수 & 결과 보고
- qa_report.json의 verdict 확인
pass/pass_with_warnings: 사용자에게 회차 완성 보고 + index.html 경로 제시
needs_revision: blocker 별 수정 작업 자동 발행 → 재검수 루프
Phase 2.6 — 시즌 서사 진단 (신규, 시즌 단위 트리거 시만)
사용자가 "전체 회차 점검", "서사 보완", "장면 추가" 등을 요청하거나, 시즌 마무리 시점에 자동 실행.
실행 모드: 서브 에이전트 (narrative-doctor 단독)
- narrative-doctor에 발행: 시즌 전체
shot_list_enriched.json + 시놉시스 비교
- 4축 진단 (시놉시스 커버리지·인과·감정·시각 운율)
_workspace/episodes/_narrative_audit.json 작성
- critical 갭 발견 시:
- 처방 A (신규 컷): scene-director + dialogue-writer + image-prompt-engineer + image-generator + panel-assembler 순차 재호출
- 처방 B (텍스트 강화): dialogue-writer만 재호출 → panel-assembler HTML 재조립
- 처방 C (재배치): scene-director만 재호출 → panel-assembler HTML 재조립
- 모든 처방 후 consistency-qa 시즌 일관성 재검수
Phase 3 — 사용자 피드백 반영 (선택)
회차 완성 후 사용자에게 묻기:
- "결과에서 개선할 부분이 있나요?"
- "캐릭터 외형, 컷 분배, 텍스트 오버레이 중 수정할 부분이 있나요?"
피드백 유형별 처리:
| 피드백 | 대상 | 처리 |
|---|
| "도현 머리가 너무 검다" | character-designer | sheet.json 수정 → 시즌 일관성 경고 + 영향 회차 재생성 큐 |
| "이 컷 그림이 별로" | image-generator | 해당 cut만 재생성 |
| "이 컷 구도가 안 맞아" | scene-director | shot_list 수정 → 후속 단계 자동 재실행 |
| "텍스트 위치가 이상" | panel-assembler | HTML 재조립 (이미지는 그대로) |
| "이 회차 자체 다시" | 5인 전체 | Phase 2 전체 재실행 |
데이터 전달 프로토콜
파일 기반 (대용량 산출물)
- 작업 디렉토리:
_workspace/
- 파일명 컨벤션:
cut_{ID:02d}.png, shot_list.json 등
- 회차 단위 격리:
_workspace/episodes/ep{NN}/ 하위에 모든 회차 자산
메시지 기반 (실시간 조율)
SendMessage로 단계 완료 통지 + 다음 에이전트 호출 트리거
- QA는 각 단계 직후 메시지로 검수 요청 받음
태스크 기반 (진행 추적)
- TaskCreate로 회차별 작업 항목 등록
- 진행률 = 완료 컷 수 / 총 컷 수
에러 핸들링
| 에러 유형 | 전략 |
|---|
| 캐릭터 시트 파일 누락 | character-designer 자동 호출 |
| 이미지 생성 실패(단일 컷) | image-generator 1회 재시도 → GEN_FAILED 표기 + 진행 |
| 이미지 생성 전체 실패(quota) | 30초 대기 후 1회 재시도 → 오케스트레이터 에스컬레이션 |
| HTML 렌더 깨짐 | panel-assembler 1회 재시도 → 실패 시 골격만 + 컷 누락 보고 |
| QA blocker 무한 반복 | 같은 blocker 3회 반복 시 사용자에게 결정 의뢰 |
핵심 원칙: 1회 재시도 후 재실패 시 해당 결과 없이 진행(보고서에 누락 명시).
산출물 디렉토리 구조
_workspace/
├── style_bible/
│ └── style_bible.json
├── characters/
│ ├── INDEX.md
│ ├── han-do-hyun/
│ │ ├── sheet.json
│ │ ├── portrait_front.png
│ │ ├── portrait_side.png
│ │ ├── expression_neutral.png
│ │ ├── expression_signature.png
│ │ └── pose_signature.png
│ ├── yoon-se-ah/...
│ ├── park-jae-jun/... (+ sheet_v2.json from ep24)
│ ├── jung-ha-rin/...
│ └── kang-do-gyeong/...
└── episodes/
├── INDEX.html
├── ep01/
│ ├── shot_list.json
│ ├── prompts.json
│ ├── images/
│ │ ├── cut_01.png
│ │ ├── cut_01.meta.json
│ │ └── ...
│ ├── generation_report.json
│ ├── qa_report.json
│ └── index.html
├── ep02/...
└── ...
회차 진행 우선순위 추천
- 시즌 시작: 캐릭터 셋업 → 1화
- 시그니처 정착: 1·5화 (도입), 12화 (몬스터=인간 첫 폭로), 15화 (반복 엔진 정착)
- 마디 회차 우선: 5·10·15·20·25·30화 — 시각 정점이 명확해 작업 효율 좋음
- 클라이맥스: 28·29·30화 (5막 4화 연속)
테스트 시나리오
정상 흐름
- 사용자: "1화 그려줘"
- Phase 0:
_workspace/characters/가 비어있음 → 초기 실행
- Phase 1: 5인 캐릭터 시트 + portrait 생성 + QA pass
- Phase 2: 1화 shot_list(8컷) → prompts → 이미지 8장 병렬 생성 → HTML 조립 → 4축 검수 pass_with_warnings
- 사용자에게
_workspace/episodes/ep01/index.html 경로 보고
에러 흐름
- 사용자: "1화 다시 그려줘"
- Phase 0: 기존 ep01 있음 + 사용자가 새 입력 제공 안 함 → 부분 재실행
- 사용자에게 "어떤 부분을 다시 그릴까요? (전체 재생성 / 특정 컷 / 캐릭터 외형 / 텍스트만)" 확인
- 답변에 따라 해당 에이전트만 호출
체크리스트