mcpField
L
literature-search-europepmc

literature-search-europepmc

github.com/google-deepmind生产力3.4k2.6k 次安装5 天前更新
代码仓库

关于 literature-search-europepmc

面向生命科学研究者的 Europe PMC 开放获取文献检索技能,可获取文章内容和引文数据。支持关键词及 DOI、作者、参考文献和引文查询。

主要功能

  1. 01检索开放获取文章
  2. 02按 DOI、作者或编号查找论文
  3. 03下载 PDF 并获取全文
  4. 04获取引文和参考文献列表

适用场景

  1. 01查找某主题的开放获取论文
  2. 02获取文章全文或 PDF
  3. 03探索引用某研究或被其引用的论文

安装

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

$npx skills add https://github.com/google-deepmind/science-skills --skill literature-search-europepmc

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

附带文件references/citation.bibscripts/europepmc_api.py

详细介绍

Europe PMC 数据库

用于搜索、下载和探索 Europe PMC 开放获取论文的技能。Europe PMC 是一个全面且免费的生命科学文献数据库,包含超过 4300 万篇摘要和 900 万篇全文文章。

前置条件

  1. uv:阅读 uv 技能,并按照其中的 Setup 说明操作,确保已安装 uv 且其位于 PATH 中。
  2. 用户通知:如果工作区根目录中尚不存在 .licenses/literature_search_europepmc_LICENSE.txt,则(1)醒目地通知用户查看 https://europepmc.org/ 上的条款,并始终检查通过此技能检索的论文的许可证是否有任何限制;然后(2)创建该文件,记录通知文本和时间戳。

核心规则

  • 仅限开放获取:此技能仅搜索开放获取内容。脚本会自动将 OPEN_ACCESS:y 附加到每个搜索查询中。切勿移除或覆盖此筛选条件。
  • 切勿直接运行 python3 或 python3 -c:系统 Python 不一定包含所有关键依赖项。不要尝试通过 pip 安装或创建新的 venv。
  • 使用包装脚本:务必使用提供的脚本,而不要直接调用 API。脚本会处理速率限制(1 req/s)和错误。
  • 输出文件:所有子命令都必须使用 --output 将结果写入文件。请另行读取输出文件,以避免上下文溢出。
  • **列出来源。**如果使用此技能,请确保在输出中提及,并列出所有用于生成输出的论文 URL。

实用脚本

所有命令都是 scripts/europepmc_api.py 的子命令。速率限制和重试均由脚本自动处理。

1. 搜索(search)

按查询搜索 Europe PMC。支持 DOI 查找、关键词搜索、作者搜索、PMID 查找,以及完整的 Europe PMC 搜索语法。

# Look up a paper by DOI
uv run scripts/europepmc_api.py search "DOI:10.1038/s41586-021-03819-2" --output result.json

# Keyword search
uv run scripts/europepmc_api.py search "CRISPR cancer" --max_results 5 --output results.json

# Author search
uv run scripts/europepmc_api.py search "AUTH:Jumper J" --max_results 10 --output results.json

# PMID lookup
uv run scripts/europepmc_api.py search "EXT_ID:34265844 AND SRC:MED" --output result.json

# Sorted by citations
uv run scripts/europepmc_api.py search "machine learning" \
  --sort "CITED desc" --max_results 20 --output results.json

参数:

  • query(str,必填)——使用 Europe PMC 语法的搜索查询
  • --output(str,必填)——输出 JSON 文件路径
  • --max_results(int,默认值 10)——每页的最大结果数(最多 1000)
  • --result_type(str,默认值 core)——core(完整元数据)或 lite
  • --cursor(str,默认值 *)——用于分页的游标标记;传入之前响应中的 nextCursorMark 值以获取下一页
  • --sort(str)——排序顺序,例如 CITED desc、P_PDATE_D desc(按出版日期降序)、P_PDATE_D asc

**输出:**包含三个字段的 JSON 文件:

  • hitCount(int)——匹配文章总数
  • nextCursorMark(str)——下一页的游标;没有更多页面时为空字符串
  • results(list)——文章元数据对象数组

搜索语法速查:

  • DOI:10.xxxx/yyyy——按 DOI 查找
  • EXT_ID:12345678 AND SRC:MED——按 PMID 查找
  • AUTH:surname initials——搜索作者
  • TITLE:keyword——仅搜索标题
  • JOURNAL:name——按期刊搜索
  • PUB_YEAR:2024 或 (FIRST_PDATE:[2023-01-01 TO 2023-12-31])——日期筛选
  • HAS_FT:y——限制为在 Europe PMC 中有全文的文章
  • 布尔运算符:AND、OR、NOT

