仓库: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 自己选,不替它推理。“

关键机制

先筛后深的两遍策略

搜索的时间瓶颈不在”搜”在”筛”:

  1. 第一遍(轻量扫描):拉 20-30 条,只输出标题/作者/年份/venue/引用数/有无开放 PDF 的轻量摘要表,不拉完整摘要
  2. 确认核心论文(5-10 篇)后第二遍再深拉摘要、PDF、BibTeX
  3. 意图感知:用户明确说”前 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。

资源