pipeline
Classical end-to-end empirical analysis workflow in the traditional Python econometric stack — pandas + numpy + scipy + statsmodels + linearmodels + pyfixest +…
Use Unpaywall API to find free full-text versions of paywalled papers
$ npx -y skills add brycewang-stanford/Auto-Empirical-Research-Skills --skill finding-open-access-papers --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/finding-open-access-papersContext preview
The summary Claude sees to decide when to auto-load this skill.
Use Unpaywall API to find free full-text versions of paywalled papers
name: Finding Open Access Papers description: Use Unpaywall API to find free full-text versions of paywalled papers when_to_use: When paper behind paywall. When PMC full text not available. When DOI resolution hits paywall. When need free access to paper. Before giving up on full text access. version: 1.0.0
<!-- ╔══════════════════════════════════════════════════════════════╗ ║ 本文件为开源 Skill 原始文档,收录仅供学习与研究参考 ║ ║ CoPaper.AI 收集整理 | https://copaper.ai ║ ╚══════════════════════════════════════════════════════════════╝
来源仓库: https://github.com/kthorn/research-superpower 项目名称: research-superpower 开源协议: MIT License 收录日期: 2026-04-02
声明: 本文件版权归原作者所有。此处收录旨在为社会科学实证研究者 提供 AI Agent Skills 的集中参考。如有侵权,请联系删除。 -->
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.
Use this skill when:
**Use BEFORE giving up on full text access**
**Simple REST API - no authentication required for reasonable usage**
curl "https://api.unpaywall.org/v2/DOI?email=YOUR_EMAIL"
**Parameters:**
**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:**
curl "https://api.unpaywall.org/v2/10.1038/nature12373?email=user@example.com"
{
"doi": "10.1038/nature12373",
"title": "Paper Title",
"is_oa": true,
"best_oa_location": {
"url": "https://europepmc.org/articles/pmc3858213",
"url_for_pdf": "https://europepmc.org/articles/pmc3858213?pdf=render",
"version": "publishedVersion",
"license": "cc-by",
"host_type": "repository"
},
"oa_locations": [
{
"url": "https://europepmc.org/articles/pmc3858213",
"version": "publishedVersion"
},
{
"url": "https://arxiv.org/abs/1234.5678",
"version": "submittedVersion"
}
]
}**`is_oa`** (boolean)
**`best_oa_location`** (object or null)
**`oa_locations`** (array)
**`version`** types:
# Try DOI first curl -L "https://doi.org/10.1234/example.2023" # If paywall detected (403, subscription required, etc): curl "https://api.unpaywall.org/v2/10.1234/example.2023?email=your@email.com"
# Parse JSON response response=$(curl -s "https://api.unpaywall.org/v2/DOI?email=EMAIL") # Check if OA available is_oa=$(echo $response | jq -r '.is_oa') if [ "$is_oa" = "true" ]; then # Get best PDF URL pdf_url=$(echo $response | jq -r '.best_oa_location.url_for_pdf // .best_oa_location.url') # Download curl -L -o "papers/paper.pdf" "$pdf_url" fi
**When OA found:**
⚠️ Paper behind paywall at publisher ✓ Found open access version via Unpaywall! Source: Europe PMC (published version) PDF: https://europepmc.org/articles/pmc3858213?pdf=render → Downloading...
**When no OA found:**
⚠️ Paper behind paywall at publisher ✗ No open access version found via Unpaywall Options: - Request via institutional access - Contact authors for preprint - Continue with abstract only
If multiple locations available:
**Priority order:** 1. `publishedVersion` from publisher or PMC 2. `acceptedVersion` from institutional repository 3. `submittedVersion` from preprint server (arXiv, bioRxiv)
**Add to full text fetching workflow:**
Stage 2: Fetch Full Text Try in order: A. PubMed Central (free full text) B. DOI resolution → If paywall, try Unpaywall C. Unpaywall direct lookup D. Preprints (bioRxiv, arXiv)
**Updated workflow:**
# 1. Try PMC
pmc_result=$(curl "https://eutils.ncbi.nlm.nih.gov/...")
if has_pmc_fulltext; then
fetch_pmc
exit 0
fi
# 2. Try DOI
doi_result=$(curl -L "https://doi.org/$doi")
if is_paywall; then
# 3. Try Unpaywall
unpaywall_result=$(curl "https://api.unpaywall.org/v2/$doi?email=$EMAIL")
if has_oa; then
fetch_unpaywall_pdf
exit 0
fi
fi
# 4. No full text available
report_no_fulltext**Free tier (with email):**
**Best practices:**
import requests
import time
def find_open_access(doi, email):
"""
Find open access version via Unpaywall
Returns: (pdf_url, version, source) or (None, None, None)
"""
url = f"https://api.unpaywall.org/v2/{doi}"
params = {"email": email}
try:
response = requests.get(url, params=params, timeout=10)
response.raise_for_status()
data = response.json()
if not data.get('is_oa'):📌 文档结构(2026-07-22 起): 本文件是中文默认入口 —— banner + badges + 信任面 + 9 阶段流水线速览 + 76 行合集总表。 每个合集的完整描述、按用途分组、精确数字、验证方法在 docs/CONTENT_ZH.md(扩展正文,总表行内的 → 直接跳转到对应锚点)。 English version: README-en.md · 中文扩展正文:docs/CONTENT_ZH.md · README-zh-CN.md 已弃用(重定向占位) 🌐 语言: English |
Classical end-to-end empirical analysis workflow in the traditional Python econometric stack — pandas + numpy + scipy + statsmodels + linearmodels + pyfixest +…
Use when the user asks to run a full empirical / causal analysis in Python — by default in the style of an applied economics paper (AER / QJE / JPE / ReStud /…
Classical end-to-end empirical analysis workflow in the traditional Python econometric stack — pandas + numpy + scipy + statsmodels + linearmodels + pyfixest +…
Classical end-to-end empirical analysis workflow in the traditional Stata ecosystem — native Stata + reghdfe + ivreg2 + csdid + did_imputation +…
Classical end-to-end empirical analysis workflow in the modern tidyverse + econometrics R ecosystem — dplyr + tidyr + haven + fixest + sandwich + lmtest +…
Systematic writing framework for philosophy and interdisciplinary academic papers from optimized outline to submission-ready manuscript. Use when users want…