关于 literature-search-europepmc
面向生命科学研究者的 Europe PMC 开放获取文献检索技能,可获取文章内容和引文数据。支持关键词及 DOI、作者、参考文献和引文查询。
主要功能
- 01检索开放获取文章
- 02按 DOI、作者或编号查找论文
- 03下载 PDF 并获取全文
- 04获取引文和参考文献列表
适用场景
- 01查找某主题的开放获取论文
- 02获取文章全文或 PDF
- 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 万篇全文文章。
前置条件
uv:阅读uv技能,并按照其中的 Setup 说明操作,确保已安装uv且其位于 PATH 中。- 用户通知:如果工作区根目录中尚不存在 .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、PATarticle_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