Jonathan Simcoe172 downloadsWrite, organize, and assemble long-form books from Markdown files.
Books is an Obsidian plugin for writing and organizing long-form manuscripts in your vault. It adds a dedicated book authoring environment on top of regular Markdown files, with a left-side book navigator, a spine view for structuring chapters, writerly manuscript styling, scratchpad capture, and Markdown export.
Books are stored locally in your vault under Books/. No cloud service, telemetry, or external account is required.

Books/, then insert them as publishable blockquote citations.Books creates a vault-root folder:
Books/
My Book/
book.json
scratchpad.json
Introduction.md
Chapter 1.md
Ideas.canvas
book.json is the source of truth for book metadata and spine ordering. Markdown and canvas files remain normal vault files so they can be opened, linked, searched, synced, and backed up like any other Obsidian note.
Book entries receive frontmatter such as:
title: Introduction
bookId: book-...
bookTitle: My Book
sectionId: entry-...
sectionType: intro
sectionTitle: Introduction
sectionOrder: 1
genre: fiction
Filenames are allowed to differ from display titles. The plugin keeps file references stable while presenting readable labels in book views and editor chrome.
Books requires book.json to sync between devices because it stores each book's spine, ordering, metadata, sections, chapters, and canvases. If mobile shows the Books/ folder in Files but the Books navigator says no books were found, check Obsidian Sync's file type settings and enable syncing for all file types.
In Obsidian, open Settings → Sync → File types and choose All file types. Also make sure the Books/ folder is included in selective folder sync. After changing Sync settings, let mobile finish syncing, then restart Obsidian or toggle Books off and on.
The Books navigator lives in the left sidebar. It supports:
The spine view is the control center for a book. It supports:
Each book can have a scratchpad.json file. The scratchpad view lives in the right sidebar and tracks the active book. It supports:
The research sidebar searches non-book notes and blocks. It inserts normal Markdown blockquotes with footnotes, so draft material can move toward publishing without relying on Obsidian-only embed rendering.
Books also registers a Books-only @ suggester inside book chapters. Type @query, choose a note or block, and Books inserts:
> Quoted research text.[^1]
[^1]: Price, D. (2018, March 23). *Laziness does not exist*. Medium. https://example.com/laziness-does-not-exist
If the source note has frontmatter such as sourceURL, sourceUrl, source_url, url, sourceTitle, source, title, author, byline, datePublished, publishedDate, publishedAt, published, sourceDate, date, siteName, site, publication, publisher, or website, Books uses that metadata to approximate an APA 7 webpage citation. Otherwise it links back to the source note with a readable title alias.
Books applies manuscript styling only to files inside Books/. The manuscript treatment includes:
ui-serif, New York, Georgia, and system fallbacks.Books also adds Save to scratchpad to the editor context menu when text is selected.
Install dependencies:
npm install
Run a production build:
npm run build
Run lint:
npm run lint
Run the esbuild watcher:
npm run dev
The bundled plugin entry is main.js. It is generated locally for Obsidian but ignored by git.
An Obsidian release should include:
manifest.jsonmain.jsstyles.css