paper-fetch은(는) 무엇을 하나요?
DOI → PDF 해석기로 7가지 소스에서 폴백(fallback)하며 동작합니다. (Unpaywall, S2, arXiv, PMC, bioRxiv, 출판사, Sci-Hub). 다중 에이전트, 무의존성(zero-deps) Python.
기능
- DOI 입력 → PDF 경로/바이트 반환
- 7가지 폴백 체인: 소스가 실패하면 자동으로 다음 소스 시도
-
- Unpaywall (공개 접근)
-
- Semantic Scholar (S2)
-
- arXiv
-
- PubMed Central (PMC)
-
- bioRxiv
-
- 출판사 직접 링크
-
- Sci-Hub (최후의 수단)
-
- 무의존성(zero deps): 표준 라이브러리만 사용 (
urllib,json,re등) - 멀티 에이전트 친화적: 단일 함수 호출로 동작
사용 방법
Python 스크립트로 직접 실행
python fetch.py 10.1234/example-doi
에이전트 규칙 (CLAUDE.md / CURSOR.md 등)
## 논문 PDF 가져오기
`/path/to/fetch.py <DOI>` 를 실행하여 PDF를 가져옵니다.
함수 호출 예시
from fetch import resolve_pdf
pdf_data = resolve_pdf("10.1234/example-doi")
if pdf_data:
with open("paper.pdf", "wb") as f:
f.write(pdf_data)
구성
fetch.py— 메인 진입점sources/— 각 소스별 구현unpaywall.pysemantic_scholar.pyarxiv.pypmc.pybiorxiv.pypublisher.pyscihub.py
config.py— 환경 변수 및 설정 (선택 사항)
환경 변수
| 변수 | 설명 | 필수 여부 |
|---|---|---|
UNPAYWALL_EMAIL | Unpaywall API 사용자 이메일 | 아니오 |
S2_API_KEY | Semantic Scholar API 키 | 아니오 |
SCIHUB_BASE_URL | Sci-Hub 인스턴스 URL (기본값: https://sci-hub.se) | 아니오 |
라이선스
MIT
참고
- 모든 소스가 실패하면
None을 반환합니다. - Sci-Hub 사용 시 해당 국가의 법률을 준수하십시오.
- 각 API의 이용 약관을 확인하세요.