An autonomous novel writing pipeline, by Hermes Agent
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
소설 쓰기, 수정, 조판, 삽화, 내레이션을 자동화하는 파이프라인입니다. 하나의 시드 개념(seed concept)에서 인쇄 준비가 완료된 PDF, ePub, 오디오북, 랜딩 페이지까지 — 모두 AI 에이전트가 생성합니다.
karpathy/autoresearch에서 영감을 받았습니다: 동일한 수정-평가-유지/폐기 루프를 소설에 적용했습니다.
첫 번째 제작 소설: The Second Son of the House of Bells — 19개 장, 79,456단어.
autonovel/bells 브랜치를 참조하세요.
# 클론 및 설정
git clone <repo-url> && cd autonovel
cp.env.example.env # API 키 추가
# 의존성 설치
uv sync
# 시드 개념 생성 (또는 seed.txt에 직접 작성)
uv run python seed.py
# 전체 파이프라인 실행
uv run python run_pipeline.py --from-scratch
시드 개념으로부터 세계, 등장인물, 개요, 목소리, 정경(Canon)을 구축합니다.
foundation_score > 7.5가 될 때까지 반복합니다.
장을 순차적으로 작성합니다. 각 장을 평가합니다. score > 6.0이면 유지, 그렇지 않으면 재시도합니다. 완벽보다는 진전을 우선합니다.
적대적 편집 → 컷 적용 → 독자 패널 → 브리프 생성 → 장 재작성. 점수가 안정화되면 고원 감지(Plateau detection)가 루프를 중단합니다.
전체 원고를 Claude Opus에 보내 이중 인격 리뷰(문학 비평가 + 소설 교수)를 수행합니다. 실행 가능한 항목을 파싱합니다. 상위 문제를 수정합니다. 리뷰어가 주요 항목을 더 이상 찾지 못할 때까지 반복합니다.
문서 재구축, LaTeX 조판, 아트 생성, 오디오북 스크립트 생성, ePub 제작, 랜딩 페이지 생성.
전체 기술 사양은 PIPELINE.md를 참조하세요.
| 도구 | 목적 | ||
|---|---|---|---|
seed.py |
시드 개념 생성 | ||
gen_world.py |
시드 → 세계 바이블 | ||
gen_characters.py |
시드 + 세계 → 등장인물 레지스트리 | ||
gen_outline.py |
비트와 복선이 포함된 개요 | ||
genoutlinepart2.py |
복선 원장 | ||
gen_canon.py |
하드 팩트 상호 참조 | ||
voice_fingerprint.py |
목소리 분석 및 발견 |
| 도구 | 목적 | ||
|---|---|---|---|
draft_chapter.py |
안티패턴 규칙을 적용한 단일 장 작성 | ||
run_drafts.py |
배치 순차 장 초고 작성기 |
| 도구 | 목적 | ||
|---|---|---|---|
evaluate.py |
기계적 슬롭 점수 + LLM 판정 | ||
adversarial_edit.py |
"500단어 삭제" 분석 → 분류된 컷 | ||
compare_chapters.py |
1:1 엘로 토너먼트 | ||
reader_panel.py |
4인격 소설 수준 평가 | ||
review.py |
Opus 이중 인격 리뷰 (중단 조건 포함) |
| 도구 | 목적 | ||
|---|---|---|---|
gen_brief.py |
피드백에서 수정 브리프 자동 생성 | ||
gen_revision.py |
수정 브리프로 장 재작성 | ||
apply_cuts.py |
배치 적대적 컷 적용기 |
| 도구 | 목적 | ||
|---|---|---|---|
gen_art.py |
아트 파이프라인: 스타일, 큐레이션, 장식, 벡터화 | ||
genartdirections.py |
큐레이션을 위한 다양한 아트 방향 생성 | ||
gencovercomposite.py |
표지 아트에 텍스트 오버레이 | ||
gencoverprint.py |
인쇄 준비 완전 감싸기 표지 (Lulu/KDP 사양) |
| 도구 | 목적 | ||
|---|---|---|---|
genaudiobookscript.py |
장을 화자별 스크립트로 파싱 | ||
gen_audiobook.py |
ElevenLabs를 통한 다중 음성 오디오 생성 |
| 도구 | 목적 | ||
|---|---|---|---|
run_pipeline.py |
전체 파이프라인 오케스트레이터 (시드 → 완성 소설) | ||
buildarcsummary.py |
장에서 아크 요약 재생성 | ||
build_outline.py |
장에서 개요 재생성 |
FRAMEWORK (재사용 가능, master 브랜치):
program.md — 단계별 에이전트 지침
CRAFT.md — 작법 교육 (플롯, 등장인물, 세계, 산문)
ANTI-SLOP.md — 단어 수준 AI 티 탐지
ANTI-PATTERNS.md — 구조적 AI 패턴 탐지
PIPELINE.md — 전체 자동화 사양
WORKFLOW.md — 단계별 인간 가이드
TEMPLATES (소설별로 브랜치에 채워짐):
voice.md — 1부: 가드레일. 2부: 소설별로 발견됨
world.md — 세계 바이블 템플릿
characters.md — 등장인물 레지스트리 템플릿
outline.md — 장 개요 템플릿
canon.md — 하드 팩트 데이터베이스
MYSTERY.md — 중심 미스터리 (작가 전용)
state.json — 파이프라인 상태 추적기
TYPESETTING:
typeset/novel.tex — LaTeX 템플릿 (EB Garamond, 트레이드 페이퍼백)
typeset/build_tex.py — 장 → 벡터 장식이 포함된 LaTeX
typeset/epub_* — ePub 메타데이터, CSS, 앞부분
ART:
audiobook_voices.json — 등장인물 → ElevenLabs 음성 매핑
landing/index.html — 반응형 랜딩 페이지 템플릿
CONFIG:.env.example — API 키 (Anthropic, fal.ai, ElevenLabs)
pyproject.toml — Python 의존성
소설은 다섯 개의 공진화(co-evolving) 계층으로 구성됩니다:
계층 5: voice.md — HOW (어떻게 쓸 것인가)
계층 4: world.md — WHAT (무엇이 존재하는가)
계층 3: characters.md — WHO (누가 행동하는가)
계층 2: outline.md — WHAT HAPPENS (무슨 일이 일어나는가)
계층 1: chapters/ch_NN.md — THE ACTUAL PROSE (실제 산문)
횡단적: canon.md — WHAT IS TRUE (무엇이 진실인가)
변경 사항은 아래로 (설정 변경 → 개요 변경 → 장 수정) 그리고 위로 (글쓰기에서 공백 발견 → 설정 업데이트 → 하위 항목 확인) 전파됩니다. 파이프라인은 state.json에서 전파 부채(propagation debts)를 추적합니다.
evaluate.py, LLM 없음): 정규식으로 금지 단어, 소설 클리셰, show-don't-tell 위반, 문장 균일성 검사.evaluate.py, 별도 모델): 산문 품질, 목소리 일관성, 등장인물 개성, 비트 커버리지 점수 부여.자동 수정 사이클 이후, 전체 원고가 다음 프롬프트와 함께 Claude Opus로 전송됩니다:
"아래 소설을 읽으십시오. 먼저 문학 비평가로서, 그 다음 소설 교수로서 리뷰하십시오. 발견한 결함에 대해 구체적이고 실행 가능한 제안을 제공하십시오. 공정하되 정직하십시오. 결함을 찾을 필요는 없습니다."
이중 인격 리뷰는 자동 도구가 잡을 수 없는 것들(산문 수준의 반복, 등장인물의 얕음, 윤리적 공백, 구조적 단조로움)을 잡아냅니다. 리뷰어의 항목이 실제 문제보다는 대부분 조건부 애매모호함(qualified hedges)이 될 때까지 루프가 계속됩니다.
파이프라인은 세 가지 외부 서비스를 사용합니다:
| 서비스 | 키 | 용도 | ||
|---|---|---|---|---|
| Anthropic | ANTHROPICAPIKEY |
글쓰기, 평가, 리뷰 (Sonnet + Opus) | ||
| fal.ai | FAL_KEY |
표지 아트 및 장식 생성 (Nano Banana 2) | ||
| ElevenLabs | ELEVENLABSAPIKEY |
다중 음성 오디오북 생성 |
.env.example을 .env로 복사하고 키를 입력하세요. 핵심 파이프라인에는 Anthropic 키만 필요합니다. 아트와 오디오북은 선택 사항입니다.
첫 번째 소설인 The Second Son of the House of Bells는 이 파이프라인을 통해 제작되었습니다: