Medical-research-skills openalex-db
Access the OpenAlex database (240M+ scholarly works) for bibliometric analysis, literature search, and citation tracking; use when you need to query works/authors/institutions/concepts without an API key.
install
source · Clone the upstream repo
git clone https://github.com/aipoch/medical-research-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/aipoch/medical-research-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/scientific-skills/Evidence Insight/openalex-db" ~/.claude/skills/aipoch-medical-research-skills-openalex-db && rm -rf "$T"
manifest:
scientific-skills/Evidence Insight/openalex-db/SKILL.mdsource content
When to Use
- You need to search scholarly works by keyword and filter by properties (e.g., open access, year, venue).
- You want to look up authors and analyze their publication output and citation impact.
- You need to retrieve and compare institutions (e.g., affiliation-based exploration or benchmarking).
- You want to explore concepts/topics and track trends across time.
- You need lightweight bibliometric workflows (citation tracking, publication trends) without managing API keys.
Key Features
- Query OpenAlex entities: works, authors, institutions, concepts.
- Keyword search with filtering support.
- Designed for bibliometric tasks such as citation tracking and trend exploration.
- No API key required; supports providing an email for OpenAlex Polite Pool (higher rate limits).
- Simple Python client wrapper via
.scripts/openalex_client.py
Dependencies
(version not pinned; install viarequests
)uv pip install requests
Example Usage
from scripts.openalex_client import OpenAlexClient def main(): # Provide an email to use OpenAlex "Polite Pool" (recommended for better rate limits) client = OpenAlexClient(email="user@example.com") # Search for open-access works related to CRISPR works = client.search_works( search="CRISPR", filter_params={"is_oa": "true"}, ) print(f"Found {len(works)} works") if works: first = works[0] # Field names depend on OpenAlex response schema print("First result:") print(f" id: {first.get('id')}") print(f" title: {first.get('title')}") print(f" publication_year: {first.get('publication_year')}") print(f" cited_by_count: {first.get('cited_by_count')}") if __name__ == "__main__": main()
Implementation Details
- Client entry point:
provides the main API wrapper (scripts/openalex_client.py
).OpenAlexClient - Polite Pool: Supplying an
is recommended to receive higher rate limits from OpenAlex.email - Search + filters: Work queries accept a free-text
string plussearch
(key/value pairs) that map to OpenAlex API filters (e.g.,filter_params
).{"is_oa": "true"} - Pagination and schema: For supported filters, pagination behavior, and response fields, refer to
.references/api_guide.md