openalex-paper-search
Academic paper search powered by OpenAlex -- the free, open catalog of 240M+ scholarly works. Use when the user needs to find academic papers, research articles, literature for a topic, citation data, author publications, or any scholarly source. Triggers on: 'find papers on', 'academic research about', 'what studies exist', 'literature review', 'find citations', 'scholarly articles about', 'who published on', 'papers by [author]', 'highly cited papers on', any request for peer-reviewed or academic sources. Also use during deep research when you need to ground findings in academic literature. Do NOT use for general web searches -- use web-search for that.
What this skill does
# Academic Paper Search (OpenAlex) Search 240M+ scholarly works using the OpenAlex API -- completely free, no API key required, no SDK needed. Just `curl` or `bash` with URL construction. **Full docs:** https://docs.openalex.org ## Quick Start OpenAlex is a REST API. You query it by constructing URLs and fetching them with `curl`. All responses are JSON. ```bash # Search for papers about "transformer architecture" curl -s "https://api.openalex.org/works?search=transformer+architecture&per_page=5&[email protected]" | python3 -m json.tool ``` **Important:** Always include `[email protected]` (or any valid email) in every request. Without it, you're limited to 1 request/second. With it, you get 10 requests/second (the "polite pool"). ## Core Concepts ### Entities OpenAlex has these entity types (all queryable): | Entity | Endpoint | Count | Description | |--------|----------|-------|-------------| | **Works** | `/works` | 240M+ | Papers, articles, books, datasets, theses | | **Authors** | `/authors` | 90M+ | People who create works | | **Sources** | `/sources` | 250K+ | Journals, repositories, conferences | | **Institutions** | `/institutions` | 110K+ | Universities, research orgs | | **Topics** | `/topics` | 4K+ | Research topics (hierarchical) | ### Work Object -- Key Fields When you fetch a work, these are the most useful fields: ``` id OpenAlex ID (e.g., "https://openalex.org/W2741809807") doi DOI URL title / display_name Paper title publication_year Year published publication_date Full date (YYYY-MM-DD) cited_by_count Number of incoming citations fwci Field-Weighted Citation Impact (normalized) type article, preprint, review, book, dataset, etc. language ISO 639-1 code (e.g., "en") is_retracted Boolean open_access.is_oa Boolean -- is it freely accessible? open_access.oa_url Direct URL to free version authorships List of authors with names, institutions, ORCIDs abstract_inverted_index Abstract as inverted index (needs reconstruction) referenced_works List of OpenAlex IDs this work cites (outgoing) related_works Algorithmically related works cited_by_api_url API URL to get works that cite this one (incoming) topics Assigned research topics with scores keywords Extracted keywords with scores primary_location Where the work is published (journal, repo) best_oa_location Best open access location with PDF link ``` ### Reconstructing Abstracts OpenAlex stores abstracts as inverted indexes for legal reasons. To get plaintext, reconstruct: ```python import json, sys # Read the abstract_inverted_index from a work object inv_idx = work["abstract_inverted_index"] if inv_idx: words = [""] * (max(max(positions) for positions in inv_idx.values()) + 1) for word, positions in inv_idx.items(): for pos in positions: words[pos] = word abstract = " ".join(words) ``` Or in bash with `python3 -c`: ```bash # Pipe a work JSON into this to extract the abstract echo "$WORK_JSON" | python3 -c " import json,sys w=json.load(sys.stdin) idx=w.get('abstract_inverted_index',{}) if idx: words=['']*( max(max(p) for p in idx.values())+1 ) for word,positions in idx.items(): for pos in positions: words[pos]=word print(' '.join(words)) " ``` ## Searching for Papers ### Basic Keyword Search Searches across titles, abstracts, and fulltext. Uses stemming and stop-word removal. ```bash # Simple search curl -s "https://api.openalex.org/works?search=large+language+models&[email protected]" # With per_page limit curl -s "https://api.openalex.org/works?search=CRISPR+gene+editing&per_page=10&[email protected]" ``` ### Boolean Search Use uppercase `AND`, `OR`, `NOT` with parentheses and quoted phrases: ```bash # Complex boolean query curl -s "https://api.openalex.org/works?search=(reinforcement+learning+AND+%22robot+control%22)+NOT+simulation&[email protected]" # Exact phrase match (use double quotes, URL-encoded as %22) curl -s "https://api.openalex.org/works?search=%22attention+is+all+you+need%22&[email protected]" ``` ### Search Specific Fields ```bash # Title only curl -s "https://api.openalex.org/works?filter=title.search:transformer&[email protected]" # Abstract only curl -s "https://api.openalex.org/works?filter=abstract.search:protein+folding&[email protected]" # Title and abstract combined curl -s "https://api.openalex.org/works?filter=title_and_abstract.search:neural+scaling+laws&[email protected]" # Fulltext search (subset of works) curl -s "https://api.openalex.org/works?filter=fulltext.search:climate+tipping+points&[email protected]" ``` ## Filtering Filters are the most powerful feature. Combine them with commas (AND) or pipes (OR). ### Most Useful Filters ```bash # By publication year ?filter=publication_year:2024 ?filter=publication_year:2020-2024 ?filter=publication_year:>2022 # By citation count ?filter=cited_by_count:>100 # highly cited ?filter=cited_by_count:>1000 # landmark papers # By open access ?filter=is_oa:true # only open access ?filter=oa_status:gold # gold OA only # By type ?filter=type:article # journal articles ?filter=type:preprint # preprints ?filter=type:review # review articles # By language ?filter=language:en # English only # Not retracted ?filter=is_retracted:false # Has abstract ?filter=has_abstract:true # Has downloadable PDF ?filter=has_content.pdf:true # By author (OpenAlex ID) ?filter=author.id:A5023888391 # By institution (OpenAlex ID) ?filter=institutions.id:I27837315 # e.g., University of Michigan # By DOI ?filter=doi:https://doi.org/10.1038/s41586-021-03819-2 # By indexed source ?filter=indexed_in:arxiv # arXiv papers ?filter=indexed_in:pubmed # PubMed papers ?filter=indexed_in:crossref # Crossref papers ``` ### Combining Filters ```bash # AND: comma-separated ?filter=publication_year:>2022,cited_by_count:>50,is_oa:true,type:article # OR: pipe-separated within a filter ?filter=publication_year:2023|2024 # NOT: prefix with ! ?filter=type:!preprint # Combined example: highly-cited OA articles from 2023-2024, not preprints curl -s "https://api.openalex.org/works?filter=publication_year:2023-2024,cited_by_count:>50,is_oa:true,type:!preprint&search=machine+learning&per_page=10&[email protected]" ``` ## Sorting ```bash # Most cited first ?sort=cited_by_count:desc # Most recent first ?sort=publication_date:desc # Most relevant first (only when using search) ?sort=relevance_score:desc # Multiple sort keys ?sort=publication_year:desc,cited_by_count:desc ``` ## Pagination Two modes: **basic paging** (for browsing) and **cursor paging** (for collecting all results). ```bash # Basic paging (limited to 10,000 results) ?page=1&per_page=25 ?page=2&per_page=25 # Cursor paging (unlimited, for collecting everything) ?per_page=100&cursor=* # first page ?per_page=100&cursor=IlsxNjk0ODc... # next page (cursor from previous response meta) ``` The cursor for the next page is in `response.meta.next_cursor`. When it's `null`, you've reached the end. ## Select Fields Reduce response size by selecting only the fields you need: ```bash # Only get IDs, titles, citation counts, and DOIs ?select=id,display_name,cited_by_count,doi,publication_year # Minimal metadata for scanning ?select=id,display_name,publication_year,cited_by_count,open_access ``` ## Citation Graph Traversal ### Find what a paper cites (outgoing references) ```bash # Get works cited BY a specific paper curl -s "https://api.openalex.org/works?filter=cited_by:W2741809807&per_page=25&[email protected]" ``` ### Find what cites a p
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.