Skip to main content

webtoon-image-generation

prompts.json을 받아 codex-image의 5장 병렬 배치 기능으로 회차 컷 이미지를 실제로 생성하는 스킬. 시드 그룹 단위 묶음과 실패 재시도, 메타 기록을 처리한다. image-generator 에이전트가 호출한다.

Source facts

Repository
revfactory/systemless-player
Last source activity
May 18, 2026 at 00:19
Detected SKILL.md language
Korean
Stars
1
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
webtoon-image-generation
description
prompts.json을 받아 codex-image의 5장 병렬 배치 기능으로 회차 컷 이미지를 실제로 생성하는 스킬. 시드 그룹 단위 묶음과 실패 재시도, 메타 기록을 처리한다. image-generator 에이전트가 호출한다.
# Webtoon Image Generation — codex-image 병렬 배치 실행 ## 핵심 룰 1. **항상 5장 병렬 배치를 우선** — 실측 직렬 대비 2.4~2.85배 빠름 (codex-image 스킬의 핵심 강점) 2. **같은 시드 그룹은 같은 배치에 묶기** — 캐릭터 일관성 최대화 3. **실패는 1회 재시도**, 재실패 시 GEN_FAILED 표기 + 진행 (전체 회차를 막지 않음) 4. **모든 생성에 메타 기록** — 시드·모델·시각 — 재현 가능성 확보 ## 워크플로우 ### Step 1 — prompts.json 로드 & 시드 그룹 군집화 ```python # 의사 코드 prompts = load("_workspace/episodes/ep{NN}/prompts.json") groups = group_by(prompts.cuts, key="seed_group") batches = [] for group_name, cuts in groups.items(): # 5장씩 잘라 배치 구성 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`: ```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`: ```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로 통일. ## 체크리스트 - [ ] 모든 컷이 cut_{ID:02d}.png로 저장됨 - [ ] 모든 컷에 meta.json 존재 - [ ] generation_report.json 작성됨 - [ ] 실패 컷은 status 기록 후 진행 (placeholder 자동 생성 금지) - [ ] panel-assembler와 consistency-qa에게 완료 통지
View on GitHub