如何用 paper-lookup 技能检索学术文献并返回可复现的出处信息 如何用 paper-lookup 技能检索学术文献并返回可复现的出处信息【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000 scientists worldwide. 165 ready-to-use validated skills plus 100 scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skillspaper-lookup 是 scientific-agent-skills 仓库中的一个技能它把 11 个学术文献 APIPubMed、PMC、Europe PMC、bioRxiv、medRxiv、arXiv、OpenAlex、Crossref、Semantic Scholar、CORE、Unpaywall整理成带文档端点和已知故障模式的参考文件配套四个只用标准库的 Python 脚本。它的目标是把找一篇文献变成一次可复现的检索——回答里要带足端点、参数、标识符和访问日期让人或另一个 agent 能够原样重放这次调用。适用前提来自技能 frontmatter 的 compatibility 说明需要网络访问和curl随附脚本要求Python 3.11只用标准库不需要任何凭据即可基本使用NCBI_API_KEY、S2_API_KEY、CORE_API_KEY、OPENALEX_API_KEY四个环境变量只用于提高速率上限或解锁全文例如 NCBI 无 key 为 3 req/s有 key 为 10 req/sCORE 的全文检索需要 key。准备工作先读参考文件再发请求技能的硬性要求是调用某个数据库之前先读它对应的参考文件。每个数据库在 skills/paper-lookup/references/ 下有一个.md文件包含端点、参数表、示例调用、响应结构和该 API 具体会在哪里悄悄出错。技能文档明确写着故障章节不是可选背景错误答案就是从那里来的见 skills/paper-lookup/SKILL.md。按意图选库这是文档给出的选型规则节选自 SKILL.md 的 Database Selection Guide用户意图首选库也可考虑生物医学话题的论文PubMedEurope PMC、Semantic Scholar、OpenAlex在全文里做关键词检索Europe PMCCORE生物预印本按主题Europe PMCSRC:PPRSemantic Scholar、OpenAlex预印本按日期或 DOI 浏览bioRxiv / medRxivEurope PMC物理、数学、CS 预印本arXivSemantic Scholar、OpenAlex跨所有学科的论文OpenAlexSemantic Scholar、Crossref按 DOI 查特定论文CrossrefUnpaywall、Semantic Scholar论文的开放获取 PDFUnpaywallCORE、PMC引用关系图 / 某作者的发表Semantic ScholarOpenAlex注意两点选型边界bioRxiv 和 medRxiv 自己的 API没有关键词检索只有日期浏览和 DOI 查询所以按主题找预印本要路由到 Europe PMCPubMed 只有引文和摘要没有全文全文要走 PMC 或 Europe PMC。如果约束影响正确性但缺失最近却没给年份、作者同名很多文档的要求是先问清再查而不是猜。主路径一次带出处信息的主题检索以检索某个生物医学话题的近期论文并核对其中哪些有开放获取全文为例按下面顺序执行。所有命令都在 skills/paper-lookup/ 目录下运行脚本路径是相对于该目录的。第 1 步PubMed eSearch 拿 PMIDs 和总数curl -s --get https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi \ --data-urlencode dbpubmed \ --data-urlencode termCRISPR gene therapy \ --data-urlencode retmax5 \ --data-urlencode retmodejson \ --data-urlencode sortpub_date \ --data-urlencode toolyour_app_name \ --data-urlencode emailyouexample.com其中tool和email是 NCBI 要求带上的参数替换成你自己的应用名和邮箱。term支持 PubMed 字段标签[TI]标题、[AU]作者、[MH]MeSH和布尔运算参数表见 references/pubmed.md。响应文档示例数值会随查询变化{ esearchresult: { count: 224107, idlist: [39984857, 39984678, 39984543, 39984210, 39983901] } }count是预计总数先记下它最后要拿来做对账。定向查找时首页通常就够穷尽式检索某作者的全部论文才需要分页。第 2 步eSummary 取书目字段curl -s https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?dbpubmedid39984857,39984678retmodejson返回字段包括uid、pubdate、source期刊、authors、title、elocationidDOI和articleidsDOI、PMC 等标识符。摘要本身要用 eFetchrettypeabstractretmodetext或retmodexml单独取。第 3 步可选分支逐 DOI 核对开放获取状态从 eSummary 拿到 DOI 后查 Unpaywall。它不接收占位邮箱——文档明确写了testexample.com这类值会被 HTTP 422 拒绝所以必须替换成你自己的真实邮箱curl -s https://api.unpaywall.org/v2/10.1038/nature12373?emailyouexample.com判断依据is_oa为 true 时取best_oa_location.url_for_pdf作为免费 PDF 地址oa_status区分gold/hybrid/bronze/green/closed。注意 Unpaywall 的 search 端点自 2026 年 3 月起持续返回 HTTP 500文档要求只走 DOI 查询先用 PubMed/OpenAlex/Semantic Scholar 找到论文再逐 DOI 核对 OA 状态见 references/unpaywall.md。替代入口Europe PMC 一条命令跨库检索如果意图是在全文里搜关键词或按主题找 bioRxiv 预印本直接查 Europe PMC——它对 PubMed、PMC 全文、预印本做统一索引且完全免 key、免邮箱。预印本主题检索的文档范例curl -s --get https://www.ebi.ac.uk/europepmc/webservices/rest/search \ --data-urlencode query(SRC:PPR AND PUBLISHER:bioRxiv AND organoid) \ --data-urlencode formatjsonpageSize10resultTypelite从结果的doi形如10.1101/...可以继续到 bioRxiv API 取预印本专属元数据如 published-version 链接。resultTypecore会增加摘要、全文链接、MeSH 和资助信息。arXiv 检索用随附脚本解析 Atom XMLarXiv 只返回 Atom XML没有 JSON 选项且限流是1 次请求 / 3 秒。文档要求把响应交给解析脚本而不是手写的解析逻辑curl -s https://export.arxiv.org/api/query?id_list1706.03762 | python3 scripts/arxiv_atom.py -脚本输出每条记录的 JSONarxiv_id、title、abstract、authors、pdf_url等并处理了版本后缀、命名空间等已知陷阱。完整参数用python3 scripts/arxiv_atom.py --help查看。穷尽式分页paginate.py 与 --dry-run跨 bioRxiv、medRxiv、Europe PMC、OpenAlex、Crossref 的分页行为各不相同绝对偏移、不透明游标、continuation token、1-based 页码技能把这套逻辑固化在 scripts/paginate.py 里。花调用之前先用--dry-run只打印第一个 URL 不实际请求确认查询无误python3 scripts/paginate.py --api europepmc --query SRC:PPR AND organoid --max-records 200 --dry-run python3 scripts/paginate.py --api europepmc --query SRC:PPR AND organoid --max-records 200脚本按响应实际报告的页大小步进不是假设的常数默认上限约 1,000 条记录 / 50 次调用超过会停下来要求确认而不是静默截断。--list-apis打印各 API 的查询格式。返回可复现的出处信息检索做完后按 SKILL.md 规定的输出结构组织回答答案在前出处在后。## Retrieval Summary - Query: 用户问了什么 - Scope: targeted lookup | exhaustive retrieval - Databases queried: PubMed (esearchesummary), Unpaywall (DOI lookup) - Access date: 日期 ## Results ### PubMed 论文标题、作者、年份、期刊、DOI/PMID —— 用户需要的字段 ### Unpaywall OA 状态和最佳 PDF 链接 ## Provenance - Endpoints parameters: 足以重放这次调用的端点与参数 - Identifier conversions: 如有标识符转换 - Count reconciliation: 穷尽式检索时预期总数 vs 实取数、抓了几页 - Warnings: 空结果、分页不全、只有元数据无全文、缺 key、端点过期等三条硬性规则不要默认输出原始 JSON 堆。默认给可读的字段摘要只有用户明确要原始 JSON 或载荷很小时才引用相关切片并标注为不受信任的第三方数据。大型全文拉取PMC、Europe PMC、CORE应存到本地文件并报告路径而不是灌满回答。不要把元数据冒充全文。如果jats_to_text.py退出码为 2诚实的报告是该文章拿不到全文这里是摘要开放获取副本可能在这里而不是用标题和作者列表编一段总结。空结果要明说。查不到就是查不到静默的缺口会被误读成这篇文献不存在。验证结果HTTP 200 不等于成功这是技能文档反复强调的核心风险这 11 个 API 会在 200 响应体里报失败。验证方式是检查拿到的数据的形状而不是状态码。逐项核对现象出现位置判断方法条目titleError/titletotalResults: 1arXiv 参数写错时把任何条目前先检查标题是否为Errorarxiv_atom.py遇到该 feed 会以退出码 3 结束并回显查询200 响应体内含errCode、无resultListEurope PMC如pageSize1001返回errCode: 404解析结果前先检查errCode或resultList缺失status: no articles found配空集合bioRxiv与真没查到无法区分除非读status字段JATS 有完整引文但没有bodyNCBI eFetch出版商禁止再分发时jats_to_text.py以退出码 2 报告只有元数据不是全文14 字节纯文本Rate exceeded.arXiv 限流HTTP 429持续限流时直接断连curl 报HTTP000检查状态码和原始字节再下结论修复方式是等待而不是加力重试另外两个查询回显检查用于发现查询本身被改写Europe PMC 响应的request.queryString是解析后的查询——和你发出去的做 diff抓到被截断或变形的查询再信任hitCountarXiv 的 feedtitle回显实际执行的查询。拼错字段前缀author:而不是au:时arXiv 会静默改写成all:全文检索并照常返回合理的结果。计数对账是穷尽式检索的验证方式第一响应的hitCount/count是总数逐页抓完后报告预期总数 vs 实取数、抓了几页、做了哪些本地过滤。paginate.py把实取数少于总数时的退出码定为4记录丢了而不是你设了上限并区分你设了边界和记录真的缺失。这些脚本的非零退出码被文档定义为信息而不是障碍报告它说了什么不要绕过它自己重新解析。标识符格式核对与已知限制检索失败时文档要求先查标识符格式——这是最常见的原因标识符格式使用方DOI10.xxxx/xxxxx所有库PMID整数PubMed、PMC、Europe PMC、Semantic ScholarPMCIDPMC 数字PMC、Europe PMCarXiv IDYYMM.NNNNNarXiv、Semantic ScholarOpenAlex IDW 数字OpenAlexEurope PMC ID{source}/{id}对如MED/32117569Europe PMC跨库转换有前缀约定Semantic Scholar 接受DOI:、PMID:、ARXIV:前缀OpenAlex 接受doi:、pmid:前缀PMID/PMCID/DOI 之间用 PMC ID Converter 互转。两个文档点名的坑Europe PMC 的id单独用不唯一必须连source一起带构造出来的 arXiv DOI10.48550/arXiv.{id}不是可移植键——它在 doi.org 可解析但 Crossref 会 404DataCite DOI未注册到 CrossrefOpenAlex 对部分论文也查不到所以跨库引用 arXiv 论文应优先用 arXiv ID 或标题检索详见 references/arxiv.md。速率与规模的边界NCBI 无 key 3 req/s、有 key 10 req/sarXiv 1 次 / 3 秒且被 arXiv 拒绝过的请求不要原样重试文档记录到坏请求的限流惩罚远重于正常请求Crossref 公开池 5 req/s加mailto进礼貌池 10 req/s。同一限流主机上的请求必须串行只有不同开放 APIOpenAlex、Crossref、Semantic Scholar、Europe PMC、Unpaywall之间才允许并行且在途请求保持个位数。单次检索超过约 1,000 条记录或约 50 次调用时先和用户确认计划真正的大批量需求应指向数据库的快照/转储Unpaywall、OpenAlex、CORE 都提供。API key 的处理规则也属于出处纪律的一部分两个 API 用查询字符串认证所以你请求的 URL 本身就是凭据。paginate.py在输出的出处中自动抹掉api_key、email、mailto、tool的值你手写的任何 URL 记录要做同样处理key 永远不能出现在回答里。【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000 scientists worldwide. 165 ready-to-use validated skills plus 100 scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考