fabiocampolim-design/scitech-librarian · 上手攻略
- 仓库:fabiocampolim-design/scitech-librarian
- 链接:https://github.com/fabiocampolim-design/scitech-librarian
- 分类:academic-writing
- 作者:Jay
- 更新:2026-09-02
这是什么
scitech-librarian 是一个可复现学术文献检索工具:用一条结构化查询同时打穿 8 个学术数据库(OpenAlex、NASA ADS、arXiv、INSPIRE-HEP、Scopus、Semantic Scholar、Crossref、Web of Science),自动将查询语法转译为各数据库的原生检索式,每次运行结果全部存档,并最终生成 PRISMA 2020 流程图和 PRISMA-S 检查清单。
核心哲学:一次检索,你无法复现,就是一个无法捍卫的论点。
适用于做系统性文献综述(Systematic Review)、元分析,或在任何需要"证明某领域无人做过"的 novelty check 场景。
解决什么问题
学术检索的典型痛点:
- 跨库查询语法不统一:同一概念在 arXiv 用
abs:"...",在 WoS 用TS=(...),在 Scopus 用TITLE-ABS-KEY(...)——手动翻译费时且易出错。 - 检索记录不保存:一周后说不清当时用了什么关键词、哪个数据库、哪天跑的。
- 数据库 ToS 限制:WoS 和 Scopus 没有免费公开 API,爬网页面违反服务条款,会导致整个机构 IP 被封。
- 综述无法复现:审稿人要求 PRISMA 流程图,手工整理费时且易出错。
scitech-librarian 用统一查询定义 + 数据库配置文件 + 自动化存档,把这四个问题一次解决。
快速安装
环境要求:Python ≥ 3.9,标准库即可,无需 pip install。
# 方法一:直接复制脚本(推荐,无需安装)
git clone https://github.com/fabiocampolim-design/scitech-librarian.git
cd scitech-librarian
cp .env.example .env
# 编辑 .env,填入必要的环境变量(见下节)
# 方法二:仅复制核心 Python 文件
curl -O https://raw.githubusercontent.com/fabiocampolim-design/scitech-librarian/main/librarian.py
# 需要同步 render.py / i18n.py / project.py / report.py / journals.py / wos_manual.py
环境变量(.env)
# 必须填写
CONTACT_EMAIL=your@email.com # 放入 OpenAlex/Crossref 的 polite pool,降低限速
# 可选(有则填,无则注释掉)
ADS_TOKEN= # NASA ADS 免费 token:https://ui.adsabs.harvard.edu/user/settings/tokens
SCOPUS_API_KEY= # Elsevier 免费 key;结果需机构网络/VPN
S2_API_KEY= # Semantic Scholar 免费 key
CORE_API_KEY= # CORE 免费 key
WOS_STARTER_KEY= # Web of Science API key(需机构订阅)
自检数据库连通性
python librarian.py --selftest
输出每个后端的健康状态,哪些可用一目了然。
核心用法
1. 编写查询文件
cp queries.example.json queries.json
queries.json 结构如下:
{
"NOV": {
"title": "short description",
"note": "why this block exists; what a good result looks like",
"groups": [
["origami", "kirigami"],
["acoustic metamaterial", "phononic crystal"],
["topological pumping", "edge state"]
],
"arxiv_groups": [0, 2]
}
}
语法说明:外层列表是 AND 关系,内层列表是 OR 关系——即 [[a, b], [c]] = (a OR b) AND c。
⚠️ 注意:不要自行加引号,工具会按各数据库语法自动加引号。避免单独一个泛化词(如
"model"),否则命中数轻松破万。
2. 执行检索
# 仅看各库命中数(快速预览)
python librarian.py --counts-only
# 完整检索 + 自动存档
python librarian.py
# 完整检索 + 顺便查找合法开源 PDF(通过 Unpaywall)
python librarian.py --pdfs
每次运行结果自动存入 lit/runs/YYYYMMDD-HHMMSS/ 目录,内容包括:
- 原始 JSON 记录
- 每个 block 的 RIS 文件(可直接导入 Zotero)
- 去重合并后的 CSV / RIS / JSON / BibTeX / CSL-JSON
- 各库实际发送的查询字符串
- 命中数历史记录(counts_history.json)
3. 管理研究项目
# 初始化一个研究项目目录
python project.py init --name "my-lit-review"
# 导入外部来源的文献(Zotero / Mendeley / WoS 导出的 RIS,或 BibTeX、CSV、JSON)
python project.py ingest export.ris --name zotero --method citation
# 查看指定时间以来的新增记录
python report.py --project --since 2026-06-01 --diff
4. 生成报告
# 单次检索报告
python report.py --run 20260815-143022
# 项目级完整报告(包含 PRISMA 2020 流程图 + PRISMA-S 检查清单)
python report.py --project
# 输出格式(默认 Markdown,可选 HTML / LaTeX / PDF / plain text)
python report.py --project --format html
python report.py --project --format latex
报告按详略分三个等级(--level brief|standard|detailed),支持按日期、数据库、引用数、期刊质量等维度过滤。
5. 期刊质量指标
# 拉取 OpenAlex 2 年均引用(免费,无需 key)
python journals.py fetch
# 拉取 Scopus CiteScore/SJR/SNIP(需 SCOPUS_API_KEY)
# 或导入 SCImago CSV / JCR Impact Factor
之后报告中每个期刊都有质量评分列,支持按期刊质量过滤综述结果。
6. Web of Science 手动模式
WoS 没有免费公开 API,wos_manual.py 提供粘贴-导出工作流:
python wos_manual.py
# 引导你:① 生成 WoS 格式查询 ② 粘贴到 WoS UI ③ 导出 RIS ④ 自动导入项目
典型适用场景
| 场景 | 为什么用它 |
|---|---|
| 系统性文献综述 / 元分析 | PRISMA 2020 流程图一键生成,满足期刊投稿要求 |
| ** novelty check(证明"没人做过 X")** | 8 库同时查,存档完整,结论可复现、可引用 |
| 实验室文献管理 | 每项目一个 lit/ 目录,团队共享时 provenance 不丢失 |
| 给 AI agent 用 | 直接喂 AGENTS.md,说"read AGENTS.md, then run a novelty check on X"即可 |
坑与注意
⚠️ 限速与礼貌池
- 所有后端都有内置 sleep(arXiv 要求 ≥3 秒间隔)。
- 必须填
CONTACT_EMAIL——它会让你进入 OpenAlex / Crossref 的"polite pool",请求频率上限更高。 - 不要删除 sleep 或并发请求同一个后端。
⚠️ 命中数不可跨库比较
- 不同数据库的语法、词干处理、邻近算符支持不同,
"12,400 条" ≠ "12,400 个相关结果"。 - 永远不要说"有 12,400 条文献"就结束了,必须逐条阅读。文档明确警告:不要仅凭命中数声称文献缺口。
⚠️ WoS / Scopus 访问依赖机构订阅
- Scopus 结果需要在机构网络或 VPN 下才能正常访问。
- WoS 完全依赖手动(通过
wos_manual.py),没有自动化 API。
⚠️ 不支持 Google Scholar
- Google Scholar 没有公开 API,爬网页面违反其服务条款,工具明确不提供此项支持。
⚠️ 32 位游戏与 Vulkan(DLSS5-Feeder 篇,这里对应文献隐私)
- 研究项目目录(
lit/、queries.json、.env)包含你的研究方向、API 密钥和下载的文献记录,不要提交到公开仓库(.gitignore已排除,仍需确认不要手动撤销)。
⚠️ PDF 获取仅限 Unpaywall 合法开源版本
--pdfs只会查 Unpaywall,不会绕过出版社付费墙。
与同类对比
| 工具 | 数据库数 | API 合法合规 | PRISMA 支持 | 标准库 | 研究目录 |
|---|---|---|---|---|---|
| scitech-librarian | 8 个 | ✅ 明确 ToS 合规 | ✅ PRISMA 2020 + PRISMA-S | ✅ 无依赖 | ✅ 项目级存档 |
| Rayyan | 2(PubMed, Cochrane) | ✅ | ✅ | ❌ | ❌ 仅有 UI |
| Covidence | 1(仅导入) | ✅ | ✅ | ❌ SaaS | ❌ |
| Parsometer | 定制 | ⚠️ | ⚠️ | ❌ | ❌ |
| 手工检索 + Excel | — | ✅ | ❌ | ✅ | ❌ |
scitech-librarian 的核心差异化:标准库零依赖 + 8 个数据库一次性覆盖 + PRISMA 自动化 + 研究项目全存档。
一句话推荐结论
做系统性文献综述或 novelty check,一条查询打穿 8 个学术数据库、结果自动存档、PRISMA 报告一键生成——
scitech-librarian是目前开源界覆盖最广、合规性最强、零依赖的学术检索工具,Python 3.9+ 直接跑,值得加入科研工具箱。