| name | webtoon-dialogue-writing |
| description | 한국 웹툰 스타일의 풍부한 대사를 작성하는 스킬. shot_list의 빈약한 텍스트 메타를 6가지 텍스트 타입(대사·생각·외침·속삭임·내레이션·효과음)으로 풍성하게 채워 shot_list_enriched.json을 만든다. 회차 추가 작성·기존 회차 대사 보강·대사 부족 피드백·웹툰 풍부화 요청 시 반드시 사용. dialogue-writer 에이전트가 호출한다. |
Webtoon Dialogue Writing — 한국 웹툰 대사 작성
왜 풍부한 대사가 중요한가
한국 웹툰의 90%는 대사로 호흡한다. 컷당 텍스트 1-3개가 표준이며, 대사 없는 컷은 의도된 정적 연출에만 사용한다. 빈약한 텍스트는 독자 이탈을 가속화한다.
6가지 텍스트 타입 — 언제 무엇을 쓰는가
1. dialogue (본 대사)
언제: 인물 간 명시적 대화, 외적 발화.
스타일: 둥근 흰 말풍선 + 굵은 검정 한글.
길이: 1-2문장, 모바일 가독성 우선.
위치: 화자 가까운 모서리 (bottom_left, bottom_right, top_left, top_right).
예시:
- 박재준: "오늘만 살아 돌아와라."
- 윤세아: "당신 같은 등급은 죽어도 통계가 안 잡혀요."
2. thought (속생각)
언제: 인물의 내면 독백, 외부에 말하지 않는 생각.
스타일: 구름 모양 옅은 말풍선 + 회색 이탤릭.
길이: 1문장.
위치: 인물 머리 위/옆.
예시:
- 도현(thought): '또 들었다.'
- 윤세아(thought): '뭐지... 이 글리치는.'
3. shout (외침)
언제: 분노·놀람·고함·비명.
스타일: 가시 모양 빨강/노랑 말풍선 + 진한 굵은 글씨, 큰 폰트.
길이: 짧을수록 강력. 1-3단어가 정점.
위치: 컷 중앙 또는 큰 영역 차지.
예시:
- 도현(shout): "안 돼!!"
- 후배 헌터(shout): "조장님!!!"
4. whisper (속삭임)
언제: 비밀 발화·작은 소리·반쯤 입 닫은 말.
스타일: 점선 작은 말풍선 + 흐린 회색 글씨, 작은 폰트.
길이: 1문장 이내.
예시:
- 윤세아(whisper): "...센서 오류."
- 박재준(whisper): "...나도 들었다."
5. narration (내레이션)
언제: 도현의 시점 독백, 회차 도입/마감 (도현 전용).
스타일: 무말풍선 + 손글씨 회색 #6E6E72.
길이: 1-2문장.
위치: 컷 상단/하단 가로 전폭.
회차당 제한: 2-3개로 제한 (남발 금지).
예시:
- "혼자 살아 돌아왔다. 또."
- "내가 보는 건 무(無). 시스템이 보는 건 오류. 둘이 만나면."
6. sfx (효과음/의성·의태어)
언제: 동작·환경·시스템 음.
스타일: 굵은 산세리프 무말풍선, 흰색 + 검정 외곽.
위치: 음원 근처 또는 컷 모서리.
관용 표현:
| 카테고리 | 예시 |
|---|
| 발걸음 | 터벅— 터벅— / 타닥— |
| 폭발 | 쾅— / 콰지직— / 퍼억— |
| 시스템 알림 | ping — / 띠리링 — |
| 글리치 | 지직— / ㅈㅣ직— |
| 빗소리 | 쏴아— / 후두두 — |
| 검 마찰 | 챙— / 카앙— |
| 호흡 | 후— 흡— / 하악— |
컷별 텍스트 배치 알고리즘
Step 1 — 컷의 의도 분류
purpose를 읽고 컷의 의도를 분류:
- 도입/오프닝: narration 1 + sfx 0-1
- 대화 장면: dialogue 2-3 + 가끔 thought 1
- 액션 임팩트: sfx 1-2 + shout 0-1 (대사 0)
- 감정 정점: thought 1 + narration 1
- 클리프행어: 외부 텍스트(operator_text, glitch_text) + narration 1
- 침묵 컷: 0개
Step 2 — 화자 결정
컷의 characters 배열을 기준으로 누가 말할 권리가 있는지 결정:
- 등장 캐릭터만 dialogue/thought 화자 가능
- narration은 항상 도현만 (도현이 컷에 없어도 도현 시점이면 OK)
- 운영자/시스템 텍스트는 캐릭터 무관
Step 3 — 음색 적용
각 캐릭터의 음색 가이드 (dialogue-writer.md 참조) 적용:
- 한도현: 짧고 흐림
- 윤세아: 단호 + 균열
- 박재준: 형 톤 반말
- 정하린: 정중 존댓말
- 강도경: 권위적 은유
Step 4 — 위치 지정
화자가 컷의 어느 쪽에 있는지 추정 → 그 쪽 모서리에 배치.
2인 대화는 좌우 분할.
Step 5 — 길이 검수
- 한 말풍선 = 한국어 12-20자 (모바일 가독성 한도)
- 초과 시 두 말풍선으로 분할 (...로 잇기)
shot_list_enriched.json 예시
원본 (빈약):
{
"cut_id": 7,
"purpose": "미끼조 집결 와이드 — 박재준 첫 등장",
"characters": ["han-do-hyun", "park-jae-jun"],
"text_overlay": {
"dialogue": [{"speaker": "park-jae-jun", "text": "오늘만 살아 돌아와라."}]
}
}
강화:
{
"cut_id": 7,
"purpose": "미끼조 집결 와이드 — 박재준 첫 등장",
"characters": ["han-do-hyun", "park-jae-jun"],
"text_overlay": {
"dialogue": [
{"speaker": "park-jae-jun", "text": "오늘만 살아 돌아와라.", "position": "bottom_left", "style": "dialogue"},
{"speaker": "junior_a", "text": "...네 조장님!", "position": "bottom_right", "style": "dialogue"}
],
"thought": [
{"speaker": "han-do-hyun", "text": "오늘도 살아 돌아오라는 말. 4년째 듣는다.", "position": "top_right", "style": "thought"}
],
"sfx": ["우우우—"],
"narration_doh_yun": ["새벽 5시. 옥수동 31번."]
}
}
회차 정점에서 침묵 사용
모든 회차에 1-2개의 "텍스트 0개 컷"이 있어야 한다 — 임팩트 직전 침묵, 감정 폭발 후 잔향.
침묵 컷에는 절대 텍스트를 채우지 말 것.
체크리스트
render_target 자동 분류 (필수)
panel-assembler(HTML) vs bubble-artist(이미지) 하이브리드 분담:
| 텍스트 타입 | render_target | 이유 |
|---|
shout | image | 손그림 가시 말풍선이 진짜 임팩트 |
sfx 큰 효과음 (쾅·콰지직·퍼억·쿵·콰앙·챙) | image | 굵은 외곽선 의성어가 웹툰 표준 |
sfx 작은 효과음 (터벅·ping·지직·우우우) | html | 가벼운 환경음은 CSS로 충분 |
dialogue 1-3단어 감정 강함 | image | 강조 짧은 대사 |
dialogue 일반 대화 | html | 수정·번역 유리 |
thought, whisper, narration | html (항상) | 가벼운 텍스트, CSS로 충분 |
system_ui_text, operator_text, monster_emotion, glitch_text | html (항상) | 시그니처 텍스트 |
컷당 image 제한: 일반 컷 0-1개, 임팩트 컷(scroll 3-4) 1-2개, 클라이맥스 2개.