ZotFlow Documentation
Literature flows in, insight flows out.
ZotFlow connects Zotero and Obsidian into a single loop: your Zotero library streams into your vault, you read, annotate, and think inside Obsidian, and what you write cites back to the exact page — while every change syncs back to Zotero. Zotero stays the source of truth for your library; Obsidian is where your thinking happens.
The Loop
ZotFlow ships a lot of features, but they all serve one of four stations:
① In — sync your library
Connect your Zotero account and pull items, collections, attachments, and annotations into a local cache. Browse and search everything from the Tree View sidebar — fully offline once synced.
→ Installation, connecting Zotero, and first sync
② Read — annotate without leaving
Open attachments in the built-in reader (the same engine Zotero uses, themed for Obsidian). Highlight, comment, extract annotation images. Local PDFs/EPUBs in your vault get the same treatment — their annotations stay in a sidecar file, never touching Zotero.
③ Distill — every source gets a page, your words get a home
Each item renders into a Source Note: an auto-generated hub page collecting metadata, annotation excerpts, and child notes. Inside it, content has three owners — the template regenerates its part on every update; Zotero-synced regions (Item Notes, annotation comments) are editable and flow back on sync; persist regions are yours alone: local-only blocks that survive every re-render and never leave your vault. Cross-paper synthesis lives in standalone notes that link back.
→ Source Note · Item Note
④ Out — cite as you write
Drag an item into your draft or type the trigger character to insert citations — Pandoc, wikilink, footnote, or real CSL styles rendered by citeproc. Links behave natively on both sides: they open ZotFlow's reader in Obsidian and Zotero's reader in Zotero.
→ Citation & writing flow · CSL Citations
The loop closes itself: citations from ④ jump back into ② and ③, new annotations from ② refresh ③ automatically, and everything you chose to sync returns to Zotero.
Customization & Support
- Templates shape every output of ③ and ④ — note paths, note bodies, citation formats. Template guide · Variables · Filters
- Settings reference
- Troubleshooting
- Release notes
Terminology
- Source Note: the auto-generated Markdown hub page for a Zotero item, rendered from a LiquidJS template. The template owns its skeleton; editable regions and persist regions inside it are yours.
- Item Note: a Zotero-native child note attached to an item — creatable, editable, and deletable from ZotFlow, synced back to Zotero. A different concept from Source Note.
- Persist Region: a template-declared block inside a Source Note whose content is local-only — it survives every re-render and is never synced to Zotero.
- Editable Region: a marker-fenced section of a Source Note that can be unlocked and edited. Three kinds: Item Note regions and annotation comment regions (synced), and persist regions (local-only).
- Library Reader: the reader for Zotero library attachments; annotations sync back to Zotero.
- Local Reader: the reader for local PDF/EPUB/HTML files in your vault; annotations live in a co-located
.zf.jsonsidecar and never touch Zotero.