
zotero-paper-reader
Read and analyze academic papers from Zotero library. Use when the user requests to read, access, or analyze a paper by title, author, or topic from their Zotero library. Automatically searches Zotero, converts PDFs to markdown, saves to Notes/PaperInMarkdown, and provides analysis.
- Installs
- 606
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/fuzhiyu/researchprojecttemplate --skill zotero-paper-reader- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads zotero-paper-reader automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Zotero Paper Reader
Overview
Read and analyze academic papers directly from the Zotero library. This skill handles the complete workflow from searching Zotero to converting PDFs to readable markdown format.
When to Use
Use this skill when the user requests to:
- "Read this paper from Zotero"
- "Find and read [paper title]"
- "Access [author name] paper"
- "Get the paper about [topic]"
- "Convert [paper] from Zotero to markdown"
Workflow
Step 1: Search Zotero Library
Use the Zotero MCP tools to search for the paper:
# Search by title, author, or keywords
mcp__zotero__zotero_search_items(query="paper title or author", limit=5)
Present the search results to the user if multiple papers are found. Get the item_key from the selected paper.
Step 2: Get PDF Attachment
Retrieve the PDF attachment information:
# Get child items (attachments) for the paper
mcp__zotero__zotero_get_item_children(item_key="ITEM_KEY")
Look for the attachment with type: application/pdf and note its Key (attachment key) and Filename.
Step 3: Get PDF File (Local or Download)
Use the bundled script to get the PDF - it automatically tries local storage first, then downloads if needed:
uv run python .claude/skills/zotero-paper-reader/scripts/get_zotero_pdf.py ATTACHMENT_KEY
The script workflow:
- First searches local Zotero storage (
~/Zotero/storage/ATTACHMENT_KEY/) - If found locally, returns that path
- If not found locally, downloads from Zotero web library using API
- Retrieves original filename from Zotero metadata and downloads to
/tmp/[original_filename]
Security note: The Zotero API key and library configuration are read directly from Notes/.env by the Python script and never exposed to the LLM. Required environment variables: ZOTERO_API_KEY, ZOTERO_LIBRARY_TYPE, ZOTERO_LIBRARY_ID.
Step 4: Convert to Markdown
Use the mistral-pdf-to-markdown skill to convert the PDF:
uv run python .claude/skills/mistral-pdf-to-markdown/scripts/convert_pdf_to_markdown.py \
"PATH_TO_PDF" \
"Notes/PaperInMarkdown/CLEAN_FILENAME.md"
Filename convention: Create a clean filename from the paper metadata:
- Format:
Author_Year_Title.md - Example:
Du_et_al_2023_Are_Intermediary_Constraints_Priced.md - Replace spaces with underscores, remove special characters
Step 5: Read and Analyze
Read the converted markdown file:
# For large papers, read in sections
Read(file_path="Notes/PaperInMarkdown/FILENAME.md", offset=1, limit=500)
Since academic papers are often large (>25k tokens), read strategically:
- Start with abstract and introduction (first 300-500 lines)
- Use Grep to search for specific sections if needed
- Read specific sections based on user interest
Provide the user with:
- Paper metadata (title, authors, publication year)
- Brief summary of the abstract
- Main findings or sections of interest
- Offer to read specific sections or search for particular content
Example Usage
User request: "Read the paper 'Are Intermediary Constraints Priced' from my Zotero library"
Workflow:
- Search:
mcp__zotero__zotero_search_items(query="Are Intermediary Constraints Priced") - Get attachment:
mcp__zotero__zotero_get_item_children(item_key="KPRQ2DLZ") - Get PDF:
uv run python .claude/skills/zotero-paper-reader/scripts/get_zotero_pdf.py 2HSELEHX- Returns local path if available, or downloads and returns temp path
- Convert:
uv run python .claude/skills/mistral-pdf-to-markdown/scripts/convert_pdf_to_markdown.py [PDF_PATH] Notes/PaperInMarkdown/Du_et_al_2023_Are_Intermediary_Constraints_Priced.md - Read:
Read(file_path="Notes/PaperInMarkdown/Du_et_al_2023_Are_Intermediary_Constraints_Priced.md", limit=500) - Summarize and offer to dive deeper into specific sections
Notes
- The skill works with both local and web Zotero libraries
- For web libraries, requires
ZOTERO_API_KEY,ZOTERO_LIBRARY_TYPE, andZOTERO_LIBRARY_IDinNotes/.env - For local libraries, Zotero local API must be enabled in Zotero preferences
- Requires Mistral API key in
Notes/.envfor PDF conversion - Converted markdown files include extracted images in
images/subfolder - Large papers (>40k tokens) should be read in sections to avoid context limits
Resources
scripts/
get_zotero_pdf.py- Unified script that tries local storage first, then downloads from web API if needed
FAQ
What does the zotero-paper-reader skill do?
Read and analyze academic papers from Zotero library. Use when the user requests to read, access, or analyze a paper by title, author, or topic from their Zotero library. Automatically searches Zotero, converts PDFs to markdown, saves to Notes/PaperInMarkdown, and provides analysis.
How do I install zotero-paper-reader?
Run npx skills add https://github.com/fuzhiyu/researchprojecttemplate --skill zotero-paper-reader in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/zotero-paper-reader/ (personal) or .claude/skills/zotero-paper-reader/ (project).
Which AI agents can use zotero-paper-reader?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is zotero-paper-reader safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains zotero-paper-reader?
It is published by fuzhiyu in fuzhiyu/researchprojecttemplate. It has 606 recorded installs.
More from fuzhiyu/researchprojecttemplate
mistral-pdf-to-markdown
fuzhiyu/researchprojecttemplate
Open the skill to read its SKILL.md instructions.
Popular education & science skills
teach
mattpocock/skills
Teach the user a new skill or concept, within this workspace.
scaffold-exercises
mattpocock/skills
Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.
paper-context-resolver
lllllllama/rigorpilot-skills
Rigor Paper Context helper for README-first deep learning repo reproduction. Use only when the README and repository files leave a narrow reproduction-critical gap and the task is to resolve a specific paper detail such as dataset split, preprocessing, evaluation protocol, checkpoint mapping, or runtime assumption from primary paper sources while recording conflicts. Do not use for general paper summary, repo scanning, environment setup, command execution, title-only paper lookup, or replacing README guidance by default.
caveman-learn
juliusbrussee/caveman
Act on a Caveman learn report - review the ranked token sinks, apply cost-lowering fixes with per-edit consent, and report what those fixes returned. Use when asked to lower an agent's token cost, what caveman has saved, to trim a heavy CLAUDE.md, or to offload re-pasted context into cavemem.
gsap-plugins
greensock/gsap-skills
Official GSAP skill for GSAP plugins — registration, ScrollToPlugin, ScrollSmoother, Flip, Draggable, Inertia, Observer, SplitText, ScrambleText, SVG and physics plugins, CustomEase, EasePack, CustomWiggle, CustomBounce, GSDevTools. Use when the user asks about a GSAP plugin, scroll-to, flip animations, draggable, SVG drawing, or plugin registration.
teach-impeccable
pbakaus/impeccable
DEPRECATED: Use /impeccable teach instead. This command has been folded into the impeccable skill.