mcpField
S
scholar-search

scholar-search

github.com/dsebastien生产力17134 次安装28 周前更新
代码仓库

关于 scholar-search

一个使用 Python 脚本搜索 OpenAlex 学术作品的研究技能,适合查找论文、会议和期刊文献。结果包含引用数、发表场所、重建摘要及外部标识符,并支持年份、场所和引用数筛选。

主要功能

  1. 01搜索 OpenAlex 学术作品
  2. 02输出结构化 JSON 与重建摘要
  3. 03按年份、场所和概念筛选
  4. 04支持引用数下限和开放获取筛选

适用场景

  1. 01检索特定主题的学术论文
  2. 02筛选近期或高引用研究
  3. 03按会议或期刊查找文献
  4. 04为文献综述收集候选作品

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dsebastien/ai-skill-scholar --skill scholar-search

安装后在 Claude Code 中输入/scholar-search确认已加载。

附带文件scripts/scholar_search.py

详细介绍

学术搜索

搜索 OpenAlex —— 一个包含 2.5 亿多篇学术作品的开放目录 —— 涵盖所有主要发表渠道的论文(不只是 arXiv)。返回结构化 JSON,其中包括引用次数、发表渠道、重建后的摘要,以及链接到 arXiv / DOI / PubMed 的外部 ID。

为什么选择 OpenAlex(而不是 Semantic Scholar)

两者涵盖的数据大致相同。OpenAlex 的优势在于:

  • 无需 API 密钥。 免费公共端点开箱即用。
  • 速率限制宽松。 匿名状态下每秒 10 次请求;加入礼貌使用池后额度更高。
  • 实际可大规模使用。 Semantic Scholar 的公共套餐由多人共享,429 错误频繁发生。

为什么选择它而不是 arxiv-search

arxiv-searchscholar-search
预印本是是
会议(ICLR、NeurIPS、ACL 等)否是
期刊否是
图书、章节否是
引用次数否是
按发表渠道筛选否是
概念/主题标签否是

进行广泛综述时,可同时使用两者(通过 literature-review)。

用法

# Basic query
python3 scripts/scholar_search.py "mechanistic interpretability" --limit 25

# Year + venue filter
python3 scripts/scholar_search.py "sparse autoencoders" \
    --year 2024-2026 --venue "ICLR" --limit 30

# Citation floor (quality filter)
python3 scripts/scholar_search.py "scaling laws" --min-citations 50 --limit 20

# Open-access only (when you want readable papers)
python3 scripts/scholar_search.py "mixture of experts" --open-access --limit 20

# Concept filter (uses OpenAlex's topic taxonomy)
python3 scripts/scholar_search.py "alignment" \
    --concepts "Machine learning" --limit 20

标志:

  • --limit N — 最多返回的结果数(1-200;默认 25)
  • --year YYYY 或 YYYY-YYYY — 按发表年份筛选
  • --venue NAME — 对发表渠道名称进行不区分大小写的部分匹配
  • --concepts NAME — OpenAlex 概念(例如 Machine learning、Computer vision)
  • --min-citations N — 引用次数下限
  • --open-access — 仅返回有公开 PDF 的作品

输出 JSON 结构(每条结果):

{
  "paper_id": "W4395065622",
  "openalex_url": "https://openalex.org/W4395065622",
  "title": "...",
  "authors": ["Alice", "Bob"],
  "year": 2024,
  "venue": "ICLR 2024",
  "work_type": "article",
  "citation_count": 150,
  "reference_count": 42,
  "abstract": "...",
  "concepts": ["Interpretability", "Machine learning"],
  "arxiv_id": "2404.14082",
  "doi": "10.48550/arxiv.2404.14082",
  "is_open_access": true,
  "open_access_pdf": "https://arxiv.org/pdf/2404.14082",
  "landing_url": "http://arxiv.org/abs/2404.14082"
}

礼貌使用池(可选)

如需大量使用,可通过设置邮箱加入 OpenAlex 的礼貌使用池:

export OPENALEX_EMAIL="[email protected]"

享有优先路由和更高的有效速率限制。无需注册——邮箱只需有效,以便在你的流量出现异常时他们能联系到你。

工作流

1. 解析意图
  • “查找关于 X 的论文” → 基本查询
  • “查找关于 X 的高引用论文” → 添加 --min-citations 50+
  • “查找关于 X 的近期论文” → --year 2024-2026
  • “查找发表在 Y 的论文” → --venue "ICLR"
  • “仅限开放获取” → --open-access
2. 执行搜索

默认 --limit 25。进行广泛综述时,可提高到 50-100。OpenAlex 响应迅速,因此较大的结果页也没问题。

3. 呈现结果

使用精简表格:引用次数 | 年份 | 发表渠道 | 作者 | 标题 | 摘要首句。除非用户要求按新近程度排序,否则按引用次数排序。

OpenAlex 没有 TLDR 字段(Semantic Scholar 曾提供此字段)。可改用重建后摘要的前约 50 个词,快速筛选。

4. 提供后续操作
  • “分析论文 X” → 转交给 arxiv-analyze(如果存在 arxiv_id),或直接获取 open_access_pdf
  • “谁引用了这篇论文?”/“这篇论文引用了什么?” → 转交给 scholar-citations
  • “文献综述” → 转交给 literature-review

令牌效率

  • 25 条结果约为 8K-15K 个令牌(摘要占大多数)。未来可通过标志覆盖 --select,用于仅筛选的处理流程。
  • OpenAlex 在服务器端将摘要存储为“倒排索引”格式;此脚本会在处理过程中将其重建为普通文本。

速率限制

  • 匿名使用: 每秒 10 次请求;共享池每日 10 万次
  • 礼貌使用池(设置 OPENALEX_EMAIL):限制相同,但优先级更高,限流情况更少

脚本会自行将每个进程的请求速率限制在每秒 5 次(通过 ~/.cache/ai-skill-scholar/ 中的冷却文件共享限制)。

硬性规则

  • 不得索取密钥: 绝不提示用户提供 API 密钥。OpenAlex 无需密钥;OPENALEX_EMAIL 是可选项,且已有说明。
  • 不得过度请求: 每秒 5 次请求的限流至关重要。不要移除。
  • 摘要可能缺失: OpenAlex 不一定总有摘要。缺失时应留空,不要编造。

要求

  • Python 3.11+(仅使用标准库)
  • 可访问互联网并连接到 api.openalex.org
  • 可选:设置 OPENALEX_EMAIL 环境变量以使用礼貌使用池

评论

支持 Markdown