Moskize9153 downloadsSync Apple Books highlights and notes to Markdown files.
Apple Books Notes Sync is an Obsidian desktop plugin that syncs Apple Books highlights, notes, and PDF annotations into local Markdown notes.
The plugin uses a companion CLI, absync, to read local Apple Books data and run sync work outside Obsidian's UI process.
>=20.16.0sqlite3 available in PATHswift, mutool from mupdf-tools, or pdftocairo from popplerThe plugin is desktop-only. Mobile Obsidian is not supported.
Install Apple Books Notes Sync from Obsidian's Community Plugins browser when it is available there:
Apple Books Notes Sync.For manual installation, copy the release files into:
<vault>/.obsidian/plugins/apple-books-notes-sync/
The plugin folder should contain:
main.jsmanifest.jsonstyles.css if included in the releaseThen reload Obsidian and enable Apple Books Notes Sync from Community plugins.
Install the CLI companion from Terminal:
npm install -g apple-books-notes-sync
You can verify it with:
absync --help
After enabling the plugin:
The default managed output folder is:
<vault>/Apple Books Notes
If you run Sync before configuring the CLI path, the plugin will show setup instructions with the install command and path detection command.
Apple Books Notes Sync adds these Obsidian commands:
Apple Books Notes Sync: SyncApple Books Notes Sync: PlanApple Books Notes Sync: DoctorApple Books Notes Sync: Create Books.baseThe ribbon icon runs Sync.
Create Books.base creates an Obsidian Bases view at <managedDirName>/Books.base for browsing synced book notes. Existing .base files are not overwritten by default, and Sync never removes or rewrites .base files.
sync_paused and chapter_notes.Books.base view for synced book notes.absync directly for automation.absync CLI. Use Detect to find and save it automatically.<vault>/<managedDirName>/
Books.base
books/
<book>.md
<book>/
<chapter>.md
assets/
covers/
<asset-id>.png
pdf/
<asset-id>/
.absync/
state.sqlite
lock
The CLI is mainly for automation and troubleshooting. Common commands:
absync doctor
absync plan
absync sync
absync base create
See docs/user/CLI.md for the full CLI reference.
Reading Apple Books databases and rendering PDF assets can take time. The plugin keeps Obsidian responsive by launching absync as a child process instead of doing sync work inside Obsidian's UI process.
Generated book notes have managed properties and generated body content. Interactive properties such as sync_paused and chapter_notes are preserved. Sync does not overwrite or remove .base files.
By default, files are written under <vault>/Apple Books Notes. You can change this from the plugin settings.
The CLI expects a target Obsidian vault with this plugin installed and enabled, because it reads vault-scoped plugin settings.
Developer notes live in docs/internal/ARCHITECTURE.md. Run the project checks with:
npm run check
Build both release surfaces with:
npm run build
Releases are created from GitHub Actions:
manifest.json, package.json, and versions.json.main.The workflow builds the plugin, creates a GitHub release whose tag matches manifest.json.version, and uploads the files Obsidian expects:
main.jsmanifest.jsonstyles.css