Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Search academic papers via OpenAlex API for open citation data, institutional affiliations, and funding information. Use when user says "openalex search", "search openalex", "open citation graph", or wants comprehensive academic metadata beyond arXiv/Semantic Scholar.
.claude/skills/wanshuiyin-openalex/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 120% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 218% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 103% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 141% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 84% | 0% |
Search query: $ARGUMENTS
This skill uses OpenAlex as a comprehensive open academic graph source:
| Skill | Source | Best for | |-------|--------|----------| | /arxiv | arXiv API | Latest preprints, cutting-edge unrefereed work | | /semantic-scholar | Semantic Scholar API | Published venue papers (IEEE, ACM, Springer) with citation counts | | /openalex | OpenAlex API | Open citation graph, institutional affiliations, funding data, comprehensive metadata | | /deepxiv | DeepXiv CLI | Layered reading: search, brief, section map, section reads | | /exa-search | Exa API | Broad web search: blogs, docs, news, companies, research papers | | /gemini-search | Gemini MCP / CLI | AI-powered broad literature discovery |
Use OpenAlex when you want:
— max: 20.— sort: citations or — sort: date.openalex_fetch.py, resolved pershared-references/integration-contract.md §2 (Policy D1 — standalone /openalex has no documented inline fallback, so unresolved helper terminates with an explicit error).
> Overrides (append to arguments): > - /openalex "topic" — max: 20 — return up to 20 results > - /openalex "topic" — year: 2023- — papers from 2023 onward > - /openalex "topic" — year: 2020-2023 — papers from 2020 to 2023 > - /openalex "topic" — type: article — only journal articles > - /openalex "topic" — type: preprint — only preprints > - /openalex "topic" — open-access — only open access papers > - /openalex "topic" — min-citations: 50 — minimum 50 citations > - /openalex "topic" — sort: citations — sort by citation count (descending) > - /openalex "topic" — sort: date — sort by publication date (newest first)
requests library:bash pip install requests
bash export OPENALEX_API_KEY=your-key-here export OPENALEX_EMAIL=your-email@example.com
bashpython3 "$OPENALEX_FETCHER" search "machine learning" --max 3
(Resolve $OPENALEX_FETCHER via the canonical chain first — see Step 2 below.)
Parse $ARGUMENTS for:
2023-, 2020-2023)article, preprint, book, book-chapter, dataset, dissertation)relevance, citations, date)Resolve $OPENALEX_FETCHER via the canonical strict-safe chain (see shared-references/integration-contract.md §2). Policy D1: there is no native inline fallback for OpenAlex (retrieval requires the requests SDK + optional API key — the fetcher script encapsulates pagination, throttling, and per-source parameters), so unresolved helper terminates with explicit remediation.
bashcd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1 if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills-codex.txt ]; then ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills-codex.txt 2>/dev/null) || true fi OPENALEX_FETCHER="" [ -n "${ARIS_REPO:-}" ] && [ -f "$ARIS_REPO/tools/openalex_fetch.py" ] && OPENALEX_FETCHER="$ARIS_REPO/tools/openalex_fetch.py" [ -z "$OPENALEX_FETCHER" ] && [ -f tools/openalex_fetch.py ] && OPENALEX_FETCHER="tools/openalex_fetch.py" [ -z "$OPENALEX_FETCHER" ] && [ -f ~/.codex/skills/openalex/openalex_fetch.py ] && OPENALEX_FETCHER="$HOME/.codex/skills/openalex/openalex_fetch.py" [ -f "$OPENALEX_FETCHER" ] || { echo "ERROR: openalex_fetch.py not resolved at \$ARIS_REPO/tools/, tools/, or ~/.codex/skills/openalex/." >&2 echo " Fix: rerun install_aris_codex.sh, export ARIS_REPO, or copy the helper to ~/.codex/skills/openalex/." >&2 echo " Also ensure 'requests' is installed: pip install requests" >&2 exit 1 }
Basic search:
bashpython3 "$OPENALEX_FETCHER" search "QUERY" --max 10
With filters:
bashpython3 "$OPENALEX_FETCHER" search "QUERY" --max 10 \ --year 2023- \ --type article \ --open-access \ --min-citations 20 \ --sort citations
Get specific work by DOI:
bashpython3 "$OPENALEX_FETCHER" work "10.1109/TWC.2024.1234567"
Get specific work by OpenAlex ID:
bashpython3 "$OPENALEX_FETCHER" work "W2741809807"
The script returns structured JSON with:
title: Paper titleauthors: List of author namespublication_year: Year publishedvenue: Journal/conference namevenue_type: Type of venue (journal, repository, conference, etc.)cited_by_count: Number of citationsis_oa: Boolean for open access statusoa_status: Open access type (gold, green, bronze, hybrid, closed)oa_url: Direct PDF link if availabledoi: DOI identifieropenalex_id: OpenAlex work IDabstract: Full abstract texttopics: Top 3 research topicskeywords: Top 5 keywordstype: Work type (article, preprint, etc.)Format results as a structured table:
| # | Title | Venue | Year | Citations | OA | Summary |
|---|-------|-------|------|-----------|----|---------|
| 1 | ... | IEEE TWC | 2024 | 156 | ✓ | ... |
| 2 | ... | NeurIPS | 2023 | 89 | ✓ | ... |For each paper, also show:
After presenting results, suggest:
text/semantic-scholar "DOI:..." — get S2 citation context and related papers /arxiv "arXiv:XXXX.XXXXX" — fetch arXiv preprint if available /research-lit "topic" — sources: openalex, semantic-scholar — combined multi-source review /novelty-check "idea" — verify novelty against literature
OPENALEX_EMAIL environment variable for faster response times/semantic-scholar, /arxiv, or /research-lit "topic" — sources: web as alternatives.| Feature | OpenAlex | Semantic Scholar | arXiv | |---------|----------|------------------|-------| | Coverage | 250M+ works | 200M+ papers | 2.4M+ preprints | | Citation data | Fully open | Partially open | None | | Institutions | ✓ Full affiliations | ✓ Limited | ✗ | | Funding | ✓ NSF, NIH, etc. | ✗ | ✗ | | Open access | ✓ Full OA status | ✓ PDF links | ✓ All papers | | API key | Optional (free) | Optional (free) | Not required | | Rate limits | 1,000 searches/day (free key) | Unknown | 1 req/3s | | Abstract | ✓ Full text | ✓ TLDR | ✓ Full text | | Best for | Comprehensive metadata, institutions, funding | Citation counts, venue info | Latest preprints |
When to use OpenAlex over S2:
When to use S2 over OpenAlex:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 18,075 | 10,824 | -40% | 1 | 1 | 0% | 3,656 | 3,421 | -6% | 0 | 0 | — |
case-02 | fail→fail | 18,458 | 31,184 | +69% | 1 | 1 | 0% | 3,465 | 3,235 | -7% | 0 | 0 | — |
case-03 | fail→fail | 17,771 | 48,341 | +172% | 1 | 1 | 0% | 3,495 | 3,282 | -6% | 0 | 0 | — |
case-04 | fail→pass | 10,846 | 5,483 | -49% | 1 | 1 | 0% | 1,765 | 3,878 | +120% | 0 | 0 | — |
case-05 | fail→pass | 5,068 | 3,679 | -27% | 1 | 1 | 0% | 1,008 | 3,204 | +218% | 0 | 0 | — |
case-06 | fail→pass | 18,646 | 3,471 | -81% | 1 | 1 | 0% | 1,592 | 3,232 | +103% | 0 | 0 | — |
case-07 | fail→pass | 8,112 | 4,175 | -49% | 1 | 1 | 0% | 1,455 | 3,507 | +141% | 0 | 0 | — |
case-08 | fail→pass | 9,281 | 4,431 | -52% | 1 | 1 | 0% | 1,909 | 3,510 | +84% | 0 | 0 | — |
case-09 | fail→pass | 6,318 | 2,784 | -56% | 1 | 1 | 0% | 1,178 | 3,151 | +167% | 0 | 0 | — |
case-10 | pass→pass | 8,521 | 2,095 | -75% | 1 | 1 | 0% | 1,600 | 3,037 | +90% | 0 | 0 | — |
case-11 | fail→pass | 7,323 | 1,734 | -76% | 1 | 1 | 0% | 1,197 | 2,880 | +141% | 0 | 0 | — |
case-12 | fail→pass | 7,401 | 2,258 | -69% | 1 | 1 | 0% | 1,181 | 3,020 | +156% | 0 | 0 | — |
case-13 | fail→pass | 3,477 | 2,064 | -41% | 1 | 1 | 0% | 600 | 3,025 | +404% | 0 | 0 | — |
case-14 | pass→pass | 13,093 | 7,760 | -41% | 1 | 1 | 0% | 1,896 | 3,954 | +109% | 0 | 0 | — |
case-15 | fail→pass | 6,148 | 2,923 | -52% | 1 | 1 | 0% | 1,157 | 3,167 | +174% | 0 | 0 | — |
case-16 | fail→pass | 9,176 | 3,497 | -62% | 1 | 1 | 0% | 1,491 | 3,416 | +129% | 0 | 0 | — |
case-17 | fail→pass | 9,916 | 2,507 | -75% | 1 | 1 | 0% | 1,787 | 3,156 | +77% | 0 | 0 | — |
case-18 | pass→pass | 14,427 | 2,739 | -81% | 1 | 1 | 0% | 2,370 | 3,138 | +32% | 0 | 0 | — |
case-19 | fail→pass | 7,188 | 3,162 | -56% | 1 | 1 | 0% | 1,280 | 3,195 | +150% | 0 | 0 | — |
case-20 | pass→pass | 7,317 | 3,029 | -59% | 1 | 1 | 0% | 1,325 | 3,163 | +139% | 0 | 0 | — |
case-21 | fail→pass | 10,062 | 3,998 | -60% | 1 | 1 | 0% | 1,540 | 3,410 | +121% | 0 | 0 | — |
case-22 | fail→pass | 11,986 | 4,423 | -63% | 1 | 1 | 0% | 1,684 | 3,384 | +101% | 0 | 0 | — |
case-23 | fail→pass | 8,951 | 3,024 | -66% | 1 | 1 | 0% | 1,348 | 3,269 | +143% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +70 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.