Turn your literature into a citation graph on an Obsidian canvas: papers as nodes, citations as arrows, laid out on a timeline by year.
- Build a canvas from a Zotero collection or tag, or add papers one at a time by DOI or arXiv ID. Each paper gets a literature note.
- Keep it in step with Zotero: references you add to the collection later can be pulled onto a canvas you have already rearranged, without moving anything on it.
- Grow it with any paper's references and citing works, filtered by year and keyword, and sorted by citations, year, title or the order the paper cites them.
- Group by topic: tag paper notes with ordinary Obsidian tags (up to three each), and one command rearranges the canvas into a labelled group per tag. Groups overlap, so a paper with two tags sits where both groups meet.
- Track your reading: every paper shows its status (to read, reading, read, abandoned) as a coloured border.
- Download PDFs from arXiv into a vault folder, linked from each paper's note and its canvas card, or open the PDF Zotero already stores: each paper added to a canvas is looked up in Zotero by DOI and its PDF linked from the note. PDFs can open in Obsidian or in your system's PDF viewer.
- Summarize papers with an LLM, written straight into the note.
- Get recommendations: an LLM suggests papers that belong on the canvas, and each one is checked against a citation database before you see it.
Desktop only. Requires Obsidian 1.13.0 or later.
- Install Citation Graph from Settings, Community plugins, and enable it.
- Start Zotero and enable its local API: Edit, Settings, Advanced, tick Allow other applications on this computer to communicate with Zotero. (Better BibTeX is recommended for citekeys.)
- Run Citation Graph: Canvas: create from collection from the command palette and pick a collection.
- Select a paper and run Papers: expand paper to add its references and citing works.
- Put Reading: cycle reading status on a hotkey to mark papers as you read them.
Every per-paper command is also on the right-click menu of a canvas node. No Zotero? Start from any canvas with Papers: add by DOI or arXiv.
| To use | You need |
|---|---|
| Faster citation lookups | A free Semantic Scholar API key. Without one, a large collection takes minutes |
| Summaries and recommendations | A provider under Settings, Summaries (see below) |
| PDF downloads | A vault folder under Default download folder, or pick one when downloading |
| Opening PDFs in your own PDF viewer | PDF viewer set to System default app |
| Opening Zotero PDFs from notes | Zotero running when papers are added, or run PDFs: link from Zotero later. Turn off with Link Zotero PDFs |
| Syncing back to Zotero | A Zotero API key and user ID from zotero.org/settings/keys |
LLM providers.
- Claude CLI (default) uses your Claude subscription instead of an API key. Install Claude Code and sign in once by running
claudein a terminal. The plugin finds it in~/.local/binor on your PATH; otherwise set Claude CLI path. - Anthropic, OpenAI or Google Gemini API: paste your API key. These bill you per call.
Keeping PDFs out of git or Sync. PDFs are stored in your vault. Add the download folder to your .gitignore, or to Excluded folders in Obsidian Sync's settings.
| Command | What it does |
|---|---|
| Canvas: create from collection / from tag | Builds a canvas from Zotero |
| Canvas: resolve missing citation edges | Draws arrows still missing between papers on the canvas |
| Canvas: relayout | Re-sorts nodes by year |
| Canvas: update from collection | Adds papers new to the canvas's Zotero collection, without moving anything |
| Canvas: group papers by tag | Arranges papers into overlapping labelled groups, one per tag |
| Canvas: sync to Zotero | Pushes the canvas's papers to a Zotero collection |
| Canvas: send papers to another canvas | Copies or moves papers with their arrows |
| Papers: expand paper | Adds a paper's references and citing works |
| Papers: add by DOI or arXiv | Adds one paper |
| Papers: recommend papers | Asks the LLM for papers that fit the canvas |
| Papers: delete paper | Deletes the node, its arrows and its note |
| Reading: set / cycle / refresh reading status | Sets or repaints reading status |
| PDFs: download | Fetches PDFs from arXiv and links them from the paper notes |
| PDFs: link from Zotero | Links each paper's Zotero-stored PDF from its note |
| PDFs: write summary | Writes an LLM summary into the note |
| Maintenance: clear Semantic Scholar cache | Drops cached citation data |
- No telemetry. Each service is contacted only by the command that needs it: the Zotero app on your computer, Semantic Scholar, OpenAlex, Crossref and arXiv for paper data, zotero.org for sync, and your chosen LLM provider for summaries and recommendations.
- Vault only. The plugin reads and writes files only inside your vault.
- One local program. With the Claude CLI provider, the plugin runs your installed
claudebinary, only for summaries and recommendations, without a shell, and with only the tools the request needs. Choose an API provider and no program is ever run. - Costs. The plugin is free. Summaries and recommendations bill your LLM account or Claude subscription; everything else works without one.
- Full guide: every command, setting and behaviour, exactly what is sent to each service, limitations, and development.
- Changelog · Contributing · License: MIT
