🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

文献库检索 yanglin7723/zotero-library

DeepSeek Harness
yanglin772311 天前有提交已提供中文文档扫描:含敏感能力

让智能体检索 Zotero 文献、笔记与 PDF 全文并生成引用

29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yanglin7723/zotero-library
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · search
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 44 处,展示前 32 条)
  • 读取本地文件
    scripts/zotero.mjs:78
    const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
  • 读取本地文件
    scripts/zotero.mjs:176
    for (const entry of readdirSync(cacheRoot, { withFileTypes: true })) {
  • 读取本地文件
    scripts/zotero.mjs:178
    if (existsSync(join(cacheRoot, entry.name, ".zotero-ft-cache"))) ftCacheCount += 1;
  • 读取本地文件
    scripts/zotero.mjs:205
    detail: `${paths.config}${existsSync(paths.config) ? "" : "(尚未写入)"}`,
  • 读取本地文件
    scripts/zotero.mjs:209
    ok: existsSync(join(SKILL_DIR, "SKILL.md")),
  • 读取本地文件
    scripts/zotero.mjs:227
    config: { path: paths.config, dataDir: config.dataDir, exists: existsSync(paths.config) },
  • 执行外部命令来自配置/变量
    scripts/zotero.mjs:438
    const child = spawn(command, args, { detached: true, stdio: "ignore" });
  • 读取本地文件
    scripts/lib/config.mjs:17
    if (!existsSync(CONFIG_PATH)) return {};
  • 读取本地文件
    scripts/lib/config.mjs:18
    const parsed = JSON.parse(readFileSync(CONFIG_PATH, "utf8"));
  • 写入本地文件
    scripts/lib/config.mjs:26
    mkdirSync(CONFIG_ROOT, { recursive: true });
  • 写入本地文件
    scripts/lib/config.mjs:27
    writeFileSync(CONFIG_PATH, `${JSON.stringify(config, null, 2)}\n`, "utf8");
  • 写入本地文件
    scripts/lib/config.mjs:32
    mkdirSync(CACHE_DIR, { recursive: true });
  • 读取本地文件
    scripts/lib/db.mjs:56
    if (!existsSync(root)) continue;
  • 读取本地文件
    scripts/lib/db.mjs:59
    entries = readdirSync(root, { withFileTypes: true });
  • 读取本地文件
    scripts/lib/db.mjs:68
    return statSync(join(b, "prefs.js")).mtimeMs - statSync(join(a, "prefs.js")).mtimeMs;
  • 读取本地文件
    scripts/lib/db.mjs:75
    if (!existsSync(prefsPath)) continue;
  • 读取本地文件
    scripts/lib/db.mjs:78
    text = readFileSync(prefsPath, "utf8");
  • 读取本地文件
    scripts/lib/db.mjs:96
    ok: Boolean(existsSync(join(resolved, DB_FILE))),
  • 写入本地文件
    scripts/lib/db.mjs:228
    mkdirSync(snapshotDir, { recursive: true });
  • 删除本地文件递归
    scripts/lib/db.mjs:243
    rmSync(snapshotDir, { recursive: true, force: true });
  • 写入本地文件
    scripts/lib/db.mjs:244
    mkdirSync(snapshotDir, { recursive: true });
  • 写入本地文件
    scripts/lib/db.mjs:255
    copyFileSync(source, temp);
  • 删除本地文件
    scripts/lib/db.mjs:256
    if (existsSync(destination)) unlinkSync(destination);
  • 写入本地文件
    scripts/lib/db.mjs:257
    copyFileSync(temp, destination);
  • 删除本地文件
    scripts/lib/db.mjs:258
    unlinkSync(temp);
  • 写入本地文件
    scripts/lib/db.mjs:260
    writeFileSync(sigPath, signature, "utf8");
  • 读取本地文件
    scripts/lib/items.mjs:688
    if (!existsSync(path)) text = undefined;
  • 读取本地文件
    scripts/lib/items.mjs:689
    else text = readFileSync(path, "utf8");
  • 读取本地文件
    scripts/lib/items.mjs:832
    if (path && existsSync(path)) size = statSync(path).size;
  • 读取本地文件
    scripts/lib/items.mjs:832
    if (path && existsSync(path)) size = statSync(path).size;
  • 读取本地文件
    scripts/lib/items.mjs:840
    path: path && existsSync(path) ? path : undefined,
  • 读取本地文件
    scripts/lib/items.mjs:841
    exists: Boolean(path && existsSync(path)),
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(141 字)↓

零依赖的 DSH/Claude Code/Codex 技能,用来读取本地 Zotero 文库:元数据 + PDF 全文检索、笔记/高亮、PDF 按页取文本、APA7 / GB-T-7714 / BibTeX / RIS / CSL-JSON 引文。只读,Zotero 运行时也能用。

README

由 DeepSeek 最新模型翻译生成
zotero-library 让你的 AI 智能体(DSH / Claude Code / Codex 等)直接读懂你的 Zotero 文献库:元数据搜索、PDF 全文检索、笔记与高亮、按页取正文、一键生成 APA 7 / GB/T 7714 / BibTeX 引用。 零依赖、只读、离线可用。不需要 Zotero 客户端开着,不需要 API key,不需要 zot / rak。 它解决什么问题 Zotero 里的 1000 篇文献,对 AI 来说原本是一堆不可见的 PDF。装了本技能之后,你只要说: 「我库里关于培养阴性 PJI 的文献有哪些?」 「这篇里我做过哪些标注?」 「把这几篇按 GB/T 7714 生成参考文献。」 「帮我找找我笔记里提过 IL-10 的地方。」 智能体就能直接检索、读取、引用你的真实文献库,而不是靠幻觉编造。
展开完整文档(README 剩余 1 节)
zotero-library

让你的 AI 智能体(DSH / Claude Code / Codex 等)直接读懂你的 Zotero 文献库:元数据搜索、PDF 全文检索、笔记与高亮、按页取正文、一键生成 APA 7 / GB/T 7714 / BibTeX 引用。

零依赖、只读、离线可用。不需要 Zotero 客户端开着,不需要 API key,不需要 zot / rak。

它解决什么问题

Zotero 里的 1000 篇文献,对 AI 来说原本是一堆不可见的 PDF。装了本技能之后,你只要说:

「我库里关于培养阴性 PJI 的文献有哪些?」
「这篇里我做过哪些标注?」
「把这几篇按 GB/T 7714 生成参考文献。」
「帮我找找我笔记里提过 IL-10 的地方。」

智能体就能直接检索、读取、引用你的真实文献库,而不是靠幻觉编造。

| 能力 | 命令 |
| 元数据搜索(标题/作者/摘要/期刊/标签/DOI/年份) | zotlib search |
| PDF 正文全文检索(返回页码 + 命中片段) | zotlib fulltext |
| 条目详情 + 你自己的笔记与 PDF 高亮/批注 | zotlib read |
| 按页提取 PDF 正文 | zotlib text --pages 1-3 |
| 引用:APA 7 / GB-T-7714 / BibTeX / RIS / CSL-JSON | zotlib cite / zotlib export |
| 分类、标签、最近添加、关联文献、统计 | zotlib collections / tags / recent / related / stats |

与 zotero-cli(zot + rak)的区别

| | 本技能 | zot/rak 方案 |
| 依赖 | 无(只要 Node ≥ 22.5) | 需另装 zot、rak,rak 还要下载嵌入模型建索引 |
| Zotero 运行时 | ✅ 自动读数据库快照 | 部分命令受锁影响;新版 Zotero 表结构变化可能报错 |
| 全文检索 | ✅ 用 Zotero 自带全文索引,带页码 | 依赖自建索引 |
| 笔记/标注/引用 | ✅ 内置 | 部分支持 |
| 语义搜索 | ❌(关键词 + 全文) | ✅ rak 向量检索 |

两者可以共存:日常查询用本技能(快、稳、零配置),需要语义相似度时再用 rak。

一键安装

从 GitHub 安装(推荐,任选其一)

方式 1:agent skill 管理器(一条命令装进 ~/.agents/skills)
npx skills add yanglin7723/zotero-library -g

方式 2:clone 后跑安装器(会探测数据目录、创建 zotlib 命令、自检)
git clone https://github.com/yanglin7723/zotero-library.git
cd zotero-library
powershell -ExecutionPolicy Bypass -File .\install.ps1 # Windows
./install.sh # macOS / Linux

安装器会做四件事:

1. 检查 Node ≥ 22.5;
2. 自动探测你的 Zotero 数据目录(读 Zotero 首选项 prefs.js,支持自定义数据目录如 D:\Zotero);
3. 把技能复制到 ~/.agents/skills/zotero-library/(DSH / Claude Code 的技能目录);
4. 在技能目录下创建 bin/zotlib 命令、加入 PATH,并跑一遍自检。

装完新开一个会话,对智能体说「用 zotero-library 技能查一下我的文献库」即可。

常用参数:

.\install.ps1 -DataDir "D:\Zotero" # 手动指定 Zotero 数据目录 .\install.ps1 -SkipPathUpdate # 不自动把技能 bin 目录加进 PATH .\install.ps1 -NoShim # 不创建 zotlib 命令

卸载

.\uninstall.ps1 # 移除技能与 zotlib 命令 .\uninstall.ps1 -PurgeConfig # 同时清掉 ~/.zotero-library 下的配置与缓存

手动安装(无安装器)

1. 复制到技能目录
mkdir -p ~/.agents/skills/zotero-library
cp -r SKILL.md scripts references package.json ~/.agents/skills/zotero-library/

2. 试运行(自动探测 Zotero 数据目录)
node ~/.agents/skills/zotero-library/scripts/zotero.mjs doctor

3. 指定数据目录(自动探测失败时)
node ~/.agents/skills/zotero-library/scripts/zotero.mjs config set-data-dir "D:\Zotero"

使用示例

zotlib doctor # 环境自检 zotlib stats # 库统计 zotlib search "periprosthetic joint infection" --limit 5 zotlib fulltext "biofilm formation" --limit 3 # 正文命中 + 页码 zotlib read P667P3EP # 含笔记与高亮 zotlib text P667P3EP --pages 1-2 zotlib cite P667P3EP --style gb7714 zotlib export --collection "06 课题-培养阴性PJI(凝血-炎症)" --style bibtex zotlib recent --days 7

输出默认 JSON(适合智能体),人读加 --format text:

zotlib search "PJI" --format text

数据目录优先级:--data-dir > 环境变量 ZOTERO_DATA_DIR > ~/.zotero-library/config.json > Zotero 首选项 > 常见路径。

工作原理

Agent ──▶ zotlib(Node,零依赖) │ ├─ 自动探测 Zotero 数据目录(prefs.js / 常见路径) ├─ 直接打开 zotero.sqlite(Zotero 已关闭时) ├─ Zotero 运行中 → 复制 db+wal 到缓存目录做快照再读(绕开排他锁) ├─ 元数据:items / itemData / creators / tags / collections ├─ PDF 全文:<storage>/<attachmentKey>/.zotero-ft-cache(Zotero 自己的全文索引) └─ 笔记与标注:itemNotes / itemAnnotations

- 快照按 (size, mtime) 校验,源数据没变就复用,命令耗时通常 0.2–0.6 秒。
- 只使用 SQLite 只读连接与只读文件访问。

安全与隐私

- 只读:没有写库代码路径,不会改动你的 Zotero 数据。
- 全本地:不发网络请求、不需要任何密钥;配置里只有数据目录路径。
- 不复制文献库:只有 Zotero 运行时的临时快照(~/.zotero-library/cache/,可随时删)。
- 需要联网的是你的智能体本身,与这个技能无关。

兼容性

| 项 | 要求 |
| Node.js | ≥ 22.5(使用内置 node:sqlite;推荐 24 LTS) |
| Zotero | 7 / 8 / 9 / 10 本地库(不需要 Zotero 客户端运行;需要本机已安装过并生成数据库) |
| 系统 | Windows / macOS / Linux |
| 依赖 | 无第三方 npm 包 |

已知限制

- 只读,不支持写标签/分类/笔记(请用 Zotero 客户端操作)。
- 语义搜索(“意思相近的论文”)不在范围内,需要时配合 rak。
- 没有 Zotero 全文索引的 PDF(新加入、未打开过)只能用 read 看元数据;text 会提示你去索引。
- 群组库(group library)条目可以读取,但命令暂未提供按 group 过滤。

开发与测试

node test/smoke.mjs # 单元测试 +(有本地库时)真实库集成测试
node scripts/zotero.mjs doctor --json

配套技能

- zotero-dsh(另一个方向,同为本地技能):把 DSH 接进 Zotero —— 在 PDF 里选中文字直接问 AI、术语翻译走大模型。
两者互补:zotero-library 让 AI 读你的库,zotero-dsh 让你在 Zotero 里用 AI。

License

MIT
预览分享卡片长什么样 ↓yanglin7723/zotero-library
分享 · DeepSeek Harness Hub
yanglin7723/zotero-library

让智能体检索 Zotero 文献、笔记与 PDF 全文并生成引用

回到顶部