kthorn/research-superpower/finding-open-access-papers
Claude Code and agent skill by kthorn/research-superpower
- community
Checking that the SKILL.md file is still in the repository.
Use Unpaywall API to find free full-text versions of paywalled papers
Install
npx vskill@latest install kthorn/research-superpower/finding-open-access-papersSKILL.md
The same SKILL.md was published earlier as drchronx/ai-agent-research-starter-kit/finding-open-access-papers.
Finding Open Access Papers
Overview
Use Unpaywall to find legally available open access versions of papers that appear to be behind paywalls.
Core principle: Many paywalled papers have free versions (preprints, author manuscripts, institutional repositories). Unpaywall finds them.
When to Use
Use this skill when:
- DOI resolution hits a paywall
- Paper not available in PubMed Central
- Publisher site requires subscription
- Need full text for highly relevant paper (score ≥7)
Use BEFORE giving up on full text access
Unpaywall API
Simple REST API - no authentication required for reasonable usage
Basic Request
Parameters:
DOI- The paper's DOI (URL-encoded if needed)email- User's email (required, for courtesy/contact)
IMPORTANT: Ask user for their email at the start of research session. Do NOT use placeholder emails like claude@anthropic.com or researcher@example.com.
Example:
Response Format
Key Response Fields
`is_oa` (boolean)
true- Open access version availablefalse- No free version found
`best_oa_location` (object or null)
- Unpaywall's recommended best open access source
- Prioritizes published versions over preprints
- Includes PDF URL when available
`oa_locations` (array)
- All known open access locations
- Includes repositories, preprint servers, institutional sites
- Ordered by quality/version
`version` types:
publishedVersion- Final published version (best)acceptedVersion- Author's accepted manuscript (good)submittedVersion- Preprint before peer review (useful)
Implementation Pattern
1. Check Unpaywall After Paywall Hit
2. Extract Best URL
3. Report to User
When OA found:
When no OA found:
4. Prioritize by Version
If multiple locations available:
Priority order:
publishedVersionfrom publisher or PMCacceptedVersionfrom institutional repositorysubmittedVersionfrom preprint server (arXiv, bioRxiv)
Integration with evaluating-paper-relevance
Add to full text fetching workflow:
Updated workflow:
Rate Limiting
Free tier (with email):
- 100,000 requests per day
- No hard rate limit, but be respectful
- Include email in requests (required)
Best practices:
- Add 100ms delay between requests
- Cache responses (don't re-check same DOI)
- Only check for papers you actually need
Python Helper Example
Common Sources Found
Repositories:
- Europe PMC / PubMed Central
- Institutional repositories (university sites)
- PubMed Central international mirrors
Preprint servers:
- bioRxiv (biology)
- medRxiv (medicine)
- arXiv (physics, CS, math)
- ChemRxiv (chemistry)
Publisher sites:
- Open access journals
- Hybrid journals (OA articles in subscription journals)
- Delayed open access (embargo expired)
Error Handling
DOI not found:
→ Check DOI format, try alternative identifiers
Network errors:
- Retry with exponential backoff
- Maximum 3 attempts
- Report to user if all fail
Malformed response:
- Check for
is_oafield - Fallback to
oa_locationsarray ifbest_oa_locationmissing
Quick Reference
| Task | Command | |
|---|---|---|
| Check if OA available | curl "https://api.unpaywall.org/v2/DOI?email=EMAIL" | |
| Get best PDF URL | Parse .best_oa_location.url_for_pdf | |
| List all OA sources | Parse .oa_locations[] | |
| Check version type | Look at .version field | |
| Download PDF | curl -L -o paper.pdf "$pdf_url" |
Integration Points
Called by:
evaluating-paper-relevance- When full text not in PMCanswering-research-questions- For highly relevant papers
Updates:
papers-reviewed.json- Note if OA foundSUMMARY.md- Include OA source info
Common Mistakes
Using placeholder email: Using claude@anthropic.com or researcher@example.com → Ask user for their real email Not including email: Required parameter, requests will fail Checking every paper: Only check when needed (score ≥7, no PMC) Ignoring version type: Published version better than preprint Single source only: Check oa_locations array for alternatives No rate limiting: Add delays even though no hard limit
Success Criteria
Successful when:
- Paywalled paper's OA version found and downloaded
- Version type recorded (published/accepted/submitted)
- User informed about source and version
- Fallback options provided if no OA available
Next Steps
After finding OA version:
- Download PDF to papers/ folder
- Note source and version in SUMMARY.md
- Continue with deep dive analysis
- If no OA: note in summary, continue with abstract only
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/research/finding-open-access-papers/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/kthorn/research-superpower/finding-open-access-papers)