Autonovel
An autonomous novel writing pipeline, by Hermes Agent
#autonovel
An autonomous pipeline for writing, revising, typesetting, illustrating, and narrating a complete novel. From a seed concept to a print-ready PDF, ePub, audiobook, and landing page — all generated by AI agents.
Inspired by karpathy/autoresearch: the same modify-evaluate-keep/discard loop, applied to fiction.
First novel produced: The Second Son of the House of Bells —
19 chapters, 79,456 words.
See the autonovel/bells branch.
#Quick Start
# Clone and setup git clone <repo-url> && cd autonovel cp .env.example .env # Add your API keys # Install dependencies uv sync # Generate a seed concept (or write your own in seed.txt) uv run python seed.py # Run the full pipeline uv run python run_pipeline.py --from-scratch
#The Pipeline
#Phase 1: Foundation
Build the world, characters, outline, voice, and canon from a seed concept.
Loop until foundation_score > 7.5.
#Phase 2: First Draft
Write chapters sequentially. Evaluate each one. Keep if score > 6.0,
retry if not. Forward progress over perfection.
#Phase 3a: Automated Revision
Adversarial editing → apply cuts → reader panel → generate briefs → rewrite chapters. Plateau detection stops the loop when scores stabilize.
#Phase 3b: Opus Review Loop
Send the full manuscript to Claude Opus for dual-persona review (literary critic + professor of fiction). Parse actionable items. Fix the top issues. Repeat until the reviewer runs out of major items.
#Phase 4: Export
Rebuild docs, typeset in LaTeX, generate art, produce audiobook scripts, build ePub, create landing page.
See PIPELINE.md for the full technical specification.
#Tools (27 Python scripts)
#Foundation
| Tool | Purpose |
|---|---|
seed.py |
Generate seed concepts |
gen_world.py |
Seed → world bible |
gen_characters.py |
Seed + world → character registry |
gen_outline.py |
Outline with beats and foreshadowing |
gen_outline_part2.py |
Foreshadowing ledger |
gen_canon.py |
Cross-reference hard facts |
voice_fingerprint.py |
Voice analysis and discovery |
#Drafting
| Tool | Purpose |
|---|---|
draft_chapter.py |
Write a single chapter with anti-pattern rules |
run_drafts.py |
Batch sequential chapter drafter |
#Evaluation
| Tool | Purpose |
|---|---|
evaluate.py |
Mechanical slop scorer + LLM judge |
adversarial_edit.py |
"Cut 500 words" analysis → classified cuts |
compare_chapters.py |
Head-to-head Elo tournament |
reader_panel.py |
4-persona novel-level evaluation |
review.py |
Opus dual-persona review with stopping conditions |
#Revision
| Tool | Purpose |
|---|---|
gen_brief.py |
Auto-generate revision briefs from feedback |
gen_revision.py |
Rewrite a chapter from a revision brief |
apply_cuts.py |
Batch adversarial cut applicator |
#Art & Cover
| Tool | Purpose |
|---|---|
gen_art.py |
Art pipeline: style, curate, ornaments, vectorize |
gen_art_directions.py |
Generate diverse art directions for curation |
gen_cover_composite.py |
Text overlay on cover art |
gen_cover_print.py |
Print-ready full-wrap cover (Lulu/KDP specs) |
#Audiobook
| Tool | Purpose |
|---|---|
gen_audiobook_script.py |
Parse chapters into speaker-attributed scripts |
gen_audiobook.py |
Generate multi-voice audio via ElevenLabs |
#Orchestration
| Tool | Purpose |
|---|---|
run_pipeline.py |
Full pipeline orchestrator (seed → finished novel) |
build_arc_summary.py |
Regenerate arc summary from chapters |
build_outline.py |
Regenerate outline from chapters |
#File Structure
FRAMEWORK (reusable, on master): program.md — Agent instructions per phase CRAFT.md — Craft education (plot, character, world, prose) ANTI-SLOP.md — Word-level AI tell detection ANTI-PATTERNS.md — Structural AI pattern detection PIPELINE.md — Full automation specification WORKFLOW.md — Step-by-step human guide TEMPLATES (filled per-novel on a branch): voice.md — Part 1: guardrails. Part 2: discovered per novel world.md — World bible template characters.md — Character registry template outline.md — Chapter outline template canon.md — Hard facts database MYSTERY.md — Central mystery (author-only) state.json — Pipeline state tracker TYPESETTING: typeset/novel.tex — LaTeX template (EB Garamond, trade paperback) typeset/build_tex.py — Chapters → LaTeX with vector ornaments typeset/epub_* — ePub metadata, CSS, and front matter ART: audiobook_voices.json — Character → ElevenLabs voice mapping landing/index.html — Responsive landing page template CONFIG: .env.example — API keys (Anthropic, fal.ai, ElevenLabs) pyproject.toml — Python dependencies
#How It Works
The novel is five co-evolving layers:
Layer 5: voice.md — HOW we write Layer 4: world.md — WHAT exists Layer 3: characters.md — WHO acts Layer 2: outline.md — WHAT HAPPENS Layer 1: chapters/ch_NN.md — THE ACTUAL PROSE Cross-cutting: canon.md — WHAT IS TRUE
Changes propagate both down (lore change → outline change → chapter
revision) and up (writing reveals a gap → update lore → check
downstream). The pipeline tracks propagation debts in state.json.
#Two Immune Systems
-
Mechanical (
evaluate.py, no LLM): regex scans for banned words, fiction clichés, show-don't-tell violations, sentence uniformity. -
LLM Judge (
evaluate.py, separate model): scores prose quality, voice adherence, character distinctiveness, beat coverage.
#The Opus Review Loop
After automated revision cycles, the full manuscript goes to Claude Opus with this prompt:
"Read the below novel. Review it first as a literary critic and then as a professor of fiction. Give specific, actionable suggestions for any defects you find. Be fair but honest. You don't have to find defects."
The dual-persona review catches what automated tools can't: prose-level repetition, character thinness, ethical gaps, structural monotony. The loop continues until the reviewer's items are mostly qualified hedges rather than real problems.
#API Keys
The pipeline uses three external services:
| Service | Key | Used for |
|---|---|---|
| Anthropic | ANTHROPIC_API_KEY |
Writing, evaluation, review (Sonnet + Opus) |
| fal.ai | FAL_KEY |
Cover art and ornament generation (Nano Banana 2) |
| ElevenLabs | ELEVENLABS_API_KEY |
Multi-voice audiobook generation |
Copy .env.example to .env and fill in your keys. Only the Anthropic
key is required for the core pipeline. Art and audiobook are optional.
#Production History
The first novel, The Second Son of the House of Bells, was produced through this pipeline:
- Foundation: World bible, 8 characters, 24-chapter outline, voice discovery
- Drafting: 24 chapters, 75,698 words, sequential with evaluation
- Revision: 6 automated cycles + 6 Opus review rounds
- Structural: 24 → 19 chapters through 4 merges
- Art: Linocut cover (Nano Banana 2), 19 woodcut chapter ornaments (vectorized)
- Audiobook: 19 chapters parsed into 4,179 speaker-attributed segments
- Final: 79,456 words, 6 review rounds, all major items resolved
#Inspiration
- karpathy/autoresearch — the autonomous research loop
- Brandon Sanderson's writing lectures (Laws of Magic, character sliders)
- K.M. Weiland's Creating Character Arcs
- Blake Snyder's Save the Cat
- Ursula K. Le Guin's "From Elfland to Poughkeepsie"
- slop-forensics and EQ-Bench Slop Score