소스 트리아지
후보 소스를 찾은 후, 분석 전에 각 소스에 대해 네 가지 질문에 답합니다:
- 법적으로 자유로운가? (접근성)
- AI 에이전트로서 실제로 읽을 수 있는가, 어떤 경로로? (도달 가능성)
- 실제이며, 최신이고, 철회되지 않았는가? (무결성)
- 얼마나 좋고 핵심적인가? (등급, 역할, ⭐ 컨텍스트 선택)
출력은 **원장(ledger)**입니다. research-plan이 이를 기반으로 구축되고, evidence-check가 이를 감사하며, 사용자가 단독으로 사용할 수 있습니다('이 중 어떤 것을 읽을 수 있나요, 어떤 것을 제가 다운로드해야 하나요?'). 모든 분야와 논문이 아닌 소스에 대해 작동합니다.
핵심 진실 (어렵게 얻은 교훈; 다시 배우지 마십시오)
- 접근성은 논문별이 아니라 경로별입니다. OA 논문이 발행사 사이트에서는 차단되고 API를 통해 읽을 수 있으며, 그 반대의 경우도 있습니다. 작동한 경로를 기록하십시오.
- HTTP 200은 거짓말합니다. CAPTCHA 페이지, 로그인 장벽, JS 셸, 빈 본문 XML, 그리고 성공을 보고하지만 빈 텍스트를 반환하는 도구는 모두 성공처럼 보입니다. 받은 것을 확인하십시오.
- WebFetch는 모델의 추출 결과를 반환하며, 페이지 자체가 아닙니다. 읽기와 메타데이터에는 좋지만, 절대 축어적 인용의 출처가 될 수 없습니다. 축어적 텍스트는 원시 경로에서만 제공됩니다: 셸(
curl)로 가져온 API XML/JSON, 다운로드한 PDF, 또는 사용자가 제공한 파일. - 차단됨 ≠ 없음. 사용자를 차단하는 페이지는 소스를
unchecked로 남기고, 절대not_found로 남기지 않습니다. 다운된 API는 신호를 생략하고, 절대false를 기록하지 않습니다. - 브론즈(bronze) ≠ 읽을 수 있음. 테스트하십시오.
- 절대 우회하지 마십시오. 섀도 라이브러리, 미러, 캐시, 로봇/CAPTCHA 우회 스크래핑, 또는 대량 수집을 금지합니다.
- 절대 기억에서 소스 이름을 짓지 마십시오. 시험에서 두 모델의 초안 참조 모두 잘못된 제목, 잘못된 연도, 잘못된 DOI, 그리고 존재하지 않는 논문 하나를 포함했습니다. 모든 소스는 나타나기 전에 조회됩니다.
진행하면서 작성 (체크포인트)
시작 시 research/<slug>/ledger.md를 생성하십시오. 모든 검색 후 검색 로그에 쿼리 라인을 추가하십시오. 소스를 분류한 후 즉시 해당 행을 추가하십시오. 긴 실행은 컨텍스트를 잃습니다; 디스크의 원장이 기억입니다.
단계 0 — 프레이밍 (한 메시지로, 그런 다음 진행)
한 줄로 명시: 질문 · 분야 · 연도 범위(기본: 최근 10~15년 + 중요한 오래된 작업; "최근" = 5년) · 범위 내 소스 유형 · 요청의 하드 제약(예: "루브릭에 2개의 책 장(chapter) 필요") · 깊이:
빠른(quick): 8~15개 소스 유지. 스노우볼링은 선택 사항입니다(최상위 리뷰에서 한 번의 정방향 스노우볼). 상한 초과 기록은not carried forward (cap)으로 기록됩니다: 계산되지만, 제외 이유는 필요 없습니다.깊은(deep): 25개 이상 유지, 3~5개의 가장 핵심적인 작업으로부터 역방향 및 정방향 스노우볼.
수정되지 않으면 진행하십시오. 사용자가 "check with me" / "step by step"이라고 말한 경우 ◆에서 멈추십시오. 그렇지 않으면 끝까지 바로 실행하고 마지막에 선택 사항을 나열하십시오.
단계 1 — 먼저 도서관 확인
사용자가 이미 보유한 것을 확인하십시오: 연결된 PDF 폴더, 이전 research/*/ 원장, .bib 또는 Zotero/CSL 내보내기. 소유 소스는 held: library입니다. 해당 DOI를 검색에 "already have"로 전달하십시오.
단계 2 — 발견
용어 집합 개념별로, OR로 연결: 동의어, 약어, 구식 이름, 영국/미국 철자, 방법 이름. 생명 과학의 경우 MeSH + 항목 용어, 유전자 기호, 효소 이름 + EC 번호, 라틴어 + 일반 유기체 이름을 추가하십시오. 저자가 아니라 방법으로 쿼리하십시오. 쿼리당 2~3개의 개념 그룹을 사용하십시오; 더 많은 AND는 0건의 결과를 반환합니다.
| 필요 | 기본 | 또한 |
|---|---|---|
| 생물의학 / 생명 과학 | PubMed (MeSH) | Europe PMC REST (SRC:"PPR"는 bioRxiv/medRxiv 프리프린트를 찾습니다; HAS_FT:y = 전문(full text) 이용 가능), OpenAlex |
| 모든 분야, 광범위 | OpenAlex (주제/개념 필터가 원시 검색보다 나음) | Semantic Scholar, Crossref |
| CS / ML / 물리 / 양자-생물 | arXiv (관련성 순 정렬) | Semantic Scholar, alphaXiv / Scholar Feed |
| 프리프린트 | Europe PMC SRC:"PPR" 또는 OpenAlex type:preprint | bioRxiv 커넥터에는 키워드 검색이 없습니다: 알려진 DOI의 세부 정보와 게시된 버전에만 사용하십시오 |
| 책 장(chapter) | OpenAlex type:book-chapter, 발행사 카탈로그, WebSearch | 컨테이너 확인(단계 4 참조) |
| 주장 / 리뷰 빠르게 | Consensus, Elicit (연결된 경우) | DOI로 모든 적중 확인 |
| 비-논문 | 소유자의 공식 문서/사양/코드 우선 | 나머지 WebSearch |
- 민감도 확인: 키 논문이 알려져 있다면, 쿼리가 해당 논문을 찾는지 확인하십시오.
- 적중 수: 수만 건의 적중은 너무 광범위함을 의미합니다; 0~1건은 너무 제약적임을 의미하므로 다시 작성하십시오. 0건 적중 쿼리를 다시 작성하는 것은 동일한 라운드의 일부입니다.
- 기록: 제목, 저자, 연도, 발행지, 유형, DOI · PMID · PMCID · arXiv · URL,
found_via. - 중복 제거: DOI → 기타 ID → 정규화된 제목 + 연도. 프리프린트 + 게시된 버전 병합.
- 제한: ~1,000개 레코드 또는 ~50회 호출 전에 문의하십시오.
◆ 체크포인트: 용어, 쿼리, 적중 수.
단계 3 — 접근성 트리아지 (읽기 전)
3a. 법적 접근성 (일괄 처리)
유지된 각 소스에 대해 OpenAlex get_work를 호출하십시오(검색 결과는 라이선스를 생략합니다). 해당 oa_status 값을 정확히 복사하십시오: gold · diamond · hybrid · green · bronze · closed. 또한 license 및 oa_url/pdf_url을 기록하십시오. Europe PMC license 필드와 PubMed get_copyright_status는 대체 수단입니다. Unpaywall(version, host_type)은 실제 이메일이 필요합니다: 사용자가 승인한 것만 사용하고, 그렇지 않으면 건너뛰십시오.
- 데이터 없음 →
unknown. 절대oa,?접미사 또는 발행사 이름을 접근성 값으로 만들어내지 마십시오. - 비-논문 소스 →
web. - 라이선스 알 수 없음 → 재배포에 대해
local-only로 취급하십시오.
3b. 에이전트 도달 가능성: 경로 사다리 (첫 번째 성공에서 중단)
- 보유(Held): 사용자의 라이브러리 또는 이전 실행.
- Europe PMC REST, 원시, 셸
curl을 통해 (셸이 접근 가능한 경우):- 검색:
…/rest/search?query=DOI:"a" OR DOI:"b"&format=json, 호출당 ≤8개 DOI, ≥1초 간격; - 전문(full text):
…/rest/{PMCID}/fullTextXML. 이것이 최상의 축어적 경로입니다. 셸이 접근할 수 없는 경우에만 WebFetch를 사용하십시오; WebFetch는 긴 URL을 거부하고 속도 제한이 있습니다. - 429 → 대기, 한 번 재시도. 5xx →
blocked:http-5xx, 다음 경로로 이동.
- 검색:
- PubMed
get_full_text_article:full_text가 비어 있지 않은 경우에만 유효합니다. 비어 있음 →blocked:empty-body. - 프리프린트 서버: arXiv, bioRxiv/medRxiv
.full페이지. - OA 위치: OpenAlex
oa_url/pdf_url(직접 PDF URL은 기사 페이지가 실패할 때 작동할 수 있음), Semantic ScholaropenAccessPdf, CORE, Crossref TDM 링크. - 발행사 페이지: 호스트당 한 번 시도. DOI 리디렉션을 따르는 것이 해당 시도입니다. 로봇이 금지된 호스트(ScienceDirect / Elsevier linkinghub)로 절대 들어가지 마십시오.
- 저자 또는 기관 저장소 WebSearch
"<정확한 제목>" pdf를 통해. "no text-and-data-mining / AI use" 알림을 존중하십시오. - 아무것도 작동하지 않음: 이유를 기록하고 소스를 사용자에게 라우팅하십시오.
2026-10 관찰 (재테스트; 변경될 수 있음):
- 원시 OK: curl을 통한 Europe PMC REST.
- 추출 OK: Nature OA, Frontiers, MDPI, bioRxiv
.full, arXiv, Springer OpenAlex의 PDF URL. - 차단됨: ScienceDirect (로봇), Wiley (OA 포함, 가져오기 오류), Springer 기사 페이지, BMC PDF 엔드포인트, PMC 웹사이트 (CAPTCHA), Annual Reviews, Science.
- 신뢰할 수 없음: PubMed 전문 도구(종종 비어 있음), Europe PMC fullTextXML (일부 PMCID에 대해 HTTP 500), WebFetch를 통한 Europe PMC (속도 제한).
읽을 수 있다고 부르기 전에 검증하십시오:
- 초록을 넘어선 본문 텍스트;
- CAPTCHA / 로그인 / 접근 거부 페이지가 아님;
- 비어 있거나 메타데이터 전용 XML이 아님.
- 다운로드된 파일은
%PDF-로 시작하고, HTML이 아니며, 약 10KB를 초과하는 경우에만 유효합니다.
| 도달 가능성 | 의미 |
|---|---|
readable:<route> | 전문 획득: readable:europepmc-xml (원시) · readable:pdf (원시) · readable:webfetch (추출, 축어적 불가) |
abstract-only | 초록만 획득 가능 (일반적인 페이월) |
blocked:<reason> | paywall (초록조차 없음) · robots · captcha · login · http-4xx · http-5xx · fetch-error · rate-limited · empty-body · js-shell |
unchecked | 시도되지 않음 (예산/상한). 절대 "not tested"라고 쓰지 마십시오. |
레이블 규칙: 제어 단어가 먼저 오며, 정확히 이 테이블에 있는 대로입니다. 괄호 안에 메모가 따를 수 있습니다(예: verified (Crossref DOI)).
소스를 blocked 또는 abstract-only로 레이블하기 전에 녹색 사본을 찾으십시오. 법적으로 gold/hybrid/green/bronze이지만 사용자에게 blocked인 소스는 "free but blocked for AI" 섹션에 들어갑니다.
단계 4 — 무결성 (일괄 처리; 이름을 지정하기 전)
이름을 지정할 모든 소스(계획, ⭐, 또는 추천)에 대해 발견 직후 바로 실행하십시오. 최종 단계가 아닙니다.
- 존재: 판정
verified·partial·mismatch·not_found·unchecked. Reference Checkercheck_references+ OpenAlexresolve_references를 사용하십시오. 도구가 일치하지 않을 때, Crossref 또는 OpenAlex의 정확한 DOI 일치는 제목 검색not_found보다 우선합니다. 둘 다 기록하십시오. - 책 장(chapter): 컨테이너를 확인하십시오. DOI뿐만 아니라: Crossref 기록(
api.crossref.org/works/<doi>→container-title,page)에서 책 제목, 편집자, 페이지 및 발행사를 확인하십시오. 시험에서 DOI는 정확했지만 책 제목이 잘못된 경우가 있었습니다. - 철회(Retraction):
check_retractions를 사용하십시오. Clear는 "notice not found"만 의미합니다. - 동료 검토(Peer review): 프리프린트에 레이블을 지정하십시오(원장에
peer: preprint; 소스 파일 항목에`preprint`); 게시된 버전이 있으면 인용하십시오. - 오염(Contamination): 2개 이상의 인덱스에서 일치하지 않는 2024+ 프리프린트는 위조 위험이 있습니다. 재확인하거나 삭제하십시오.
- 약탈적 발행지(Predatory venue) 플래그; 회색 문헌(Grey literature): URL + 접근 날짜 + Wayback 링크.
단계 5 — 등급, 역할, ⭐
등급 A–F: 자체 분야 적합성, 방법론, 동료 검토, 최신성, 데이터, 이해 충돌의 중앙값. 무결성 실패는 등급을 D로 제한합니다. 읽지 않았거나 초록 전용 소스는 잠정 등급(B?)을 받습니다.
역할: evidence · background · method · tool/data · counter.
비-논문 계층: T1 소유자 문서/사양/코드/법령 · T2 기관 · T3 전문 저널리즘 · T4 커뮤니티 · T5 벤더 마케팅.
⭐ 컨텍스트 팩 (5~10개 선택): 로컬에 저장한다면 구축 중인 것에 가장 큰 개선을 가져올 소스. 접근성은 관련 없음. 각 선택에는 다음이 필요합니다:
- 중요한 이유;
- 획득 방법 (OA 링크 / VIT 도서관 로그인 / 상호대차 / 저자에게 이메일);
- 저장 이름
<firstauthor>-<year>-<keyword>.pdf; - 재배포:
ok(CC-BY / CC0 / 퍼블릭 도메인) 또는local-only(기타 모든 것, 알 수 없는 라이선스 포함).
편향 확인(Skew check): 한 차원에서 알려진 값의 ≥70% → 개수와 함께 언급하십시오.
단계 6 — 원장
research/<slug>/ledger.md: 첫 번째 표, 소스당 한 행, 열 순서는 다음과 같습니다:
# · Short cite · Type · Role · Grade · access · licence · version · reach · held · read · integrity · retraction · peer · ⭐ · Save as · Link · found_via
read는not-read로 시작합니다;research-plan이full·sections:<which>·abstract·metadata를 채웁니다.⭐= 선택의 경우ok또는local-only, 그 외의 경우-.- 제외된 행은
E1…ID를 사용합니다.
표 아래:
- 검색 로그: 데이터베이스 · 날짜 · 쿼리 · 적중 수 · 어떤 용어가 무엇을 찾았는지.
- 개수: 식별됨 → 중복 제거 후 → 전달되지 않음 (상한) → 유지됨 → 제외됨 (이유 포함). 개수 라인의
total= 제외된 행을 포함한 모든 원장 행.
번들된 검사기 python3 <이 스킬 폴더>/scripts/research_checks.py ledger research/<slug>/ledger.md를 실행하고(표준 라이브러리 Python, 자체 샌드박스에서 실행) 넘기기 전에 오류를 수정하십시오. 단독으로 사용되는 경우, research-plan에 설명된 대로 원장을 소스 파일로 렌더링하십시오.
개인정보 보호
사용자의 미발표 작업의 문장이 아닌 주제 단어로만 검색하십시오. 사용자의 이메일은 Unpaywall에만 전송되며, 사용자의 동의가 있을 때만 전송됩니다.