mcpField
Z
zotero-paper-reader

zotero-paper-reader

github.com/fuzhiyu生产力10606 次安装47 周前更新
代码仓库

关于 zotero-paper-reader

zotero-paper-reader 是从 Zotero 文献库查找论文、获取 PDF、转换为 Markdown 并阅读指定章节的技能。它适用于本地和网络文献库,并通过 Zotero MCP 工具搜索条目及获取附件信息。

主要功能

  1. 01按标题、作者或关键词搜索 Zotero
  2. 02获取 PDF 附件信息
  3. 03查找本地 PDF 或下载文件
  4. 04将 PDF 转换为 Markdown
  5. 05阅读和分析论文指定章节

适用场景

  1. 01在 Zotero 文献库中查找论文
  2. 02阅读以 PDF 保存的论文
  3. 03将 Zotero 论文转换为 Markdown
  4. 04在长篇论文中查找相关章节

MCP 相关

使用 Zotero MCP 工具搜索文献库条目并获取附件信息。随后通过附带脚本获取 PDF,并使用 mistral-pdf-to-markdown 技能进行转换。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/fuzhiyu/researchprojecttemplate --skill zotero-paper-reader

安装后在 Claude Code 中输入/zotero-paper-reader确认已加载。

附带文件scripts/get_zotero_pdf.py

详细介绍

Zotero 论文阅读器

概述

直接从 Zotero 文献库中阅读和分析学术论文。此技能涵盖从搜索 Zotero 到将 PDF 转换为可读 Markdown 格式的完整工作流。

适用场景

当用户请求以下操作时,使用此技能:

  • “从 Zotero 中阅读这篇论文”
  • “查找并阅读[论文标题]”
  • “访问[作者姓名]的论文”
  • “获取关于[主题]的论文”
  • “将 Zotero 中的[论文]转换为 Markdown”

工作流

步骤 1:搜索 Zotero 文献库

使用 Zotero MCP 工具搜索论文:

# Search by title, author, or keywords
mcp__zotero__zotero_search_items(query="paper title or author", limit=5)

如果找到多篇论文,请向用户展示搜索结果。从选中的论文中获取 item_key。

步骤 2:获取 PDF 附件

检索 PDF 附件信息:

# Get child items (attachments) for the paper
mcp__zotero__zotero_get_item_children(item_key="ITEM_KEY")

查找 type: application/pdf 的附件,并记下其 Key(附件密钥)和 Filename。

步骤 3:获取 PDF 文件(本地或下载)

使用捆绑脚本获取 PDF——脚本会自动先尝试本地存储,必要时再下载:

uv run python .claude/skills/zotero-paper-reader/scripts/get_zotero_pdf.py ATTACHMENT_KEY

脚本工作流:

  1. 首先搜索 Zotero 本地存储(~/Zotero/storage/ATTACHMENT_KEY/)
  2. 如果在本地找到,则返回该路径
  3. 如果在本地找不到,则使用 API 从 Zotero 网页文献库下载
  4. 从 Zotero 元数据中获取原始文件名,并下载到 /tmp/[original_filename]

安全提示: Python 脚本直接从 Notes/.env 读取 Zotero API 密钥和文献库配置,不会将其暴露给 LLM。必需的环境变量:ZOTERO_API_KEY、ZOTERO_LIBRARY_TYPE、ZOTERO_LIBRARY_ID。

步骤 4:转换为 Markdown

使用 mistral-pdf-to-markdown 技能转换 PDF:

uv run python .claude/skills/mistral-pdf-to-markdown/scripts/convert_pdf_to_markdown.py \
  "PATH_TO_PDF" \
  "Notes/PaperInMarkdown/CLEAN_FILENAME.md"

文件名约定: 根据论文元数据创建简洁的文件名:

  • 格式:Author_Year_Title.md
  • 示例:Du_et_al_2023_Are_Intermediary_Constraints_Priced.md
  • 将空格替换为下划线,并删除特殊字符
步骤 5:阅读和分析

阅读转换后的 Markdown 文件:

# For large papers, read in sections
Read(file_path="Notes/PaperInMarkdown/FILENAME.md", offset=1, limit=500)

由于学术论文通常篇幅较长(>25k 个 token),请有策略地阅读:

  • 从摘要和引言开始(前 300–500 行)
  • 如有需要,使用 Grep 搜索特定章节
  • 根据用户的兴趣阅读相应章节

向用户提供:

  1. 论文元数据(标题、作者、出版年份)
  2. 摘要的简要总结
  3. 主要发现或感兴趣的章节
  4. 询问用户是否希望阅读特定章节或搜索特定内容

使用示例

用户请求:“从我的 Zotero 文献库中阅读论文《Are Intermediary Constraints Priced》”

工作流:

  1. 搜索:mcp__zotero__zotero_search_items(query="Are Intermediary Constraints Priced")
  2. 获取附件:mcp__zotero__zotero_get_item_children(item_key="KPRQ2DLZ")
  3. 获取 PDF:uv run python .claude/skills/zotero-paper-reader/scripts/get_zotero_pdf.py 2HSELEHX
    • 如果文件可用,则返回本地路径;否则下载并返回临时路径
  4. 转换: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
  5. 阅读:Read(file_path="Notes/PaperInMarkdown/Du_et_al_2023_Are_Intermediary_Constraints_Priced.md", limit=500)
  6. 总结论文,并询问用户是否希望深入了解特定章节

备注

  • 此技能适用于本地和网页 Zotero 文献库
  • 网页文献库需要在 Notes/.env 中配置 ZOTERO_API_KEY、ZOTERO_LIBRARY_TYPE 和 ZOTERO_LIBRARY_ID
  • 本地文献库需要在 Zotero 首选项中启用 Zotero 本地 API
  • PDF 转换需要在 Notes/.env 中配置 Mistral API 密钥
  • 转换后的 Markdown 文件会在 images/ 子文件夹中包含提取的图像
  • 对于篇幅较长的论文(>40k 个 token),应分章节阅读,以避免上下文限制

资源

scripts/
  • get_zotero_pdf.py - 统一脚本,先尝试本地存储,必要时再通过网页 API 下载

评论

支持 Markdown