Finding Open Access Papers について
Finding Open Access Papersは、Unpaywallを使って論文の合法的なオープンアクセス版を探す研究向けスキルです。出版社のページがペイウォールで全文が必要な場合に、公開版、受理原稿、プレプリントを区別して候補を提示します。
主な機能
- 01DOIによるオープンアクセス状況の確認
- 02推奨版とPDF URLの取得
- 03複数の公開先の一覧表示
- 04公開版、受理原稿、投稿原稿の識別
- 05エラー処理とリクエストのキャッシュ
活用シーン
- 01論文のDOI先がペイウォールの場合に全文を探す
- 02PubMed Centralに全文がない場合に公開版を探す
- 03関連性の高い論文の入手可能なPDFを探す
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kthorn/ research-superpower --skill finding-open-access-papersインストール後、Claude Code で/finding-open-access-papersを入力して読み込まれたか確認します。
詳細
オープンアクセス論文を探す
概要
Unpaywall を使って、ペイウォールの向こうにある論文の、合法的に利用できるオープンアクセス版を探します。
基本原則: ペイウォールのある論文の多くには、無料版(プレプリント、著者原稿、機関リポジトリ)があります。Unpaywall はそれらを見つけます。
使用するタイミング
以下の場合にこのスキルを使用します:
- DOI の解決先がペイウォールになっている
- 論文が PubMed Central で入手できない
- 出版社のサイトで購読が必要
- 関連性の高い論文(スコア ≥7)の全文が必要
全文へのアクセスを諦める前に使用してください
Unpaywall API
シンプルな REST API です。通常の利用であれば認証は不要です
基本リクエスト
curl "https://api.unpaywall.org/v2/DOI?email=YOUR_EMAIL"
パラメーター:
DOI- 論文の DOI(必要に応じて URL エンコード)email- ユーザーのメールアドレス(必須。連絡および礼儀のため)
重要:調査セッションの開始時にユーザーのメールアドレスを尋ねてください。[email protected] や [email protected] のようなプレースホルダーのメールアドレスは使用しないでください。
例:
curl "https://api.unpaywall.org/v2/10.1038/[email protected]"
レスポンス形式
{
"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(ブール値)
true- オープンアクセス版が入手可能ですfalse- 無料版が見つかりません
best_oa_location(オブジェクトまたは null)
- Unpaywall が推奨する最適なオープンアクセスの提供元
- プレプリントより出版済みの版を優先します
- 利用可能な場合は PDF の URL が含まれます
oa_locations(配列)
- 既知のすべてのオープンアクセス提供先
- リポジトリ、プレプリントサーバー、機関サイトが含まれます
- 品質/版の順に並んでいます
version の種類:
publishedVersion- 最終出版版(最適)acceptedVersion- 著者の受理済み原稿(良好)submittedVersion- 査読前のプレプリント(有用)
実装パターン
1. ペイウォールに遭遇したら Unpaywall を確認
# 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/[email protected]"
2. 最適な URL を抽出
# 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
3. ユーザーに報告
OA が見つかった場合:
⚠️ 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...
OA が見つからなかった場合:
⚠️ 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
4. 版の種類に基づいて優先順位を付ける
複数の提供先がある場合:
優先順位:
- 出版社または PMC の
publishedVersion - 機関リポジトリの
acceptedVersion - プレプリントサーバー(arXiv、bioRxiv)の
submittedVersion
evaluating-paper-relevance との統合
全文取得ワークフローに追加:
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)
更新後のワークフロー:
# 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
レート制限
無料プラン(メールアドレスあり):
- 1 日あたり 100,000 リクエスト
- 厳密なレート制限はありませんが、節度を守ってください
- リクエストにメールアドレスを含めてください(必須)
ベストプラクティス:
- リクエスト間に 100ms の間隔を空ける
- レスポンスをキャッシュする(同じ DOI を再確認しない)
- 実際に必要な論文のみを確認する
Python ヘルパーの例
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'):
return None, None, None
best_loc = data.get('best_oa_location')
if not best_loc:
return None, None, None
pdf_url = best_loc.get('url_for_pdf') or best_loc.get('url')
version = best_loc.get('version', 'unknown')
source = best_loc.get('host_type', 'unknown')
return pdf_url, version, source
except Exception as e:
print(f"Error checking Unpaywall for {doi}: {e}")
return None, None, None
# Usage
doi = "10.1038/nature12373"
pdf_url, version, source = find_open_access(doi, "[email protected]")
if pdf_url:
print(f"Found {version} at {source}")
print(f"PDF: {pdf_url}")
# Download PDF
response = requests.get(pdf_url)
with open(f'papers/{doi.replace("/", "_")}.pdf', 'wb') as f:
f.write(response.content)
else:
print("No open access version found")
time.sleep(0.1) # Rate limiting
よく見つかる提供元
リポジトリ:
- Europe PMC / PubMed Central
- 機関リポジトリ(大学のサイト)
- PubMed Central の国際ミラー
プレプリントサーバー:
- bioRxiv(生物学)
- medRxiv(医学)
- arXiv(物理学、CS、数学)
- ChemRxiv(化学)
出版社のサイト:
- オープンアクセスジャーナル
- ハイブリッドジャーナル(購読制ジャーナル内の OA 論文)
- 遅延オープンアクセス(エンバーゴ期間終了済み)
エラー処理
DOI が見つからない場合:
{
"error": "true",
"message": "DOI not found"
}
→ DOI の形式を確認し、別の識別子を試してください
ネットワークエラー:
- 指数バックオフで再試行する
- 最大 3 回まで試行する
- すべて失敗した場合はユーザーに報告する
不正な形式のレスポンス:
is_oaフィールドを確認するbest_oa_locationがない場合はoa_locations配列にフォールバックする
クイックリファレンス
| タスク | コマンド |
|---|---|
| OA が利用可能か確認 | curl "https://api.unpaywall.org/v2/DOI?email=EMAIL" |
| 最適な PDF URL を取得 | .best_oa_location.url_for_pdf を解析 |
| すべての OA 提供元を一覧表示 | .oa_locations[] を解析 |
| 版の種類を確認 | .version フィールドを確認 |
| PDF をダウンロード | curl -L -o paper.pdf "$pdf_url" |
統合ポイント
呼び出し元:
evaluating-paper-relevance- 全文が PMC にない場合answering-research-questions- 関連性の高い論文の場合
更新対象:
papers-reviewed.json- OA が見つかったかどうかを記録SUMMARY.md- OA の提供元情報を含める
よくある間違い
プレースホルダーのメールアドレスを使用する: [email protected] または [email protected] を使用する → ユーザーに実際のメールアドレスを尋ねてください
メールアドレスを含めない: 必須パラメーターです。リクエストは失敗します
すべての論文をチェックする: 必要な場合にのみチェックしてください(スコア ≥7、PMC がない場合)
バージョンの種類を無視する: プレプリントより出版済みバージョンのほうが優れています
単一のソースのみを確認する: 代替候補について oa_locations 配列を確認してください
レート制限を設けない: 厳格な制限がなくても、間隔を空けてください
成功基準
以下を満たすと成功です:
- ペイウォールで保護された論文の OA 版が見つかり、ダウンロードされている
- バージョンの種類(出版済み/採択済み/投稿済み)が記録されている
- ソースとバージョンについてユーザーに伝えられている
- OA 版を利用できない場合に、代替手段が提示されている
次のステップ
OA 版が見つかった後:
- PDF を papers/ フォルダーにダウンロードする
- SUMMARY.md にソースとバージョンを記録する
- 詳細な分析を続ける
- OA 版がない場合:概要のみに基づいて進めることを要約に記載する