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
if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
ARIS_REPO=$(cat "$HOME/.aris/repo" 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/, \$ARIS_REPO/tools/, or via ~/.aris/repo." >&2
echo " Fix: rerun bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), 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
111if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
112 ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
113fi
114OPENALEX_FETCHER=".aris/tools/openalex_fetch.py"
115[ -f "$OPENALEX_FETCHER" ] || OPENALEX_FETCHER="tools/openalex_fetch.py"
116[ -f "$OPENALEX_FETCHER" ] || { [ -n "${ARIS_REPO:-}" ] && OPENALEX_FETCHER="$ARIS_REPO/tools/openalex_fetch.py"; }
117[ -f "$OPENALEX_FETCHER" ] || {
118 echo "ERROR: openalex_fetch.py not resolved at .aris/tools/, tools/, \$ARIS_REPO/tools/, or via ~/.aris/repo." >&2
119 echo " Fix: rerun bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), export ARIS_REPO, or copy the helper to tools/." >&2
120 echo " Also ensure 'requests' is installed: pip install requests" >&2
121 exit 1
122}
123```
124
125### Step 3: Execute Search
126
127**Basic search:**
128```bash
129python3 "$OPENALEX_FETCHER" search "QUERY" --max 10
130```
131
132**With filters:**
133```bash
134python3 "$OPENALEX_FETCHER" search "QUERY" --max 10 \
135 --year 2023- \
136 --type article \
137 --open-access \
138 --min-citations 20 \
139 --sort citations
140```
141
142**Get specific work by DOI:**
143```bash
144python3 "$OPENALEX_FETCHER" work "10.1109/TWC.2024.1234567"
145```
146
147**Get specific work by OpenAlex ID:**
148```bash
149python3 "$OPENALEX_FETCHER" work "W2741809807"
150```
151
152### Step 4: Parse Results
153
154The script returns structured JSON with:
155- `title`: Paper title
156- `authors`: List of author names
157- `publication_year`: Year published
158- `venue`: Journal/conference name
159- `venue_type`: Type of venue (journal, repository, conference, etc.)
160- `cited_by_count`: Number of citations
161- `is_oa`: Boolean for open access status
162- `oa_status`: Open access type (gold, green, bronze, hybrid, closed)
163- `oa_url`: Direct PDF link if available
164- `doi`: DOI identifier
165- `openalex_id`: OpenAlex work ID
166- `abstract`: Full abstract text
167- `topics`: Top 3 research topics
168- `keywords`: Top 5 keywords
169- `type`: Work type (article, preprint, etc.)
170
171### Step 5: Present Results
172
173Format results as a structured table:
174
175```
176| # | Title | Venue | Year | Citations | OA | Summary |
177|---|-------|-------|------|-----------|----|---------|
178| 1 | ... | IEEE TWC | 2024 | 156 | ✓ | ... |
179| 2 | ... | NeurIPS | 2023 | 89 | ✓ | ... |
180```
181
182For each paper, also show:
183- **DOI**: Canonical identifier
184- **OpenAlex ID**: For cross-reference
185- **Open Access**: Status (gold/green/bronze/hybrid/closed) and PDF link
186- **Topics**: Top research topics
187- **Abstract**: First 200 characters or full text
188
189### Step 6: Offer Follow-up
190
191After presenting results, suggest:
192
193```text
194/semantic-scholar "DOI:..." — get S2 citation context and related papers
195/arxiv "arXiv:XXXX.XXXXX" — fetch arXiv preprint if available
196/research-lit "topic" — sources: openalex, semantic-scholar — combined multi-source review
197/novelty-check "idea" — verify novelty against literature
198```
199
200## Key Rules
201
202- **OpenAlex is fully open** — no API key required for basic use, but recommended for higher rate limits
203- **Comprehensive metadata** — OpenAlex provides richer metadata than most sources (institutions, funding, topics)
204- **Citation data is open** — unlike Semantic Scholar, all citation data is freely accessible
205- **Rate limits**: Without API key, very limited (~$0.01/day). With free API key: 10,000 list calls/day, 1,000 search calls/day.
206- **Polite pool**: Set `OPENALEX_EMAIL` environment variable for faster response times
207- **Cross-reference with other sources**: OpenAlex indexes papers from arXiv, PubMed, Crossref, etc. — use DOI/arXiv ID to cross-reference
208- If OpenAlex API is unreachable or rate-limited, suggest using `/semantic-scholar`, `/arxiv`, or `/research-lit "topic" — sources: web` as alternatives.
209
210## OpenAlex vs Other Sources
211
212| Feature | OpenAlex | Semantic Scholar | arXiv |
213|---------|----------|------------------|-------|
214| **Coverage** | 250M+ works | 200M+ papers | 2.4M+ preprints |
215| **Citation data** | Fully open | Partially open | None |
216| **Institutions** | ✓ Full affiliations | ✓ Limited | ✗ |
217| **Funding** | ✓ NSF, NIH, etc. | ✗ | ✗ |
218| **Open access** | ✓ Full OA status | ✓ PDF links | ✓ All papers |
219| **API key** | Optional (free) | Optional (free) | Not required |
220| **Rate limits** | 1,000 searches/day (free key) | Unknown | 1 req/3s |
221| **Abstract** | ✓ Full text | ✓ TLDR | ✓ Full text |
222| **Best for** | Comprehensive metadata, institutions, funding | Citation counts, venue info | Latest preprints |
223
224**When to use OpenAlex over S2:**
225- Need institutional affiliation data
226- Need funding information
227- Want fully open citation graph
228- Need comprehensive topic/keyword metadata
229- Working with non-CS fields (OpenAlex covers all disciplines)
230
231**When to use S2 over OpenAlex:**
232- Need real-time citation counts (S2 updates faster)
233- Need "highly influential citations" metric
234- Need paper recommendations
235- CS/AI-focused research (S2 has better CS coverage)