파트(주제)별로 '꼭 봐야 하는' 고인용 랜드마크 논문을 정리해 content/papers/에 Markdown 카드로 저장하고 홈페이지 번들을 재생성한다. 최신 논문(scrape-papers)과 짝을 이루는 impact 축. "랜드마크 논문", "꼭 봐야 하는 논문", "고인용 논문 정리", "필독 논문", "많이 인용된 논문" 요청에 트리거.
Install
npx skillscat add ehdbddl06001-ui/my-github-test/landmark-papers Install via the SkillsCat registry.
랜드마크(고인용) 논문 정리 절차
scrape-papers(최신 연구, recency)와 짝을 이루는 반대편 축이다. 이 스킬은 파트별로
**반드시 읽어야 할 고인용 논문(impact)**을 인용수로 랭킹해 정리한다.
결정론적 작업(후보수집·인용집계·랭킹·ID발급·중복판정)은 파이썬
(pipelines/scrape_landmark_papers.py)이 담당한다. LLM이 '이게 유명한 논문'이라고
기억으로 고르지 않는다 — 숫자(인용)로 고른다. 이 스킬은 그 파이프라인을 올바른
순서로 호출하는 얇은 래퍼다.
순서
- 누가 랭킹에 오르는지 미리보기(선택, 저장 안 함)
python pipelines/scrape_landmark_papers.py --dry-run # 특정 주제만: --topic Cardiology - 랭킹 → 상위 카드 저장 (편수·하한선·연도는 인자로 조정)
python pipelines/scrape_landmark_papers.py --target-ratio 0.5 --max-run 60 # 하한선/풀 조정: --min-citations 1000 --pool 400 최근 것만: --since-year 2010 # 설계 편향 끄기: --no-evidence-filter- 인용지표는 NIH iCite(무료, 키 불필요)에서 가져온다: 총 피인용수 + RCR(분야
정규화 인용지표, 1.0=평균) + NIH 백분위. 인용수 우선, RCR로 tie-break. --target-ratio가 핵심이다. '주당 몇 편'을 고정하면 매일 도는 최신 스크랩
(주제당 1편/일)에 밀려 논문 탭이 영영 최신 일색이 된다. 그래서 저장된 코퍼스의
현재 비율에서 부족분을 역산해 그만큼만 채운다(자기 균형).--max-run은
한 실행 상한(폭주 방지).- 중복은 저장된
content/papers/**frontmatter의pmid스캔으로 판별한다
(state.paper_seen). 상태 파일은 content 파생물이라 커밋하지 않는다. - id는
state.next_id('paper')로만 발급된다. 카드 파일명에_landmark_가 붙는다. - 저장은 주제 라운드로빈 — 한 주제가 예산을 독식하지 않는다.
- 인용지표는 NIH iCite(무료, 키 불필요)에서 가져온다: 총 피인용수 + RCR(분야
- 검증 + 색인
python pipelines/indexer.py --check # 실패하면 멈추고 원인 보고 python pipelines/indexer.py - 홈페이지 번들 재생성 (피드에 ⭐ 랜드마크 배지·인용순 정렬이 뜨게 하려면 필수)
python pipelines/export_papers_web.py # content/papers/**/*.md → docs/papers.js - 커밋 — 새
content/papers/**+docs/papers.js를 같은 커밋에 포함해 push.
상태 파일(seen_papers.json등)은 content 파생물이라 커밋 대상이 아니다.
지표 장애는 실패로 드러낸다
iCite 지표가 비었는데 citations: 0 으로 채우면 장애가 「후보 없음」이라는 정상 메시지로 위장된다. 그래서:
- 인용/RCR/백분위는 알려진 필드 별칭을 훑어 읽고, 못 읽으면
None(0 아님)로 둔다. coverage()가 지표 확보 편수를 세고, 전 주제에서 0이면exit 1— CI가 빨개진다.- '지표 장애'와 '하한 미달'을 로그에서 구분한다(하한 미달일 땐 최고 인용수도 찍는다).
- 응답 형식이 또 바뀐 것 같으면
--debug-icite로 원본 첫 행·키를 덤프해 확인한다. - 회귀 테스트:
python pipelines/test_landmark.py(CI가 매 실행 앞단에서 돌린다).
카드는 무엇을 담나
스크랩 카드와 같은 골격 + 인용 메타(landmark: true, citations, rcr,nih_percentile)와 ## Why must-read 섹션(선정 근거 한 줄). 사실 메타 + 초록 +
인용지표까지만 담고 confidence: medium. 임상적 해석(Summary/Clinical Impact/My
Ideas)은 이후 /gen-paper로 사람·LLM이 검수해 채운다.
주제 늘리기 / 후보 편향
- 주제는
scrape_papers.py의TOPICS를 그대로 공유한다(한 곳에서 관리). - 기본적으로 RCT·메타분석·체계적 문헌고찰·가이드라인·리뷰로 후보 풀을 편향시킨다
(EVIDENCE_FILTER). 끄려면--no-evidence-filter.
자동화
- 매주는
.github/workflows/landmark-papers.yml(cron)이 위 2~5단계를 대신 돌린다.
인용수는 매일 바뀌지 않으므로 최신 스크랩(매일)과 달리 주간 주기가 적절하다.
최신 vs 랜드마크 (논문 탭은 50:50을 지향한다)
- 최신(
scrape-papers): 최근 N일 새 논문,sort=date,tags: [scraped, pubmed]. 매일. - 랜드마크(이 스킬): 파트별 고인용, 인용 랭킹,
tags: [landmark, highly-cited, pubmed]. 주간. - 목표 비중은
--target-ratio 0.5로 강제한다. 홈페이지 논문 탭에서 ⭐ 배지·
'랜드마크만' 필터·인용순 정렬로 두 축을 갈라 볼 수 있다(docs/papers-app.js). - 공급은 유한하다: 인용 1000회 이상 논문은 주제당 수십~수백 편뿐이라, 매일 늘어나는
최신 스크랩을 영원히 따라갈 수 없다. 부족분이 줄지 않으면--min-citations를
낮추거나(예: 1000→500) 최신 스크랩 편수를 줄여 균형을 맞춘다.