paper-fetch は何をしますか?
DOI → PDFリゾルバ(7つのフォールバックソース:Unpaywall、S2、arXiv、PMC、bioRxiv、出版社、Sci-Hub)。マルチエージェント、ゼロ依存Python。
概要
paper-fetchは、学術論文のDOIからPDFを取得するための軽量なPythonスクリプトです。7つの異なるソースを順番に試行することで、高い成功率を実現します。AIエージェントによる自動化に最適化されており、外部ライブラリのインストールは不要です。
特徴
- 7つのフォールバックソース: Unpaywall、Semantic Scholar、arXiv、PubMed Central、bioRxiv、出版社、Sci-Hub
- マルチエージェント対応: Claude Code、Cursor、CodexなどのAIエージェントと連携可能
- ゼロ依存: 標準ライブラリのみで動作(Python 3.7+)
- シンプルなインターフェース: コマンドラインまたはPythonモジュールとして使用可能
インストール
git clone https://github.com/Agents365-ai/paper-fetch.git
cd paper-fetch
使用方法
コマンドライン
python fetch.py <DOI>
例:
python fetch.py 10.1038/nature12373
Pythonモジュールとして
from fetch import resolve_doi
pdf_path = resolve_doi("10.1038/nature12373")
if pdf_path:
print(f"PDF saved at: {pdf_path}")
else:
print("PDF not found")
ソースの優先順位
- Unpaywall: 最も信頼性の高いオープンアクセスソース
- Semantic Scholar: 学術検索エンジン
- arXiv: プレプリントリポジトリ
- PubMed Central: 生命科学・医学文献
- bioRxiv: 生物学プレプリント
- 出版社: DOIの公式発行元
- Sci-Hub: 最終手段のフォールバック
設定
環境変数または設定ファイルで動作をカスタマイズできます。
| 変数 | 説明 | デフォルト |
|---|---|---|
UNPAYWALL_EMAIL | Unpaywall APIのメールアドレス | なし(匿名アクセス) |
S2_API_KEY | Semantic Scholar APIキー | なし |
OUTPUT_DIR | PDFの出力ディレクトリ | ./pdfs |
TIMEOUT | 各リクエストのタイムアウト(秒) | 30 |
アーキテクチャ
入力: DOI
↓
Try 1: Unpaywall → 成功 → PDF出力
↓ (失敗)
Try 2: Semantic Scholar → 成功 → PDF出力
↓ (失敗)
...
Try 7: Sci-Hub → 成功 → PDF出力
↓ (全て失敗)
エラー: 見つかりませんでした
開発
# テストの実行
python -m unittest tests/*.py
ライセンス
MIT License