当 AI Agent 开始打理你的文献库——一个研究者的效率革命。从数据迁移到自动同步从CLI配置到定时调度全程记录踩坑与解决方案。一、写在前面作为研究生/科研人员你是不是也有这样的场景Zotero 里攒了几百篇文献但每次写论文时总想不起来某篇具体在哪每天刷 arXiv 加新文献但没时间整理归档想做一个个人知识库但手动搬运元数据太痛苦本文分享一套全自动的文献知识库构建方案让你彻底告别手动管理Zotero文献管理 ↕ 自动同步 Hermes Agent调度中控 ↕ 脚本执行 OpenClaw自动化助手 ↓ 知识库Markdown 结构化存储二、环境概览我的系统环境项目配置系统Ubuntu 22.04 LTS系统盘60GB SSDsda3数据盘200GB HDDsdb1, 挂载 /mnt/dataZotero 版本9.0.4-1Hermes Agent本地运行OpenClawNode.js 24.17nvm 管理Python3.10.12数据库293 篇文献1.4K 含附件前置条件本文假设你已安装 Zotero 桌面端、Hermes Agent 和 OpenClaw。如果尚未安装请先参考各项目的官方文档完成基础安装。三、Step 1迁移 Zotero 数据到非系统盘为什么要迁移系统盘只有 60GB而 Zotero 的 PDF 附件、索引会持续膨胀。迁移到 200GB 的数据盘可以一劳永逸。3.1 确认当前数据位置打开 Zotero → 编辑 → 设置 → 高级 → 文件和文件夹看到数据存储位置是默认的~/Zotero/。或者直接看配置文件grep extensions.zotero.dataDir ~/.zotero/zotero/*.default/prefs.js # 输出/home/chester/Zotero3.2 停止 Zotero 复制数据数据迁移需要在 Zotero关闭状态下进行保证数据库一致性# 停止 Zotero kill -TERM $(ps aux | grep zotero-bin | grep -v grep | awk {print $2}) # 创建目标目录 mkdir -p /mnt/data/Zotero_Library # 完整复制推荐 rsync支持断点续传 rsync -avh --progress ~/Zotero/ /mnt/data/Zotero_Library/3.3 修改配置指向编辑~/.zotero/zotero/*.default/prefs.js将extensions.zotero.dataDir改为新路径user_pref(extensions.zotero.dataDir, /mnt/data/Zotero_Library);3.4 验证迁移重启 Zotero 后检查 API 是否正常返回数据# Zotero 内置 API 监听端口 23119 ss -tlnp | grep 23119 # 输出LISTEN 127.0.0.1:23119 # 查询文献数量 curl -sI http://127.0.0.1:23119/api/users/0/items?limit1 | grep Total-Results # 输出Total-Results: 1444 ✅迁移要点迁移前必须关闭 Zotero否则数据库可能损坏使用rsync而非cp支持断点续传大文件迁移更安全迁移完成后原目录~/Zotero/可作为备份保留一段时间四、Step 2配置 Zotero 自动同步4.1 坚果云 WebDAV 配置Zotero 自带的免费同步空间只有 300MB有 PDF 附件根本不够用。我使用的是坚果云 WebDAV免费不限速在 Zotero 设置中编辑 → 设置 → 同步文件同步 → 选择WebDAVURLhttps://dav.jianguoyun.com/dav/用户名你的坚果云邮箱密码坚果云应用密码不是登录密码需在坚果云网页版生成4.2 启用自动同步在 prefs.js 中添加自动同步配置user_pref(extensions.zotero.sync.autoSync, true); user_pref(extensions.zotero.sync.autoSyncDelay, 900); // 15分钟 user_pref(extensions.zotero.sync.fulltext.enabled, true);⚠️注意Zotero 启动时会从数据库读取配置并覆写 prefs.js。建议同时在 GUI 中确认自动同步已勾选编辑 → 设置 → 同步 → 勾选自动同步。4.3 验证本地 APIZotero 的本地 HTTP API 非常强大所有 Agent 都通过它来读写数据http://localhost:23119/api/users/0/items支持 RESTful 查询、分页、排序。默认已经开启httpServer.localAPI.enabled true无需额外配置。五、Step 3安装 pyzotero-cli 配置 OpenClaw 技能5.1 安装 pyzotero-clipip install pyzotero-cli -U zot --version # 输出1.0.05.2 配置本地模式pyzotero-cli 支持两种模式模式连接方式速率限制读写权限Web API 模式zotero.org有读写本地模式推荐localhost:23119无只读推荐使用本地模式配置方法zot configure set --profile default library_id 12519867 zot configure set --profile default library_type user zot configure set --profile default local true验证连接zot --local items list --top --limit 3 --output table成功的话会看到类似输出| Title | Key | Type | | CA-LDP: Community-aware.. | ABC123 | journalArticle | | Optimal Privacy-Utility.. | DEF456 | preprint | | Personalized Privacy-P.. | GHI789 | journalArticle |5.3 创建 OpenClaw Zotero 技能在 OpenClaw 的 workspace 中创建技能文件skills/zotero/SKILL.md让 Agent 知道如何操作 Zotero# Zotero 文献管理技能 ## 可用命令 zot --local items list --top --sortdateAdded --directiondesc --limit 20 zot --local items get ITEM_KEY zot --local collections list zot --local items list --top -qdifferential privacy这样 OpenClaw Agent 就能通过自然语言指令帮我查一下最近文献来操作 Zotero 了。六、Step 4创建自动化知识库同步脚本6.1 同步脚本核心逻辑# 伪代码 1. zot --local items list --top --sortdateAdded --directiondesc --limit50 2. 筛选 dateAdded 当前时间 - 24h 的条目 3. 提取title, creators, abstract, DOI, publication, tags, date 4. 格式化为 Markdown 文件 5. 保存到 ~/knowledge_base/zotero/YYYY-MM-DD-title.md 6. 更新索引文件 ~/knowledge_base/README.md6.2 完整的脚本实现我写了一个完整的 Python 脚本~/.hermes/scripts/zotero-kb-sync.py约 240 行核心功能自动分页获取所有顶级文献避免 limit 限制批量筛选最近 24 小时新增提取元数据并格式化为标准 Markdown增量保存已存在则跳过自动维护索引生成的 Markdown 知识库条目格式--- source: zotero key: ABC123 item_type: journalArticle added: 2026-06-15 tags: [差分隐私, 图神经网络] publication_year: 2025 --- # CA-LDP: Community-aware local differential privacy for dynamic graphs **作者:** Liang, Zongwen; Xue, Cheston; ... **期刊:** Symmetry, Vol.18, No.2, pp.1-20 **DOI:** [10.3390/sym18020123](https://doi.org/10.3390/sym18020123) ## 摘要 This paper proposes CA-LDP, a community-aware local differential privacy...6.3 创建 Hermes Cron 定时任务使用 Hermes 的 cron 功能设置每日 08:00 自动执行hermes cron create 0 8 * * * \ --name Zotero 知识库同步 \ --script zotero-kb-sync.py \ --no-agent关键词说明参数含义0 8 * * *每天 08:00 执行cron 表达式--name任务名称用于标识--script执行的脚本路径相对~/.hermes/scripts/--no-agent纯脚本模式不需要 LLM 参与关于no_agent 模式当脚本已经包含完整逻辑时不需要 LLM 参与直接让调度器运行脚本并传递 stdout 即可。这比用 LLM 驱动的 cron 任务更轻量、更可靠——不消耗 API token也不会因为 LLM 输出异常而失败。6.4 一次性导入历史文献对于已有的 293 篇文献我还写了一个一次性导入脚本~/.hermes/scripts/zotero-kb-import-all.py将所有历史文献一次性导入知识库python3 ~/.hermes/scripts/zotero-kb-import-all.py # 输出 共获取 300 篇顶级文献 # 输出 总计: 293 篇文献脚本会自动分页遍历所有文献为每篇生成独立的 Markdown 文件并构建完整的索引页。七、验证与效果7.1 验证清单✅ Zotero 数据目录/mnt/data/Zotero_Library迁移完成 ✅ Zotero 自动同步15分钟间隔 WebDAV ✅ pyzotero-cliv1.0.0本地模式可用 ✅ zot --local 命令可查询 1400 条文献 ✅ Hermes cron 任务每日 08:00 执行 ✅ 知识库293 篇文献已结构化存储7.2 最终工作流[研究者] │ 添加新文献到 Zotero ▼ [Zotero 桌面端] │ 自动同步到坚果云 WebDAV │ 本地 APIlocalhost:23119开放 ▼ [Hermes Cron] 每日 08:00 │ 触发 zotero-kb-sync.py ▼ [Python 脚本] │ zot --local 查询新增文献 │ 提取标题/作者/摘要/DOI │ 格式化为 Markdown ▼ [知识库 ~/knowledge_base/] │ zotero/2026-06-15-xxx.md │ README.md索引 ▼ [RAG 检索 / LLM 问答 / 论文写作辅助]八、踩坑记录⚠️ prefs.js 写入后被 Zotero 覆写Zotero 启动时会从数据库读取配置并覆写 prefs.js。因此直接编辑 prefs.js 添加sync.autoSync可能不生效。最佳做法是在 GUI 中设置编辑 → 设置 → 同步。⚠️ zot 命令参数差异pyzotero-cli v1.0.0 的参数名与旧版文档有差异踩坑记录你以为的参数实际参数说明--order--sort排序字段--sort排序方向--directionasc / desc不加--top会包含子节点notes、附件查询顶级文献必须加--output json默认就是 JSON可省略⚠️ 本地 API 是只读的通过http://localhost:23119/api/的本地 API只能读取不能写入/修改文献。如果需要增删改需使用 Zotero Web API需要 API Key。⚠️ 端口 23119 权限Zotero 的本地 API 默认只监听127.0.0.1不会暴露到局域网安全性有保障。无需额外防火墙配置。⚠️ 非系统盘权限迁移到/mnt/data/等非系统目录时确保目录属于当前用户sudo chown -R $USER:$USER /mnt/data/Zotero_Library九、扩展思路这个工作流还有很多可以扩展的方向LLM 自动摘要新文献入库后自动调用 LLM 生成中文摘要和关键词存入知识库RAG 知识库将 Markdown 文件接入 RAG 系统如 LangChain、LlamaIndex实现问文献功能标签自动分类根据摘要内容自动打标签如方法类、应用类、综述类便于检索日报推送每天将新增文献汇总为日报通过 Telegram / 微信推送论文写作辅助在知识库中搜索相关文献自动生成参考文献列表和引文跨库联动同时管理 Zotero EndNote Mendeley 多个文献库十、总结一套完整的 Zotero AI Agent 知识库工作流核心优势数据安全迁移到数据盘坚果云 WebDAV 双重备份自动同步Zotero 自动同步 Agent 定时拉取双重保障结构化存储Markdown 格式便于检索和二次处理Git 版本控制、全文搜索、RAG 检索低维护全自动化无需人工干预——只要像往常一样在 Zotero 里添加文献即可可扩展支持接入 LLM、RAG、通知推送、论文写作等多场景整套系统搭建完成后你只需要做一件事像往常一样在 Zotero 里添加文献剩下的一切都交给 Agent。本文涉及的代码和配置已保存为 Hermes Skillzotero-kb可在新环境中一键复用。技术栈Hermes Agent OpenClaw Zotero pyzotero-cli Ubuntu Linux如有问题欢迎评论区交流~
Hermes Agent + OpenClaw + Zotero 构建自动化知识库工作流(完整实战)
发布时间:2026/7/5 6:24:16
当 AI Agent 开始打理你的文献库——一个研究者的效率革命。从数据迁移到自动同步从CLI配置到定时调度全程记录踩坑与解决方案。一、写在前面作为研究生/科研人员你是不是也有这样的场景Zotero 里攒了几百篇文献但每次写论文时总想不起来某篇具体在哪每天刷 arXiv 加新文献但没时间整理归档想做一个个人知识库但手动搬运元数据太痛苦本文分享一套全自动的文献知识库构建方案让你彻底告别手动管理Zotero文献管理 ↕ 自动同步 Hermes Agent调度中控 ↕ 脚本执行 OpenClaw自动化助手 ↓ 知识库Markdown 结构化存储二、环境概览我的系统环境项目配置系统Ubuntu 22.04 LTS系统盘60GB SSDsda3数据盘200GB HDDsdb1, 挂载 /mnt/dataZotero 版本9.0.4-1Hermes Agent本地运行OpenClawNode.js 24.17nvm 管理Python3.10.12数据库293 篇文献1.4K 含附件前置条件本文假设你已安装 Zotero 桌面端、Hermes Agent 和 OpenClaw。如果尚未安装请先参考各项目的官方文档完成基础安装。三、Step 1迁移 Zotero 数据到非系统盘为什么要迁移系统盘只有 60GB而 Zotero 的 PDF 附件、索引会持续膨胀。迁移到 200GB 的数据盘可以一劳永逸。3.1 确认当前数据位置打开 Zotero → 编辑 → 设置 → 高级 → 文件和文件夹看到数据存储位置是默认的~/Zotero/。或者直接看配置文件grep extensions.zotero.dataDir ~/.zotero/zotero/*.default/prefs.js # 输出/home/chester/Zotero3.2 停止 Zotero 复制数据数据迁移需要在 Zotero关闭状态下进行保证数据库一致性# 停止 Zotero kill -TERM $(ps aux | grep zotero-bin | grep -v grep | awk {print $2}) # 创建目标目录 mkdir -p /mnt/data/Zotero_Library # 完整复制推荐 rsync支持断点续传 rsync -avh --progress ~/Zotero/ /mnt/data/Zotero_Library/3.3 修改配置指向编辑~/.zotero/zotero/*.default/prefs.js将extensions.zotero.dataDir改为新路径user_pref(extensions.zotero.dataDir, /mnt/data/Zotero_Library);3.4 验证迁移重启 Zotero 后检查 API 是否正常返回数据# Zotero 内置 API 监听端口 23119 ss -tlnp | grep 23119 # 输出LISTEN 127.0.0.1:23119 # 查询文献数量 curl -sI http://127.0.0.1:23119/api/users/0/items?limit1 | grep Total-Results # 输出Total-Results: 1444 ✅迁移要点迁移前必须关闭 Zotero否则数据库可能损坏使用rsync而非cp支持断点续传大文件迁移更安全迁移完成后原目录~/Zotero/可作为备份保留一段时间四、Step 2配置 Zotero 自动同步4.1 坚果云 WebDAV 配置Zotero 自带的免费同步空间只有 300MB有 PDF 附件根本不够用。我使用的是坚果云 WebDAV免费不限速在 Zotero 设置中编辑 → 设置 → 同步文件同步 → 选择WebDAVURLhttps://dav.jianguoyun.com/dav/用户名你的坚果云邮箱密码坚果云应用密码不是登录密码需在坚果云网页版生成4.2 启用自动同步在 prefs.js 中添加自动同步配置user_pref(extensions.zotero.sync.autoSync, true); user_pref(extensions.zotero.sync.autoSyncDelay, 900); // 15分钟 user_pref(extensions.zotero.sync.fulltext.enabled, true);⚠️注意Zotero 启动时会从数据库读取配置并覆写 prefs.js。建议同时在 GUI 中确认自动同步已勾选编辑 → 设置 → 同步 → 勾选自动同步。4.3 验证本地 APIZotero 的本地 HTTP API 非常强大所有 Agent 都通过它来读写数据http://localhost:23119/api/users/0/items支持 RESTful 查询、分页、排序。默认已经开启httpServer.localAPI.enabled true无需额外配置。五、Step 3安装 pyzotero-cli 配置 OpenClaw 技能5.1 安装 pyzotero-clipip install pyzotero-cli -U zot --version # 输出1.0.05.2 配置本地模式pyzotero-cli 支持两种模式模式连接方式速率限制读写权限Web API 模式zotero.org有读写本地模式推荐localhost:23119无只读推荐使用本地模式配置方法zot configure set --profile default library_id 12519867 zot configure set --profile default library_type user zot configure set --profile default local true验证连接zot --local items list --top --limit 3 --output table成功的话会看到类似输出| Title | Key | Type | | CA-LDP: Community-aware.. | ABC123 | journalArticle | | Optimal Privacy-Utility.. | DEF456 | preprint | | Personalized Privacy-P.. | GHI789 | journalArticle |5.3 创建 OpenClaw Zotero 技能在 OpenClaw 的 workspace 中创建技能文件skills/zotero/SKILL.md让 Agent 知道如何操作 Zotero# Zotero 文献管理技能 ## 可用命令 zot --local items list --top --sortdateAdded --directiondesc --limit 20 zot --local items get ITEM_KEY zot --local collections list zot --local items list --top -qdifferential privacy这样 OpenClaw Agent 就能通过自然语言指令帮我查一下最近文献来操作 Zotero 了。六、Step 4创建自动化知识库同步脚本6.1 同步脚本核心逻辑# 伪代码 1. zot --local items list --top --sortdateAdded --directiondesc --limit50 2. 筛选 dateAdded 当前时间 - 24h 的条目 3. 提取title, creators, abstract, DOI, publication, tags, date 4. 格式化为 Markdown 文件 5. 保存到 ~/knowledge_base/zotero/YYYY-MM-DD-title.md 6. 更新索引文件 ~/knowledge_base/README.md6.2 完整的脚本实现我写了一个完整的 Python 脚本~/.hermes/scripts/zotero-kb-sync.py约 240 行核心功能自动分页获取所有顶级文献避免 limit 限制批量筛选最近 24 小时新增提取元数据并格式化为标准 Markdown增量保存已存在则跳过自动维护索引生成的 Markdown 知识库条目格式--- source: zotero key: ABC123 item_type: journalArticle added: 2026-06-15 tags: [差分隐私, 图神经网络] publication_year: 2025 --- # CA-LDP: Community-aware local differential privacy for dynamic graphs **作者:** Liang, Zongwen; Xue, Cheston; ... **期刊:** Symmetry, Vol.18, No.2, pp.1-20 **DOI:** [10.3390/sym18020123](https://doi.org/10.3390/sym18020123) ## 摘要 This paper proposes CA-LDP, a community-aware local differential privacy...6.3 创建 Hermes Cron 定时任务使用 Hermes 的 cron 功能设置每日 08:00 自动执行hermes cron create 0 8 * * * \ --name Zotero 知识库同步 \ --script zotero-kb-sync.py \ --no-agent关键词说明参数含义0 8 * * *每天 08:00 执行cron 表达式--name任务名称用于标识--script执行的脚本路径相对~/.hermes/scripts/--no-agent纯脚本模式不需要 LLM 参与关于no_agent 模式当脚本已经包含完整逻辑时不需要 LLM 参与直接让调度器运行脚本并传递 stdout 即可。这比用 LLM 驱动的 cron 任务更轻量、更可靠——不消耗 API token也不会因为 LLM 输出异常而失败。6.4 一次性导入历史文献对于已有的 293 篇文献我还写了一个一次性导入脚本~/.hermes/scripts/zotero-kb-import-all.py将所有历史文献一次性导入知识库python3 ~/.hermes/scripts/zotero-kb-import-all.py # 输出 共获取 300 篇顶级文献 # 输出 总计: 293 篇文献脚本会自动分页遍历所有文献为每篇生成独立的 Markdown 文件并构建完整的索引页。七、验证与效果7.1 验证清单✅ Zotero 数据目录/mnt/data/Zotero_Library迁移完成 ✅ Zotero 自动同步15分钟间隔 WebDAV ✅ pyzotero-cliv1.0.0本地模式可用 ✅ zot --local 命令可查询 1400 条文献 ✅ Hermes cron 任务每日 08:00 执行 ✅ 知识库293 篇文献已结构化存储7.2 最终工作流[研究者] │ 添加新文献到 Zotero ▼ [Zotero 桌面端] │ 自动同步到坚果云 WebDAV │ 本地 APIlocalhost:23119开放 ▼ [Hermes Cron] 每日 08:00 │ 触发 zotero-kb-sync.py ▼ [Python 脚本] │ zot --local 查询新增文献 │ 提取标题/作者/摘要/DOI │ 格式化为 Markdown ▼ [知识库 ~/knowledge_base/] │ zotero/2026-06-15-xxx.md │ README.md索引 ▼ [RAG 检索 / LLM 问答 / 论文写作辅助]八、踩坑记录⚠️ prefs.js 写入后被 Zotero 覆写Zotero 启动时会从数据库读取配置并覆写 prefs.js。因此直接编辑 prefs.js 添加sync.autoSync可能不生效。最佳做法是在 GUI 中设置编辑 → 设置 → 同步。⚠️ zot 命令参数差异pyzotero-cli v1.0.0 的参数名与旧版文档有差异踩坑记录你以为的参数实际参数说明--order--sort排序字段--sort排序方向--directionasc / desc不加--top会包含子节点notes、附件查询顶级文献必须加--output json默认就是 JSON可省略⚠️ 本地 API 是只读的通过http://localhost:23119/api/的本地 API只能读取不能写入/修改文献。如果需要增删改需使用 Zotero Web API需要 API Key。⚠️ 端口 23119 权限Zotero 的本地 API 默认只监听127.0.0.1不会暴露到局域网安全性有保障。无需额外防火墙配置。⚠️ 非系统盘权限迁移到/mnt/data/等非系统目录时确保目录属于当前用户sudo chown -R $USER:$USER /mnt/data/Zotero_Library九、扩展思路这个工作流还有很多可以扩展的方向LLM 自动摘要新文献入库后自动调用 LLM 生成中文摘要和关键词存入知识库RAG 知识库将 Markdown 文件接入 RAG 系统如 LangChain、LlamaIndex实现问文献功能标签自动分类根据摘要内容自动打标签如方法类、应用类、综述类便于检索日报推送每天将新增文献汇总为日报通过 Telegram / 微信推送论文写作辅助在知识库中搜索相关文献自动生成参考文献列表和引文跨库联动同时管理 Zotero EndNote Mendeley 多个文献库十、总结一套完整的 Zotero AI Agent 知识库工作流核心优势数据安全迁移到数据盘坚果云 WebDAV 双重备份自动同步Zotero 自动同步 Agent 定时拉取双重保障结构化存储Markdown 格式便于检索和二次处理Git 版本控制、全文搜索、RAG 检索低维护全自动化无需人工干预——只要像往常一样在 Zotero 里添加文献即可可扩展支持接入 LLM、RAG、通知推送、论文写作等多场景整套系统搭建完成后你只需要做一件事像往常一样在 Zotero 里添加文献剩下的一切都交给 Agent。本文涉及的代码和配置已保存为 Hermes Skillzotero-kb可在新环境中一键复用。技术栈Hermes Agent OpenClaw Zotero pyzotero-cli Ubuntu Linux如有问题欢迎评论区交流~