agentsclimarketplace

Find pdf

Skill dahliasan/researchskills/skills/find-pdf

Router for obtaining a paper PDF by DOI or URL. Modes — open access / publisher URL, Unpaywall, Zotero native Find Available PDF, institutional library CLI (optional), Sci-Hub fallback, browser human-in-the-loop. Triggers on "/find-pdf", "get the PDF", "download full text", "Unpaywall", "fetch PDF for DOI". Never blocks a parent accept/discover job if PDF fails. Does not replace discover-papers or zotero library search.From its SKILL.md

Install
npx -y skills add dahliasan/researchskills --skill find-pdf

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

3.2 KB, as published. Nobody here has run it

/find-pdf — PDF waterfall router

skillify-shaped: detect mode (or run the full waterfall), call the right backend, report success/failure. Never fail the parent job solely because a PDF is missing.

See references/waterfall.md.

Step 0 — Detect mode

SignalMode
User already has an oa_url / PDF URLdirect
"Unpaywall" / need legal OA resolveunpaywall
Item already in Zotero; "Find Available PDF"zotero_native
Institutional library / EZproxy / campus proxyinstitutional (optional CLI)
OA + library miss; user accepts Sci-Hub riskscihub
Publisher JS gate / paywall needing browserbrowser_hitl
"get the PDF" with only a DOIwaterfall (try in order)

Waterfall order (default)

  1. Direct OA URL from OpenAlex / metadata
  2. Unpaywall API (mailto required — reuse RESEARCHSKILLS_MAILTO)
  3. Zotero native attach (if item exists in Zotero)
  4. Institutional CLI if installed (Primo/LibKey/EZproxy pattern) — HITL login without asking for DevTools
  5. Sci-Hub CLI if installed and user/policy allows — polite rate limit
  6. Browser HITL for publisher-specific gates

Stop at first real PDF (validate file magic / size; reject HTML stubs).

Unpaywall

curl -sL "https://api.unpaywall.org/v2/${DOI}?email=${RESEARCHSKILLS_MAILTO}" \
  | python3 -c "import sys,json; d=json.load(sys.stdin); print((d.get('best_oa_location') or {}).get('url_for_pdf') or '')"

Zotero native

If the parent item is in Zotero, prefer Zotero's Find Available PDF, or a local zotero_first PDF mode when a batch engine plugin is present. Otherwise use zotero skill + manual attach.

Institutional / Sci-Hub

Documented as optional. Detect CLI on PATH. If missing, skip the mode and continue. For institutional SSO: open the library login in the agent browser and ask the user only to sign in — agents harvest session tokens; never ask users to paste DevTools JavaScript.

Browser HITL

Use when HTTP clients get HTML interstitial pages. Prefer Cursor/agent browser; save PDF to the path the user named.

Exit criteria

Report: mode used, output path or Zotero attachment status, or explicit pdf_unavailable without aborting the caller.

Composes with

  • discover-papers — candidates often include oa_url
  • zotero — attach or locate existing PDFs (MCP or local scripts)
  • optional local batch engine — PDF-on-accept modes when installed

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.