注意:OPEN_ACCESS:y 会自动附加到所有查询中。无需手动添加。

2. 下载 PDF(download_pdf)

通过 PMCID 从 Europe PMC 下载开放获取 PDF。

uv run scripts/europepmc_api.py download_pdf PMC8371605 --output alphafold.pdf

参数:

  • pmcid(str,必填)——PubMed Central ID(例如,PMC8371605)
  • --output(str,必填)——保存 PDF 的文件路径

**输出:**将 PDF 保存到指定文件。如果找不到 PMCID,或响应不是有效的 PDF,则会报错退出。每次下载 PDF 后,都要检查下载的 PDF 是否为空或已损坏。

3. 获取全文(get_fulltext)

获取开放获取文章的全文并保存到文件。默认返回纯文本(已剥除 XML 标签),也可通过 --format xml 返回原始 XML。

# Get plain text (default)
uv run scripts/europepmc_api.py get_fulltext PMC8371605 --output fulltext.txt

# Get raw XML
uv run scripts/europepmc_api.py get_fulltext PMC8371605 --format xml --output fulltext.xml

参数:

  • pmcid(str,必需)— PubMed Central ID
  • --output(str,必需)— 输出文件路径
  • --format(str,默认值为 text)— text(纯文本)或 xml(原始 JATS XML)

输出: 将全文写入指定文件。如果文章不属于 Europe PMC 开放获取子集,则会报错退出。

重要:只有 PMC 开放获取子集中的文章才提供全文。如果获取失败,请使用 search 检查 isOpenAccess 字段,并回退到摘要。

4. 获取引用(get_citations)

获取引用了指定论文的文章。

# Get citations for the AlphaFold paper (PMID 34265844)
uv run scripts/europepmc_api.py get_citations MED 34265844 \
  --page_size 25 --output citations.json

参数:

  • source(str,必需)— 来源数据库:MED(PubMed)、PMC、PPR (预印本)、PAT(专利)
  • article_id(str,必需)— 来源数据库中的文章 ID
  • --output(str,必需)— 输出 JSON 文件路径
  • --page(int,默认值为 1)— 页码
  • --page_size(int,默认值为 25)— 每页结果数

输出: 包含 hitCount 和 citations 数组的 JSON 文件。

5. 获取参考文献(get_references)

获取指定论文的参考文献列表(书目)。

# Get references from the AlphaFold paper
uv run scripts/europepmc_api.py get_references MED 34265844 \
  --page_size 100 --output references.json

参数:

  • source(str,必需)— 来源数据库:MED、PMC、PPR、PAT
  • article_id(str,必需)— 来源数据库中的文章 ID
  • --output(str,必需)— 输出 JSON 文件路径
  • --page(int,默认值为 1)— 页码
  • --page_size(int,默认值为 25)— 每页结果数

输出: 包含 hitCount 和 references 数组的 JSON 文件。

常见工作流

DOI 转 PDF
# Step 1: Search for the PMCID
uv run scripts/europepmc_api.py search "DOI:10.1038/s41586-021-03819-2" --output result.json
PMCID=$(jq -r '.results[0].pmcid // empty' result.json)

# Step 2: Download the PDF
uv run scripts/europepmc_api.py download_pdf "$PMCID" --output paper.pdf
PMID 转全文
# Step 1: Find the PMCID from a PMID
uv run scripts/europepmc_api.py search "EXT_ID:34265844 AND SRC:MED" --output result.json
PMCID=$(jq -r '.results[0].pmcid // empty' result.json)

# Step 2: Get the full text
uv run scripts/europepmc_api.py get_fulltext "$PMCID" --output fulltext.txt
引用图遍历
# Find what papers cite a landmark study, then check their references
uv run scripts/europepmc_api.py get_citations MED 34265844 --page_size 50 --output citing.json
# Parse a cited paper's PMID and explore its references
uv run scripts/europepmc_api.py get_references MED <CITING_PMID> --output refs.json
分页搜索
# First page
uv run scripts/europepmc_api.py search "CRISPR" --max_results 100 --output page1.json
# Extract cursor for next page
CURSOR=$(jq -r '.nextCursorMark // empty' page1.json)
# Next page
uv run scripts/europepmc_api.py search "CRISPR" --max_results 100 --cursor "$CURSOR" --output page2.json

评论

支持 Markdown