仓库:https://github.com/Mingyue-Cheng/academic-search (已迁移至 ustc-ai4science/academic-search)
Stars:554 | 许可:MIT | 版本:v1.2.0 | 作者:Mingyue Cheng(USTC AI4Science)
本地 clone:/Users/zhaoweiguo/6ai/opensources/academic-search
本机状态:已安装启用(~/.claude/skills/academic-search)
核心定位
把”学术文献检索”做成结构化数据管道的单文件 Skill:论文搜索、引用分析、BibTeX 导出、开放获取 PDF 判定与批量下载清单,覆盖 arXiv / Semantic Scholar / OpenAlex / Crossref / Unpaywall / PubMed / Papers with Code / ACM DL / IEEE Xplore / Google Scholar / CNKI 等平台,按 6 大学科路由检索源与评价标准。
设计哲学(README 原话):“Skill = 哲学 + 技术事实,不是操作手册。讲清 tradeoff 让 AI 自己选,不替它推理。“
关键机制
先筛后深的两遍策略
搜索的时间瓶颈不在”搜”在”筛”:
- 第一遍(轻量扫描):拉 20-30 条,只输出标题/作者/年份/venue/引用数/有无开放 PDF 的轻量摘要表,不拉完整摘要
- 确认核心论文(5-10 篇)后第二遍再深拉摘要、PDF、BibTeX
- 意图感知:用户明确说”前 N 篇”时直接输出,不停下等确认
配套 Query 扩展:自动展开 2-3 个互补 query(同义词/子概念/缩写全称/学科受控词表 MeSH、JEL、MSC、ACM CCS),覆盖率比单 query 提升 30-50%。
时效性优先排序
排序优先级:时效性(近 6 个月 [新] 置顶)→ 引用数 → CCF/学科评价(参考项)——前沿方向新论文引用数天然偏低,不以引用数埋没最新进展。CS 用 references/venue-rankings.md 的 CCF 分级;非 CS 学科明确禁止套用 CCF,改按证据等级/期刊体系排序。
平台矩阵:API 优先,CDP 兜底
- REST API 优先:arXiv、S2、Crossref、OpenAlex、Unpaywall、PubMed(E-utilities)、Papers with Code
- WebFetch + Jina:ACM DL、IEEE Xplore
- CDP 浏览器(必须):Google Scholar、CNKI——无公开 API 且强反爬
PDF 获取走 7 步级联:arXiv 直链(有 ArXiv ID 即构造,不依赖经常为 null 的 S2 openAccessPdf)→ S2 openAccessPdf → OpenAlex OA → Unpaywall → 领域预印本库 → 作者自存档搜索 → 告知用户无 OA 并给机构图书馆/邮件索取/ILL 建议。结果统一标注 full_text_status(open_pdf / needs_institution / no_open_pdf / anti_bot_blocked / html_not_pdf / unknown)。
边界明确:只处理合法开放 PDF,明令禁止 Sci-Hub/LibGen/WebVPN/Tor/Cloudflare 绕过;“尽可能下载 PDF”类需求引导至 scansci-pdf 等专门工具。
CDP Proxy(scripts/cdp-proxy.mjs,628 行)
- WebSocket 直连用户日常 Chrome(需开 remote debugging),天然携带登录态
- 自动发现调试端口:先读各平台
DevToolsActivePort文件,再扫 9222/9229/9333 常用端口 - 对外暴露 HTTP API:
/new/eval/click/clickAt(真实鼠标,绕反自动化)/setFiles/screenshot/close - Node 22+ 原生 WebSocket,回退
ws模块;所有操作在自建后台 tab 中完成,tab 级隔离不干扰用户
OA PDF 批量下载(scripts/oa-pdf-download.mjs)
manifest-first 流程:--input results.json --manifest manifest.json 先生成下载清单(每条记录写 download_status: eligible/downloaded/skipped/failed/not_pdf),用户确认后再加 --download --out-dir 实际下载。只处理 full_text_status="open_pdf" 的记录。
失败信号处理表
429 / 超时 / 空结果 / “内容不存在” / 同方式重试 3 次无改善,各对应明确的方向调整策略(等待换 Key、换平台、换 query、重估目标),不在同一条路上盲目重试。
站点经验自进化
references/site-patterns/{domain}.md 按域名预置 13 个平台/出版商的操作经验(含 CNKI 的登录态要求、DOM 选择器、数据库代码),标注发现日期;SKILL.md 要求操作失败时回退通用模式并更新经验文件,成功发现新陷阱也主动写入——跨 session 积累的经验闭环。
并行分治
多独立目标(N 篇论文、多平台同查、多作者主页)分发子 Agent 并行,共享 CDP Proxy。子 Agent prompt 有讲究:描述目标不暗示手段(写”获取 BERT 的引用数”而非”搜索”,避免锚定到 WebSearch),且必须写明”加载 academic-search skill”。结果按 DOI → arXiv ID → 标题+年份模糊匹配三级去重合并。
项目结构
SKILL.md # 407 行主指令:搜索哲学/平台矩阵/学科路由/核心能力
scripts/ # cdp-proxy.mjs / oa-pdf-download.mjs / check-deps.sh / 自测脚本
references/
api-cookbook.md # 多平台调用速查
metadata-schema.md # 跨平台统一元数据 schema + 去重规则
venue-rankings.md # CS 会议/期刊 CCF 分级
cdp-api.md # CDP Proxy HTTP API 参考
disciplines/ # 6 学科 profile(CS/生医/物数/化材/经社/人文法律)
rankings/ # 非 CS 证据等级
workflows/ # 系统综述(PRISMA)等工作流
site-patterns/ # 13 站点经验文件
测试入口 make test / make test-release(端口冲突时 CDP_PROXY_PORT=4570)。
与 deep-research 类 Skill 的关系
deep-research-skills、claude-deep-research-skill 等是通用调研编排(outline → 并行 fill → 报告),本 Skill 是学术数据层:解决”论文元数据从哪来、怎么保证准确、PDF 能不能合法拿到”。两者互补——deep-research 的 academic-papers 搜索模块处理的正是本 Skill 覆盖的场景;做系统性文献综述(PRISMA)时可直接用本 Skill 的 references/workflows/systematic-review.md。社区信号/工程向调研另见 last30days-skill。
资源
- 仓库(新地址):https://github.com/ustc-ai4science/academic-search
- 仓库(原地址,自动重定向):https://github.com/Mingyue-Cheng/academic-search
- 作者主页:https://mingyue-cheng.github.io/
- 本地 clone:
/Users/zhaoweiguo/6ai/opensources/academic-search