Migrating from Zotero
Ad Marginem reads Zotero’s RDF and BibTeX exports natively (the hardened parser from P0.6).
What comes across
| Zotero data | Ad Marginem equivalent | Notes |
|---|---|---|
| Items (papers, books, etc.) | Library entries | All standard CSL item types map directly. |
| Authors | Authors | family/given preserved; institutional authors land as literal. |
| Tags | Tags | Hierarchical Zotero tags flatten to slash-delimited names. |
| Collections | Collections | Tree structure preserved. |
| PDF attachments | PDF attachments | Stored in Ad Marginem’s local app data, uploaded on first sync. |
| Annotations (PDF) | Annotations | If Zotero exported them with the file, the parser pulls them out. |
| Notes | Notes | Plain-text or Markdown depending on the source. |
What doesn’t come across
- Zotero’s “Related Items” links — the data model is different.
- Zotero plugin metadata (e.g., DOI Manager, Better BibTeX citation keys).
- Sync history / past device list.
How to export from Zotero
- In Zotero, File → Export Library (or right-click a collection → Export Collection).
- Choose Zotero RDF (recommended — preserves the most fields) or BibTeX.
- Tick Export Notes and Export Files to bring annotations + PDFs along.
How to import into Ad Marginem
- Settings → Data → Import.
- Drop the export file (or the folder if you exported with files).
- Ad Marginem deduplicates by DOI first, then by title+first-author. You can preview the match map before committing.
- Click Import — the library populates locally, then uploads on the next sync.
Common gotchas
- Encoding: Zotero’s BibTeX uses TeX-escaped accents (
\'e). The parser handles them, but check imported titles for stray backslashes if your library has many accented characters. - Duplicate handling: Zotero often stores multiple copies of the same paper across collections. Ad Marginem keeps one canonical item per DOI; the original collection memberships are preserved.
- Large libraries: for >5000 items, run the import on the desktop client (not web) — the parsing is single-threaded and the web build is sandboxed tighter.