Plan, draft, track, revise, and publish longform fiction entirely inside your Obsidian vault using a single host view that organizes Home, Plan, Write, Revise, Publish plus Codex and Track tools.
翻译准备中
插件TypeScript · CSSGitHub @leethobbit自行安装运营者未确认
试用过了吗? 点一下就好,无需登录。
正在加载完整 README。 以下为已保存的摘录。
A local-first writer's suite for longform fiction in Obsidian. Plan, draft, track, revise, and prepare to publish with Inkswell. My goal is to build the best end-to-end plugin toolkit for writers, especially those working on large series longform projects.查看完整 README ↗A local-first writer's suite for longform fiction in Obsidian. Plan, draft, track, revise, and prepare to publish with Inkswell. My goal is to build the best end-to-end plugin toolkit for writers, especially those working on large series longform projects.
longform frontmatter, so existing projects load with zero migration. Inkswell-only data lives under a separate inkswell key to avoid collisions.Five pipeline phases — Home · Plan · Write · Revise · Publish — plus two cross-cutting tools, Codex and Track, that you reach for at any stage.
| Surface | What it's for |
|---|---|
| Home | Your books as cover cards on shelves (one per series), a cover-art hero card (logline / theme / word-target progress), a nestable scene tree, multiple drafts per story, ideas inbox + quick capture, and a series dialog for multi-book worlds. |
| Plan | Overview fields, beat sheets (7 templates incl. Save the Cat!), and Structure — the outline tree, a Kanban board, and a plotline × chapter grid, behind one Tree / Board / Grid switcher. |
| Write | A distraction-light Live-Preview editor, writing prompts, fast-drafting inline markers, and timed sprints. |
| Revise | An Audit toolkit, a unified To-dos worklist (draft markers left in prose + logged revision decisions), and manuscript Analysis. |
| Publish | A configurable compile/export pipeline plus a self-publishing checklist and launch planner. |
| Codex | A story bible — characters, locations, worlds, factions, items, events, and concepts — with scene linking and mention auto-detect. |
| Track | Word goals, streaks, a GitHub-style heatmap, lifetime records, a deadline pace calculator, and milestone zones. |
All projects is a set of shelves — one per series, in book order, plus your standalone books — of cover cards showing the book number, scenes and words, progress toward the target, and when you last wrote. Start a book straight into a series from New project, or pick a series (or start one) from any book's menu; a shelf's menu renames the series, reorders its books, or adds another. Click a card to focus on that book: a hero card with cover art, logline, theme, and a progress bar, a strip of the series' other covers, and the nestable scene tree. An ideas inbox with quick capture sits below the shelves — click an idea to edit it, or promote it to a note in your Ideas/ folder from its menu. A story can hold multiple drafts (a first draft, an editor pass…), switchable from the header, each a full independent copy of the manuscript and its planning.
A three-step flow: Overview (novel-level fields and long-form prose), Beats (7 outline templates incl. Save the Cat!, with scene scaffolding), and Structure — the same scenes seen three ways behind a Tree | Board | Grid switcher: the authoritative Act › Chapter › Scene outline tree, a Kanban board (by status / act / chapter / POV), and a plotline × chapter plot grid.
A distraction-light, Live-Preview manuscript editor with writing prompts and timed sprints. Five fast-drafting inline markers — for to-dos, research questions, dialogue gaps, missing scenes, and notes — highlight as you type (e.g. [RESEARCH: what did 1920s lamplighters earn?]), so you can mark a gap and keep moving forward. Add your own marker words ([CHECK: …], [TK: …]) under Customize → To-do markers. Find them all later in Revise → To-dos.
Switch Write to Stream to read and edit the whole book as one continuous page, in order: click anywhere to edit that scene in place, jump between chapters, or narrow the page to one chapter, POV, plotline, character or status. Each scene still saves to its own note.
A configurable compile/export pipeline (Markdown & HTML built in; .docx / .pdf / .epub via pandoc when installed) with a step editor, chapter grouping, and a pre-export check. Plus a self-publishing Checklist (master checklist + book-metadata worksheet) and a Launch planner — pre-order timeline, budget, cover, marketing, and ARC trackers.
Characters, locations, worlds, factions, items, events, and concepts, each with its own profile and an optional portrait image. Places nest, so a city can sit inside a region inside a world. Every entry automatically lists the scenes that mention it — by name or alias, for any category — so your canon stays consistent as the manuscript grows. Can be scoped for single writing projects, or shared across a series. Pin your main cast in each book so they list first (and come first when you type [[ in Write), and search by name, alias, or a character's Role ("antagonist").
Daily / weekly / monthly word goals, habit streaks, a GitHub-style heatmap, lifetime records, a writing-history chart, sprint stats, a deadline pace calculator (required daily words, ahead / on-track / behind), draft-milestone zones, and an optional daily mood. Goals only count writing in your projects — by default just manuscript scenes, with settings toggles to also count planning notes, codex notes, or other project notes. Notes elsewhere in the vault never count.
data.json..docx / .pdf / .epub shells out to a pandoc binary on your machine. It's feature-detected and disabled gracefully when pandoc isn't present; Markdown and HTML export need nothing extra..docx / .pdf / .epub export, which disables itself gracefully elsewhere.Everything Inkswell stores is plain text you can inspect, sync, and back up like any other note:
| Data | Where it lives |
|---|---|
| Scene prose | Ordinary notes in your project's scene folder |
| Plan data — beats, outline structure, goals, revision log, audit checklists, compile & publishing settings | Frontmatter of the project index note (the note named after your project) |
| Codex entries | Ordinary notes with a codex frontmatter key |
| Plugin settings, writing history, sprints, ideas inbox | The plugin's data.json (inside .obsidian/plugins/inkswell/) |
| Other devices' writing history (opt-in: Sync writing history across devices) | One small machine-written note per device under <base folder>/Writing log/, merged on Track |
Recovery options, should anything ever go wrong:
data.json backups: on each load, Inkswell keeps a daily copy of its data.json in .obsidian/plugins/inkswell/backups/ (the last 7 days). To bring back settings only (custom codex types, renamed types, Customize changes, the rail arrangement) without touching your writing history, run the command Restore settings from a backup and pick a day. To restore everything, including writing history: disable Inkswell, copy the backup over data.json, re-enable. If data.json can't be read when Obsidian starts, Inkswell loads the newest backup by itself, keeps the unreadable file as data-unreadable-<date>.json, and shows a notice.Requirements: Obsidian 1.7.4+ (pandoc optional, for .docx / .pdf / .epub).
main.js, manifest.json, and styles.css from the latest release into <vault>/.obsidian/plugins/inkswell/, then enable Inkswell in Community plugins.Open Inkswell from the pen-tip ribbon icon or the "Open Inkswell" command.
Inkswell works with the notes you already have. Setting up a project only creates one new note, the project's index note; your chapter notes aren't changed. If you sync your vault, set the project up on one device and let sync finish before you open it on another.
Nothing to do. Inkswell reads and writes Longform's format, so your projects show up on Home as soon as Inkswell is on.
If your book is already in Obsidian as one note per chapter or scene:
Click New project on Home (or run the New project command) and fill it in to match where your book already is:
My Book.Writing for Writing/My Book/. Clear it if your book's folder is at the top level of your vault.Chapters. Type / if they sit directly in the book's folder.Inkswell adds an index note named after the book (My Book.md) inside the book's folder. If one of your chapters already has exactly that name, rename it first.
On Home, click your book's card. A Scene files out of sync box lists every note in the scene folder as Unindexed. (If you come back to this after restarting Obsidian, the box takes about 10 seconds to appear.)
Click Add as scene on each one in reading order, because each is added to the end. Click Ignore for notes that aren't part of the manuscript, like outlines or scraps.
Fix the order whenever you like by dragging scenes on Home or in Plan → Structure → Tree. If your notes already have a chapter property with a number ("Chapter 12" or "12"), Sort scenes by chapter number… in the book's ⋯ menu puts them in order in one step.
Good to know:
Part 1/, Part 2/), move the notes into one folder first. To keep the parts, give each scene an Act in the Scene inspector.Inkswell can't open these files directly, so first turn your manuscript into Markdown:
pandoc book.docx -o book.md.If you end up with one file per chapter, put them in a folder in your vault and follow the steps above. If you have one big file:
Any note becomes a Codex entry when you add a codex property set to its type: character, location, world, faction, item, event, or concept. An entry without a scope shows up in every book. To tie it to a book or a series, open it in the Codex panel and use Scope → Change….
examples/sample-vault/ is a complete, openable vault containing a mid-draft novel — The Lamplighter's Archive — wired up to exercise every Inkswell surface: beats, scenes, Codex, a populated Track dashboard, the revision audit, a compile recipe, and the self-publishing planner. Run npm run build:sample, then Open folder as vault on examples/sample-vault. See examples/README.md for details.
npm install
npm run dev # watch build into main.js
npm run build # typecheck + production bundle
npm test # unit tests (vitest)
Copy main.js, manifest.json, and styles.css into <vault>/.obsidian/plugins/inkswell/ to test in a real vault. Architecture, conventions, and the compile/version workflows are documented in AGENTS.md.
This plugin was developed with the assistance of agentic AI coding tools and practices. I have a mandate at work to learn AI tooling, and I wanted to channel that practice into something useful for a community I love - hopefully this counts as that. Direction, architecture, scope, and review are all handled by me; much of the implementation was AI-assisted under that direction. That said, there is absolutely NO AI-generation in the plugin itself. I used agents to help build it, but the plugin itself has a strict "No AI" policy and no AI or word generation features will ever be added.
MIT © Daniel King