Sébastien Dubois193 downloadsExport books (one manifest note + linked chapter notes) to EPUB and PDF via Pandoc.
Write a book inside an Obsidian vault — one manifest note acts as the table of contents, each chapter / section is its own note. The plugin compiles the structure into a single manuscript and exports to EPUB and PDF via Pandoc.
Desktop only. Requires
pandocon$PATH(or configure the path in settings). For PDF, Typst is the recommended engine — single small binary, no LaTeX install needed. LaTeX engines (xelatex, tectonic) are still supported if you prefer.Configure an output folder before exporting. Settings → Book Exporter → Default output folder: an absolute filesystem path (e.g.
~/Downloads). The plugin refuses to export until this is set. Temp files live in the OS temp directory — never in your vault or plugin folder.
# H1 is the book title (or use title: in frontmatter — that wins).## H2 … ###### H6 is a section at that level. Sections nest by level.[[wikilinks]] contributes those links — in source order — to the section. The linked notes are inlined at that point in the manuscript.## Acknowledgments with just a paragraph and no links.--- line in any note's body (or in the manifest's section prose) is converted to a hard page break. Use it to force a page break wherever the automatic chapter / part breaks aren't enough. (YAML frontmatter delimiters are stripped first; --- inside a fenced code block is left alone.)---
title: The Context Layer
authors: [Sébastien Dubois]
language: en
publisher: DeveloPassion
description: A book about turning notes into knowledge.
cover:
covers/the-context-layer.jpg # vault path, [[wikilink]], absolute path, or http(s) URL
# the frontmatter key (default `cover`) is configurable in settings
book_export:
formats: [epub, pdf]
pdf_engine: typst
page_break_per_chapter: true
sections_to_skip: [Related, References, Title Options, Target Audience]
output_dir: '~/Books/The Context Layer'
---
# The Context Layer
## Foreword
- [[Foreword]]
## Part I — The Problem
### Chapter 1 — Why Notes Fail
- [[Why Notes Fail]]
- [[The Cost of Forgetting]]
### Chapter 2 — The Cost
- [[The Cost]]
## Part II — The Solution
### Chapter 3 — Building Context
- [[Building Context]]
## Acknowledgements
- [[Acknowledgements]]
- [[About the Author]]
When a linked note is inlined, the plugin:
Related, References, Title Options, Target Audience) — case-insensitive heading match, fence-aware. The same list is applied to the manifest body before parsing, so authoring scaffolding (## Title Options, ## Target Audience, ## References, ## Related) stays in the manifest but never reaches the export.# H1 (the section title in the manifest is authoritative).parentLevel - 1, capped at H6).![[image]] → standard Markdown images (copied to _resources/), [[Note]] → display text, %% comments %% stripped.Book Exporter: Export current book to EPUBBook Exporter: Export current book to PDFBook Exporter: Export current book to all formatsBook Exporter: Preview compiled manuscript (.md)Book Exporter: Validate current bookBook Exporter: Open exports folderYou can also browse the catalog on the Obsidian Community website.
If the plugin isn't listed in the community catalog yet (or you want a specific version):
main.js, manifest.json, and styles.css from the latest release.<Vault>/.obsidian/plugins/book-exporter/.BRAT (Beta Reviewers Auto-update Tool) installs plugins straight from a GitHub repo and keeps them updated automatically. Use this if you want the latest commits — things might break.
https://github.com/dsebastien/obsidian-book-exporter.git clone https://github.com/dsebastien/obsidian-book-exporter.git
cd obsidian-book-exporter
bun install
export OBSIDIAN_VAULT_LOCATION="/path/to/your/vault"
bun run dev
The dev build copies the plugin into <vault>/.obsidian/plugins/book-exporter/ automatically and writes a .hotreload marker for the Hot Reload plugin.
| Tool | Required for | Install |
|---|---|---|
| Pandoc ≥ 3.x | EPUB, PDF | https://pandoc.org/installing.html |
| Typst (recommended PDF engine) | https://typst.app — single binary | |
| xelatex / tectonic (alternative PDF engines) | only if you prefer LaTeX |
Obsidian on macOS is an Electron GUI app launched from Finder or the dock, which means it starts with a stripped $PATH (typically only /usr/bin:/bin:/usr/sbin:/sbin). Even when pandoc, typst, or xelatex work fine from Terminal, the plugin's spawned process won't see them. Two settings let you fix this without touching shell-init files:
/usr/local/bin/pandoc or /opt/homebrew/bin/pandoc)./opt/homebrew/bin/typst or /Library/TeX/texbin/xelatex). Forwarded to pandoc as --pdf-engine=<path>, so pandoc doesn't have to resolve the engine via $PATH.$PATH for the spawned pandoc process. Lets pandoc resolve its own helper binaries (typst, LaTeX packages, image converters, …) without setting each path individually. Example: /opt/homebrew/bin:/Library/TeX/texbin:/usr/local/bin.Pre-release. Unstable. See documentation/plans/01-mvp.md for the design and documentation/history/ for the change log.
MIT. See LICENSE.