SuperAPI AI Directory

webtoon-panel-render

Design & creation

View repository

Updated 10-16 07:59

About this skill

Webtoon Panel Render — Reference → Bake Render → Validation Loop

A skill that quickly renders 50+ panels of a single webtoon episode with codex-image, 5 at a time , and validates them. Taking the panel prompt list created by prompt-smith as input, it mass-produces and validates PNGs while maintaining consistency.

This skill layers ~/.claude/skills/codex-image's parallel pattern with webtoon-specific consistency, validation, and concurrency conventions. The original codex invocation method follows codex-image SKILL.md.

4 Core Principles (reflecting EP01 production feedback):

  1. Reference first (consistency). Before drawing panels, first render multi-angle/expression reference sheets for characters to lock in the appearance baseline (SSOT). Text tokens alone produce a different face every time.
  2. Bake all text in-image (absolutely no post-processing). Speech bubble dialogue, sound effects, on-screen UI, environmental text, etc. — draw all text together with the artwork at image generation time(no HTML overlay, no Photoshop typing, no post-processing compositing of any kind). Therefore, do not use "no text" negative prompts. Also, the result must look baked in — text must blend in with the same hand-drawn ink tone as the artwork, and a "pasted-on" feel of clean digital fonts laid flat is a failure (integrated lettering, EP01 P30·P33 feedback).
  3. Lock backgrounds per scene unit. Inject per-scene location tokens (LOC_*) into every panel to prevent abrupt background changes (road → indoors, etc.).
  4. Validation-regeneration loop. panel-validator inspects panels along 6 axes and re-renders substandard ones until they meet the criteria.

Pre-check (once per episode)

codex --version                                # 0.128+ 권장
codex login status                             # "Logged in using ChatGPT" 확인
codex features list | grep image_generation    # stable/true 확인

If not logged in, ask the user to run codex login . Check before starting so rendering does not stop midway.

Step 0 — Render character reference sheets first (ref-sheet-artist)

