AI 웹툰 대본을 JSON으로 쓰고, 글자는 그림에서 뺀 방식
웹툰 대본을 JSON 한 파일로 쓰고, 그림 AI에는 글자 없는 그림만 맡긴 뒤 말풍선은 코드로 얹었어요. 대본 칸이 이틀 사이 세 번 바뀐 기록도 있어요.
1단계부터 보기 · 모두 10단계대본을 컷마다 장면 칸과 대사 칸으로 나눈 JSON으로 쓰면, 그림 AI는 장면 칸만, 말풍선 코드는 대사와 좌표 칸만 읽게 할 수 있어요. 그림에는 글자를 넣지 말라고 적어 두고, 대사는 그림을 다시 그리지 않고 고쳐요.
준비물
- 도구그림 AI(이 사례는 Codex), 파이썬과 Pillow(그림에 글자를 얹는 라이브러리), 한글 글꼴
- 돈그림 AI 구독료 말고 따로 든 돈은 없어요.
- 걸리는 시간1화(그림 20장)의 대본 JSON과 말풍선 코드는 9월 20일 하루에 만들었어요.
- 난이도중급. JSON을 읽고 고칠 줄 알면 돼요.
차례
한 화면에 한 단계씩 넘기며 보세요.
- 1시작은 이랬어요
- 2알아 두기대본은 한 파일, 읽는 쪽은 두 곳

- 3알아 두기이틀 사이 세 번 바뀐 칸

- 4따라 하는 순서 1/5그림체 칸에 «글자·말풍선 없음»을 적어 그림 AI가 글자를 그리지 않게 해요

- 5따라 하는 순서 2/5컷마다 장면 설명(
img)과 대사 목록(bubbles)을 따로 적어요
- 6따라 하는 순서 3/5그림 AI에는 그림체·인물·장소·장면 설명만 넘겨 그림을 받아요

- 7따라 하는 순서 4/5말풍선 코드가 그림과 JSON을 함께 읽어 글자를 얹게 해요
- 8따라 하는 순서 5/5그림이 나온 뒤 얼굴과 몸이 있는 곳을
faces·bodies로, 말하는 입을at으로 적어 말풍선이 그림을 가리지 않게 해요 - 9막혔던 곳칸을 늘려도 말풍선은 «못씀» 판정을 받았어요

- 10막혔던 곳좌표는 그림이 나온 뒤에야 적을 수 있어요
한 쪽에 모두 보기
그리스 신화 웹툰 1화를 만들 때 대사와 말풍선은 그림 AI에 맡기지 않았어요. 2026년 9월 20일 구성 설계 문서에 이렇게 적었어요.
글자는 그림에 안 넣고 Pillow 로 말풍선·자막을 얹는다(한글 렌더 안정, 대사 고치기 쉬움). 대본은
1화_대본.json.
그림 AI에 한글 대사를 직접 그리게 해 본 기록은 없어요. 처음부터 나눠서 설계했고, 위 두 가지 이유는 해 보기 전에 미리 내린 판단이에요.
대본은 한 파일, 읽는 쪽은 두 곳

