OpenWriterControle/novel
cclohmar 8763b36378
Some checks failed
Create Release / Check if Version Bump PR Merged (push) Has been cancelled
Post-Merge Version Bump / Check if Version Bump Needed (push) Has been cancelled
Create Release / Create Git Tag and GitHub Release (push) Has been cancelled
Post-Merge Version Bump / Create Version Bump PR (push) Has been cancelled
feat(novel): DATA/plot.md - the story baseline (main line + side-story register)
The pack had a premise (a few sentences), per-book summaries and a weekly timeline,
but no single spine saying what the main line is and which threads are side stories.

plot.md is the one prose file in DATA/: the author's telling, split into backbone
beats, an explicit side-story register, the verbatim transcription (spoken tellings
are expected - dictating into a note app is often the easiest way to produce a
baseline), deviations once the novel departs from it, and open threads.

The hierarchy is written into the file so it cannot drift: plot.md is INTENT, the
manuscript is REALISED, the wiki is DETAIL; on conflict the agent reports instead of
silently picking. Side stories are first-class - an unregistered thread is invisible
to the agent.

Wired in: SCHEMA (tree, naming table, new 5.4), templates/DATA/plot.md,
OpenNovelAgent load list + read-both-backbone-and-side-stories rule, /init asks for
a spoken telling and scaffolds the file, Importer maps fragments into it,
StoryReviewer measures chapters against it.
2026-10-17 00:05:19 +01:00
..
.opencode feat(novel): DATA/plot.md - the story baseline (main line + side-story register) 2026-10-17 00:05:19 +01:00
docs feat(novel): DATA/plot.md - the story baseline (main line + side-story register) 2026-10-17 00:05:19 +01:00
templates feat(novel): DATA/plot.md - the story baseline (main line + side-story register) 2026-10-17 00:05:19 +01:00
LICENSE feat(novel): add the OpenNovelWriter agent pack (10 agents, commands, schema, templates) 2026-10-16 23:18:30 +01:00
PACK-NOTES.md docs(novel): switch the pack to the container-vault layout 2026-10-16 23:36:04 +01:00
README.md feat(novel): add the OpenNovelWriter agent pack (10 agents, commands, schema, templates) 2026-10-16 23:18:30 +01:00
start.sh feat(novel): add the OpenNovelWriter agent pack (10 agents, commands, schema, templates) 2026-10-16 23:18:30 +01:00
sync-to-vault.sh feat(novel): add the OpenNovelWriter agent pack (10 agents, commands, schema, templates) 2026-10-16 23:18:30 +01:00

OpenNovelWriter

Your AI co-author for novels — not your developer.

You tell the story. OpenNovelWriter writes the chapters in your voice.

✍️ Co-author, not a generator — chapters are built around your direction 🧠 World memory — world wiki, timeline, and glossary as YAML 🎭 Your voice — learns your writing style from sample chapters 🌍 Multilingual — write in one language, publish in many 📝 Obsidian-native — everything is Markdown, editable in your editor


What is OpenNovelWriter?

A co-author agent for OpenCode that writes around the author rather than for them. You say "next chapter: Elena finds the letter" — OpenNovelWriter loads your world wiki, your writing style, and the story so far, and writes the chapter in your voice.

Unlike a code agent, OpenNovelWriter doesn't generate files from specs — it generates prose from a living world.

Quick Start

# 1. Create and name a vault/workspace for your book (in Obsidian), then open
#    that folder in opencode.

# 2. Initialize it (interactive wizard) — runs INSIDE the folder
opencode --agent OpenNovelAgent
> /init

# 3. Build the world, or start writing
> "Let's build the world wiki with the main characters"
> "Write Chapter 001: [what should happen]"

# 4. Translate
> "Translate chapters 1-5 into English"

The Core Concept: workspace = book

One book = one workspace = one folder. You create and name a vault for each book (e.g. "Die Kessler Zwillinge", "Scruffy"), open it in opencode, and run /init there. The folder's name is the project name.

Writing several books in parallel? Create one workspace per book and switch between them. The agent is the same in every workspace — what makes each one that book is its own AGENTS.md + DATA/ (world wiki, timeline, glossary, style).

The Core Loop

Author:  "next chapter — this should happen"
   ↓
Agent loads:  AGENTS.md + world wiki + timeline + writing style
   ↓
Agent proposes a chapter draft → author approves
   ↓
Agent writes the chapter → author edits in Obsidian
   ↓
Agent harvests new facts → updates wiki & timeline

Project Structure

My Series/
├── 01/                 # book 1
│   ├── DE/             #   Kapitel 001.md, Kapitel 002.md, …
│   └── EN/             #   Chapter 001.md, …
├── DATA/               # world wiki, timeline, glossary, writing style
├── AGENTS.md           # project rules
└── README.md

See docs/SCHEMA.md for the complete conventions.

What's Included

  • OpenNovelAgent — the primary co-author
  • /init — interactive project wizard (language first, then everything in that language)
  • DATA/ schemas — world wiki, timeline, glossary (YAML in Markdown)
  • languages.yaml — extensible language registry

For the Community

OpenNovelWriter is designed to be multilingual. The /init wizard's first question is the writing language; all further questions and content follow that language. New languages are added as a single entry in .opencode/languages.yaml.

Attribution

OpenNovelWriter builds on the exceptional work of Darren Hinde and the OpenAgentsControl project. Without that foundation — the agent concept, the context system, and the plan-and-approve workflow — this project would not exist. Thank you, Darren.

License

MIT — Copyright (c) 2025 Darren Hinde (OpenAgentsControl) and Copyright (c) 2026 OpenNovelWriter Contributors. Darren Hinde's original work remains under the MIT license.