Before panels, render multi-angle/expression reference sheetsfor the main characters to lock in the series appearance baseline. This is the anchor for all panel consistency and validation.

  • Input: _workspace/04_visual/character-sheets.md(immutable tokens), style-bible.md(art style).
  • 2 sheets recommended per character:
    • refs/{IDTAG}_turnaround.png — front/3-4/side/back full body, neutral solid background, even lighting, expressionless.
    • refs/{IDTAG}_expressions.png — close-ups of 3–4 key expressions.
  • Reference prompt conventions:
    • Global art style tokens + character immutable tokens + "character reference sheet, multiple angles (front, 3/4, side, back), full body, neutral grey background, even flat lighting, model sheet".
    • Make identifying marks (dots/scars/bracelets, etc.) clear, and fix left/right position.
    • References alone without text: no text, no labels, no speech bubbles, no watermark(a clean appearance catalog must be the baseline — the opposite of the panel's in-image speech bubbles).
  • Save: _workspace/04_visual/refs/(not in the episode folder, but series assets, reused in the next episode). refs/INDEX.mdRecord per-character paths + one-line key appearance + whether confirmed.
  • After rendering, check for 0 bytes/corruption/md5 duplicates, and visually inspect whether the same person is consistent across angles. If it wavers, re-render (up to 3 times). Once confirmed, hand off INDEX.md to prompt-smith·panel-validator.
  • Subsequent episodes: if refs/ already exists, do not re-render and reuse it (series consistency). Only add renders for new characters.

Input — panel prompt list

_workspace/04_visual/ep{NN}_prompts.md. Each panel has the following format:

### panel_001
- scene_group: A
- scene_id: S2 / location: LOC_CLASSROOM
- prompt: "<글로벌 스타일 + 장소 토큰 + 캐릭터 토큰&레퍼런스 앵커 + 구도/상태색 + in-image 말풍선(한글 대사) + negative(no watermark/English/gibberish)>"
- output: _workspace/05_panels/ep{NN}/panel_001.png

Before rendering, create the output directory: mkdir -p _workspace/05_panels/ep{NN}

Consistency token validation (required before rendering)

If character appearance, art style, and background waver between panels, the webtoon collapses. Because codex-image has difficulty fixing seeds, consistency tokens in the prompt text + confirmed reference anchorsare the consistency mechanism. Therefore, immediately before rendering, check that each prompt includes the following:

  1. Art style token — style-bible.md's fixed style keywords.
  2. Appearance tokens + reference anchors for appearing characters — character-sheets.md's fixed keyword set + refs/{IDTAG}_*.png specify confirmed references as the appearance baseline (including identifying marks left/right).
  3. Scene location fixed token (LOC_*) — the same location background token for all panels with the same scene_id. The key to preventing abrupt background changes.
  4. Aspect ratio/composition/state color instructions — the shot list's angle, composition, and scene color (normal/rewind/settlement, etc.).
  5. in-image speech bubbles/Korean dialogue — lettering.md's speech bubbles (type, exact Korean source text, position). Exclude panels with no dialogue.

The negative prompt is no textnot no watermark, no English text, no gibberish/garbled/misspelled text(because speech bubbles/Korean must be drawn). If missing or ambiguous, request reinforcement from prompt-smith. Do not render panels without consistency tokens, references, or location tokens — the cost of redrawing is greater.

Key — simultaneous 5-image batch rendering

Never exceed 5 codex global concurrent sessions. Because of the ChatGPT plan's concurrent request limit, 6+ causes responses to fluctuate due to queueing and some tasks to become abnormally long. Even with 3 panel-artists, the combined simultaneous codex exec executions of the three artists must be 5 or fewer, so the orchestrator dispatches render passes sequentially.

Method A (recommended) — batch helper script

codex-image's batch helper automatically batches any number into groups of 5. Pass an entire episode (or one scene group) at once:

~/.claude/skills/codex-image/scripts/codex_imagegen_batch.sh \
  _workspace/05_panels/ep{NN} \
  "<panel_001 프롬프트>::panel_001.png" \
  "<panel_002 프롬프트>::panel_002.png" \
  ... (임의 개수, 내부에서 5개씩 동시 실행)
  • When one batch (5 images) finishes, the next batch starts, so concurrent sessions never exceed 5.
  • All output PNGs are _workspace/05_panels/ep{NN}/are saved to.
  • If the prompt is long, be careful with shell quote escaping. It is safer to create a prompt list as a file and pass it in (see Method B below).

Method B — Manual 5-image parallel (when fine-grained control is needed)

In one message, exactly 5Bash tools run_in_background: trueare launched simultaneously. All output filenames must be different (if the path is the same, only the last one remains):

codex exec --sandbox workspace-write --skip-git-repo-check \
  --cd /Users/robin/Downloads/webtoon-new \
  -o /tmp/codex-ep{NN}-001.md \
  "이미지 생성 도구로 '<panel_001 프롬프트>' 이미지를 생성하고 ./_workspace/05_panels/ep{NN}/panel_001.png 로 저장. 파일 경로만 한 줄로 보고."
# 같은 패턴으로 panel_002~panel_005를 각각 run_in_background:true 로 동시에. 총 5개.
  • After receiving the completion notification for 5 images, launch the next 5. sleep No polling — background completion notifications arrive automatically.
  • --ask-for-approvalis not appended (non-interactive, so it exits immediately with an error).
  • If it is not a git repo, --skip-git-repo-checkdo not omit.

Volume and expected time

Number of panels Number of batches (5 images) Estimated render time
50장 10 waves About 26–28 minutes (~160 seconds per wave)
60장 12 waves 약 32분

Based on actual measurements, 5 images simultaneously take ~158 seconds wall-clock. Inform the user in advance that rendering takes tens of minutes.

Post-render verification (required)

Always check the files immediately after generation. If the codex session fails on a tool call, a 0-byte PNG may result.

ls -la _workspace/05_panels/ep{NN}/*.png
file _workspace/05_panels/ep{NN}/*.png       # 모두 "PNG image data" 인지
find _workspace/05_panels/ep{NN} -name '*.png' -size 0    # 0바이트 목록
# md5 중복 검사 (서로 다른 패널이 동일 이미지로 저장되는 사고 — EP01에서 실제 발생)
md5 -r _workspace/05_panels/ep{NN}/panel_*.png | awk '{print $1}' | sort | uniq -d   # 비면 중복 없음

Handling verification results:

  • 0-byte/corrupted PNG → re-render only that panel (do not rerun the entire batch).
  • md5 duplicate PNG → delete the duplicated panel and re-render only that panel alone (in concurrent batches, a panel rarely receives another panel's image). Since it is neither 0-byte nor corrupted, size/header checks alone cannot catch it, so an md5 check must be performed.
  • The file exists only in ~/.codex/generated_images/and not in the working folder → retry with a strengthened instruction in the prompt to "save to ./path".
  • Missing panel numbers → compare the prompts list with the actual PNG list and render only the missing numbers.
  • If all panels exist, are valid, and are unique, the first integrity pass is complete. Then, using the verification-regeneration loop(panel-validator) below, filter for content quality and pass it to the quality-reviewer.

Verification-regeneration loop (panel-validator) — re-render until criteria are met

Integrity (above) alone is not enough. With the same prompt, codex produces wrong backgrounds, different faces, and broken Hangul. Therefore, immediately after rendering, on a per-panel basis inspect the 6 axes and send back any that fall short for re-rendering (generation-verification pattern). Only passing panels go to assembly.

6-axis inspection (open each panel with Read for visual inspection + script):

  1. C1 Character consistency — refs/{IDTAG}_*.pngIs it the same person as (hair/eyes/body type/identifying marks/left-right). Intended variations (e.g., settlement graying) are exceptions.
  2. C2 Background/Location Continuity — Does the background match that panel's scene_id/location (LOC_*)? If it is the same scene but the location changes abruptly (road → indoors), REGEN.
  3. C3 Speech Bubbles & Korean Text (Highest Risk) — Does the speech bubble type match, and does the **Korean text exactly match the script (no typos, blurring, English/fake characters)** and is it legible? If a panel with no dialogue has a speech bubble, REGEN. + (d) Integrated lettering: Is the speech bubble/text in a hand-drawn ink tone that blends into the artwork — if it feels like a clean digital font laid flat as an "overlay/paste-on," REGEN even if the text is correct(mistaken for post-production text). Detection signals (OVERLAY=REGEN): mechanically uniform strokes, perfectly even letter spacing, system gothic look, excessively smooth edges, black tone separated from the artwork. Judge separately from spelling, covering 100% of all panels with text + a cross-comparison sweep after the first pass(whether only one panel stands out with a digital font). Record INTEGRATED/OVERLAY per panel in the validation.md lettering ledger — do not pass based only on an aggregate stamp (C3 strong ✓). For detailed procedure, see panel-validator the "C3(d) Integrated Lettering" section of the definition.
  4. C4 Prompt Fidelity — Are the shot size/angle/composition/emotion/state color as intended.
  5. C5 Dialogue Flow — Does the conversation read naturally when read in sequence with the preceding and following panels.
  6. C6 Technical Integrity — Not 0 bytes/corrupted/md5 duplicate, paths and numbers accurate.

Loop: For each panel, ACCEPT / REGEN (reason + correction instruction). REGEN → prompt-smith reinforces only that panel's prompt (abrupt background change → strengthen location tokens, broken Korean → quote/bold/shorten text, appearance deviation → reference anchors/marker emphasis, composition misalignment → specify angle) → the responsible panel-artist re-renders only that panel → re-inspect. Maximum 3 times per panel. If it still falls short after 3 times, close with the best version as ACCEPT-FLAG(pass + limitations stated) and record in ep{NN}_validation.md(to prevent infinite loops). If C3 (Korean) fails 3 times, close with "keep the speech bubble shape + adopt the most accurate text version" and flag it to quality-reviewer.

Output: _workspace/04_visual/ep{NN}_validation.md(per-panel verdict, 6-axis results, regeneration count, flag list).

Redrawing Only Some Parts (Follow-up Work)

Re-render only the panels that quality-reviewer designated as FIX/REDO. Do not redraw everything.

  1. Read the REDO panel numbers and correction instructions from qa_report.md.
  2. Reflect the correction instructions in that panel's prompt (coordinate with prompt-smith).
  3. Re-render only those panels in batches of 5 or fewer → re-verify.
  4. If the same panel still fails after 2 re-renders, pass it with a warning and state it in the report (to prevent infinite loops).

Anti-patterns

  • Batches of 6 or more — Increased response dispersion due to queuing, abnormal delays for some tasks.
  • Multiple artists each doing 5 panels simultaneously (10+ total) — Global 5 limit exceeded. Must dispatch sequentially.
  • Foreground serial execution — Parallel effect lost. Always run_in_background: true.
  • sleepto wait for completion — Background notification is automatic. Do not poll.
  • Using N identical output paths simultaneously — Only the last remains. All filenames must differ.
  • md5 duplicate not checked — In concurrent batches, you miss the accident where one panel receives another panel's image (actually occurred in EP01). Do not look only at size/header.
  • Rendering with missing reference/location tokens — Appearance and background waver, causing rework costs to explode. Do not render panels before the reference sheet is finalized and before location tokens are injected.
  • no textto suppress speech bubbles — This harness bakes speech bubbles in-image. no textmakes dialogue not drawn. Negation is no English/gibberish/misspelled text만.
  • Going straight to assembly without validation — Do not pass panels to assembly before they pass the panel-validator 6 axes.
  • C3 aggregate stamp — Passing everything in bulk as "C3 strong ✓" without individual lettering judgment per panel. In EP01, 13 panels' overlay-look leaked out this way. For panels containing text, record INTEGRATED/OVERLAY for all of them in the ledger.
  • Omitting lettering cross-comparison — Looking at panels only separately fails to catch the drift where "only one panel stands out with a digital font." After the first pass, gather text panels and compare them side by side.

Cost caution

  • Each codex call is an independent session → consumes token/plan message limits N times over.
  • Before heavy batches (50+ panels), codex login statusto check remaining plan quota.

Output

  • _workspace/05_panels/ep{NN}/panel_001.png … panel_0NN.png (50+장)
  • Report the render summary (number of generated/retried/failed panels) to episode-compositor and the leader.