佐特罗技能
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工具
安装
- 将技能复制到您的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/.
- 验证数据库路径。 默认值为
~/Zotero/zotero.sqlite(标准macOS/Linux)。如果您的Zotero数据在其他地方(例如Windows:C:\Users\\Zotero\zotero.sqlite),或者:
- 编辑 DEFAULT_DB 在 scripts/zotero-search.py,或 - 使用 --db /your/path/zotero.sqlite 每次通话
- 就是这样,没有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密钥,没有云依赖性。您的库数据保留在您的计算机上。
许可证
麻省理工学院
