Zotero本地库搜索工具

一个用于搜索本地Zotero库的Claude Code技能,无需依赖服务器进程,支持关键词、全文、作者等多种搜索模式。

  • by ketthub
  • Python
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 Kt-L/zotero-skill

使用说明

佐特罗技能

Claude Code技能,用于搜索您当地的Zotero库。一个Python文件,零依赖,无服务器进程。

为什么不是MCP?

市面上有10多台Zotero MCP服务器。它们要求您安装依赖关系,运行持久服务器进程,并将协议元数据注入到上下文窗口中。有些甚至需要你运行嵌入模型并构建一个向量索引——然后你就可以根据无法检查的原因对结果进行排名。

这项技能采取了相反的方法:

MCP服务器 此技能
依赖关系 pip/npm+嵌入模型+MCP运行时 仅限Python stdlib
令牌开销 MCP协议包装+上下文中的工具描述 直接bash调用,输出=结果
搜索方法 向量相似度(先建立索引) 确定性排名+Zotero原生倒排指数
安装 pip+设置+配置AI客户端 复制文件夹,完成
架构 持久服务器进程 按需,每次通话后退出
适用于 克劳德桌面/特定MCP客户端 任何可以运行bash的东西

特性

  • 关键词搜索 --标题、摘要、期刊、作者、带有相关性评分的笔记
  • 全文搜索 --PDF正文通过Zotero自己的倒排单词索引(无外部索引)
  • 作者/标签/收藏/DOI/最近 --您所期望的所有查找模式
  • 两阶段检索 — --compact 用于扫描, get 有关详细信息(控制令牌预算)
  • 确定性相关性 --短语匹配>整个单词>子字符串。你可以看到为什么结果#1是#1
  • 只读 --使用打开SQLite immutable=1,Zotero开放时可以安全运行

需求

  • Python 3.8+
  • Zotero台式机(适用于 zotero.sqlite 数据库)
  • 一个可以运行shell命令(Claude Code、Cursor、Windsurf等)的AI工具

安装

  1. 将技能复制到您的Claude Code技能目录中:
# Clone
git clone https://github.com/YOUR_USERNAME/zotero-skill.git

# Copy to Claude Code skills
cp -r zotero-skill/.claude/skills/zotero ~/.claude/skills/zotero

或者简单地复制 SKILL.md 和 scripts/ 文件夹放入 ~/.claude/skills/zotero/.

  1. 验证数据库路径。 默认值为 ~/Zotero/zotero.sqlite (标准macOS/Linux)。如果您的Zotero数据在其他地方(例如Windows: C:\Users\<you>\Zotero\zotero.sqlite),或者:

    • 编辑 DEFAULT_DB 在 scripts/zotero-search.py,或
    • 使用 --db /your/path/zotero.sqlite 每次通话
  2. 就是这样,没有pip安装,没有服务器启动,没有API密钥。

用法

直接命令行界面

# Keyword search
python3 scripts/zotero-search.py search "transformer attention"

# Search PDF body text
python3 scripts/zotero-search.py fulltext "backpropagation"

# By author
python3 scripts/zotero-search.py author "Hinton"

# Recent additions
python3 scripts/zotero-search.py recent --days 7

# Compact output (less tokens)
python3 scripts/zotero-search.py search "diffusion model" --compact

# Get full details for specific items
python3 scripts/zotero-search.py get ABC12345 DEF67890

# DOI lookup
python3 scripts/zotero-search.py doi "10.1038/s41586-021-03819-2"

# Browse collections
python3 scripts/zotero-search.py collection list
python3 scripts/zotero-search.py collection "Machine Learning"

作为Claude代码技能

安装后,只需自然对话:

  • “在我的Zotero上搜索关于图神经网络的论文”
  • “我有瓦斯瓦尼的东西吗?”
  • “本周我补充了什么?”
  • “找到DOI为10.xxxxx/…”

该技能自动处理意图映射、搜索执行和结果格式化。

运作原理

直接读取Zotero的SQLite数据库(mode=ro&immutable=1 --安全,无锁)。没有中间服务器,没有API,没有网络调用。

  • 关键词搜索:SQL LIKE跨标题+摘要+期刊+作者+笔记,然后通过确定性评分函数重新排名(短语>整个单词>子字符串)
  • 全文搜索:查询Zotero的内置 fulltextWords / fulltextItemWords 表(Zotero内部使用的反向索引相同),然后按元数据相关性重新排序
  • 富集:经过初步搜索后,一次性批量附加作者、标签、集合、注释和全文状态

输出格式

带结构化字段的JSON。示例(紧凑模式):

{
  "status": "ok",
  "query": {"mode": "search", "terms": "attention mechanism", "limit": 20},
  "count": 3,
  "results": [
    {
      "itemKey": "ABC12345",
      "title": "Attention Is All You Need",
      "authors": "Vaswani, Ashish; Shazeer, Noam; ...",
      "date": "2017",
      "publication": "NeurIPS",
      "relevance": 240,
      "zoteroURI": "zotero://select/library/items/ABC12345"
    }
  ]
}

常见问题解答

Q: Zotero开放时,这有效吗? A: 是的。它打开数据库 immutable=1,完全绕过文件锁。

Q: 为什么不使用语义/矢量搜索? A: 目前的嵌入模型对学术文献检索产生了太多的噪声。具有适当相关性评分的确定性关键字+全文搜索更具可预测性和可检查性。如果你不同意,有10多台MCP服务器在等你。

Q: 这可以修改我的Zotero库吗? A: 否。只读访问,在SQLite连接级别强制执行。

Q: Zotero的Web API怎么样? A: 这种技能只是出于设计。没有网络调用,没有API密钥,没有云依赖性。您的库数据保留在您的计算机上。

许可证

麻省理工学院