🧬 연구 허브

Skill

bibliography-fetcher 코드 참조

PubMed My Bibliography 에서 논문 목록과 상세를 모은다.

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)

핵심 기능

  1. URL 유효성 검증 - ncbi.nlm.nih.gov/myncbi/{USER_ID}/bibliography/public/ 형식 확인
  2. PMID 자동 추출 - HTML에서 /pubmed/{PMID}/ 패턴 매칭
  3. 페이지네이션 처리 - "Page X of Y" 또는 ?page=N 링크에서 총 페이지 수 파악
  4. PubMed efetch API 연동 - PMID 목록을 배치(200개씩)로 상세 정보 조회
  5. SSL 우회 - 기관 네트워크의 SSL 프록시/방화벽 대응

수집되는 논문 정보

필드설명
pmidPubMed ID
title논문 제목
authors저자 목록 (이름, 소속, ORCID, 교신저자 여부)
journal저널명 (약어)
journalInfo저널 상세 (ISSN, eISSN, 정식명)
year출판년도
publicationInfo출판 정보 (volume, issue, pages)
doiDOI
abstract초록 (구조화된 초록 지원)
keywords키워드
meshTermsMeSH 용어
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.tsPMID 추출, URL 검증
API 라우트src/app/api/papers/bibliography/fetch/route.tsPubMed efetch 연동
Skill 정의이 문서

업데이트 이력

  • 2026-02: 스킬 등록