Some checks are pending
Create Release / Check if Version Bump PR Merged (push) Waiting to run
Create Release / Create Git Tag and GitHub Release (push) Blocked by required conditions
Post-Merge Version Bump / Check if Version Bump Needed (push) Waiting to run
Post-Merge Version Bump / Create Version Bump PR (push) Blocked by required conditions
The novel-writing agent pack existed only as three byte-identical copies inside
Obsidian vaults (Die-Kessler-Zwillinge, Scruffy-der-Weltenhund, OpenNovelWriter),
with no version control anywhere. It is now versioned here as the single source
of truth.
Contents (novel/):
- .opencode/agent/ OpenNovelAgent (primary) + LineEditor, Proofreader,
StyleAnalyst, ContinuityEditor, StoryReviewer, Translator, Importer,
Illustrator, CopyrightWatchdog
- .opencode/command/ import.md, init.md
- .opencode/languages.yaml, .opencode/opencode.json (pristine: default_agent)
- docs/SCHEMA.md canonical schema — the newer OpenNovelWriter revision, which
supersedes the stale copy in the Scruffy vault (adds workspace = book,
images/prompts + images/generated, parallel books, rewrites section 7)
- templates/ AGENTS.md placeholder + DATA/{wiki,timeline,glossary}.yaml.md, style.md
- sync-to-vault.sh dry-run by default; --apply backs up what it replaces and
never touches DATA/, AGENTS.md, chapters or a vault's own opencode.json
- PACK-NOTES.md per-file md5 provenance and the verified cross-vault comparison
Verified before committing: all 10 agents, both commands, languages.yaml and
start.sh are md5-identical across the three vaults.
109 lines
3.7 KiB
Markdown
109 lines
3.7 KiB
Markdown
<div align="center">
|
|
|
|
# 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
|
|
|
|
</div>
|
|
|
|
---
|
|
|
|
## What is OpenNovelWriter?
|
|
|
|
A **co-author agent** for [OpenCode](https://opencode.ai) 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
|
|
|
|
```bash
|
|
# 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`](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](https://github.com/darrenhinde/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.
|