| name | webtoon-image-generation |
| description | prompts.json을 받아 codex-image의 5장 병렬 배치 기능으로 회차 컷 이미지를 실제로 생성하는 스킬. 시드 그룹 단위 묶음과 실패 재시도, 메타 기록을 처리한다. image-generator 에이전트가 호출한다. |
Webtoon Image Generation — codex-image 병렬 배치 실행
핵심 룰
- 항상 5장 병렬 배치를 우선 — 실측 직렬 대비 2.4~2.85배 빠름 (codex-image 스킬의 핵심 강점)
- 같은 시드 그룹은 같은 배치에 묶기 — 캐릭터 일관성 최대화
- 실패는 1회 재시도, 재실패 시 GEN_FAILED 표기 + 진행 (전체 회차를 막지 않음)
- 모든 생성에 메타 기록 — 시드·모델·시각 — 재현 가능성 확보
워크플로우
Step 1 — prompts.json 로드 & 시드 그룹 군집화
prompts = load("_workspace/episodes/ep{NN}/prompts.json")
groups = group_by(prompts.cuts, key="seed_group")
batches = []
for group_name, cuts in groups.items():
for i in range(0, len(cuts), 5):
batches.append(cuts[i:i+5])
Step 2 — 배치별 codex-image 호출
codex-image 스킬은 한 번에 최대 5장 병렬 생성 지원. 각 배치를 codex exec 한 번으로 처리:
codex exec --task "image_generation_batch" \
--inputs '[
{"prompt": "...cut1...", "size": "1024x1792", "seed_group": "ep01_location_seoul"},
{"prompt": "...cut2...", "size": "1024x1792", "seed_group": "ep01_location_seoul"},
...
]'
(실제 호출 형식은 codex-image 스킬의 SKILL.md 참조)
Step 3 — 결과 저장
각 컷 이미지를 _workspace/episodes/ep{NN}/images/cut_{ID:02d}.png로 저장. 메타는 같은 폴더의 cut_{ID:02d}.meta.json:
{
"cut_id": 1,
"model": "gpt-image-2",
"seed": 4823917,
"seed_group": "ep01_location_seoul",
"size": "1024x1792",
"generated_at": "2026-05-17T20:00:15Z",
"duration_sec": 12,
"retry_count": 0,
"prompt_hash": "sha256:abc123..."
}
Step 4 — 실패 처리
- 단일 컷 실패 → 즉시 1회 재시도 (같은 시드 유지)
- 재실패 → meta.json의
status: "GEN_FAILED", report에 기록, 빈 placeholder PNG는 생성하지 않는다 (panel-assembler가 자체 처리)
- 배치 전체 실패(quota/network) → 30초 대기 후 1회 재시도. 재실패 시 오케스트레이터에 에스컬레이션.
Step 5 — generation_report.json 작성
회차 전체 결과 요약을 _workspace/episodes/ep{NN}/generation_report.json:
{
"episode": 1,
"total_cuts": 8,
"succeeded": 8,
"failed": [],
"batches": [
{"batch_id": 1, "cut_ids": [1,2,3,4,5], "duration_sec": 45, "seed_group_set": ["ep01_location_seoul", "ep01_han-do-hyun"]},
{"batch_id": 2, "cut_ids": [6,7,8], "duration_sec": 28, "seed_group_set": ["ep01_han-do-hyun", "ep01_group_han-do-hyun"]}
],
"started_at": "2026-05-17T20:00:00Z",
"completed_at": "2026-05-17T20:01:15Z",
"total_duration_sec": 75
}
모델 선택 가이드
- 기본: codex-image (병렬 5장, 빠른 속도) — 대부분의 컷
- 고해상도/정밀: gpt-image-2 — 임팩트 컷(scroll_length 4)만, 단일 호출
- 다중 레퍼런스/캐릭터 시트 합성: gemini-3-pro-imagegen — 캐릭터 시트 생성 시(여러 portrait를 한 화면에 합성)
prompts.json의 model_preference 필드 우선, 없으면 기본 사용.
사이즈 표준
| aspect_ratio | size |
|---|
| 9:16 | 1024x1792 (세로 임팩트) |
| 16:9 | 1792x1024 (가로 와이드) |
| 1:1 | 1024x1024 (정사각/침묵) |
scroll_length 3-4 임팩트 컷은 가능하면 9:16 + 1024x1792로 통일.
체크리스트