Zotero → PanAI 3.5 集成方案
核心思路是让 Zotero 既作为文献入库管道,又作为查询触发界面。有三个层次可以选择:
层次一:单向数据管道(最简,推荐先行)
Zotero → PanAI 文档库
Zotero 提供本地 REST API(默认端口 23119),无需插件即可调用:
# 从 Zotero 本地 API 拉取条目
import httpx
ZOTERO_API = “http://localhost:23119/api”
# 获取所有条目(含附件路径)
items = httpx.get(f”{ZOTERO_API}/
params={“format”: “json”, “limit”: 100}).json()
for item in items[“items”]:
# 提取 PDF 路径 → 送入 PanAI 的文档入库 pipeline
if item[“itemType”] == “attachment”:
pdf_path = item[“data”].get(“path”)
# → 调用你的 /ingest 接口
同步触发方式:
• 在 Zotero 中安装 Zotero Actions & Tags 插件,为条目打 #panai-ingest 标签时自动触发 webhook
• 或用 Python 定时轮询 /items?since={version} 增量同步
层次二:双向接口(中等复杂度)
在 Zotero 中直接查询 PanAI
用 Zotero Better Notes 或 Zutilo 的自定义脚本功能,在笔记面板中嵌入查询:
// Zotero Better Notes 自定义模板
// 选中文段 → 自动发送至 PanAI API
const selectedText = Zotero.BetterNotes.api.editor.
const response = await fetch(“http://localhost:8000/
method: “POST”,
headers: { “Content-Type”: “application/json” },
body: JSON.stringify({
query: selectedText,
filter: { tradition: “nee-lee” } // PanAI 的 metadata filter
})
});
const result = await response.json();
// 将答案插入笔记
这样在阅读文献时,划选段落即可调用 PanAI 的 RAG 检索,答案直接写入 Zotero 笔记。
层次三:Zotero 作为 Neo4j 知识图谱的前端(深度集成)
将 Zotero 的收藏夹分类映射到 PanAI 的 Neo4j 概念节点:
Zotero Collection: “Witness Lee / Life-Study”
└── 自动映射 → Neo4j (:Author {name:”Witness Lee”}) -[:HAS_SERIES]-> (:Series {name:”Life-Study”})
Zotero Tag: “divine-dispensing”
└── 自动映射 → (:Concept {name:”divine dispensing”, layer:”L3″})
同步脚本(FastAPI 侧):
@app.post(“/zotero/sync”)
async def sync_from_zotero(payload: ZoteroWebhook):
# 1. 提取 Zotero metadata
meta = extract_zotero_metadata(
# 2. 更新 Neo4j 知识图谱
await neo4j.run(“””
MERGE (d:Document {zotero_key: $key})
SET d.title = $title, d.year = $year
MERGE (a:Author {name: $author})
MERGE (a)-[:WROTE]->(d)
“””, **meta)
# 3. 触发 Elasticsearch 重新索引
await es.index(index=”ministry_docs”
推荐实施路径
阶段1(本周): 本地 REST API 单向拉取 → 测试 PDF 入库
阶段2(下周): Better Notes 模板 → PanAI 查询嵌入 Zotero 阅读流
阶段3(后续): Zotero collection/tag → Neo4j 节点自动映射
关键前提:Zotero 需在设置 → 高级 → 开启本地 API,并记录 API Key。
你现在 PanAI 3.5 的 /ingest 接口是否已经稳定?如果有,我可以直接帮你写 Zotero → FastAPI 的完整同步脚本。