OpenAlex Academic Search
Search query: $ARGUMENTS
Role & Positioning
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:
- Open citation data — fully open citation graph (no API key required for basic use)
- Institutional affiliations — author institutions and collaborations
- Funding information — NSF, NIH, and other funding sources
- Comprehensive metadata — topics, keywords, abstract, open access status
- Cross-database coverage — indexes 250M+ works from multiple sources
Constants
- MAX_RESULTS = 10 — Default number of results. Override with
— max: 20.
- DEFAULT_SORT = relevance — Sort by relevance. Override with
— sort: citations or — sort: date.
- OPENALEX_FETCHER — canonical name
openalex_fetch.py, resolved per
shared-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)
Setup
Prerequisites
Python 3.7+ with requests library:
pip install requests
Optional: API keys — Export them in your shell or project environment:
export OPENALEX_API_KEY=your-key-here
export OPENALEX_EMAIL=your-email@example.com
Get API keys (optional but recommended):
- OpenAlex API key: Free tier $1/day (10,000 list calls, 1,000 search calls) from openalex.org
- Email for polite pool: Faster response times (no registration needed)
Verify Setup
python3 "$OPENALEX_FETCHER" search "machine learning" --max 3
(Resolve $OPENALEX_FETCHER via the canonical chain first — see Step 2 below.)
Workflow
Step 1: Parse Arguments
Parse $ARGUMENTS for:
- query: The research topic (required)
- max: Override MAX_RESULTS
- year: Publication year filter (e.g.,
2023-, 2020-2023)
- type: Work type filter (
article, preprint, book, book-chapter, dataset, dissertation)
- open-access: Only include open access papers
- min-citations: Minimum citation count threshold
- sort: Sort order (
relevance, citations, date)
Step 2: Locate Script
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.
cd "$(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
}
Step 3: Execute Search
Basic search:
python3 "$OPENALEX_FETCHER" search "QUERY" --max 10
With filters:
python3 "$OPENALEX_FETCHER" search "QUERY" --max 10 \
--year 2023- \
--type article \
--open-access \
--min-citations 20 \
--sort citations
Get specific work by DOI:
python3 "$OPENALEX_FETCHER" work "10.1109/TWC.2024.1234567"
Get specific work by OpenAlex ID:
python3 "$OPENALEX_FETCHER" work "W2741809807"
Step 4: Parse Results
The script returns structured JSON with:
title: Paper title
authors: List of author names
publication_year: Year published
venue: Journal/conference name
venue_type: Type of venue (journal, repository, conference, etc.)
cited_by_count: Number of citations
is_oa: Boolean for open access status
oa_status: Open access type (gold, green, bronze, hybrid, closed)
oa_url: Direct PDF link if available
doi: DOI identifier
openalex_id: OpenAlex work ID
abstract: Full abstract text
topics: Top 3 research topics
keywords: Top 5 keywords
type: Work type (article, preprint, etc.)
Step 5: Present Results
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:
- DOI: Canonical identifier
- OpenAlex ID: For cross-reference
- Open Access: Status (gold/green/bronze/hybrid/closed) and PDF link
- Topics: Top research topics
- Abstract: First 200 characters or full text
Step 6: Offer Follow-up
After presenting results, suggest:
/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
Key Rules
- OpenAlex is fully open — no API key required for basic use, but recommended for higher rate limits
- Comprehensive metadata — OpenAlex provides richer metadata than most sources (institutions, funding, topics)
- Citation data is open — unlike Semantic Scholar, all citation data is freely accessible
- Rate limits: Without API key, very limited (~$0.01/day). With free API key: 10,000 list calls/day, 1,000 search calls/day.
- Polite pool: Set
OPENALEX_EMAIL environment variable for faster response times
- Cross-reference with other sources: OpenAlex indexes papers from arXiv, PubMed, Crossref, etc. — use DOI/arXiv ID to cross-reference
- If OpenAlex API is unreachable or rate-limited, suggest using
/semantic-scholar, /arxiv, or /research-lit "topic" — sources: web as alternatives.
OpenAlex vs Other Sources
| 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:
- Need institutional affiliation data
- Need funding information
- Want fully open citation graph
- Need comprehensive topic/keyword metadata
- Working with non-CS fields (OpenAlex covers all disciplines)
When to use S2 over OpenAlex:
- Need real-time citation counts (S2 updates faster)
- Need "highly influential citations" metric
- Need paper recommendations
- CS/AI-focused research (S2 has better CS coverage)
1---2name: openalex3description: 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.4---56# OpenAlex Academic Search78Search query: $ARGUMENTS910## Role & Positioning1112This skill uses OpenAlex as a **comprehensive open academic graph** source:1314| Skill | Source | Best for |15|-------|--------|----------|16| `/arxiv` | arXiv API | Latest preprints, cutting-edge unrefereed work |17| `/semantic-scholar` | Semantic Scholar API | Published venue papers (IEEE, ACM, Springer) with citation counts |18| `/openalex` | OpenAlex API | **Open citation graph, institutional affiliations, funding data, comprehensive metadata** |19| `/deepxiv` | DeepXiv CLI | Layered reading: search, brief, section map, section reads |20| `/exa-search` | Exa API | Broad web search: blogs, docs, news, companies, research papers |21| `/gemini-search` | Gemini MCP / CLI | AI-powered broad literature discovery |2223Use OpenAlex when you want:24- **Open citation data** — fully open citation graph (no API key required for basic use)25- **Institutional affiliations** — author institutions and collaborations26- **Funding information** — NSF, NIH, and other funding sources27- **Comprehensive metadata** — topics, keywords, abstract, open access status28- **Cross-database coverage** — indexes 250M+ works from multiple sources2930## Constants3132- **MAX_RESULTS = 10** — Default number of results. Override with `— max: 20`.33- **DEFAULT_SORT = relevance** — Sort by relevance. Override with `— sort: citations` or `— sort: date`.34- **OPENALEX_FETCHER** — canonical name `openalex_fetch.py`, resolved per35 [`shared-references/integration-contract.md`](../shared-references/integration-contract.md) §236 (Policy D1 — standalone `/openalex` has no documented inline fallback,37 so unresolved helper terminates with an explicit error).3839> Overrides (append to arguments):40> - `/openalex "topic" — max: 20` — return up to 20 results41> - `/openalex "topic" — year: 2023-` — papers from 2023 onward42> - `/openalex "topic" — year: 2020-2023` — papers from 2020 to 202343> - `/openalex "topic" — type: article` — only journal articles44> - `/openalex "topic" — type: preprint` — only preprints45> - `/openalex "topic" — open-access` — only open access papers46> - `/openalex "topic" — min-citations: 50` — minimum 50 citations47> - `/openalex "topic" — sort: citations` — sort by citation count (descending)48> - `/openalex "topic" — sort: date` — sort by publication date (newest first)4950## Setup5152### Prerequisites53541. **Python 3.7+** with `requests` library:55 ```bash56 pip install requests57 ```58592. **Optional: API keys** — Export them in your shell or project environment:60 ```bash61 export OPENALEX_API_KEY=your-key-here62 export OPENALEX_EMAIL=your-email@example.com63 ```64653. **Get API keys** (optional but recommended):66 - **OpenAlex API key**: Free tier $1/day (10,000 list calls, 1,000 search calls) from [openalex.org](https://openalex.org/)67 - **Email for polite pool**: Faster response times (no registration needed)6869### Verify Setup7071```bash72python3 "$OPENALEX_FETCHER" search "machine learning" --max 373```7475(Resolve `$OPENALEX_FETCHER` via the canonical chain first — see Step 2 below.)7677## Workflow7879### Step 1: Parse Arguments8081Parse `$ARGUMENTS` for:82- **query**: The research topic (required)83- **max**: Override MAX_RESULTS84- **year**: Publication year filter (e.g., `2023-`, `2020-2023`)85- **type**: Work type filter (`article`, `preprint`, `book`, `book-chapter`, `dataset`, `dissertation`)86- **open-access**: Only include open access papers87- **min-citations**: Minimum citation count threshold88- **sort**: Sort order (`relevance`, `citations`, `date`)8990### Step 2: Locate Script9192Resolve `$OPENALEX_FETCHER` via the canonical strict-safe chain (see93[`shared-references/integration-contract.md`](../shared-references/integration-contract.md) §2).94Policy D1: there is no native inline fallback for OpenAlex95(retrieval requires the `requests` SDK + optional API key — the96fetcher script encapsulates pagination, throttling, and per-source97parameters), so unresolved helper terminates with explicit remediation.9899```bash100cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1101if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills-codex.txt ]; then102 ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills-codex.txt 2>/dev/null) || true103fi104OPENALEX_FETCHER=""105[ -n "${ARIS_REPO:-}" ] && [ -f "$ARIS_REPO/tools/openalex_fetch.py" ] && OPENALEX_FETCHER="$ARIS_REPO/tools/openalex_fetch.py"106[ -z "$OPENALEX_FETCHER" ] && [ -f tools/openalex_fetch.py ] && OPENALEX_FETCHER="tools/openalex_fetch.py"107[ -z "$OPENALEX_FETCHER" ] && [ -f ~/.codex/skills/openalex/openalex_fetch.py ] && OPENALEX_FETCHER="$HOME/.codex/skills/openalex/openalex_fetch.py"108[ -f "$OPENALEX_FETCHER" ] || {109 echo "ERROR: openalex_fetch.py not resolved at \$ARIS_REPO/tools/, tools/, or ~/.codex/skills/openalex/." >&2110 echo " Fix: rerun install_aris_codex.sh, export ARIS_REPO, or copy the helper to ~/.codex/skills/openalex/." >&2111 echo " Also ensure 'requests' is installed: pip install requests" >&2112 exit 1113}114```115116### Step 3: Execute Search117118**Basic search:**119```bash120python3 "$OPENALEX_FETCHER" search "QUERY" --max 10121```122123**With filters:**124```bash125python3 "$OPENALEX_FETCHER" search "QUERY" --max 10 \126 --year 2023- \127 --type article \128 --open-access \129 --min-citations 20 \130 --sort citations131```132133**Get specific work by DOI:**134```bash135python3 "$OPENALEX_FETCHER" work "10.1109/TWC.2024.1234567"136```137138**Get specific work by OpenAlex ID:**139```bash140python3 "$OPENALEX_FETCHER" work "W2741809807"141```142143### Step 4: Parse Results144145The script returns structured JSON with:146- `title`: Paper title147- `authors`: List of author names148- `publication_year`: Year published149- `venue`: Journal/conference name150- `venue_type`: Type of venue (journal, repository, conference, etc.)151- `cited_by_count`: Number of citations152- `is_oa`: Boolean for open access status153- `oa_status`: Open access type (gold, green, bronze, hybrid, closed)154- `oa_url`: Direct PDF link if available155- `doi`: DOI identifier156- `openalex_id`: OpenAlex work ID157- `abstract`: Full abstract text158- `topics`: Top 3 research topics159- `keywords`: Top 5 keywords160- `type`: Work type (article, preprint, etc.)161162### Step 5: Present Results163164Format results as a structured table:165166```167| # | Title | Venue | Year | Citations | OA | Summary |168|---|-------|-------|------|-----------|----|---------|169| 1 | ... | IEEE TWC | 2024 | 156 | ✓ | ... |170| 2 | ... | NeurIPS | 2023 | 89 | ✓ | ... |171```172173For each paper, also show:174- **DOI**: Canonical identifier175- **OpenAlex ID**: For cross-reference176- **Open Access**: Status (gold/green/bronze/hybrid/closed) and PDF link177- **Topics**: Top research topics178- **Abstract**: First 200 characters or full text179180### Step 6: Offer Follow-up181182After presenting results, suggest:183184```text185/semantic-scholar "DOI:..." — get S2 citation context and related papers186/arxiv "arXiv:XXXX.XXXXX" — fetch arXiv preprint if available187/research-lit "topic" — sources: openalex, semantic-scholar — combined multi-source review188/novelty-check "idea" — verify novelty against literature189```190191## Key Rules192193- **OpenAlex is fully open** — no API key required for basic use, but recommended for higher rate limits194- **Comprehensive metadata** — OpenAlex provides richer metadata than most sources (institutions, funding, topics)195- **Citation data is open** — unlike Semantic Scholar, all citation data is freely accessible196- **Rate limits**: Without API key, very limited (~$0.01/day). With free API key: 10,000 list calls/day, 1,000 search calls/day.197- **Polite pool**: Set `OPENALEX_EMAIL` environment variable for faster response times198- **Cross-reference with other sources**: OpenAlex indexes papers from arXiv, PubMed, Crossref, etc. — use DOI/arXiv ID to cross-reference199- If OpenAlex API is unreachable or rate-limited, suggest using `/semantic-scholar`, `/arxiv`, or `/research-lit "topic" — sources: web` as alternatives.200201## OpenAlex vs Other Sources202203| Feature | OpenAlex | Semantic Scholar | arXiv |204|---------|----------|------------------|-------|205| **Coverage** | 250M+ works | 200M+ papers | 2.4M+ preprints |206| **Citation data** | Fully open | Partially open | None |207| **Institutions** | ✓ Full affiliations | ✓ Limited | ✗ |208| **Funding** | ✓ NSF, NIH, etc. | ✗ | ✗ |209| **Open access** | ✓ Full OA status | ✓ PDF links | ✓ All papers |210| **API key** | Optional (free) | Optional (free) | Not required |211| **Rate limits** | 1,000 searches/day (free key) | Unknown | 1 req/3s |212| **Abstract** | ✓ Full text | ✓ TLDR | ✓ Full text |213| **Best for** | Comprehensive metadata, institutions, funding | Citation counts, venue info | Latest preprints |214215**When to use OpenAlex over S2:**216- Need institutional affiliation data217- Need funding information218- Want fully open citation graph219- Need comprehensive topic/keyword metadata220- Working with non-CS fields (OpenAlex covers all disciplines)221222**When to use S2 over OpenAlex:**223- Need real-time citation counts (S2 updates faster)224- Need "highly influential citations" metric225- Need paper recommendations226- CS/AI-focused research (S2 has better CS coverage)