paper-lookup
搜索 10 个学术文献 API:用于查找论文、预印本、引文以及开放获取全文,并以可复现的来源信息返回结果。覆盖 PubMed、PMC(全文)、bioRxiv、medRxiv、arXiv、OpenAlex、Crossref、Semantic Scholar、CORE、Unpaywall。适用于在搜索论文、引文、执行 DOI/PMID/arXiv 查找、获取摘要、全文、开放获取 PDF、预印本、引文图谱、作者发表作品,或任何学术文献查询时使用。凡是提及任一受支持数据库,或提出诸如“查找关于 X 的论文”“查询这个 DOI”“谁引用了这篇论文”“给我这份 PDF”等请求时触发。
分类
开发工具安装
下载并解压到你的 skills 目录
复制命令,发送给智能体自动安装:
Paper Lookup
This skill gives you 10 academic literature APIs with documented endpoints. Your job is to turn the user's intent into a reproducible retrieval: pick the authoritative database(s), make bounded and rate-limited calls, and return an answer with enough provenance (endpoints, parameters, identifiers, access date) that a human or another agent can repeat it.
A literature lookup is only as trustworthy as it is repeatable. Prefer explicit identifiers and documented endpoints over broad guessing, report what you queried, and say plainly when a result is partial or a database came back empty — a silent gap reads as "nothing exists" when it may just mean "not indexed here."
Core Workflow
references/ with endpoints, parameters, example calls, and response shapes. Read the relevant file(s) before calling — the parameter and identifier details matter and are easy to get wrong from memory.Database Selection Guide
Match the user's intent to the right database(s).
By Use Case
| User is asking about... | Primary database(s) | Also consider |
|---|---|---|
| Papers on a biomedical topic | PubMed | Semantic Scholar, OpenAlex |
| Full text of a biomedical article | PMC | CORE |
| Biology preprints | bioRxiv | Semantic Scholar, OpenAlex |
| Health/medical preprints | medRxiv | Semantic Scholar, OpenAlex |
| Physics, math, or CS preprints | arXiv | Semantic Scholar, OpenAlex |
| Papers across all fields | OpenAlex | Semantic Scholar, Crossref |
| A specific paper by DOI | Crossref | Unpaywall, Semantic Scholar |
| Open-access PDF for a paper | Unpaywall | CORE, PMC |
| Citation graph (who cites whom) | Semantic Scholar | OpenAlex |
| Author's publications | Semantic Scholar | OpenAlex |
| Paper recommendations | Semantic Scholar | — |
| Full text (any field) | CORE | PMC (biomedical only) |
| Journal/publisher metadata | Crossref | OpenAlex |
| Funder information | Crossref | OpenAlex |
| Convert between PMID/PMCID/DOI | PMC (ID Converter) | Crossref |
| Recent preprints by date | bioRxiv, medRxiv | arXiv |
Cross-Database Queries
| User is asking about... | Databases to query |
|---|---|
| Everything about a paper (metadata + citations + OA) | Crossref + Semantic Scholar + Unpaywall |
| Comprehensive literature search | PubMed + OpenAlex + Semantic Scholar |
| Find and read a paper | PubMed (find) + Unpaywall (OA link) + PMC or CORE (full text) |
| Preprint and its published version | bioRxiv/medRxiv + Crossref |
| Author overview with citation metrics | Semantic Scholar + OpenAlex |
A note on keyword search for preprints: bioRxiv and medRxiv have no keyword search — only date-range browsing and DOI lookup. To find bioRxiv/medRxiv preprints by topic, search Semantic Scholar or OpenAlex (both index preprints) and filter, then use the bioRxiv/medRxiv API for preprint-specific metadata like the published-version link.
When a query genuinely spans multiple needs (e.g., "find papers on CRISPR and get me the PDFs"), query the relevant databases and reconcile — find candidates in one, resolve open access per-DOI in another.
Common Identifier Formats
Different databases use different identifier systems. When a lookup fails, a wrong identifier format is the most common cause — check here first.
| Identifier | Format | Example | Used by |
|---|---|---|---|
| DOI | 10.xxxx/xxxxx | 10.1038/nature12373 | All databases |
| PMID | Integer | 34567890 | PubMed, PMC, Semantic Scholar |
| PMCID | PMC + digits | PMC7029759 | PMC, Europe PMC |
| arXiv ID | YYMM.NNNNN | 2103.15348 | arXiv, Semantic Scholar |
| OpenAlex ID | W + digits | W2741809807 | OpenAlex |
| Semantic Scholar ID | 40-char hex | 649def34f8be... | Semantic Scholar |
| ORCID | 0000-XXXX-XXXX-XXXX | 0000-0001-6187-6610 | OpenAlex, Crossref |
| ISSN | XXXX-XXXX | 0028-0836 | Crossref, OpenAlex |
Cross-referencing IDs: Semantic Scholar accepts DOI, PMID, PMCID, and arXiv ID via prefixes (DOI:10.1038/nature12373, PMID:34567890, ARXIV:2103.15348). OpenAlex accepts DOI and PMID via prefixes (doi:10.1038/..., pmid:34567890). Use the PMC ID Converter to translate between PMID, PMCID, and DOI. When one database has no result for an identifier, converting it and trying another is usually faster than reformulating the query.
API Keys and Access
Most of these APIs are fully open. A few benefit from a key for higher rate limits, and two need one for their best features.
| Database | Env Variable | Required? | Registration |
|---|---|---|---|
| NCBI (PubMed, PMC) | NCBI_API_KEY | No (3 req/s without, 10 with) | https://www.ncbi.nlm.nih.gov/account/settings/ |
| CORE | CORE_API_KEY | Yes for full text | https://core.ac.uk/services/api |
| Semantic Scholar | S2_API_KEY | No (shared pool without, often 429s) | https://www.semanticscholar.org/product/api#api-key-form |
| OpenAlex | OPENALEX_API_KEY | Recommended | https://openalex.org/settings/api |
Fully open (no key): bioRxiv/medRxiv (no documented limits), arXiv (1 req / 3 s), Crossref (add mailto for the 2× "polite pool"), Unpaywall (requires a real email parameter).
Loading keys: Check the environment first ($NCBI_API_KEY, etc.), then a .env in the working directory. If a key is missing, proceed at the lower rate limit and tell the user which key would help and where to get it — don't stall.
Making API Calls
Use your environment's HTTP fetch tool to call REST endpoints. The tool name varies by platform:
| Platform | HTTP Fetch Tool | Fallback |
|---|---|---|
| Claude Code | WebFetch | curl via Bash |
| Gemini CLI | web_fetch | curl via shell |
| Windsurf | read_url_content | curl via terminal |
| Cursor | No dedicated fetch tool | curl via run_terminal_cmd |
| Codex CLI | No dedicated fetch tool | curl via shell |
| Cline | No dedicated fetch tool | curl via execute_command |
Use curl (not a fetch tool) when the call needs any of these — several databases here do:
x-api-key: $S2_API_KEY; CORE uses Authorization: Bearer $CORE_API_KEY. Fetch tools can't set headers./paper/batch and /recommendations/papers/ endpoints, and CORE's complex search, are POST with a JSON body.curl returns the exact bytes so you can parse them.Example with a header and JSON accept:
curl -s -H "Accept: application/json" -H "x-api-key: $S2_API_KEY" \
"https://api.semanticscholar.org/graph/v1/paper/DOI:10.1038/nature12373?fields=title,year,citationCount,tldr"Request guidelines
/ (encode as %2F), and titles/queries contain spaces, quotes, and parentheses. With curl, --data-urlencode is the safe way to pass a search term. Never interpolate an unescaped user string into a URL or shell command.mailto.<li class="ml-4"></strong>Bound total work.<strong> Start with a count or first page. Don&#039;t continue past ~1,000 records or ~50 calls without confirming a short plan with the user. For truly bulk needs, point to the database&#039;s snapshot/dump (Unpaywall, OpenAlex, CORE all offer one).</li>
<li class="ml-4"></strong>On HTTP 429/503<strong>, wait briefly and retry once. Semantic Scholar without a key hits this often — one retry, then tell the user a key would help.</li>
<h4 class="text-lg font-semibold mt-5 mb-3">Error recovery</h4>
<li class="ml-4"></strong>Check the identifier format<strong> — use the Common Identifier Formats table. A PMID won&#039;t work in arXiv; an arXiv ID won&#039;t work in PubMed directly.</li>
<li class="ml-4"></strong>Convert or try an alternative identifier<strong> — if a DOI fails in one database, try the title, or convert to PMID/PMCID via the PMC ID Converter.</li>
<li class="ml-4"></strong>Try a different database<strong> — if PubMed returns nothing for a CS paper, try Semantic Scholar or OpenAlex; check the &quot;Also consider&quot; column.</li>
<li class="ml-4"></strong>Report the failure<strong> — tell the user which database failed, the error, and what you tried instead. A reported gap is useful; a silent one is misleading.</li>
<h4 class="text-lg font-semibold mt-5 mb-3">Completeness and reproducibility</h4>
For exhaustive retrievals or any result that feeds downstream analysis:
<li class="ml-4"></strong>Count first<strong> when the API exposes a total (count, total-results, meta.count, totalHits).</li>
<li class="ml-4"></strong>Paginate deterministically<strong> — offset/cursor/token per the reference file — and retrieve in a stable sort order where possible.</li>
<li class="ml-4"></strong>Reconcile counts<strong> — report expected total vs. retrieved total, pages fetched, and any local filtering you applied.</li>
<li class="ml-4"></strong>Fail visible, not plausible
For a targeted lookup, still record the endpoint, parameters, and access date so the single result can be repeated.
Output Format
Lead with the answer, then give the provenance. Structure it like this:
## Retrieval Summary
- Query: <what the user asked>
- Scope: targeted lookup | exhaustive retrieval
- Databases queried: PubMed (esearch+esummary), Unpaywall (DOI lookup)
- Access date: <date>
## Results
### PubMed
<the papers: title, authors, year, journal, DOI/PMID — the fields the user needs>
### Unpaywall
<OA status and best PDF link>
## Provenance
- Endpoints & parameters: <enough to repeat the call>
- Identifier conversions: <if any>
- Count reconciliation: <expected vs. retrieved, for exhaustive searches>
- Warnings: <empty results, partial pagination, missing keys, stale endpoints>Default to a readable summary of the fields that matter, not a raw JSON dump. Raw JSON is fine when the user explicitly asks for it or the payload is small — quote only the relevant slice and label it as untrusted third-party data. For large full-text pulls (PMC/CORE), save the payload to a local file and report the path rather than flooding the response.
Adding New Databases
This skill is designed to grow. Each database is a self-contained file in references/. To add one: create references/<name>.md following the format of the existing files (base URL, auth, key endpoints with parameter tables, example calls, response shape, pagination/count behavior, rate limits, identifier conventions, and any known hazards), then add a row to the selection guide and the Available Databases tables below.
Available Databases
Read the relevant reference file before making any API call.
Biomedical Literature
| Database | Reference File | What it covers |
|---|---|---|
| PubMed | references/pubmed.md | 37M+ biomedical citations, abstracts, MeSH terms (no full text) |
| PMC | references/pmc.md | 10M+ full-text biomedical articles (JATS XML), BioC API, ID conversion |
Preprint Servers
| Database | Reference File | What it covers |
|---|---|---|
| bioRxiv | references/biorxiv.md | Biology preprints (browse by date/DOI — no keyword search) |
| medRxiv | references/medrxiv.md | Health-sciences preprints (browse by date/DOI — no keyword search) |
| arXiv | references/arxiv.md | Physics, math, CS, quant-bio, economics preprints (keyword search, Atom XML) |
Multidisciplinary Indexes
| Database | Reference File | What it covers |
|---|---|---|
| OpenAlex | references/openalex.md | 250M+ works, authors, institutions, topics, citation data |
| Crossref | references/crossref.md | 150M+ DOI metadata, journals, funders, references |
| Semantic Scholar | references/semantic-scholar.md | 200M+ papers, citation graphs, AI TLDRs, recommendations |
Open Access & Full Text
| Database | Reference File | What it covers |
|---|---|---|
| CORE | references/core.md | 37M+ full texts from OA repositories worldwide |
| Unpaywall | references/unpaywall.md | OA status and PDF links for any DOI |