Zotero Research Assistant
Ask, verify, compare, organize, and turn Zotero papers into research notes without leaving your library.
- Source repo
- yilewang/llm-for-zotero
- Stars
- ★ 3.5k
- Last updated
- 3d ago
- License
- AGPL-3.0
- Primary language
- TypeScript
- FA score
- 54/100 · Major gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformCodex · OpenAI API · Claude APIChatGPT · Claude Code (Partial support)
- Cost
- Free software; you pay for model usage
- Setup effort
- Medium · a few setup steps
- You'll need
- Typical use
- A graduate student reading a PDF in Zotero can ask about its methods, results, or selected text and click citations to verify the underlying passage.
- Not a fit if
- Researchers who do not use Zotero 7, 8, or 9, since it is a plugin only
- Users unwilling to pay for cloud model APIs or cloud MinerU parsing
- Source review
- 54/100 · Major gaps
What does this agent do, and when should you use it?
llm-for-zotero is a Zotero plugin distributed as an .xpi that places paper chat and research workflows in the Zotero PDF-reader sidebar and a standalone window. It accepts the current PDF, selected text, screenshots, other open papers, and uploaded documents as conversation context, with citations that can jump back to source passages. Its beta Agent Mode can search and read a Zotero library, then perform confirmed changes to tags, metadata, collections, attachments, and notes, with session undo for recent writes. The plugin supports standard API providers, local OpenAI-compatible endpoints, WebChat, Codex App Server, and an experimental Claude Code mode. Results can be saved as Zotero notes or as Markdown notes in local folders including Obsidian and Logseq.
On the first message, the plugin loads the current paper into context; later turns use focused retrieval from that paper and expose generated citations as links back to Zotero passages. It can read PDFs, selected text, figure screenshots, and up to 10 uploaded files in PDF, DOCX, PPTX, TXT, or Markdown formats, while / adds another open paper as context. Agent Mode provides library and PDF reading, CrossRef and Semantic Scholar discovery, tag and metadata updates, collection and attachment management, note editing, local file read/write, and analysis commands; writes use confirmation cards and the session retains the last 10 write entries for undo. When MinerU is enabled, new PDF attachments are parsed and cached as higher-fidelity Markdown with tables, equations, figures, and complex layouts; local mode uses mineru-api through POST /file_parse. The plugin can save answers and full chats, or create Markdown research notes with YAML frontmatter in Zotero or a configured local directory.
- A graduate student reading a PDF in Zotero can ask about its methods, results, or selected text and click citations to verify the underlying passage.
- A researcher comparing several open papers can add them with / and request a focused comparison of methods or evidence.
- A curator of a large Zotero library can use Agent Mode to find items and related papers, then review and confirm tag or metadata updates.
- An Obsidian or Logseq user can ask for a paper summary to be saved as a Markdown note with YAML frontmatter and Pandoc citation syntax.
- A user handling tables, equations, or complex layouts can enable MinerU so new PDF attachments are parsed and cached for later conversations.
- A ChatGPT Plus subscriber can configure the local codex app-server runtime and switch to the Codex conversation system inside Zotero without a separate API key.
How do you install or deploy this agent?
Download the latest .xpi from the Releases page. In Zotero, open Tools → Add-ons, select the gear icon, choose Install Add-on From File, select the .xpi, and restart Zotero. Open Preferences → llm-for-zotero, select a Provider, enter the API Base URL, secret key, and model name, then select Test Connection. For Codex App Server, first install and sign in to the Codex CLI with npm install -g @openai/codex and codex login; then enable the integration in the plugin's Agent tab and test the connection.
How do you use this agent?
Open a PDF in Zotero, click the LLM Assistant icon in the right-side toolbar, and ask a question, add selected text, attach screenshots, or upload supporting files. Save an individual answer or the complete conversation to a Zotero note. For local Markdown output, configure a nickname, absolute Notes Directory Path, and default folder in Notes Directory, then ask the assistant to save to that named location. To use library-wide search, note-writing, or organization tasks, enable Agent Mode in Preferences and toggle Agent (beta) in the context bar.
What are this agent's strengths and limitations?
- It works inside the Zotero PDF reader and provides citations that can jump back to the source passage for answer verification.
- It combines current-paper chat, multi-paper comparison, screenshots, and several external-document formats rather than limiting context to one PDF.
- Agent Mode brings library search, CrossRef and Semantic Scholar discovery, note creation, and library organization into one workflow while keeping writes confirmable and session-undoable.
- It offers several backend paths: API providers, local OpenAI-compatible models, WebChat, Codex App Server, and Claude Code.
- Optional MinerU parsing and local Markdown-note output support workflows centered on extraction fidelity, Obsidian, or Logseq.
- It is fundamentally a Zotero plugin, so adoption requires a compatible Zotero 7, 8, or 9 installation rather than a standalone research application.
- Backend choices carry different credentials and runtime requirements: provider APIs usually need a key, Codex needs a signed-in Codex CLI, and Claude Code needs its CLI plus a local bridge.
- Claude Code integration is experimental and currently lacks native Zotero API operations; native library reads, tagging, and imports remain the responsibility of built-in Agent Mode.
- WebChat depends on a Chromium browser extension and an open ChatGPT or DeepSeek tab; minimizing, backgrounding, or monitor-state changes can drop the connection.
- Local MinerU requires a self-hosted mineru-api server, and pausing a job does not stop parsing already running on that server.
How does this agent compare with similar options?
Compared with keeping output only in Zotero internal notes, File-Based Notes writes Markdown with YAML frontmatter and Pandoc citation syntax to Obsidian, Logseq, or any local directory. Compared with cloud MinerU, local mineru-api keeps PDFs on the machine when using the default 127.0.0.1 address, but requires the user to run the service and prepare its models.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| Zotero Research Assistant This agent | 54 · Major gaps | Agent plugin / skillFree + model costs | ★ 3.5k | 3d ago | TypeScript | Codex · OpenAI API · Claude API |
| LLM Wiki | 69 · Some gaps | CLIFree + model costs | ★ 1.8k | 15d ago | Python | Codex · Claude Code · Claude.ai |
| Material Learning Studio | 92 · Excellent | Agent plugin / skillFree | ★ 1.3k | 17d ago | Python | Codex · Claude Code |
| AI Research Skills | 77 · Some gaps | Agent plugin / skillFree + model costs | ★ 604 | 1d ago | Python | Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence: Agent Mode is disabled by default, write operations require confirmation, and session undo (last 10 entries) is provided. Read tools are unrestricted but write tools are reviewable. Data flow transparency: README has a privacy and data flow section, but no detailed logs or audit. Sensitive data handling: API keys stored locally, but no encryption or protection details. Dependency security: dependencies not pinned, no security audit. External effects: can read/write local files and execute commands, but requires confirmation. Rollback: session undo provided, but not persistent. Source attribution: publisher not verified, no clear attribution. Deductions: insufficient evidence for sensitive data handling and dependency security, unclear source attribution.
Evidence: Code structure is consistent, tests cover some functionality, but no complete test results. Dependency availability: dependencies not pinned, may affect reproducibility. Failure messages: error handling exists, but no user-visible failure message examples. Deductions: dependencies not pinned, insufficient failure message evidence.
Evidence: Targets Zotero users, supports multiple scenarios (paper QA, summarization, comparison). Capability boundaries: Agent Mode clearly distinguishes read/write tools, write operations require confirmation. Trigger precision: skill trigger patterns are clear, but no detailed rules. Environment fit: supports multiple backends (API, local models, WebChat, Codex, Claude Code), but depends on external services. Deductions: insufficient evidence for trigger precision and some environment fit.
Evidence: README structure is clear, with installation instructions, examples, FAQ, known limitations. License is AGPL-3.0, version exists but no changelog. Maintenance responsibility: issue templates and CI exist, but publisher not verified. Deductions: no changelog, unclear maintenance responsibility.
Evidence: Output usability is high, with citation jumping, note saving. Marginal value: provides unique features (e.g., MinerU parsing, multi-paper comparison). Cost-benefit: requires API keys or external services, cost not clear. Deductions: insufficient cost-benefit evidence.
Evidence: README claims are partially demonstrated, but no verifiable test results. Cross-source corroboration: no independent verification. Fact-inference separation: not clearly distinguished. Deductions: lack of verifiable test results and independent verification.
- Dependencies are not pinned, which may introduce security vulnerabilities or compatibility issues.
- API key storage does not mention encryption measures; users should handle keys carefully.
- Agent Mode can read/write local files and execute commands; although confirmation is required, users should understand the risks.
- Publisher identity is not verified; users should assess trustworthiness themselves.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
v3.9.16 Release v3.9.16
Release notes excerpt
What's new in LLM for Zotero *Changes since 3.9.15* The agent now reads the parts of a paper you name, in any language, and shows you which parts it read. It can do more in your library: attach files, find PDFs, change item types, annotate, and open a PDF at a page. Claude Code and Codex show their steps in Task progress, and Codex asks before it writes to Zotero. Reading papers Ask for the parts you want Name the parts of a paper you want, such as "the abstract and the results". The agent picks those sections from the paper's own outline, in any language. …View on GitHub ↗ -
v3.9.15 Release v3.9.15
Release notes excerpt
What's new in LLM for Zotero *Changes since 3.9.14* You can now open any chat in its own small window and keep it beside your paper. Answers are easier to read, with type and spacing closer to Claude desktop. Zotero's Codex sessions can use their own Codex home folder, apart from the Codex app. Chat windows Open a chat in its own window In the separate chat window, drag a chat out of the chat list, or drag the chat title. You can also right-click a chat and choose Open in New Window. The new window holds that one chat. …View on GitHub ↗ -
v3.9.14 Release v3.9.14
Release notes excerpt
What's new in LLM for Zotero *Changes since 3.9.13* The chat has a new layout: the composer floats over the bottom of the chat, and the window sidebar groups your chats by agent. Answers that use the web now credit their sources. Task progress shows which papers and pages each question used, and where the answer uses them. A local MinerU server can now start when you need it and stop when you don't. The chat window A floating composer The composer and the shortcut chips now float over the bottom of the chat. …View on GitHub ↗