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 — Create .claude/.env in project root:
# Copy from template
cp .claude/.env.example .claude/.env
# Edit and add your keys
# .claude/.env
OPENALEX_API_KEY=your-key-here
OPENALEX_EMAIL=your-email@example.com
Claude Code automatically loads .claude/.env as environment variables.
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.txt ]; then
ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true
fi
OPENALEX_FETCHER=".aris/tools/openalex_fetch.py"
[ -f "$OPENALEX_FETCHER" ] || OPENALEX_FETCHER="tools/openalex_fetch.py"
[ -f "$OPENALEX_FETCHER" ] || { [ -n "${ARIS_REPO:-}" ] && OPENALEX_FETCHER="$ARIS_REPO/tools/openalex_fetch.py"; }
[ -f "$OPENALEX_FETCHER" ] || {
echo "ERROR: openalex_fetch.py not resolved at .aris/tools/, tools/, or \$ARIS_REPO/tools/." >&2
echo " Fix: rerun bash tools/install_aris.sh, export ARIS_REPO, or copy the helper to tools/." >&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---5
6# OpenAlex Academic Search
7
8Search query: $ARGUMENTS
9
10## Role & Positioning
11
12This skill uses OpenAlex as a **comprehensive open academic graph** source:
13
14| 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 |
22
23Use 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 collaborations
26- **Funding information** — NSF, NIH, and other funding sources
27- **Comprehensive metadata** — topics, keywords, abstract, open access status
28- **Cross-database coverage** — indexes 250M+ works from multiple sources
29
30## Constants
31
32- **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 per
35 [`shared-references/integration-contract.md`](../shared-references/integration-contract.md) §2
36 (Policy D1 — standalone `/openalex` has no documented inline fallback,
37 so unresolved helper terminates with an explicit error).
38
39> Overrides (append to arguments):
40> - `/openalex "topic" — max: 20` — return up to 20 results
41> - `/openalex "topic" — year: 2023-` — papers from 2023 onward
42> - `/openalex "topic" — year: 2020-2023` — papers from 2020 to 2023
43> - `/openalex "topic" — type: article` — only journal articles
44> - `/openalex "topic" — type: preprint` — only preprints
45> - `/openalex "topic" — open-access` — only open access papers
46> - `/openalex "topic" — min-citations: 50` — minimum 50 citations
47> - `/openalex "topic" — sort: citations` — sort by citation count (descending)
48> - `/openalex "topic" — sort: date` — sort by publication date (newest first)
49
50## Setup
51
52### Prerequisites
53
541. **Python 3.7+** with `requests` library:
55 ```bash
56 pip install requests
57 ```
58
592. **Optional: API keys** — Create `.claude/.env` in project root:
60 ```bash
61 # Copy from template
62 cp .claude/.env.example .claude/.env
63
64 # Edit and add your keys
65 # .claude/.env
66 OPENALEX_API_KEY=your-key-here
67 OPENALEX_EMAIL=your-email@example.com
68 ```
69
70 Claude Code automatically loads `.claude/.env` as environment variables.
71
723. **Get API keys** (optional but recommended):
73 - **OpenAlex API key**: Free tier $1/day (10,000 list calls, 1,000 search calls) from [openalex.org](https://openalex.org/)
74 - **Email for polite pool**: Faster response times (no registration needed)
75
76### Verify Setup
77
78```bash
79python3 "$OPENALEX_FETCHER" search "machine learning" --max 3
80```
81
82(Resolve `$OPENALEX_FETCHER` via the canonical chain first — see Step 2 below.)
83
84## Workflow
85
86### Step 1: Parse Arguments
87
88Parse `$ARGUMENTS` for:
89- **query**: The research topic (required)
90- **max**: Override MAX_RESULTS
91- **year**: Publication year filter (e.g., `2023-`, `2020-2023`)
92- **type**: Work type filter (`article`, `preprint`, `book`, `book-chapter`, `dataset`, `dissertation`)
93- **open-access**: Only include open access papers
94- **min-citations**: Minimum citation count threshold
95- **sort**: Sort order (`relevance`, `citations`, `date`)
96
97### Step 2: Locate Script
98
99Resolve `$OPENALEX_FETCHER` via the canonical strict-safe chain (see
100[`shared-references/integration-contract.md`](../shared-references/integration-contract.md) §2).
101Policy D1: there is no native inline fallback for OpenAlex
102(retrieval requires the `requests` SDK + optional API key — the
103fetcher script encapsulates pagination, throttling, and per-source
104parameters), so unresolved helper terminates with explicit remediation.
105
106```bash
107cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
108if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then
109 ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true
110fi
111OPENALEX_FETCHER=".aris/tools/openalex_fetch.py"
112[ -f "$OPENALEX_FETCHER" ] || OPENALEX_FETCHER="tools/openalex_fetch.py"
113[ -f "$OPENALEX_FETCHER" ] || { [ -n "${ARIS_REPO:-}" ] && OPENALEX_FETCHER="$ARIS_REPO/tools/openalex_fetch.py"; }
114[ -f "$OPENALEX_FETCHER" ] || {
115 echo "ERROR: openalex_fetch.py not resolved at .aris/tools/, tools/, or \$ARIS_REPO/tools/." >&2
116 echo " Fix: rerun bash tools/install_aris.sh, export ARIS_REPO, or copy the helper to tools/." >&2
117 echo " Also ensure 'requests' is installed: pip install requests" >&2
118 exit 1
119}
120```
121
122### Step 3: Execute Search
123
124**Basic search:**
125```bash
126python3 "$OPENALEX_FETCHER" search "QUERY" --max 10
127```
128
129**With filters:**
130```bash
131python3 "$OPENALEX_FETCHER" search "QUERY" --max 10 \
132 --year 2023- \
133 --type article \
134 --open-access \
135 --min-citations 20 \
136 --sort citations
137```
138
139**Get specific work by DOI:**
140```bash
141python3 "$OPENALEX_FETCHER" work "10.1109/TWC.2024.1234567"
142```
143
144**Get specific work by OpenAlex ID:**
145```bash
146python3 "$OPENALEX_FETCHER" work "W2741809807"
147```
148
149### Step 4: Parse Results
150
151The script returns structured JSON with:
152- `title`: Paper title
153- `authors`: List of author names
154- `publication_year`: Year published
155- `venue`: Journal/conference name
156- `venue_type`: Type of venue (journal, repository, conference, etc.)
157- `cited_by_count`: Number of citations
158- `is_oa`: Boolean for open access status
159- `oa_status`: Open access type (gold, green, bronze, hybrid, closed)
160- `oa_url`: Direct PDF link if available
161- `doi`: DOI identifier
162- `openalex_id`: OpenAlex work ID
163- `abstract`: Full abstract text
164- `topics`: Top 3 research topics
165- `keywords`: Top 5 keywords
166- `type`: Work type (article, preprint, etc.)
167
168### Step 5: Present Results
169
170Format results as a structured table:
171
172```
173| # | Title | Venue | Year | Citations | OA | Summary |
174|---|-------|-------|------|-----------|----|---------|
175| 1 | ... | IEEE TWC | 2024 | 156 | ✓ | ... |
176| 2 | ... | NeurIPS | 2023 | 89 | ✓ | ... |
177```
178
179For each paper, also show:
180- **DOI**: Canonical identifier
181- **OpenAlex ID**: For cross-reference
182- **Open Access**: Status (gold/green/bronze/hybrid/closed) and PDF link
183- **Topics**: Top research topics
184- **Abstract**: First 200 characters or full text
185
186### Step 6: Offer Follow-up
187
188After presenting results, suggest:
189
190```text
191/semantic-scholar "DOI:..." — get S2 citation context and related papers
192/arxiv "arXiv:XXXX.XXXXX" — fetch arXiv preprint if available
193/research-lit "topic" — sources: openalex, semantic-scholar — combined multi-source review
194/novelty-check "idea" — verify novelty against literature
195```
196
197## Key Rules
198
199- **OpenAlex is fully open** — no API key required for basic use, but recommended for higher rate limits
200- **Comprehensive metadata** — OpenAlex provides richer metadata than most sources (institutions, funding, topics)
201- **Citation data is open** — unlike Semantic Scholar, all citation data is freely accessible
202- **Rate limits**: Without API key, very limited (~$0.01/day). With free API key: 10,000 list calls/day, 1,000 search calls/day.
203- **Polite pool**: Set `OPENALEX_EMAIL` environment variable for faster response times
204- **Cross-reference with other sources**: OpenAlex indexes papers from arXiv, PubMed, Crossref, etc. — use DOI/arXiv ID to cross-reference
205- If OpenAlex API is unreachable or rate-limited, suggest using `/semantic-scholar`, `/arxiv`, or `/research-lit "topic" — sources: web` as alternatives.
206
207## OpenAlex vs Other Sources
208
209| Feature | OpenAlex | Semantic Scholar | arXiv |
210|---------|----------|------------------|-------|
211| **Coverage** | 250M+ works | 200M+ papers | 2.4M+ preprints |
212| **Citation data** | Fully open | Partially open | None |
213| **Institutions** | ✓ Full affiliations | ✓ Limited | ✗ |
214| **Funding** | ✓ NSF, NIH, etc. | ✗ | ✗ |
215| **Open access** | ✓ Full OA status | ✓ PDF links | ✓ All papers |
216| **API key** | Optional (free) | Optional (free) | Not required |
217| **Rate limits** | 1,000 searches/day (free key) | Unknown | 1 req/3s |
218| **Abstract** | ✓ Full text | ✓ TLDR | ✓ Full text |
219| **Best for** | Comprehensive metadata, institutions, funding | Citation counts, venue info | Latest preprints |
220
221**When to use OpenAlex over S2:**
222- Need institutional affiliation data
223- Need funding information
224- Want fully open citation graph
225- Need comprehensive topic/keyword metadata
226- Working with non-CS fields (OpenAlex covers all disciplines)
227
228**When to use S2 over OpenAlex:**
229- Need real-time citation counts (S2 updates faster)
230- Need "highly influential citations" metric
231- Need paper recommendations
232- CS/AI-focused research (S2 has better CS coverage)