学术科研
用 Europe PMC…
需要免费检索、下载开放获取生命科学论文全文/PDF,或获取引用列表和参考文献时,使用 Europe PMC 脚本执行。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用 Europe PMC 检索开放获取生特定
解决思路
- 阅读 `uv` 技能并按其 Setup 说明安装 `uv`,确保 `uv` 已安装并在 PATH 中。
- 如果工作区根目录不存在 `.licenses/literature_search_europepmc_LICENSE.txt`,显著通知用户查看 https://europepmc.org/ 的条款,并始终检查所检索论文的许可证限制;然后创建该文件,记录通知文本和时间戳。
- 仅检索开放获取内容:脚本会自动向每个搜索查询追加 `OPEN_ACCESS:y`,不要移除或覆盖该过滤器。
- 不要直接运行 `python3` 或 `python3 -c`;系统 Python 不一定有全部关键依赖,不要尝试 `pip install` 或创建新 venv。
- 始终使用提供的包装脚本 `scripts/europepmc_api.py`,不要直接调用 API;脚本会处理限速(1 req/s)和错误。
- 所有子命令都要求用 `--output` 将结果写入文件;随后单独读取输出文件,避免上下文溢出。
- 如果使用了此技能,确保在输出中提及该技能,并列出所有用于产出结果的论文 URL。
- 所有命令都是 `scripts/europepmc_api.py` 的子命令,限速和重试会自动处理。
- 搜索:使用 `uv run scripts/europepmc_api.py search "DOI:10.1038/s41586-021-03819-2" --output result.json` 按 DOI 查找论文。
- 搜索:使用 `uv run scripts/europepmc_api.py search "CRISPR cancer" --max_results 5 --output results.json` 做关键词搜索。
- 搜索:使用 `uv run scripts/europepmc_api.py search "AUTH:Jumper J" --max_results 10 --output results.json` 做作者搜索。
- 搜索:使用 `uv run scripts/europepmc_api.py search "EXT_ID:34265844 AND SRC:MED" --output result.json` 做 PMID 查找。
- 搜索:使用 `uv run scripts/europepmc_api.py search "machine learning" --sort "CITED desc" --max_results 20 --output results.json` 按引用数排序。
- `search` 参数:`query`(str,必需)— 使用 Europe PMC 语法的搜索查询。
- `search` 参数:`--output`(str,必需)— 输出 JSON 文件路径。
- `search` 参数:`--max_results`(int,默认 10)— 每页最大结果数(最大 1000)。
- `search` 参数:`--result_type`(str,默认 `core`)— `core`(完整元数据)或 `lite`。
- `search` 参数:`--cursor`(str,默认 `*`)— 分页游标;传入上一次响应中的 `nextCursorMark` 值获取下一页。
- `search` 参数:`--sort`(str)— 排序顺序,例如 `CITED desc`、`P_PDATE_D desc`(出版日期降序)、`P_PDATE_D asc`。
- `search` 输出: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` 会自动追加到所有查询,不需要手动添加。
- 下载 PDF:使用 `uv run scripts/europepmc_api.py download_pdf PMC8371605 --output alphafold.pdf` 按 PMCID 下载开放获取 PDF。
- `download_pdf` 参数:`pmcid`(str,必需)— PubMed Central ID(例如 `PMC8371605`)。
- `download_pdf` 参数:`--output`(str,必需)— 保存 PDF 的文件路径。
- `download_pdf` 输出:将 PDF 保存到指定文件;如果找不到 PMCID 或响应不是有效 PDF,则以错误退出。每次下载 PDF 后检查 PDF 不为空且未损坏。
- 获取全文:使用 `uv run scripts/europepmc_api.py get_fulltext PMC8371605 --output fulltext.txt` 获取默认纯文本全文。
- 获取全文:使用 `uv run scripts/europepmc_api.py get_fulltext PMC8371605 --format xml --output fulltext.xml` 获取原始 XML。
- `get_fulltext` 参数:`pmcid`(str,必需)— PubMed Central ID。
- `get_fulltext` 参数:`--output`(str,必需)— 输出文件路径。
- `get_fulltext` 参数:`--format`(str,默认 `text`)— `text`(纯文本,去除 XML 标签)或 `xml`(原始 JATS XML)。
- `get_fulltext` 输出:全文写入指定文件;如果文章不在 Europe PMC 开放获取子集中,则以错误退出。
- 重要:只有 PMC Open Access Subset 中的文章有全文可用;如果获取失败,使用 `search` 检查 `isOpenAccess` 字段,并回退到摘要。
- 获取引用:使用 `uv run scripts/europepmc_api.py get_citations MED 34265844 --page_size 25 --output citations.json` 获取引用某论文的文章。
- `get_citations` 参数:`source`(str,必需)— 源数据库:`MED`(PubMed)、`PMC`、`PPR`(预印本)、`PAT`(专利)。
- `get_citations` 参数:`article_id`(str,必需)— 源数据库中的文章 ID。
- `get_citations` 参数:`--output`(str,必需)— 输出 JSON 文件路径。
- `get_citations` 参数:`--page`(int,默认 1)— 页码。
- `get_citations` 参数:`--page_size`(int,默认 25)— 每页结果数。
- `get_citations` 输出:JSON 文件包含 `hitCount` 和 `citations` 数组。
- 获取参考文献:使用 `uv run scripts/europepmc_api.py get_references MED 34265844 --page_size 100 --output references.json` 获取某论文的参考文献列表/书目。
- `get_references` 参数:`source`(str,必需)— 源数据库:`MED`、`PMC`、`PPR`、`PAT`。
- `get_references` 参数:`article_id`(str,必需)— 源数据库中的文章 ID。
- `get_references` 参数:`--output`(str,必需)— 输出 JSON 文件路径。
- `get_references` 参数:`--page`(int,默认 1)— 页码。
- `get_references` 参数:`--page_size`(int,默认 25)— 每页结果数。
- `get_references` 输出:JSON 文件包含 `hitCount` 和 `references` 数组。
- 工作流 DOI 到 PDF:第 1 步运行 `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)` 提取 PMCID。
- 工作流 DOI 到 PDF:第 2 步运行 `uv run scripts/europepmc_api.py download_pdf "$PMCID" --output paper.pdf` 下载 PDF。
- 工作流 PMID 到全文:第 1 步运行 `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)` 从 PMID 找到 PMCID。
- 工作流 PMID 到全文:第 2 步运行 `uv run scripts/europepmc_api.py get_fulltext "$PMCID" --output fulltext.txt` 获取全文。
- 工作流引用图遍历:运行 `uv run scripts/europepmc_api.py get_citations MED 34265844 --page_size 50 --output citing.json` 找引用某里程碑研究的论文。
- 工作流引用图遍历:解析某被引论文的 PMID,并用 `uv run scripts/europepmc_api.py get_references MED <CITING_PMID> --output refs.json` 探索其参考文献。
- 工作流分页搜索:第 1 页运行 `uv run scripts/europepmc_api.py search "CRISPR" --max_results 100 --output page1.json`。
- 工作流分页搜索:用 `CURSOR=$(jq -r '.nextCursorMark // empty' page1.json)` 提取下一页游标。
- 工作流分页搜索:下一页运行 `uv run scripts/europepmc_api.py search "CRISPR" --max_results 100 --cursor "$CURSOR" --output page2.json`。
适用边界 · 注意事项
- 非开放获取文章或不在 PMC Open Access Subset 的文章:无法下载 PDF/全文,只能查元数据或回退到摘要。
- 未安装 `uv`、无法使用 `scripts/europepmc_api.py`,或想绕过包装脚本直接运行 `python3`/`pip`/新建 venv/直接调用 API 时,不适用。
- 需要 Europe PMC 之外的其他文献数据库、非生命科学领域或必须获取受限全文/付费内容时,不适用。