FEATURED — Teaches an agent how to use OpenAlex (the open scholarly graph) correctly: discover entities, query works with filters, read results, and cite accurately. No API key required. Set
OPENALEX_MAILTOfor the polite pool.
This skill pairs with the OpenAlex MCP server (see ../mcp/), which provides the 6 callable tools. The skill provides the know-how. Use imperative voice; do what each step says.
openalex — Open scholarly metadata: works, authors, institutions, sources, topics, concepts, publishers, funders.
Answer research questions using authoritative bibliographic data: find papers, authors, citations, open-access status, and bibliometric trends — and cite them precisely. OpenAlex is free and open.
Use OpenAlex when the task involves:
It is free — prefer it for any academic-metadata need.
open_access.oa_url; follow that URL to the file. OpenAlex does not serve full text.OPENALEX_MAILTO=you@example.com to join the polite pool (faster, fewer 429 s). Not a secret.OPENALEX_API_BASE_URL, OPENALEX_TIMEOUT_MS (30000), OPENALEX_MAX_RETRIES (3), LOG_LEVEL.ToolUse it toopenalex_searchResolve a name/title/keyword to entities (and IDs).openalex_worksQuery works with filter, sort, paging — the main tool.openalex_getFetch one entity by OpenAlex ID / DOI / ORCID / ROR.openalex_authorsSearch/filter authors.openalex_group_byCounts grouped by a field (analytics).openalex_requestGeneric passthrough to any endpoint (sources, topics, autocomplete, …).
openalex_search or openalex_request → autocomplete/{entity}.display_name, affiliation, works_count).PrefixEntityPrefixEntityWWorksTTopicsAAuthorsCConceptsIInstitutionsPPublishersSSourcesFFunders
Entity types: works, authors, sources, institutions, topics, concepts, publishers, funders, keywords.
Build a filter (comma-separated, ANDed) and pick a sort:
NeedFilterYearpublication_year:2024Date rangefrom_publication_date:…,to_publication_date:…Open accessis_oa:trueBy authorauthorships.author.id:A…By institutionauthorships.institutions.id:I…By topicprimary_topic.id:T…Highly citedcited_by_count:>100Typetype:article
cited_by_count:desc. Sort by recency: publication_date:desc.per-page ≤ 200.cursor=* then meta.next_cursor), not high page numbers.meta.count = total matches (not the number returned).results = the current page only.group_by = [{key, key_display_name, count}] for aggregations.abstract_inverted_index (a {word: [positions]} map), not plain text. Reconstruct by placing each word at its positions and joining in order.open_access.oa_url for the free PDF/HTML.Cite every claim with: title, authors, year, DOI, and the OpenAlex ID + URL https://openalex.org/<ID>.
text
<Authors> (<year>). <Title>. <Source>. DOI: <doi>. OpenAlex: https://openalex.org/<WID>
The OpenAlex URL is mandatory for traceability, in addition to the DOI.
OpenAlex data updates frequently (new works, citation counts, affiliations). Counts you report are point-in-time. When precision matters, note the access date and that figures may change.
meta.count) distinct from listed results.ErrorCauseReactionHTML 404Bad/typo IDFix the ID prefix/value; re-resolve via search/autocomplete.429Not in polite pool / too fastSet OPENALEX_MAILTO; back off; reduce volume.Empty resultsFilter too narrowBroaden filter; check key spelling; try search.400Bad filter syntaxComma-separate; use key:value; verify keys.TimeoutQuery too broadAdd a filter; lower per-page.
OPENALEX_MAILTO.page is capped ~10000 results).OPENALEX_MAILTO is not sensitive but keep configs clean.filter instead of scanning everything?sort?meta.count vs results correctly?OPENALEX_MAILTO to avoid 429?openalex_works (topic + year + is_oa, sort by citations) → openalex_get top work → author/institution profiles → cited summary. See recipes/literature-search.md.openalex_get author → openalex_works filtered by authorships.author.id → top works + metrics. See recipes/author-profile.md.openalex_group_by on publication_year with a topic/OA filter. See recipes/citation-trends.md.per_page on the wire instead of per-page (hyphen) in openalex_request.page numbers (capped ~ 10000 results) instead of cursor.abstract_inverted_index as plain text.meta.count as the number of items returned.OPENALEX_MAILTO and hitting 429.Verification needed: confirm filter keys, limits, and field names with https://docs.openalex.org.