tool-academic-search
Search and download academic papers from the terminal across arXiv, PubMed, bioRxiv, medRxiv, and Google Scholar. Search one source or all at once, download PDFs (arXiv via the fast arxiv-dl path), an
Files2
View on GitHubSKILL.mdskills/tool-academic-search/SKILL.md
GitHubAcademic Search Skill
Search and download research papers from the terminal. Wraps paper-search-mcp
(arXiv, PubMed, bioRxiv, medRxiv, Google Scholar) + arxiv-dl (fast arXiv PDF
downloads).
SKILL_DIR below = this skill's own directory — skills/tool-academic-search/ in a clone, or ~/.claude/skills/tool-academic-search/ in the per-machine store.
Reference the script with that absolute path.
Isolation (important)
The underlying tools live in a dedicated venv at
%LOCALAPPDATA%/eos/envs/academic/ — NOT the EmptyOS daemon env. They drag
in rich>=14 / starlette>=1.0 which conflict with the daemon's pins, so they
were deliberately isolated (per .claude/rules/environment.md § user-home
Python envs). academic.py re-execs itself under the venv python automatically,
so you can call it with a plain python — no activation needed.
Setup (one-time, already done)
uv venv --python 3.13 "%LOCALAPPDATA%/eos/envs/academic"
uv pip install --python "%LOCALAPPDATA%/eos/envs/academic/Scripts/python.exe" arxiv-dl paper-search-mcp
Usage
1. Search
python "<SKILL_DIR>/academic.py" search "diffusion models" --source arxiv -n 5
python "<SKILL_DIR>/academic.py" search "crispr gene editing" --source pubmed
python "<SKILL_DIR>/academic.py" search "battery degradation" --source all -n 3
python "<SKILL_DIR>/academic.py" search "graph neural network" --json # machine-readable
--source:arxiv(default) |pubmed|biorxiv|medrxiv|scholar|all-n: max results per source (default 8)--json: emit a JSON array (id, title, authors, date, source, url, doi) — use this when you need to parse results to pick one to download.
Per-source failures are soft (printed to stderr) so --source all never dies on one bad backend.
2. Download a PDF
python "<SKILL_DIR>/academic.py" download 1706.03762 --dir ./papers --pdf-only
python "<SKILL_DIR>/academic.py" download https://arxiv.org/abs/1512.03385 --dir ./papers
python "<SKILL_DIR>/academic.py" download 42318429 --source pubmed --dir ./papers
- arXiv targets route through
arxiv-dl(fast, parallel, clean filenames). --source pubmed|biorxiv|medrxivuse the respective backend; pass a PMID or DOI.--pdf-only(arXiv) skips the accompanying notes file.
3. Read a paper's full text (stdout)
python "<SKILL_DIR>/academic.py" read 1706.03762 --source arxiv
Downloads then extracts the paper text. Costs context — prefer this only for
short papers or when you need the content in-conversation. For a long paper,
download it then use tool-pdf-reader's dump mode (token-cheaper).
Workflow: find → download → file into KB
- Search and show the user candidates:
python "<SKILL_DIR>/academic.py" search "<topic>" --source all -n 5 - On their pick, download the PDF to a scratch or vault attachments dir:
python "<SKILL_DIR>/academic.py" download <id> --dir "{vault}/99_Attachments/papers" --pdf-only - To file it into the EmptyOS KB, hand the downloaded PDF to vault-source-digest
(creates the
referencelanding note +clause/casenotes). To just read it locally, use tool-pdf-reader.
Sources covered
| Source | search | download | read | id format |
|---|---|---|---|---|
| arXiv | ✓ | ✓ (arxiv-dl) | ✓ | 2606.20554 / abs URL |
| PubMed | ✓ | ✓ | ✓ | PMID |
| bioRxiv | ✓ | ✓ | ✓ | DOI |
| medRxiv | ✓ | ✓ | ✓ | DOI |
| Google Scholar | ✓ | — | — | (search only) |
Google Scholar is search-only (no stable PDF endpoint); use it to discover a title, then download from arXiv/PubMed if available.
When NOT to use this
- The PDF is already on disk → tool-pdf-reader.
- Goal is digesting a standard/textbook into the KB → vault-source-digest (hand it the downloaded PDF).
- You need a Google Scholar PDF directly → not supported; find the paper on arXiv/PubMed instead.