Initial commit: Novel Agent setup
- Add 3 AI agents (writing, revision, story-continuity specialists) - Add 4 slash commands (rovel.create, write, complete, seed) - Add novel creation/writing rules - Add Novelpia reference data (115 works, 3328 chapters) - Add CLAUDE.md and README.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
434
.claude/commands/rovel.complete.md
Normal file
434
.claude/commands/rovel.complete.md
Normal file
@@ -0,0 +1,434 @@
|
||||
---
|
||||
description: 웹소설 완결까지 연재 - 현재 화수부터 마감 회차까지 자동 연재 (집필+퇴고 반복)
|
||||
---
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
User input **must** be considered (if not empty).
|
||||
|
||||
## Overview
|
||||
|
||||
`/rovel.complete`는 작품을 마감 회차까지 자동으로 연재합니다.
|
||||
|
||||
**Examples:**
|
||||
- `/rovel.complete 협회 소속 양호선생님` - 150화까지 연재
|
||||
- `/rovel.complete 협회 소속 양호선생님 10` - 현재부터 10화만 연재
|
||||
- `/rovel.complete 협회 소속 양호선생님 30화까지` - 30화까지 연재
|
||||
|
||||
**This is a Multi-Agent Loop Workflow**:
|
||||
```
|
||||
┌───────────────────────────────────────────────────────────────┐
|
||||
│ 초기화 Phase │
|
||||
│ - 아웃라인.md에서 마감 회차 확인 │
|
||||
│ - 연재상태.md에서 현재 진행 상황 확인 │
|
||||
│ - 연재 범위 결정 (현재 화수 → 마감 회차) │
|
||||
└───────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌───────────────────────────────────────────────────────────────┐
|
||||
│ 반복 Loop (각 화마다) │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ Step 1: 일관성 검토 (5화마다) │ │
|
||||
│ │ - story-continuity-specialist 에이전트 │ │
|
||||
│ │ - 설정/복선/호감도 일관성 점검 │ │
|
||||
│ │ - 문제 발견 시 사용자에게 보고 후 계속 │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ Step 2: 화 설계 │ │
|
||||
│ │ - 연재상태.md의 다음 화 예정 설계 참조 │ │
|
||||
│ │ - 스토리구성.md 기반 화 타입 결정 │ │
|
||||
│ │ - 아웃라인.md TODO 확인 │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ Step 3: 집필 (writing-specialist) │ │
|
||||
│ │ - 문체.md + 스토리구성.md 기반 집필 │ │
|
||||
│ │ - drafts/{N}_draft.md 저장 │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ Step 4: 퇴고 (revision-specialist) │ │
|
||||
│ │ - 설정/캐릭터/문체 일관성 검토 │ │
|
||||
│ │ - CRITICAL 자동 수정 │ │
|
||||
│ │ - chapters/{N}.md 최종본 저장 │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ Step 5: 상태 갱신 │ │
|
||||
│ │ - 연재상태.md 업데이트 (호감도/복선/타임라인) │ │
|
||||
│ │ - 아웃라인.md TODO 갱신 │ │
|
||||
│ │ - 다음 화 설계 준비 │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ [다음 화로 반복] 또는 [마감 회차 도달 시 종료] │
|
||||
└───────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌───────────────────────────────────────────────────────────────┐
|
||||
│ 완료 Phase │
|
||||
│ - 연재 완료 보고서 출력 │
|
||||
│ - 전체 복선 회수 상태 확인 │
|
||||
│ - 캐릭터 아크 완성 확인 │
|
||||
└───────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Execution Flow
|
||||
|
||||
### Phase 1: 초기화
|
||||
|
||||
1. **입력 파싱**:
|
||||
```yaml
|
||||
입력 유형:
|
||||
- 작품명만: 아웃라인.md의 목표 화수까지
|
||||
- 작품명 + 숫자: 현재부터 N화만 추가 연재
|
||||
- 작품명 + "N화까지": N화까지 연재
|
||||
```
|
||||
|
||||
2. **마감 회차 확인**:
|
||||
```yaml
|
||||
경로: content/rovel/{작품명}/아웃라인.md
|
||||
|
||||
찾을 정보:
|
||||
- "목표 분량" 또는 "시즌 1 완결" 섹션
|
||||
- 예: "시즌 1 완결: 150화"
|
||||
- 부별 구성 테이블
|
||||
|
||||
기본값: 150화 (아웃라인에 명시 없을 경우)
|
||||
```
|
||||
|
||||
3. **현재 진행 상황 확인**:
|
||||
```yaml
|
||||
경로: content/rovel/{작품명}/연재상태.md
|
||||
|
||||
추출 정보:
|
||||
- 마지막 완료 화수
|
||||
- 현재 호감도 테이블
|
||||
- 활성 복선 목록
|
||||
- 다음 화 예정 설계
|
||||
```
|
||||
|
||||
4. **연재 범위 결정**:
|
||||
```yaml
|
||||
시작 화수: 연재상태.md의 마지막 화 + 1
|
||||
종료 화수: 마감 회차 또는 사용자 지정 화수
|
||||
|
||||
예시:
|
||||
현재 1화 완료, 마감 150화
|
||||
→ 2화부터 150화까지 연재 (149화 분량)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: 연재 루프 (각 화마다 반복)
|
||||
|
||||
> **핵심**: 각 화마다 `/rovel.write`와 동일한 품질 보장
|
||||
|
||||
#### Step 1: 일관성 검토 (5화마다)
|
||||
|
||||
```yaml
|
||||
조건: (현재 화수 - 시작 화수) % 5 == 0
|
||||
|
||||
에이전트: story-continuity-specialist
|
||||
프롬프트: |
|
||||
최근 5화의 연재 일관성을 검토해주세요.
|
||||
|
||||
## 작품 정보
|
||||
- 작품명: {작품명}
|
||||
- 검토 범위: {N-4}화 ~ {N}화
|
||||
|
||||
## 검토 항목
|
||||
1. 설정 일관성 (세계관, 캐릭터 외형)
|
||||
2. 호감도 진행 (급격한 변화 없는지)
|
||||
3. 복선 상태 (미회수 복선 초과 여부)
|
||||
4. 타임라인 일관성
|
||||
|
||||
## 참조 파일
|
||||
[연재상태.md]
|
||||
[기획안.md]
|
||||
[인물목록.md]
|
||||
[최근 5화 chapters/]
|
||||
|
||||
## 출력
|
||||
- 발견된 문제 (있을 경우)
|
||||
- 수정 권장 사항
|
||||
- 다음 5화 방향 제안
|
||||
|
||||
문제 발견 시: 사용자에게 보고 후 계속/중단 선택
|
||||
```
|
||||
|
||||
#### Step 2: 화 설계
|
||||
|
||||
```yaml
|
||||
참조 파일:
|
||||
1. 연재상태.md → 다음 화 예정 설계
|
||||
2. 아웃라인.md → 부별 계획, TODO
|
||||
3. 스토리구성.md → 화 타입 규칙
|
||||
|
||||
화 설계 생성:
|
||||
기본 정보:
|
||||
화수: N화
|
||||
타입: A/B/C/D/E (스토리구성.md 참조)
|
||||
제목: 상처 중심 명명법
|
||||
|
||||
등장 인물:
|
||||
- 아웃라인.md 회차별 계획 참조
|
||||
- 자화연 2~3화마다 등장 유지
|
||||
|
||||
핵심 이벤트:
|
||||
- 연재상태.md 다음 화 예정에서 추출
|
||||
- 아웃라인.md TODO에서 해당 화 내용 추출
|
||||
|
||||
복선 관리:
|
||||
- 연재상태.md 활성 복선에서 회수 대상 선정
|
||||
- 새로 배치할 복선 계획
|
||||
```
|
||||
|
||||
#### Step 3: 집필 (writing-specialist 호출)
|
||||
|
||||
```yaml
|
||||
Task 도구 사용:
|
||||
subagent_type: writing-specialist
|
||||
prompt: |
|
||||
다음 정보를 기반으로 {N}화를 집필해주세요.
|
||||
|
||||
## 작품 정보
|
||||
- 작품명: {작품명}
|
||||
- 화수: {N}화
|
||||
- 화 타입: {타입}
|
||||
- 제목: {제목}
|
||||
|
||||
## 참조 파일 내용
|
||||
[연재상태.md 전체]
|
||||
[문체.md 전체]
|
||||
[스토리구성.md 해당 타입 섹션]
|
||||
[기획안.md 캐릭터 말투 섹션]
|
||||
[인물목록.md 등장 인물 섹션]
|
||||
[이전 2화 마지막 부분]
|
||||
|
||||
## 화 설계
|
||||
[Step 2에서 생성한 화 설계]
|
||||
|
||||
## 출력
|
||||
- 파일 경로: {작품폴더}/drafts/{N}_draft.md
|
||||
- 분량: 3,500자 (±500자)
|
||||
```
|
||||
|
||||
#### Step 4: 퇴고 (revision-specialist 호출)
|
||||
|
||||
```yaml
|
||||
Task 도구 사용:
|
||||
subagent_type: revision-specialist
|
||||
prompt: |
|
||||
다음 초안을 퇴고해주세요.
|
||||
|
||||
## 작품 정보
|
||||
- 작품명: {작품명}
|
||||
- 화수: {N}화
|
||||
- 초안 경로: {작품폴더}/drafts/{N}_draft.md
|
||||
|
||||
## 참조 파일 내용
|
||||
[연재상태.md - 호감도 테이블 필수]
|
||||
[문체.md]
|
||||
[인물목록.md]
|
||||
[기획안.md]
|
||||
|
||||
## 퇴고 후 작업
|
||||
1. CRITICAL 오류 자동 수정
|
||||
2. 최종본을 {작품폴더}/chapters/{N}.md에 저장
|
||||
3. 퇴고 요약 보고 (Critical/Warning 건수)
|
||||
```
|
||||
|
||||
#### Step 5: 상태 갱신
|
||||
|
||||
```yaml
|
||||
갱신 파일:
|
||||
|
||||
1. 연재상태.md:
|
||||
- 마지막 화: N화로 업데이트
|
||||
- 작중 시간: 업데이트
|
||||
- 마지막 장면: 이번 화 마지막 장면
|
||||
- 호감도 테이블: 변화 반영
|
||||
- 활성 복선: 회수/배치 반영
|
||||
- 타임라인: 이번 화 추가
|
||||
- 최근 화 요약: 추가 (5화 유지)
|
||||
- 다음 화 예정 설계: 업데이트
|
||||
- 갱신 로그: 날짜, 화수, 내용
|
||||
|
||||
2. 아웃라인.md TODO:
|
||||
- 해당 화 완료 처리 [x]
|
||||
- 새 복선 기록 (필요 시)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: 화 완료 보고 (각 화마다)
|
||||
|
||||
```markdown
|
||||
## ✅ {N}화 완료
|
||||
|
||||
**파일**: `chapters/{N}.md`
|
||||
**분량**: N자
|
||||
**진행률**: {완료/전체}화 ({퍼센트}%)
|
||||
|
||||
### 주요 내용
|
||||
- [장면 요약]
|
||||
|
||||
### 퇴고 결과
|
||||
- Critical: N건 (모두 수정됨)
|
||||
- Warning: N건
|
||||
|
||||
### 다음 화
|
||||
- {N+1}화: {예정 내용}
|
||||
|
||||
---
|
||||
[계속 진행 중...]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: 연재 완료
|
||||
|
||||
마감 회차 도달 시:
|
||||
|
||||
```markdown
|
||||
# 연재 완료 보고서
|
||||
|
||||
## 기본 정보
|
||||
|
||||
| 항목 | 값 |
|
||||
|------|-----|
|
||||
| 작품명 | {작품명} |
|
||||
| 총 연재 화수 | {시작화}~{종료화} ({N}화) |
|
||||
| 총 분량 | 약 N만자 |
|
||||
| 연재 기간 | {시작}~{종료} |
|
||||
|
||||
## 캐릭터 최종 상태
|
||||
|
||||
| 인물 | 최종 호감도 | 최종 단계 | 총 등장 | 아크 완성 |
|
||||
|------|------------|----------|---------|----------|
|
||||
| 자화연 | N/100 | XX | N화 | ✅/⚠️ |
|
||||
| ...
|
||||
|
||||
## 복선 최종 상태
|
||||
|
||||
### 회수 완료
|
||||
| 복선 | 심은 화 | 회수 화 |
|
||||
|------|---------|---------|
|
||||
|
||||
### 미회수 (후속작용)
|
||||
| 복선 | 심은 화 | 비고 |
|
||||
|------|---------|------|
|
||||
|
||||
## 부별 완료 현황
|
||||
|
||||
| 부 | 화수 | 테마 | 상태 |
|
||||
|----|------|------|------|
|
||||
| 1부 | 1~30화 | 숨기며 돕기 | ✅ |
|
||||
| 2부 | 31~70화 | 의심의 시작 | ✅ |
|
||||
| ...
|
||||
|
||||
## 품질 지표
|
||||
|
||||
- 총 CRITICAL 수정: N건
|
||||
- 총 WARNING: N건
|
||||
- 설정 위반 0건 유지: ✅/❌
|
||||
|
||||
## 결말 확인
|
||||
|
||||
- 재각성 엔딩 완료: ✅/❌
|
||||
- 천마 루트 확정: ✅/❌
|
||||
- 에필로그 작성: ✅/❌
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 중단/재개 처리
|
||||
|
||||
### 중단 시
|
||||
|
||||
```yaml
|
||||
저장 항목:
|
||||
- 연재상태.md (자동 갱신되어 있음)
|
||||
- 마지막 완료 화수 기록
|
||||
|
||||
재개 방법:
|
||||
- /rovel.complete {작품명}
|
||||
- 연재상태.md의 마지막 화+1부터 자동 재개
|
||||
```
|
||||
|
||||
### 오류 발생 시
|
||||
|
||||
```yaml
|
||||
집필 실패:
|
||||
- 사용자에게 알림
|
||||
- 해당 화 재시도 또는 스킵 선택
|
||||
|
||||
퇴고 실패:
|
||||
- drafts/{N}_draft.md 유지
|
||||
- 수동 퇴고 후 재개 가능
|
||||
|
||||
일관성 문제 발견:
|
||||
- 사용자에게 보고
|
||||
- 수정 후 계속 또는 중단 선택
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 진행 속도 조절
|
||||
|
||||
```yaml
|
||||
기본: 각 화 완료 후 즉시 다음 화
|
||||
|
||||
선택 옵션:
|
||||
- /rovel.complete {작품명} --pause
|
||||
→ 각 화 완료 후 사용자 확인 대기
|
||||
|
||||
- /rovel.complete {작품명} --batch 5
|
||||
→ 5화씩 배치 후 중간 보고
|
||||
|
||||
- /rovel.complete {작품명} --review
|
||||
→ 매 화마다 상세 퇴고 보고서 출력
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Reference Files
|
||||
|
||||
| 유형 | 경로 | 용도 |
|
||||
|------|------|------|
|
||||
| 연재상태 | `content/rovel/{작품명}/연재상태.md` | 진행상황/호감도/복선 |
|
||||
| 아웃라인 | `content/rovel/{작품명}/아웃라인.md` | 마감 회차, TODO |
|
||||
| 기획안 | `content/rovel/{작품명}/기획안.md` | 핵심 규칙 |
|
||||
| 문체 | `content/rovel/{작품명}/문체.md` | 문체 DNA |
|
||||
| 스토리구성 | `content/rovel/{작품명}/스토리구성.md` | 화 구성 패턴 |
|
||||
| 인물목록 | `content/rovel/{작품명}/인물목록.md` | 캐릭터 설정 |
|
||||
|
||||
## Agent Dependencies
|
||||
|
||||
| 에이전트 | 역할 | 호출 빈도 |
|
||||
|----------|------|----------|
|
||||
| writing-specialist | 집필 | 매 화 |
|
||||
| revision-specialist | 퇴고 | 매 화 |
|
||||
| story-continuity-specialist | 일관성 검토 | 5화마다 |
|
||||
|
||||
---
|
||||
|
||||
## 연재 완료 조건
|
||||
|
||||
```yaml
|
||||
정상 완료:
|
||||
- 마감 회차 도달
|
||||
- 아웃라인.md 엔딩 완료 확인
|
||||
- 모든 장기 복선 회수 (또는 후속작용 명시)
|
||||
|
||||
비정상 종료:
|
||||
- 사용자 중단 요청
|
||||
- 연속 3회 오류 발생
|
||||
- 심각한 일관성 문제 (사용자 확인 필요)
|
||||
```
|
||||
993
.claude/commands/rovel.create.md
Normal file
993
.claude/commands/rovel.create.md
Normal file
@@ -0,0 +1,993 @@
|
||||
---
|
||||
description: 웹소설 신규 작품 생성 - 레퍼런스 분석부터 기획안/아웃라인/문체/스토리구성 파일 자동 생성
|
||||
---
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
User input **must** be considered (if not empty).
|
||||
|
||||
## Overview
|
||||
|
||||
신규 웹소설 작품을 생성하는 8단계 인터랙티브 워크플로우입니다.
|
||||
|
||||
**실행 방법:**
|
||||
- `/rovel.create 363368` (레퍼런스 ID)
|
||||
- `/rovel.create 363368 새 작품명` (레퍼런스 ID + 작품명)
|
||||
- `/rovel.create` (레퍼런스 없이 시작 - AI가 제안)
|
||||
|
||||
**작가의 실제 워크플로우를 반영한 8단계:**
|
||||
```
|
||||
1. 레퍼런스 분석 (있으면)
|
||||
2. 아이디어 대화 → 컨셉 도출
|
||||
3. 기획안 작성 (핵심 설정)
|
||||
4. 아웃라인 작성 (전체 줄거리)
|
||||
5. 인물목록 작성 (캐릭터 설정)
|
||||
6. 문체 설계 (문장 DNA)
|
||||
7. 스토리구성 설계 (화 구성 규칙)
|
||||
8. 파일 생성 및 완료
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: 입력 파싱 및 레퍼런스 확인
|
||||
|
||||
### 입력 유형 분석
|
||||
|
||||
```yaml
|
||||
Case A - 레퍼런스 ID 제공:
|
||||
입력: 363368
|
||||
해석: content/references/novelpia/363368/
|
||||
다음: Phase 2 (레퍼런스 분석)
|
||||
|
||||
Case B - 레퍼런스 + 작품명:
|
||||
입력: 363368 새 작품명
|
||||
해석: 레퍼런스 분석 + 작품명 확정
|
||||
다음: Phase 2 (레퍼런스 분석)
|
||||
|
||||
Case C - 레퍼런스 없음:
|
||||
입력: (없음)
|
||||
해석: AI 제안 모드
|
||||
다음: Phase 3 (아이디어 대화) 직접 진행
|
||||
```
|
||||
|
||||
### 레퍼런스 유효성 확인 (Case A, B)
|
||||
|
||||
```bash
|
||||
ls content/references/novelpia/{ID}/
|
||||
```
|
||||
|
||||
- 파일 없으면: "레퍼런스를 찾을 수 없습니다. 레퍼런스 없이 진행할까요?"
|
||||
- 파일 있으면: 파일 개수 확인 → Phase 2로
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: 레퍼런스 샘플링 분석 (선택)
|
||||
|
||||
> 레퍼런스가 있을 때만 실행. 없으면 Phase 3로.
|
||||
|
||||
### 샘플링 전략
|
||||
|
||||
| 챕터 | 분석 목적 |
|
||||
|------|----------|
|
||||
| 1~3화 | 도입부 스타일, 세계관 도입 방식 |
|
||||
| 10화 | 초반 전개 패턴, 캐릭터 소개 방식 |
|
||||
| 30화 | 중반 리듬, 관계 발전 속도 |
|
||||
| 70화 | 후반 전개, 긴장감 유지 |
|
||||
| 100화+ | 장기 연재 스타일 변화 |
|
||||
|
||||
### 분석 항목
|
||||
|
||||
```yaml
|
||||
문체 DNA:
|
||||
- 문장 호흡: 평균 문장 길이, 여백 패턴
|
||||
- 대화문 스타일: 경어체/반말, 따옴표 사용
|
||||
- 내면 독백: 형식 ('생각' vs 이탤릭 등)
|
||||
- 의성어/효과음: 형식 (- 삐빅. vs *삐빅*)
|
||||
|
||||
구조적 특징:
|
||||
- 시점: 1인칭/3인칭
|
||||
- 장면 전환: ***, ---, 빈 줄 등
|
||||
- 회당 분량: 자 수 추정
|
||||
- 1화 완결성: 에피소드형 vs 연속형
|
||||
|
||||
장르 특수 요소:
|
||||
- 시스템창 UI: 있음/없음, 형식
|
||||
- 로맨스 표현: 직접적/간접적
|
||||
- 유머 패턴: 시스템 개그, 상황 코미디 등
|
||||
```
|
||||
|
||||
### 분석 결과 제시
|
||||
|
||||
```markdown
|
||||
## 레퍼런스 분석 완료
|
||||
|
||||
**레퍼런스**: {ID}
|
||||
**장르**: {분석된 장르}
|
||||
**문체 특징**:
|
||||
- 문장 호흡: {짧음/중간/길음}
|
||||
- 여백 활용: {많음/적음}
|
||||
- 시점: {1인칭/3인칭}
|
||||
|
||||
**구조적 특징**:
|
||||
- 회당 분량: 약 {N}자
|
||||
- 장면 전환: {방식}
|
||||
|
||||
**특수 요소**:
|
||||
- 시스템창: {있음/없음}
|
||||
- 로맨스 표현: {스타일}
|
||||
|
||||
이 스타일을 기반으로 새 작품을 만들까요?
|
||||
(수정 요청 가능)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: 아이디어 대화 (Interactive - 핵심!)
|
||||
|
||||
> **작가가 막연한 아이디어만 가져와도 AI가 구체화해주는 단계**
|
||||
|
||||
### 3-1: 초기 아이디어 수집
|
||||
|
||||
```markdown
|
||||
## 새 작품 아이디어
|
||||
|
||||
작품에 대해 알려주세요. 아래 중 알고 있는 것만 말씀해주시면 됩니다:
|
||||
|
||||
**필수 아님 - 있으면 알려주세요:**
|
||||
1. 장르: (로맨스판타지 / 현대판타지 / 이세계 / 헌터물 / 기타)
|
||||
2. 주인공 직업/역할: (예: 양호선생님, 카페 사장, 던전 관리자)
|
||||
3. 핵심 컨셉: (예: "숨긴 능력자", "치유 계열", "하렘")
|
||||
4. 히로인 유형: (예: "상처받은 캐릭터들", "갭모에")
|
||||
|
||||
**모르겠으면:**
|
||||
"그냥 힐링물 하고 싶어요" 정도만 말씀해주셔도 됩니다.
|
||||
제가 여러 옵션을 제안해드릴게요.
|
||||
```
|
||||
|
||||
### 3-2: AI 제안 (사용자 입력이 부족할 때)
|
||||
|
||||
```markdown
|
||||
## 제안드리는 컨셉 옵션
|
||||
|
||||
사용자 키워드 "{키워드}"를 기반으로 3가지 컨셉을 제안드립니다:
|
||||
|
||||
### 옵션 A: {컨셉명}
|
||||
- **주인공**: {역할}
|
||||
- **히로인**: {유형}
|
||||
- **핵심 갈등**: {갈등}
|
||||
- **당위성**: {왜 주인공에게 오는가}
|
||||
- **예상 분위기**: {톤 앤 매너}
|
||||
|
||||
### 옵션 B: {컨셉명}
|
||||
(동일 구조)
|
||||
|
||||
### 옵션 C: {컨셉명}
|
||||
(동일 구조)
|
||||
|
||||
---
|
||||
|
||||
어떤 옵션이 마음에 드시나요? 또는 섞어서 원하시는 방향을 알려주세요.
|
||||
```
|
||||
|
||||
### 3-3: 컨셉 확정 체크리스트
|
||||
|
||||
**반드시 확정해야 할 항목:**
|
||||
|
||||
```yaml
|
||||
필수 항목:
|
||||
작품명: (확정)
|
||||
장르: (확정)
|
||||
시점: 1인칭 / 3인칭
|
||||
주인공:
|
||||
이름:
|
||||
역할:
|
||||
핵심 컨셉: (예: 숨긴 능력자)
|
||||
성격:
|
||||
히로인:
|
||||
인원: N명
|
||||
유형: (상처받은 캐릭터, 갭모에 등)
|
||||
당위성:
|
||||
왜 주인공에게 오는가:
|
||||
첫 방문 이유:
|
||||
톤 앤 매너:
|
||||
야릇함: 순수 / 은근 / 19+
|
||||
코미디: 높음 / 중간 / 낮음
|
||||
```
|
||||
|
||||
**확정 확인:**
|
||||
```
|
||||
위 내용으로 진행할까요? (수정 요청 가능)
|
||||
→ "좋아" / "진행" / "Good" 시 Phase 4로
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: 기획안 작성
|
||||
|
||||
> **핵심 설정과 규칙을 정리하는 단계**
|
||||
|
||||
### 4-1: 기획안 구조
|
||||
|
||||
```markdown
|
||||
# {작품명} - 기획안
|
||||
|
||||
> 꼭 지켜야 할 핵심 규칙과 설정
|
||||
|
||||
## 기본 정보
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| 장르 | {장르} |
|
||||
| 시점 | {시점} |
|
||||
| 분량 | 회당 3,500~5,000자 |
|
||||
| 레퍼런스 | {레퍼런스ID 또는 없음} |
|
||||
|
||||
## 세계관 핵심 설정
|
||||
### 배경
|
||||
{세계관 설명}
|
||||
|
||||
### 주요 시설/장소
|
||||
{장소 상세 묘사}
|
||||
|
||||
## 왜 {주인공 역할}인가? (당위성 설정)
|
||||
### 세계관 내 {서비스} 체계
|
||||
1순위: {정규 서비스} - 왜 못 쓰는가
|
||||
2순위: {대안 서비스} - 왜 안 쓰는가
|
||||
3순위: {주인공} - 왜 여기로 오는가
|
||||
|
||||
### 캐릭터별 첫 방문 이유
|
||||
| 캐릭터 | 우연적 상황 |
|
||||
|--------|-------------|
|
||||
| | |
|
||||
|
||||
## 주인공 설정
|
||||
### 기본 정보
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| 이름 | |
|
||||
| 나이 | |
|
||||
| 외형 | |
|
||||
| 직업 | |
|
||||
|
||||
### 핵심 컨셉
|
||||
{숨긴 능력자 등}
|
||||
|
||||
### 능력 사용 원칙
|
||||
- {원칙1}
|
||||
- {원칙2}
|
||||
|
||||
### 성격
|
||||
- {성격 특징}
|
||||
|
||||
### 말투 예시
|
||||
```
|
||||
{대화 예시}
|
||||
```
|
||||
|
||||
## 인물별 말투 규칙
|
||||
(각 캐릭터별 관계 단계에 따른 호칭/어미 변화)
|
||||
|
||||
## 시스템창 UI 규칙 (해당 시)
|
||||
(형식, 빈도, 스타일)
|
||||
|
||||
## 야릇함 규칙
|
||||
(스킨십/로맨스 표현 가이드라인)
|
||||
|
||||
## 집필 체크리스트
|
||||
- [ ] 인물 말투가 관계 단계에 맞는가?
|
||||
- [ ] 당위성 설정을 위반하지 않았는가?
|
||||
- [ ] 능력 숨기기 원칙을 지켰는가?
|
||||
- [ ] 문체.md 규칙을 따랐는가?
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 5: 아웃라인 작성
|
||||
|
||||
> **전체 스토리 구조와 부별 계획**
|
||||
|
||||
### 5-1: 스토리 구조 설계
|
||||
|
||||
```yaml
|
||||
3화 훅 법칙 적용:
|
||||
0화 (선택): 프롤로그 - 티저
|
||||
1화: I타입 - 주인공/세계관 도입
|
||||
2화: I타입 - 능력 암시, 3화 준비
|
||||
3화: A타입 - S급(메인 히로인) 첫 등장 (훅!)
|
||||
4화+: 본격 전개
|
||||
```
|
||||
|
||||
### 5-2: 아웃라인 구조
|
||||
|
||||
```markdown
|
||||
# {작품명} - 아웃라인
|
||||
|
||||
> 전체 줄거리, 스토리 구조
|
||||
|
||||
## 로그라인
|
||||
**"{핵심 대사}"**
|
||||
{3~4줄 설명}
|
||||
|
||||
## 스토리 구조
|
||||
|
||||
### 1부: {제목} (1~30화)
|
||||
- 핵심 사건:
|
||||
- 등장 캐릭터:
|
||||
- 관계 변화:
|
||||
- 복선 배치:
|
||||
|
||||
### 2부: {제목} (31~70화)
|
||||
...
|
||||
|
||||
### 3부: {제목} (71~100화)
|
||||
...
|
||||
|
||||
## 1부 회차별 계획
|
||||
|
||||
| 화수 | 제목 | 타입 | 메인 캐릭터 | 목적 |
|
||||
|------|------|------|-------------|------|
|
||||
| 0화 | (선택) | P | - | 티저 |
|
||||
| 1화 | {제목} | I | - | 주인공/세계관 도입 |
|
||||
| 2화 | {제목} | I | {조연} | 능력 암시, 3화 준비 |
|
||||
| 3화 | {제목} | A | {S급} | S급 첫 등장 (훅!) |
|
||||
| 4화+ | ... | | | |
|
||||
|
||||
## 예시 장면
|
||||
### 장면 1: {상황}
|
||||
```
|
||||
{본문 예시}
|
||||
```
|
||||
|
||||
## TODO
|
||||
- [ ] 1화 초안 작성 (/rovel.write 사용)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 6: 인물목록 작성
|
||||
|
||||
> **캐릭터 상세 설정 (기획안의 말투 규칙과 연동)**
|
||||
|
||||
### 6-1: 인물목록 구조
|
||||
|
||||
```markdown
|
||||
# {작품명} - 인물목록
|
||||
|
||||
## 주요 등장인물
|
||||
|
||||
### 주인공
|
||||
#### {이름}
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| 나이 | |
|
||||
| 외형 | |
|
||||
| 성격 | |
|
||||
| 능력 | |
|
||||
|
||||
**핵심 갈등**:
|
||||
**말투 패턴**:
|
||||
|
||||
---
|
||||
|
||||
### 히로인
|
||||
|
||||
#### 1. {이름} (메인)
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| 출신 | |
|
||||
| 외형 | (눈 색깔, 머리카락 등 불변 설정) |
|
||||
| 성격 | |
|
||||
| 상처/갈등 | |
|
||||
|
||||
**첫 방문 이유**: (당위성)
|
||||
**관계 발전**: 초면 → 관심 → 신뢰 → ...
|
||||
|
||||
**말투 패턴**:
|
||||
| 단계 | 호감도 | 호칭 | 예시 |
|
||||
|------|--------|------|------|
|
||||
| 초면 | 0-19 | | |
|
||||
| 관심 | 20-39 | | |
|
||||
| 신뢰 | 40-59 | | |
|
||||
| 마음 연 후 | 60+ | | |
|
||||
|
||||
(다른 히로인도 동일 구조)
|
||||
|
||||
---
|
||||
|
||||
## 조연
|
||||
|
||||
### {이름}
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| 역할 | |
|
||||
| 성격 | |
|
||||
| 말투 | |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 7: 문체 + 스토리구성 설계
|
||||
|
||||
### 7-1: 문체.md 생성
|
||||
|
||||
```markdown
|
||||
# {작품명} - 문체 가이드
|
||||
|
||||
> {레퍼런스 기반이면: "레퍼런스 {ID} 분석 기반"}
|
||||
> {없으면: "장르 관습 기반"}
|
||||
|
||||
## 문장 호흡
|
||||
- 평균 문장 길이: {N}자
|
||||
- 쉼표로 호흡 끊기
|
||||
- 1~3문장 후 빈 줄
|
||||
|
||||
## 여백 활용
|
||||
- 문단 간격: {패턴}
|
||||
- 빈 줄 삽입 위치: {규칙}
|
||||
|
||||
## 분위기 묘사
|
||||
- 감각(냄새, 온도, 소리) 먼저 → 시각은 나중
|
||||
- {특징적 패턴}
|
||||
|
||||
## 내면 독백
|
||||
- 작은따옴표 사용 ('생각')
|
||||
- {특징적 패턴}
|
||||
|
||||
## 대화문
|
||||
- {스타일 설명}
|
||||
|
||||
## 시스템창 (해당 시)
|
||||
- {형식}
|
||||
- 1화당 {N}회 적정
|
||||
|
||||
## 감정 표현
|
||||
- 신체 반응으로 (눈동자 커짐, 어깨 움찔)
|
||||
- 직접 서술 금지 ("슬펐다" X)
|
||||
|
||||
## 금지 패턴
|
||||
- 4문장 이상 연속 (여백 없음)
|
||||
- 감정 직접 서술
|
||||
- 과도한 설명
|
||||
- 본문 이모지
|
||||
|
||||
## Few-shot 예시
|
||||
|
||||
### 예시 1: 분위기 묘사 + 등장
|
||||
```
|
||||
{예시}
|
||||
```
|
||||
|
||||
### 예시 2: 대화 + 내면 독백
|
||||
```
|
||||
{예시}
|
||||
```
|
||||
```
|
||||
|
||||
### 7-2: 스토리구성.md 생성
|
||||
|
||||
> **3화 훅 법칙, 세계관 도입 가이드 포함**
|
||||
|
||||
```markdown
|
||||
# {작품명} - 스토리 구성 가이드
|
||||
|
||||
> 다음 화 집필 전 참조하는 스토리 설계 원칙
|
||||
|
||||
---
|
||||
|
||||
## 독자 흥미 곡선 설계
|
||||
|
||||
### 3화 훅 법칙
|
||||
|
||||
```yaml
|
||||
웹소설의 황금률:
|
||||
- 독자는 보통 3화까지 무료로 읽음
|
||||
- 3화 끝에서 "다음이 궁금하다"를 느껴야 결제함
|
||||
- 따라서 3화는 반드시 강력한 훅으로 끝나야 함
|
||||
|
||||
카드 사용 타이밍:
|
||||
0화 (프롤로그): 티저 - 가장 임팩트 있는 장면
|
||||
1화: 주인공 일상 + 세계관 자연 노출
|
||||
2화: 능력 암시 + 3화 준비
|
||||
3화: S급 첫 등장! (메인 히로인)
|
||||
```
|
||||
|
||||
### 3화 훅 유형
|
||||
1. 강력한 캐릭터 등장 (S급, 미녀, 위협적 존재)
|
||||
2. 주인공 정체 의심 시작
|
||||
3. 위기 상황 돌입
|
||||
4. 관계의 전환점
|
||||
|
||||
---
|
||||
|
||||
## 세계관 도입 가이드
|
||||
|
||||
> **핵심: "설명하지 말고 보여줘라" (Show, Don't Tell)**
|
||||
|
||||
### 세계관 설명의 3가지 죄악
|
||||
|
||||
❌ **설정집 투척**
|
||||
❌ **주인공 독백 설명**
|
||||
❌ **대화로 설명**
|
||||
|
||||
### 올바른 세계관 도입법
|
||||
|
||||
✅ **행동으로 보여주기**
|
||||
|
||||
```yaml
|
||||
1화에서 세계관을 보여주는 방법:
|
||||
|
||||
[E급 설정 전달 예시]
|
||||
❌ "나는 E급이라 무시당한다"
|
||||
✅ 환자가 "E급이세요?" 하며 나가버림 → 주인공 '또 저러네.'
|
||||
|
||||
[숨긴 능력 암시]
|
||||
❌ "사실 나는 숨긴 능력이 있다"
|
||||
✅ 치료하면서 '70%만. 나머지는 자연 치유로 위장.'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 화 타입 정의
|
||||
|
||||
(A/B/C/D/E/I/P 타입 상세)
|
||||
...
|
||||
|
||||
(연재상태.md와 연동되는 복선 관리, 호감도 시스템 등)
|
||||
...
|
||||
```
|
||||
|
||||
### 7-3: 연재상태.md 생성
|
||||
|
||||
```markdown
|
||||
# {작품명} - 연재 상태
|
||||
|
||||
> 실시간 진행 상황 추적
|
||||
|
||||
## 현재 진행 상황
|
||||
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| 마지막 화 | 0화 (미시작) |
|
||||
| 작중 시간 | - |
|
||||
| 마지막 장면 | - |
|
||||
| 다음 화 예정 | 1화 |
|
||||
|
||||
## 호감도 테이블
|
||||
|
||||
| 인물 | 현재 호감도 | 단계 | 호칭 | 최근 변화 |
|
||||
|------|-------------|------|------|-----------|
|
||||
| {메인히로인} | 0/100 | 미등장 | - | 3화 등장 예정 |
|
||||
| ... | | | | |
|
||||
|
||||
## 활성 복선 목록
|
||||
|
||||
| 복선 | 심은 화 | 예정 회수 | 상태 |
|
||||
|------|---------|-----------|------|
|
||||
| | | | |
|
||||
|
||||
## 타임라인
|
||||
|
||||
| 화 | 작중 시간 | 주요 이벤트 |
|
||||
|----|-----------|-------------|
|
||||
| | | |
|
||||
|
||||
## 다음 화 예정 설계
|
||||
|
||||
```yaml
|
||||
화수: 1화
|
||||
타입: I (Introduction)
|
||||
등장인물:
|
||||
핵심 이벤트:
|
||||
복선:
|
||||
```
|
||||
|
||||
## 갱신 로그
|
||||
|
||||
| 날짜 | 화 | 갱신 내용 |
|
||||
|------|-----|----------|
|
||||
| | | |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 8: 파일 생성 및 완료
|
||||
|
||||
### 8-1: 폴더 생성
|
||||
|
||||
```bash
|
||||
mkdir -p "content/rovel/{작품명}/chapters"
|
||||
mkdir -p "content/rovel/{작품명}/drafts"
|
||||
```
|
||||
|
||||
### 8-2: 파일 생성 순서
|
||||
|
||||
```
|
||||
content/rovel/{작품명}/
|
||||
├── 기획안.md ← Phase 4에서 작성
|
||||
├── 아웃라인.md ← Phase 5에서 작성
|
||||
├── 인물목록.md ← Phase 6에서 작성
|
||||
├── 문체.md ← Phase 7에서 작성
|
||||
├── 스토리구성.md ← Phase 7에서 작성
|
||||
├── 연재상태.md ← Phase 7에서 작성
|
||||
├── chapters/
|
||||
│ └── (비어있음, /rovel.write로 생성)
|
||||
└── drafts/
|
||||
└── (비어있음, 초안 작업용)
|
||||
```
|
||||
|
||||
### 8-3: 완료 메시지
|
||||
|
||||
```markdown
|
||||
## 작품 생성 완료!
|
||||
|
||||
**작품명**: {작품명}
|
||||
**경로**: `content/rovel/{작품명}/`
|
||||
**레퍼런스**: {ID 또는 "없음 (AI 제안)"}
|
||||
|
||||
### 생성된 파일
|
||||
|
||||
| 파일 | 설명 | 상태 |
|
||||
|------|------|------|
|
||||
| 기획안.md | 핵심 규칙/설정 | 생성됨 |
|
||||
| 아웃라인.md | 스토리 구조, 3화 훅 설계 | 생성됨 |
|
||||
| 인물목록.md | 캐릭터 설정 | 생성됨 |
|
||||
| 문체.md | 문체 DNA | 생성됨 |
|
||||
| 스토리구성.md | 화 구성 규칙, 세계관 도입 가이드 | 생성됨 |
|
||||
| 연재상태.md | 진행 추적 | 생성됨 |
|
||||
| chapters/ | 원고 폴더 | 빈 폴더 |
|
||||
| drafts/ | 초안 폴더 | 빈 폴더 |
|
||||
|
||||
### 핵심 설계 요약
|
||||
|
||||
- **3화 훅**: {3화에 등장하는 S급 캐릭터}
|
||||
- **1~2화**: I타입 (주인공/세계관 도입)
|
||||
- **세계관 도입**: Show, Don't Tell 원칙 적용
|
||||
|
||||
### 다음 단계
|
||||
|
||||
1화 집필을 시작하려면:
|
||||
```
|
||||
/rovel.write {작품명} 1화
|
||||
```
|
||||
|
||||
기획안을 먼저 수정하려면:
|
||||
```
|
||||
{작품명}/기획안.md 파일을 열어 검토/수정
|
||||
```
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Important Notes
|
||||
|
||||
### ⭐ 디테일 수준 요구사항 (MUST READ)
|
||||
|
||||
```yaml
|
||||
반드시 준수:
|
||||
- 모든 파일은 content/rovel/example.good/ 수준으로 작성
|
||||
- 기획안: 최소 5,000자 이상 (example.good: 약 29,000자)
|
||||
- 문체: 최소 3,000자 이상 (example.good: 약 25,000자)
|
||||
- 인물목록: 최소 2,000자 이상 (example.good: 약 11,000자)
|
||||
- 스토리구성: 최소 2,000자 이상 (example.good: 약 9,600자)
|
||||
- 아웃라인: 최소 2,000자 이상 (example.good: 약 10,000자)
|
||||
|
||||
핵심 차별점:
|
||||
- 숫자가 있는 구체적 상황 (재정, 시간, 거리 등)
|
||||
- yaml 형식의 상세 설정 블록
|
||||
- 처절한 순간/감동 포인트 구체적 장면 예시
|
||||
- 말투 패턴 테이블
|
||||
- ASCII 아트 (관계도, 감정 곡선)
|
||||
- ❌/✅ 비교 예시
|
||||
- 체크리스트
|
||||
```
|
||||
|
||||
### AI 제안 기능
|
||||
|
||||
```yaml
|
||||
사용자가 막연한 아이디어만 가져왔을 때:
|
||||
|
||||
1. 키워드 추출:
|
||||
- "힐링물" → 치유 계열, 상처 치료
|
||||
- "숨긴 능력" → 정체 숨김, 과소평가
|
||||
- "하렘" → 다중 히로인
|
||||
|
||||
2. 옵션 제안:
|
||||
- 3가지 컨셉 제시
|
||||
- 각 컨셉의 장단점 설명
|
||||
- 사용자 선택 유도
|
||||
|
||||
3. 혼합 가능:
|
||||
- "A의 주인공 + B의 히로인 구성"
|
||||
- 사용자 커스터마이즈 허용
|
||||
```
|
||||
|
||||
### 필수 확인 사항
|
||||
|
||||
```yaml
|
||||
Phase 3 (컨셉):
|
||||
- 작품명 확정
|
||||
- 당위성 설정 완료
|
||||
- 톤 앤 매너 합의
|
||||
|
||||
Phase 4 (기획안):
|
||||
- 주인공 설정 확정
|
||||
- 능력 사용 원칙 명확
|
||||
- 말투 규칙 정의
|
||||
|
||||
Phase 5 (아웃라인):
|
||||
- 3화 훅 설계 완료
|
||||
- 1~2화 I타입 계획
|
||||
- 1부 회차 계획
|
||||
|
||||
Phase 7 (스토리구성):
|
||||
- 세계관 도입 가이드 포함
|
||||
- 3화 훅 법칙 명시
|
||||
```
|
||||
|
||||
### 단계별 사용자 확인
|
||||
|
||||
```yaml
|
||||
각 Phase 완료 시:
|
||||
- 결과물 제시
|
||||
- 수정 요청 가능
|
||||
- "좋아" / "진행" 확인 후 다음 Phase
|
||||
|
||||
되돌아가기:
|
||||
- "Phase 3 다시" → 해당 단계로 복귀
|
||||
- 수정 후 이후 단계 재진행
|
||||
```
|
||||
|
||||
### Reference Files
|
||||
|
||||
| 유형 | 경로 | 용도 |
|
||||
|------|------|------|
|
||||
| 레퍼런스 작품 | `content/references/novelpia/{ID}/` | 문체 분석 |
|
||||
| **⭐ 모범 예시** | `content/rovel/example.good/` | **디테일 수준 기준** |
|
||||
| 기존 작품 예시 | `content/rovel/협회 소속 양호선생님/` | 구조 참고 |
|
||||
| 창작 가이드 | `rules/novel-creation.md` | 전체 워크플로우 |
|
||||
| 집필 가이드 | `rules/novel-writer.md` | 집필/퇴고 |
|
||||
|
||||
---
|
||||
|
||||
## ⭐ 디테일 수준 가이드 (CRITICAL)
|
||||
|
||||
> **`content/rovel/example.good/`의 파일들을 반드시 참조하여 동일한 수준의 디테일로 작성할 것**
|
||||
|
||||
### 기획안 필수 포함 요소 (example.good/기획안.md 참조)
|
||||
|
||||
```yaml
|
||||
1. 처절한 현실 설정:
|
||||
- 구체적인 재정 상황 (숫자로)
|
||||
- 시간순 몰락 과정 (월별로)
|
||||
- 숨기고 있는 것들 (가족에게, 회사에)
|
||||
|
||||
2. 주인공 결핍 상세:
|
||||
- 왜 실패했는지 구체적 사례 (서비스 N개 실패)
|
||||
- 각 실패의 이유와 깨달음
|
||||
- 결핍이 회복되는 성장 아크
|
||||
|
||||
3. 처절한 순간 TOP 리스트:
|
||||
- 구체적인 대사와 상황 포함
|
||||
- 《김 부장》 스타일 장면 예시
|
||||
- 감정 곡선 시각화
|
||||
|
||||
4. 주변 인물 상세:
|
||||
- 친구들/가족 설정으로 대비 효과
|
||||
- 숨은 설정과 복선 활용법
|
||||
|
||||
5. 당위성 설정:
|
||||
- 왜 이 직업/상황인가?
|
||||
- 주인공이 여기 온 계기
|
||||
- 배울 것과 성장 포인트
|
||||
|
||||
6. 집필 체크리스트:
|
||||
- 매 화 확인사항
|
||||
- 금지 사항
|
||||
```
|
||||
|
||||
### 문체 필수 포함 요소 (example.good/문체.md 참조)
|
||||
|
||||
```yaml
|
||||
1. 핵심 문체 DNA:
|
||||
- 레퍼런스 스타일 명시 (예: 《김 부장》)
|
||||
- 긴 대사 + 짧은 지문의 대비 원칙
|
||||
|
||||
2. 처절함/비참함 묘사 패턴:
|
||||
- 패턴 1~5 상세 (숫자의 잔혹함, 일상의 붕괴, 혼자만의 시간, 괜찮은 척, 자존심 붕괴)
|
||||
- 각 패턴별 ❌ 나쁜 예시 / ✅ 좋은 예시
|
||||
|
||||
3. 대화문 스타일:
|
||||
- 일상 대화 vs 진심 대화 구분
|
||||
- 《김 부장》 스타일 긴 대사 예시
|
||||
|
||||
4. Few-shot 예시:
|
||||
- 최소 3개 이상의 완성된 장면 예시
|
||||
- 각 예시는 300자 이상
|
||||
|
||||
5. 금지 패턴 테이블:
|
||||
- 패턴, 이유, 대안 명시
|
||||
|
||||
6. 문체 체크리스트:
|
||||
- 집필 후 확인 항목
|
||||
```
|
||||
|
||||
### 인물목록 필수 포함 요소 (example.good/인물목록.md 참조)
|
||||
|
||||
```yaml
|
||||
1. 주인공 상세:
|
||||
- 기본 정보 테이블
|
||||
- 핵심 갈등/결핍
|
||||
- 성격 키워드
|
||||
- 말투 패턴 테이블 (상황별)
|
||||
- 숨겨진 스킬셋/능력 (yaml 형식)
|
||||
- 변화 아크 (1부→2부→3부)
|
||||
- 과거 히스토리 (시간순)
|
||||
|
||||
2. 가족 상세:
|
||||
- 각 가족별 정보 테이블
|
||||
- 핵심 역할
|
||||
- 말투 패턴 테이블
|
||||
- 숨은 설정
|
||||
|
||||
3. 회사/조연 상세:
|
||||
- 정보 테이블
|
||||
- 핵심 역할
|
||||
- 말투 패턴 테이블
|
||||
- 감정선 규칙 (해당 시)
|
||||
- 변화 아크
|
||||
|
||||
4. 관계도:
|
||||
- ASCII 아트로 시각화
|
||||
- 관계 설명 (라이벌, 팬, 멘토 등)
|
||||
|
||||
5. 호감도 시스템:
|
||||
- 초기 → 1부 말 → 2부 말 호감도 표
|
||||
```
|
||||
|
||||
### 스토리구성 필수 포함 요소 (example.good/스토리구성.md 참조)
|
||||
|
||||
```yaml
|
||||
1. 전체 구조:
|
||||
- 기승전결 설계 (화수별)
|
||||
- 추락-반등 법칙
|
||||
- 긴장-이완 리듬 (5화 단위)
|
||||
|
||||
2. 감정 곡선 시각화:
|
||||
- ASCII 아트로 행복지수 그래프
|
||||
- 주요 포인트 표시
|
||||
|
||||
3. 화 타입별 가이드:
|
||||
- I/A/B/C/D 타입 상세 설명
|
||||
- 각 타입별 목적, 주의점, 분량, 예시
|
||||
|
||||
4. 현실 묘사 원칙:
|
||||
- Show, Don't Tell 예시
|
||||
- 공감 포인트 vs 피해야 할 것
|
||||
|
||||
5. 감정 밸런스:
|
||||
- 회당 감정 배분 (%)
|
||||
- 감동 배치 규칙
|
||||
|
||||
6. 로맨스 라인 가이드 (해당 시):
|
||||
- 단계별 진행
|
||||
- OK/NG 리스트
|
||||
|
||||
7. 복선 관리:
|
||||
- 복선 목록 테이블
|
||||
- 배치 원칙과 예시
|
||||
|
||||
8. AI/특수 장면 가이드 (해당 시):
|
||||
- 묘사 원칙
|
||||
- 좋은/나쁜 예시
|
||||
```
|
||||
|
||||
### 아웃라인 필수 포함 요소 (example.good/아웃라인.md 참조)
|
||||
|
||||
```yaml
|
||||
1. 로그라인:
|
||||
- 한 줄 요약 (볼드)
|
||||
- 3~5문장 설명
|
||||
|
||||
2. 전체 스토리 구조:
|
||||
- 1부/2부/3부 상세
|
||||
- 각 부별: 핵심 사건, 등장 캐릭터, 관계 변화, 복선 배치
|
||||
|
||||
3. 1부 회차별 계획:
|
||||
- 테이블 형식 (화수, 제목, 타입, 핵심 장면, 목적)
|
||||
- 훅 포인트 ⭐ 표시
|
||||
|
||||
4. 타입 정의 테이블
|
||||
|
||||
5. 예시 장면:
|
||||
- 최소 3개 완성된 장면
|
||||
- 각 장면 300~500자
|
||||
|
||||
6. 핵심 감동 포인트:
|
||||
- 부별로 정리
|
||||
```
|
||||
|
||||
### 연재상태 필수 포함 요소 (example.good/연재상태.md 참조)
|
||||
|
||||
```yaml
|
||||
1. 현재 진행 상황 테이블
|
||||
2. 호감도 테이블 (인물별)
|
||||
3. 가족 관계 상태 테이블
|
||||
4. 활성 복선 목록
|
||||
5. 타임라인
|
||||
6. 회사/세계관 상황
|
||||
7. 다음 화 설계 (yaml)
|
||||
8. 진행 체크 테이블
|
||||
9. 갱신 로그
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference: 워크플로우 요약
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ /rovel.create [레퍼런스ID] [작품명] │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 1: 입력 파싱 │
|
||||
│ - 레퍼런스 있으면 → Phase 2 │
|
||||
│ - 없으면 → Phase 3 (AI 제안 모드) │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 2: 레퍼런스 분석 (선택) │
|
||||
│ - 문체 DNA 추출 │
|
||||
│ - 구조적 특징 분석 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 3: 아이디어 대화 ⭐ 핵심 │
|
||||
│ - 막연한 아이디어 → AI가 3가지 옵션 제안 │
|
||||
│ - 컨셉 확정 (작품명, 장르, 주인공, 히로인, 당위성) │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 4: 기획안.md 작성 │
|
||||
│ - 핵심 설정, 규칙 정리 │
|
||||
│ - 당위성 설정, 말투 규칙 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 5: 아웃라인.md 작성 │
|
||||
│ - 전체 스토리 구조 │
|
||||
│ - 3화 훅 법칙 적용 (1~2화 I타입, 3화 A타입) │
|
||||
│ - 1부 회차별 계획 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 6: 인물목록.md 작성 │
|
||||
│ - 캐릭터 상세 설정 │
|
||||
│ - 관계 단계별 말투 패턴 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 7: 문체.md + 스토리구성.md + 연재상태.md │
|
||||
│ - 문체 DNA (레퍼런스 기반 또는 장르 관습) │
|
||||
│ - 화 구성 규칙, 세계관 도입 가이드 │
|
||||
│ - 진행 상황 추적 템플릿 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 8: 파일 생성 완료 │
|
||||
│ - 폴더 구조 생성 │
|
||||
│ - 완료 메시지 + 다음 단계 안내 │
|
||||
│ → /rovel.write {작품명} 1화 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
453
.claude/commands/rovel.seed.md
Normal file
453
.claude/commands/rovel.seed.md
Normal file
@@ -0,0 +1,453 @@
|
||||
---
|
||||
description: 웹소설 챕터를 씬/라인 데이터로 변환하여 D1 시드 SQL 생성
|
||||
---
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
User input **must** be considered (if not empty).
|
||||
|
||||
## Overview
|
||||
|
||||
마크다운 원고를 인터랙티브 씬/라인 데이터로 변환하여 D1 시드 SQL을 생성합니다.
|
||||
|
||||
**실행 방법:**
|
||||
- `/rovel.seed content/rovel/협회 소속 양호선생님/chapters/001.md` (단일 파일)
|
||||
- `/rovel.seed 협회 소속 양호선생님 1화` (작품명 + 화수)
|
||||
- `/rovel.seed 협회 소속 양호선생님 1-8화` (범위)
|
||||
- `/rovel.seed 협회 소속 양호선생님 전체` (모든 챕터)
|
||||
|
||||
**워크플로우:**
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 1: 입력 파싱 │
|
||||
│ - 파일 경로 또는 작품명+화수 파싱 │
|
||||
│ - 작품 폴더 및 캐릭터 ID 매핑 로드 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 2: 마크다운 파싱 │
|
||||
│ - 씬 구분 (*** 기준) │
|
||||
│ - 라인 타입 감지 (대화/나레이션/효과음 등) │
|
||||
│ - 시스템 카드 파싱 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 3: 메타데이터 추출 │
|
||||
│ - 화자 추론 (컨텍스트 + 말투 분석) │
|
||||
│ - 씬 정보 추출 (시간/장소/분위기) │
|
||||
│ - is_playable 판정 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 4: SQL 생성 │
|
||||
│ - INSERT 문 생성 │
|
||||
│ - 파일 저장 및 안내 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: 입력 파싱
|
||||
|
||||
### 입력 유형 분석
|
||||
|
||||
```yaml
|
||||
Case A - 절대/상대 경로:
|
||||
입력: content/rovel/협회 소속 양호선생님/chapters/001.md
|
||||
해석: 해당 파일 직접 처리
|
||||
|
||||
Case B - 작품명 + 화수:
|
||||
입력: 협회 소속 양호선생님 3화
|
||||
해석: content/rovel/협회 소속 양호선생님/chapters/003.md
|
||||
|
||||
Case C - 작품명 + 범위:
|
||||
입력: 협회 소속 양호선생님 1-8화
|
||||
해석: 001.md ~ 008.md 순차 처리
|
||||
|
||||
Case D - 작품명 + 전체:
|
||||
입력: 협회 소속 양호선생님 전체
|
||||
해석: chapters/ 폴더의 모든 .md 파일
|
||||
```
|
||||
|
||||
### 캐릭터 ID 매핑 로드
|
||||
|
||||
작품 폴더의 `인물목록.md`를 읽어 캐릭터 이름 → ID 매핑 생성:
|
||||
|
||||
```yaml
|
||||
매핑 생성 규칙:
|
||||
- 주인공 (한시우): char-{영문이름}-001
|
||||
- 히로인/주요 인물: char-{영문이름}-001
|
||||
- 조연: char-{영문이름}-001
|
||||
|
||||
예시 (협회 소속 양호선생님):
|
||||
한시우: char-hansiuw-001 (주인공)
|
||||
자화연: char-jahwayeon-001
|
||||
박준혁: char-parkjunhyuk-001
|
||||
김 과장: char-kimgwajang-001
|
||||
루나: char-luna-001
|
||||
```
|
||||
|
||||
### ID 체계
|
||||
|
||||
```yaml
|
||||
작품 ID: work-{작품영문코드}-001
|
||||
예: work-yanghosam-001
|
||||
|
||||
챕터 ID: chapter-{3자리화수}
|
||||
예: chapter-001, chapter-008
|
||||
|
||||
씬 ID: scene-{3자리화수}-{2자리순서}
|
||||
예: scene-001-01, scene-008-03
|
||||
|
||||
라인 ID: line-{3자리화수}-{2자리씬순서}-{3자리라인순서}
|
||||
예: line-001-01-001, line-008-03-015
|
||||
|
||||
시스템 카드 ID: syscard-{3자리화수}-{2자리씬순서}-{2자리순서}
|
||||
예: syscard-001-02-01
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: 마크다운 파싱
|
||||
|
||||
### 라인 타입 감지 규칙
|
||||
|
||||
```typescript
|
||||
// 우선순위 순서로 적용
|
||||
1. 빈 줄만 있음 → skip
|
||||
2. `***` → divider (씬 구분)
|
||||
3. `[제목]` 로 시작 (단, [다음 제외) → system (시스템 카드 시작)
|
||||
4. `- ` 로 시작 → sfx (효과음)
|
||||
5. `"` 로 시작하고 `"` 로 끝남 → dialogue (대화)
|
||||
6. `'` 로 시작하고 `'` 로 끝남 → thought (속마음)
|
||||
7. 그 외 → narration (나레이션)
|
||||
```
|
||||
|
||||
### 시스템 카드 파싱
|
||||
|
||||
```markdown
|
||||
입력:
|
||||
[진맥 판독]
|
||||
[대상: 박준혁, 28세, B급 헌터]
|
||||
[외상: 좌측 어깨 베임 (깊이 1.2cm)]
|
||||
[내상: 마력 과다 사용으로 인한 피로 누적]
|
||||
|
||||
출력:
|
||||
{
|
||||
type: "diagnosis",
|
||||
title: "진맥 판독",
|
||||
content: [
|
||||
{ label: "대상", value: "박준혁, 28세, B급 헌터" },
|
||||
{ label: "외상", value: "좌측 어깨 베임 (깊이 1.2cm)" },
|
||||
{ label: "내상", value: "마력 과다 사용으로 인한 피로 누적" }
|
||||
],
|
||||
summary: "대상: 박준혁",
|
||||
isPlayable: true
|
||||
}
|
||||
```
|
||||
|
||||
### 시스템 카드 타입 매핑
|
||||
|
||||
| 제목 키워드 | 타입 | isPlayable |
|
||||
|------------|------|------------|
|
||||
| 진맥 판독, 분석, 스캔 | diagnosis | true |
|
||||
| 잠재력 분석 | potential | true |
|
||||
| 환자 심리 분석, 환자 상태 | psychology | true |
|
||||
| 은밀 치유 | skill_active | true |
|
||||
| 신규 기능 감지, 잠재 해방 | skill_unlock | false |
|
||||
| 경고, 숨겨진 | warning | false |
|
||||
| 일일 진료 현황, 권장 행동 | info_update | false |
|
||||
| 그 외 | info_update | false |
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: 메타데이터 추출
|
||||
|
||||
### 화자 추론 규칙
|
||||
|
||||
```yaml
|
||||
1. 이전 3줄 컨텍스트 분석:
|
||||
"자화연이 고개를 들었다."
|
||||
"......" → speaker: char-jahwayeon-001
|
||||
|
||||
2. 대사 내 특징적 표현:
|
||||
"본좌" → 자화연
|
||||
"선생님" → 박준혁 (주인공에게 말할 때)
|
||||
|
||||
3. 주인공 여부:
|
||||
- 내면 독백 ('생각') → isProtagonist: true
|
||||
- "나는", "내가" 주어 → isProtagonist: true
|
||||
```
|
||||
|
||||
### 씬 메타데이터 추출
|
||||
|
||||
```yaml
|
||||
시간 감지:
|
||||
- "밤 11시", "새벽 2시", "오후 5시" 등
|
||||
- 첫 번째 매칭 사용
|
||||
|
||||
장소 감지:
|
||||
- "의무실", "협회", "던전" 등 키워드
|
||||
- 씬 첫 부분에서 추출
|
||||
|
||||
분위기 감지:
|
||||
- "살기", "긴장", "평온", "따뜻" 등
|
||||
- 시스템 카드나 나레이션에서 추출
|
||||
```
|
||||
|
||||
### is_playable 판정
|
||||
|
||||
```yaml
|
||||
씬이 플레이 가능한 경우:
|
||||
1. isPlayable: true인 시스템 카드가 1개 이상
|
||||
2. 주요 캐릭터와의 대화 장면
|
||||
3. 선택지가 제시될 수 있는 상황
|
||||
|
||||
is_playable: true 조건:
|
||||
- diagnosis, potential, psychology, skill_active 타입 카드 존재
|
||||
- 주요 히로인과 첫 대면 장면
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: SQL 생성
|
||||
|
||||
### 출력 파일
|
||||
|
||||
```yaml
|
||||
단일 파일:
|
||||
입력: 001.md
|
||||
출력: 001-seed.sql
|
||||
|
||||
범위/전체:
|
||||
입력: 1-8화
|
||||
출력: chapters-seed.sql (병합된 파일)
|
||||
```
|
||||
|
||||
### SQL 템플릿
|
||||
|
||||
```sql
|
||||
-- Chapter chapter-{NNN} scenes and lines
|
||||
-- Auto-generated from markdown
|
||||
|
||||
-- Delete existing data for this chapter
|
||||
DELETE FROM system_cards WHERE line_id IN (SELECT id FROM lines WHERE scene_id IN (SELECT id FROM scenes WHERE chapter_id = 'chapter-{NNN}'));
|
||||
DELETE FROM lines WHERE scene_id IN (SELECT id FROM scenes WHERE chapter_id = 'chapter-{NNN}');
|
||||
DELETE FROM scenes WHERE chapter_id = 'chapter-{NNN}';
|
||||
|
||||
-- 챕터가 없으면 생성
|
||||
INSERT OR IGNORE INTO chapters (id, work_id, number, title, is_free, price, status, view_count, created_at, updated_at)
|
||||
VALUES (
|
||||
'chapter-{NNN}',
|
||||
'{work_id}',
|
||||
{number},
|
||||
'{title}',
|
||||
{is_free},
|
||||
{price},
|
||||
'published',
|
||||
0,
|
||||
{timestamp},
|
||||
{timestamp}
|
||||
);
|
||||
|
||||
-- Scene 1: {title}
|
||||
INSERT INTO scenes (id, chapter_id, "order", title, location, time, mood, is_playable, play_description, character_ids, created_at) VALUES (
|
||||
'scene-{NNN}-{NN}',
|
||||
'chapter-{NNN}',
|
||||
{order},
|
||||
'{title}',
|
||||
'{location}',
|
||||
'{time}',
|
||||
'{mood}',
|
||||
{is_playable},
|
||||
'{play_description}',
|
||||
'{character_ids_json}',
|
||||
{timestamp}
|
||||
);
|
||||
|
||||
-- Lines for scene {N}
|
||||
INSERT INTO lines (id, scene_id, "order", type, content, speaker_id, is_protagonist, created_at) VALUES
|
||||
('line-{NNN}-{NN}-{NNN}', 'scene-{NNN}-{NN}', {order}, '{type}', '{content}', {speaker_id}, {is_protagonist}, {timestamp}),
|
||||
...;
|
||||
|
||||
-- System cards for scene {N}
|
||||
INSERT INTO system_cards (id, line_id, type, title, content, summary, is_playable, choice_label, created_at) VALUES
|
||||
('syscard-{NNN}-{NN}-{NN}', 'line-{NNN}-{NN}-{NNN}', '{type}', '{title}', '{content_json}', '{summary}', {is_playable}, '{choice_label}', {timestamp});
|
||||
```
|
||||
|
||||
### SQL 이스케이프 규칙
|
||||
|
||||
```yaml
|
||||
작은따옴표: ' → ''
|
||||
줄바꿈: \n → 그대로 (TEXT 필드)
|
||||
JSON: 쌍따옴표 사용, 이스케이프
|
||||
NULL: speaker_id 없으면 NULL (문자열 'NULL' 아님)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 실행 예시
|
||||
|
||||
### 예시 1: 단일 파일
|
||||
|
||||
```
|
||||
/rovel.seed content/rovel/협회 소속 양호선생님/chapters/008.md
|
||||
```
|
||||
|
||||
**출력:**
|
||||
```
|
||||
## 씬 변환 완료
|
||||
|
||||
**파일**: `content/rovel/협회 소속 양호선생님/chapters/008.md`
|
||||
**챕터 ID**: chapter-008
|
||||
|
||||
### 생성된 데이터
|
||||
|
||||
| 항목 | 개수 |
|
||||
|------|------|
|
||||
| 씬 | 12개 |
|
||||
| 라인 | 156개 |
|
||||
| 시스템 카드 | 3개 |
|
||||
| 플레이 가능 씬 | 2개 |
|
||||
|
||||
### 등장 캐릭터
|
||||
|
||||
| 캐릭터 | ID | 대사 수 |
|
||||
|--------|-----|---------|
|
||||
| 루나 | char-luna-001 | 24 |
|
||||
| 한시우 | (주인공) | 18 |
|
||||
|
||||
### 생성된 SQL
|
||||
|
||||
**파일**: `content/rovel/협회 소속 양호선생님/chapters/008-seed.sql`
|
||||
|
||||
### 다음 단계
|
||||
|
||||
1. SQL 확인:
|
||||
cat content/rovel/협회 소속 양호선생님/chapters/008-seed.sql
|
||||
|
||||
2. 로컬 D1 적용:
|
||||
npx wrangler d1 execute rovel-db --local --file=content/rovel/협회 소속 양호선생님/chapters/008-seed.sql
|
||||
|
||||
3. 원격 D1 적용:
|
||||
npx wrangler d1 execute rovel-db --remote --file=content/rovel/협회 소속 양호선생님/chapters/008-seed.sql
|
||||
```
|
||||
|
||||
### 예시 2: 범위 변환
|
||||
|
||||
```
|
||||
/rovel.seed 협회 소속 양호선생님 1-8화
|
||||
```
|
||||
|
||||
**출력:**
|
||||
```
|
||||
## 씬 변환 완료 (8개 챕터)
|
||||
|
||||
### 변환 결과
|
||||
|
||||
| 화수 | 씬 | 라인 | 시스템 카드 | 플레이 가능 |
|
||||
|------|-----|------|-------------|-------------|
|
||||
| 1화 | 12 | 89 | 2 | 1 |
|
||||
| 2화 | 10 | 102 | 3 | 2 |
|
||||
| ... | | | | |
|
||||
| 8화 | 14 | 156 | 3 | 2 |
|
||||
| **합계** | **92** | **1,024** | **18** | **12** |
|
||||
|
||||
### 생성된 SQL
|
||||
|
||||
**파일**: `content/rovel/협회 소속 양호선생님/chapters-seed.sql`
|
||||
|
||||
### 다음 단계
|
||||
|
||||
로컬 D1 적용:
|
||||
npx wrangler d1 execute rovel-db --local --file=content/rovel/협회 소속 양호선생님/chapters-seed.sql
|
||||
|
||||
원격 D1 적용:
|
||||
npx wrangler d1 execute rovel-db --remote --file=content/rovel/협회 소속 양호선생님/chapters-seed.sql
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 캐릭터 ID 매핑 (협회 소속 양호선생님)
|
||||
|
||||
```yaml
|
||||
주인공:
|
||||
한시우: char-hansiuw-001
|
||||
|
||||
히로인:
|
||||
자화연: char-jahwayeon-001
|
||||
루나: char-luna-001
|
||||
|
||||
조연:
|
||||
박준혁: char-parkjunhyuk-001
|
||||
김 과장: char-kimgwajang-001
|
||||
김수진: char-kimsujin-001
|
||||
```
|
||||
|
||||
### 새 캐릭터 등장 시
|
||||
|
||||
인물목록.md에 없는 새 캐릭터가 등장하면:
|
||||
1. 경고 메시지 출력
|
||||
2. 임시 ID 생성 (`char-{이름영문}-temp`)
|
||||
3. 인물목록.md 업데이트 권장
|
||||
|
||||
---
|
||||
|
||||
## Reference Files
|
||||
|
||||
| 유형 | 경로 | 용도 |
|
||||
|------|------|------|
|
||||
| 변환 가이드 | `rules/chapter-to-scene.md` | 마크다운 문법 참조 |
|
||||
| 인물목록 | `content/rovel/{작품명}/인물목록.md` | 캐릭터 ID 매핑 |
|
||||
| 기존 시드 | `scripts/seed-d1.sql` | SQL 형식 참조 |
|
||||
| DB 스키마 | `src/server/db/schema.ts` | 테이블 구조 참조 |
|
||||
|
||||
---
|
||||
|
||||
## Important Notes
|
||||
|
||||
### 변환 시 주의사항
|
||||
|
||||
```yaml
|
||||
1. 캐릭터 ID 매핑:
|
||||
- 인물목록.md 먼저 확인
|
||||
- 없는 캐릭터는 경고 후 임시 ID
|
||||
|
||||
2. 시스템 카드:
|
||||
- [제목] 다음 줄들이 필드
|
||||
- 빈 줄이나 다른 타입 만나면 종료
|
||||
- JSON 형식으로 content 저장
|
||||
|
||||
3. 화자 추론:
|
||||
- 이전 컨텍스트 우선
|
||||
- 말투 패턴으로 보조
|
||||
- 불확실하면 NULL
|
||||
|
||||
4. SQL 이스케이프:
|
||||
- 작은따옴표는 ''로
|
||||
- NULL은 문자열 아닌 키워드
|
||||
```
|
||||
|
||||
### 스키마 호환성
|
||||
|
||||
```yaml
|
||||
현재 스키마:
|
||||
- scenes.is_playable: 플레이 가능 여부
|
||||
- scenes.character_ids: JSON 배열
|
||||
- system_cards: lines.id로 연결
|
||||
|
||||
체크 필요:
|
||||
- works 테이블에 작품 존재 여부
|
||||
- characters 테이블에 캐릭터 존재 여부
|
||||
```
|
||||
|
||||
### 작품별 설정
|
||||
|
||||
새 작품 추가 시:
|
||||
1. 작품 ID 결정 (`work-{코드}-001`)
|
||||
2. 캐릭터 ID 매핑 정의
|
||||
3. 인물목록.md에 캐릭터 정보 확인
|
||||
415
.claude/commands/rovel.write.md
Normal file
415
.claude/commands/rovel.write.md
Normal file
@@ -0,0 +1,415 @@
|
||||
---
|
||||
description: 웹소설 다음화 집필 - 이전화 다음 챕터를 작성하고 퇴고까지 자동 수행
|
||||
---
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
User input **must** be considered (if not empty).
|
||||
|
||||
## Overview
|
||||
|
||||
The text following `/rovel.write` is the chapter path or instructions. Assume `$ARGUMENTS` is always available.
|
||||
|
||||
**Examples:**
|
||||
- `/rovel.write content/rovel/협회 소속 양호선생님 다음화`
|
||||
- `/rovel.write 협회 소속 양호선생님 4화 루나 치료 에피소드`
|
||||
- `/rovel.write 003.md 다음화` (현재 작업 중인 작품 기준)
|
||||
|
||||
**This is a 2-Agent workflow**:
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 1: 준비 │
|
||||
│ - 연재상태.md 파악 │
|
||||
│ - 다음 화 설계 │
|
||||
│ - 참조 파일 수집 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 2: 집필 (writing-specialist 에이전트) │
|
||||
│ - 문체.md + 스토리구성.md 기반 집필 │
|
||||
│ - 호감도 기반 말투/호칭 적용 │
|
||||
│ - drafts/ 폴더에 초안 저장 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 3: 퇴고 (revision-specialist 에이전트) │
|
||||
│ - 설정/캐릭터/문체 일관성 검토 │
|
||||
│ - CRITICAL 자동 수정 │
|
||||
│ - chapters/ 폴더에 최종본 저장 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Phase 4: 갱신 │
|
||||
│ - 연재상태.md 업데이트 │
|
||||
│ - 호감도/복선/타임라인 갱신 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Execution Flow
|
||||
|
||||
### Phase 1: 파일 경로 파싱
|
||||
|
||||
1. **입력 분석**:
|
||||
- 절대 경로가 주어지면 그대로 사용
|
||||
- 상대 경로나 화수만 주어지면 현재 작품 폴더에서 탐색
|
||||
- "다음화", "다음 화" 키워드 → 마지막 화 번호 + 1
|
||||
|
||||
2. **작품 폴더 결정**:
|
||||
```
|
||||
기본: content/rovel/{작품명}/
|
||||
예시: content/rovel/협회 소속 양호선생님/
|
||||
```
|
||||
|
||||
3. **다음 화 번호 계산**:
|
||||
- chapters/ 폴더의 가장 큰 번호 확인
|
||||
- 예: 003.md가 마지막이면 → 004.md 생성
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: 연재상태 파악 (⚠️ 최우선)
|
||||
|
||||
> **가장 먼저 연재상태.md를 읽어 현재 상황을 파악합니다.**
|
||||
|
||||
```yaml
|
||||
필수 읽기 파일:
|
||||
1. 연재상태.md: ⚠️ 최우선
|
||||
- 경로: {작품폴더}/연재상태.md
|
||||
- 추출:
|
||||
- 마지막 화/장면 (어디서 이어쓸지)
|
||||
- 작중 시간 (타임라인 연속성)
|
||||
- 호감도 테이블 (말투/호칭 결정)
|
||||
- 활성 복선 목록 (회수/배치할 복선)
|
||||
- 다음 화 예정 설계 (이미 계획된 내용)
|
||||
|
||||
2. 기획안.md:
|
||||
- 경로: {작품폴더}/기획안.md
|
||||
- 추출: 핵심 규칙, 세계관 설정, 당직 체계, 캐릭터별 말투
|
||||
|
||||
3. 문체.md: ⚠️ 필수
|
||||
- 경로: {작품폴더}/문체.md
|
||||
- 추출: 문장 호흡(15-30자), 감정 표현 패턴, 시스템창 스타일, 금지 패턴
|
||||
|
||||
4. 스토리구성.md: ⚠️ 필수
|
||||
- 경로: {작품폴더}/스토리구성.md
|
||||
- 추출: 화 타입(A/B/C/D), 장면 구성 규칙, 복선 관리, 시스템창 배치
|
||||
|
||||
5. 인물목록.md:
|
||||
- 경로: {작품폴더}/인물목록.md
|
||||
- 추출: 외형 설정, 말투 패턴, 호칭 체계, 호감도 테이블
|
||||
|
||||
6. 아웃라인.md:
|
||||
- 경로: {작품폴더}/아웃라인.md
|
||||
- 추출: TODO, 복선 관리, 다음화 예정 내용
|
||||
|
||||
7. 이전 2~3화:
|
||||
- 경로: {작품폴더}/chapters/{이전화들}.md
|
||||
- 추출: 연속성 확인, 마지막 장면, 시간 흐름
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: 다음 화 설계 (스토리구성.md 기반)
|
||||
|
||||
집필 전 반드시 화 설계를 먼저 수행합니다:
|
||||
|
||||
1. **화 타입 결정**:
|
||||
```yaml
|
||||
A타입: 신규 환자 첫 등장 (도입→등장→갈등→치료→마무리)
|
||||
B타입: 단골 환자 심화 (일상→정기치료→새발견→감정진전→마무리)
|
||||
C타입: 복수 캐릭터 등장 (A장면→전환→B장면→연결)
|
||||
D타입: 이벤트/클라이맥스 (긴장→사건→능력발휘→여파→새국면)
|
||||
```
|
||||
|
||||
2. **호감도 기반 캐릭터 설정 확인**:
|
||||
```yaml
|
||||
연재상태.md의 호감도 테이블 확인:
|
||||
- 현재 호감도 → 현재 단계 결정
|
||||
- 단계에 맞는 호칭/말투 적용
|
||||
- 이번 화에서 호감도 변화 계획
|
||||
|
||||
예시:
|
||||
자화연 현재 호감도: 18 (초면)
|
||||
→ 호칭: "필부", "네 놈"
|
||||
→ 이번 화 이벤트: 온기 느낌 (+5)
|
||||
→ 예상 종료 호감도: 23 → "한시우" 호칭 해금!
|
||||
```
|
||||
|
||||
3. **화 설계 체크리스트 작성**:
|
||||
```yaml
|
||||
기본 정보:
|
||||
- 화수: ___화
|
||||
- 타입: A/B/C/D
|
||||
- 예상 분량: ___자
|
||||
|
||||
등장 인물:
|
||||
- 메인: (이름, 현재 호감도, 단계)
|
||||
- 서브:
|
||||
- 언급만:
|
||||
|
||||
시간/공간:
|
||||
- 시작 시간: (연재상태.md 타임라인 이어서)
|
||||
- 종료 시간:
|
||||
- 장소:
|
||||
|
||||
핵심 이벤트:
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
복선 관리:
|
||||
- 회수할 복선: (연재상태.md 활성 복선에서)
|
||||
- 새로 심을 복선:
|
||||
|
||||
호감도 변화:
|
||||
- 누가: 현재 → 예상 종료
|
||||
- 트리거 이벤트:
|
||||
|
||||
연결:
|
||||
- 이전 화 끝: (연재상태.md 마지막 장면)
|
||||
- 다음 화 예정:
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: 집필 (writing-specialist 에이전트 호출)
|
||||
|
||||
> **중요**: Task 도구로 writing-specialist 에이전트를 호출하여 집필 수행
|
||||
|
||||
**에이전트 호출 방식**:
|
||||
|
||||
```yaml
|
||||
Task 도구 사용:
|
||||
subagent_type: writing-specialist
|
||||
prompt: |
|
||||
다음 정보를 기반으로 {N}화를 집필해주세요.
|
||||
|
||||
## 작품 정보
|
||||
- 작품명: {작품명}
|
||||
- 화수: {N}화
|
||||
- 화 타입: {A/B/C/D/E}
|
||||
|
||||
## 참조 파일 내용
|
||||
[연재상태.md 내용]
|
||||
[문체.md 내용]
|
||||
[스토리구성.md 내용]
|
||||
[기획안.md 내용]
|
||||
[인물목록.md 내용]
|
||||
[이전화 마지막 부분]
|
||||
|
||||
## 화 설계
|
||||
[Phase 3에서 작성한 화 설계 체크리스트]
|
||||
|
||||
## 출력
|
||||
- 파일 경로: {작품폴더}/drafts/{화수}_draft.md
|
||||
- 분량: 3,500자
|
||||
```
|
||||
|
||||
**에이전트가 참조할 가이드**:
|
||||
- `.claude/agents/writing-specialist.md` - 집필 전문가 가이드
|
||||
- `rules/novel-writer.md` - 집필 규칙
|
||||
|
||||
**초안 저장 위치**: `{작품폴더}/drafts/{화수}_draft.md`
|
||||
|
||||
---
|
||||
|
||||
### Phase 5: 퇴고 (revision-specialist 에이전트 호출)
|
||||
|
||||
> **중요**: Task 도구로 revision-specialist 에이전트를 호출하여 퇴고 수행
|
||||
|
||||
**에이전트 호출 방식**:
|
||||
|
||||
```yaml
|
||||
Task 도구 사용:
|
||||
subagent_type: revision-specialist
|
||||
prompt: |
|
||||
다음 초안을 퇴고해주세요.
|
||||
|
||||
## 작품 정보
|
||||
- 작품명: {작품명}
|
||||
- 화수: {N}화
|
||||
- 초안 경로: {작품폴더}/drafts/{화수}_draft.md
|
||||
|
||||
## 참조 파일 내용
|
||||
[연재상태.md 내용 - 호감도 테이블 필수]
|
||||
[문체.md 내용]
|
||||
[인물목록.md 내용]
|
||||
[기획안.md 내용]
|
||||
|
||||
## 퇴고 후 작업
|
||||
1. CRITICAL 오류 자동 수정
|
||||
2. 최종본을 {작품폴더}/chapters/{화수}.md에 저장
|
||||
3. 퇴고 보고서 출력
|
||||
```
|
||||
|
||||
**에이전트가 참조할 가이드**:
|
||||
- `.claude/agents/revision-specialist.md` - 퇴고 전문가 가이드
|
||||
|
||||
**퇴고 체크리스트** (에이전트가 자동 수행):
|
||||
|
||||
| 우선순위 | 검토 항목 | 설명 |
|
||||
|----------|----------|------|
|
||||
| ⚠️ 최우선 | 호감도/호칭 | 현재 호감도에 맞는 호칭만 사용 |
|
||||
| CRITICAL | 캐릭터 외형 | 눈동자, 머리카락 색상 등 |
|
||||
| CRITICAL | 말투 패턴 | 캐릭터별 말투 규칙 |
|
||||
| WARNING | 문체 일관성 | 문장 호흡, 감정 표현 |
|
||||
| WARNING | 설정 일관성 | 세계관, 시간 흐름 |
|
||||
|
||||
**최종본 저장 위치**: `{작품폴더}/chapters/{화수}.md`
|
||||
|
||||
---
|
||||
|
||||
### Phase 6: 퇴고 보고서 출력
|
||||
|
||||
```markdown
|
||||
# 퇴고 보고서: {화수}
|
||||
|
||||
## 🔴 CRITICAL (즉시 수정 필요)
|
||||
| 라인 | 문제 | 현재 | 수정안 |
|
||||
|------|------|------|--------|
|
||||
|
||||
## 🟡 WARNING (검토 권장)
|
||||
| 라인 | 문제 | 설명 |
|
||||
|------|------|------|
|
||||
|
||||
## 🟢 SUGGESTION (선택적 개선)
|
||||
|
||||
## 📊 요약
|
||||
- Critical: N건
|
||||
- Warning: N건
|
||||
- Suggestion: N건
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 7: 자동 수정 및 갱신
|
||||
|
||||
1. **CRITICAL 자동 수정**:
|
||||
- 설정 오류 (눈동자 색상 등) → 즉시 수정
|
||||
- 말투/호칭 오류 → 즉시 수정
|
||||
- 호감도 단계 불일치 → 즉시 수정
|
||||
|
||||
2. **인물목록.md 갱신**:
|
||||
- 호감도 테이블 업데이트 (새 화수 추가)
|
||||
- 관계 변화 이력 추가
|
||||
- 호칭 변화 기록 (단계 변화 시)
|
||||
- 새 인물 추가 (등장 시)
|
||||
|
||||
3. **아웃라인.md TODO 갱신**:
|
||||
- 해당 화 완료 처리 `[x]`
|
||||
- 새 복선 기록
|
||||
- 다음 화 TODO 추가
|
||||
|
||||
---
|
||||
|
||||
### Phase 8: 연재상태.md 갱신 (⚠️ 필수)
|
||||
|
||||
> **중요**: 매 화 집필 완료 후 반드시 연재상태.md를 갱신해야 함
|
||||
|
||||
```yaml
|
||||
갱신 항목:
|
||||
|
||||
1. 현재 진행 상황:
|
||||
- 마지막 화: N화 → N+1화
|
||||
- 작중 시간: 업데이트
|
||||
- 마지막 장면: 이번 화 마지막 장면
|
||||
- 다음 화 예정: 예상 내용
|
||||
|
||||
2. 호감도 테이블:
|
||||
- 등장한 인물의 호감도 업데이트
|
||||
- 변화 트리거 기록
|
||||
- 단계 변화 시 호칭 해금 기록
|
||||
|
||||
3. 활성 복선 목록:
|
||||
- 회수한 복선: 상태 → ✅ 회수
|
||||
- 새로 심은 복선: 추가
|
||||
- 진행 중 복선: 상태 업데이트
|
||||
|
||||
4. 타임라인:
|
||||
- 이번 화 시간대/이벤트 추가
|
||||
|
||||
5. 최근 화 요약:
|
||||
- 이번 화 행 추가 (오래된 화 삭제하여 5화 유지)
|
||||
|
||||
6. 다음 화 예정 설계:
|
||||
- 다음 화 기본 설계 업데이트
|
||||
|
||||
7. 갱신 로그:
|
||||
- 날짜, 화수, 갱신 내용 기록
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Output Format
|
||||
|
||||
집필 완료 후 다음 형식으로 요약 출력:
|
||||
|
||||
```markdown
|
||||
## ✅ 집필 완료
|
||||
|
||||
**파일**: `content/rovel/{작품명}/chapters/{화수}.md`
|
||||
**분량**: N자
|
||||
|
||||
### 주요 내용
|
||||
- [장면 1 요약]
|
||||
- [장면 2 요약]
|
||||
- ...
|
||||
|
||||
### 호감도 변화
|
||||
| 인물 | 이전 | 이후 | 단계 변화 |
|
||||
|------|------|------|----------|
|
||||
| 자화연 | 18 | 23 | 초면 → 관심 ("한시우" 해금) |
|
||||
| 루나 | 3 | 15 | 초면 유지 |
|
||||
|
||||
### 복선 관리
|
||||
- 회수: [복선 내용]
|
||||
- 배치: [새 복선 내용]
|
||||
|
||||
### 퇴고 결과
|
||||
- 🔴 Critical 수정: N건 → 모두 수정 완료
|
||||
- 🟡 Warning: N건 (검토 권장)
|
||||
- 🟢 Suggestion: N건
|
||||
|
||||
### 갱신된 파일
|
||||
- [x] 연재상태.md
|
||||
- [x] 인물목록.md (호감도 업데이트)
|
||||
- [x] 아웃라인.md (TODO 갱신)
|
||||
|
||||
### 다음 화 예정
|
||||
- [다음 화 예상 내용]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Reference Files
|
||||
|
||||
| 유형 | 경로 | 용도 |
|
||||
|------|------|------|
|
||||
| 연재상태 | `content/rovel/{작품명}/연재상태.md` | 진행상황/호감도/복선 ⚠️ 최우선 |
|
||||
| 집필 가이드 | `rules/novel-writer.md` | 집필 + 퇴고 프로세스 |
|
||||
| **집필 에이전트** | `.claude/agents/writing-specialist.md` | **집필 전문가 가이드** |
|
||||
| **퇴고 에이전트** | `.claude/agents/revision-specialist.md` | **퇴고 전문가 가이드** |
|
||||
| 기획안 | `content/rovel/{작품명}/기획안.md` | 핵심 규칙 |
|
||||
| 문체 가이드 | `content/rovel/{작품명}/문체.md` | 문체 DNA ⚠️ 필수 |
|
||||
| 스토리구성 | `content/rovel/{작품명}/스토리구성.md` | 화 구성/복선 ⚠️ 필수 |
|
||||
| 인물목록 | `content/rovel/{작품명}/인물목록.md` | 캐릭터 설정/호감도 |
|
||||
| 아웃라인 | `content/rovel/{작품명}/아웃라인.md` | TODO, 복선 |
|
||||
|
||||
## Agent Workflow
|
||||
|
||||
```
|
||||
┌──────────────────┐ 초안 ┌──────────────────┐ 최종본 ┌──────────────┐
|
||||
│ writing-specialist│ ──────────→ │revision-specialist│ ──────────→ │ chapters/ │
|
||||
│ (집필 전문가) │ drafts/ │ (퇴고 전문가) │ │ {N}.md │
|
||||
└──────────────────┘ └──────────────────┘ └──────────────┘
|
||||
↑ ↑
|
||||
│ │
|
||||
문체.md 연재상태.md
|
||||
스토리구성.md 인물목록.md
|
||||
기획안.md 문체.md
|
||||
```
|
||||
Reference in New Issue
Block a user