PubMed My Bibliography 공개 URL에서 논문 PMID를 추출하고, PubMed efetch API로 상세 정보를 가져옵니다. 페이지네이션을 자동 처리하여 전체 논문 목록을 수집합니다.
사용법
1. API 엔드포인트 사용 (웹 앱 내)
POST /api/papers/bibliography/fetch
Content-Type: application/json
{
"url": "https://www.ncbi.nlm.nih.gov/myncbi/{USER_ID}/bibliography/public/"
}응답:
{
"papers": [...],
"totalPages": 5,
"totalPapers": 120,
"nonPubmedCount": 3
}2. TypeScript 유틸리티 직접 사용
import {
validateBibliographyUrl,
extractPmidsFromHtml,
getTotalPages,
getBibliographyPageUrl,
extractTotalPaperCount
} from "@/lib/bibliography-parser"
// URL 유효성 검증
const validation = validateBibliographyUrl(url)
if (!validation.valid) {
console.error(validation.error)
}
// HTML에서 PMID 추출
const pmids = extractPmidsFromHtml(htmlContent)
// 총 페이지 수 확인
const totalPages = getTotalPages(htmlContent)
// 특정 페이지 URL 생성
const pageUrl = getBibliographyPageUrl(baseUrl, 3)핵심 기능
- URL 유효성 검증 -
ncbi.nlm.nih.gov/myncbi/{USER_ID}/bibliography/public/형식 확인 - PMID 자동 추출 - HTML에서
/pubmed/{PMID}/패턴 매칭 - 페이지네이션 처리 - "Page X of Y" 또는
?page=N링크에서 총 페이지 수 파악 - PubMed efetch API 연동 - PMID 목록을 배치(200개씩)로 상세 정보 조회
- SSL 우회 - 기관 네트워크의 SSL 프록시/방화벽 대응
수집되는 논문 정보
| 필드 | 설명 |
|---|---|
pmid | PubMed ID |
title | 논문 제목 |
authors | 저자 목록 (이름, 소속, ORCID, 교신저자 여부) |
journal | 저널명 (약어) |
journalInfo | 저널 상세 (ISSN, eISSN, 정식명) |
year | 출판년도 |
publicationInfo | 출판 정보 (volume, issue, pages) |
doi | DOI |
abstract | 초록 (구조화된 초록 지원) |
keywords | 키워드 |
meshTerms | MeSH 용어 |
publicationType | 논문 유형 (Journal Article 등) |
Rate Limiting
- 페이지 간 500ms 간격
- PubMed efetch 배치 간 300ms 간격
- 배치 크기: 200개 PMID
트러블슈팅
1. 403 Forbidden
원인: 비공개 Bibliography 해결: 공개 URL 사용 확인 (/bibliography/public/ 경로)
2. SSL 인증서 오류
원인: 기관 네트워크의 SSL 프록시 해결: 내부적으로 rejectUnauthorized: false 설정됨
3. PMID가 0개
원인: Bibliography에 PubMed 등록되지 않은 논문만 있거나, HTML 구조 변경 해결: nonPubmedCount로 비PubMed 논문 수 확인
4. XML 파싱 실패
원인: PubMed efetch API 응답 형식 변경 해결: 정규식 기반 파싱이므로 태그 구조 변경에 민감할 수 있음
관련 파일
| 파일 | 경로 | 설명 |
|---|---|---|
| 파서 유틸리티 | src/lib/bibliography-parser.ts | PMID 추출, URL 검증 |
| API 라우트 | src/app/api/papers/bibliography/fetch/route.ts | PubMed efetch 연동 |
| Skill 정의 | 이 문서 |
업데이트 이력
- 2026-02: 스킬 등록