대본 JSON 맨 위에는 작품 이름, 화, 제목, 그림체(style), 인물(characters), 장소(places)가 있고, 그 아래 panels 에 컷이 차례로 들어가요.
- 그림 AI는 그림체·인물·장소와 컷마다의 장면 설명(
img)을 읽어요. 그림체 칸 끝에는 «글자·말풍선·워터마크 없음. 세로 컷 3:4.»를 적어 두었어요. - 말풍선 코드(
bubbles.py)는 완성된 그림 위에bubbles칸을 얹어요. 말풍선마다 종류(말, 생각, 외침, 속삭임, 자막, 효과음), 말한 사람, 대사, 놓을 자리가 들어가요.
대사를 고칠 때는 JSON의 글자만 바꾸고 말풍선 코드를 다시 돌리면 돼요. 그림은 다시 그리지 않아요.
이틀 사이 세 번 바뀐 칸
| 판 | 날짜(커밋) | 컷 | 새로 생긴 칸 |
|---|---|---|---|
| v1 | 9월 20일 | 그림 20장(컷 60) | img, bubbles(종류·말한 사람·놓을 곳·대사) |
| v2 | 9월 21일 | 23장 | 인물 말투(voices), 참고한 인기작(ref), 암전·눈 컷·큰 컷 표시, 아래 여백(gap), 효과음 크기·기울기 |
| v3 | 9월 21일 | 23장 | 가리면 안 되는 얼굴 상자(faces), 효과음이 피할 몸(bodies), 말한 사람의 입 좌표(at), 효과음의 소리가 나는 곳(말풍선 안 src), 컷 밖 화자 |
v2는 운영자가 «너무 ai가만든게 티나서» 인기 웹툰을 정독해 기준을 만들라고 한 뒤에 나왔어요. v3는 같은 날 운영자 지적 «휘이이 같은 효과대사가 인물을 가리는 현상 말풍선이 누가 말하는건지 구분하기 힘든것 이런것들을 개선해야해» 뒤에 나왔어요. v3 파일 머리에는 «효과음이 인물을 가리고 화자 구분이 어려움 → 꼬리·가림 회피»라고 적혀 있어요.
컷 칸에도 src 가 v2부터 있는데, 그쪽은 «원래 몇 번 그림인지»를 적는 칸이라 이름만 같아요. 좌표는 그림의 가로·세로를 1로 본 비율이에요. 말풍선 코드는 faces 상자를 피해서 풍선 자리를 고르고, 꼬리를 at 쪽으로 그어요.
따라 하는 순서
- 그림체 칸에 «글자·말풍선 없음»을 적어 그림 AI가 글자를 그리지 않게 해요.
- 컷마다 장면 설명(
img)과 대사 목록(bubbles)을 따로 적어요. 대사에는 종류와 말한 사람을 꼭 넣어요. - 그림 AI에는 그림체·인물·장소·장면 설명만 넘겨 그림을 받아요.
- 말풍선 코드가 그림과 JSON을 함께 읽어 글자를 얹게 해요. 이 사례는 Pillow와 한글 글꼴(맑은 고딕)을 썼어요.
- 그림이 나온 뒤 얼굴과 몸이 있는 곳을
faces·bodies로, 말하는 입을at으로 적어 말풍선이 그림을 가리지 않게 해요.
막혔던 곳
칸을 늘려도 말풍선은 «못씀» 판정을 받았어요
v3로 얼굴을 피하고 화자 입을 가리키게 했지만, 운영자는 v3 결과를 보고 «지금 상태는 완성도낮아서 못씀 판정이야»라고 했어요. 풍선과 얼굴 사이 거리가 문제였고, 숫자 기준을 다시 세운 이야기는 말풍선 글에 있어요.
좌표는 그림이 나온 뒤에야 적을 수 있어요
faces·bodies·at 은 완성된 그림을 보고 적는 값이라, 그림을 다시 뽑으면 다시 적어야 해요. 이 좌표를 사람이 적었는지, 도구로 쟀는지는 기록에서 찾지 못했어요.
확인하지 못한 것
- 그림 AI에 한글 대사를 직접 넣었다면 어떻게 나왔을지(해 본 기록 없음)
faces·bodies좌표를 정한 방법- 이 웹툰은 10월 9일 사이트 주제가 바뀌며 1화에서 멈춰, 2화부터 이 방식이 어떻게 이어졌을지는 몰라요
근거
- 이 저장소의 보관 폴더 · 2026-10-10 열어 확인. 구성 설계 문서(9월 20일, «글자는 그림에 안 넣고» 문장), 1화 대본 JSON 세 판(v1·v2·v3의 칸과 5번 컷), 말풍선 코드(
bubbles.py, 10월 9일 보관 태그 시점) 머리 설명, 작업일지 9월 20일·21일, 설계 기록 D19·D20, 커밋 시각.
이 글을 만든 방법
- 바탕운영자가 실제로 돌린 작업의 기록(작업 일지·설정 파일·오류 기록)
- 쓴 쪽AI(Claude)가 썼어요
- 독립 검수2026-10-10에 쓴 AI와 다른 AI가 원본과 대조해 통과시켰어요
- 사실 확인2026-10-10
발행 2026-10-10