auto-paper-collecter (스킬)
코딩 에이전트 내에서 실행되는 자체 호스팅 연구 문헌 레이더입니다. Python 스크립트는 정해진 작업만 수행합니다 (API 호출, 중복 제거, 렌더링, 이메일). 이 스킬을 실행하는 어시스턴트(당신)가 모든 판단 작업을 수행합니다: 쿼리 확장, 전산학 관련성 필터링, 중국어 요약, 핫토픽 종합. 즉, AI API 키가 필요 없습니다 — 이 스킬을 실행하는 모델(Claude Code의 Claude, Codex의 GPT 등)이 곧 LLM입니다.
디렉터리 구조
skill/
├── SKILL.md
├── scripts/ common.py · fetch.py · render.py · notify.py (표준 라이브러리만 사용)
├── state/ config.json · (queries/candidates/curated/trends/seen .json)
└── digests/ YYYY-MM-DD.md + .html
스크립트는 scripts/ 디렉터리에서 실행합니다: cd skill/scripts && python3 <script>.py
설정 — state/config.json
keywords: 추적할 최대 3개의 주제 문자열.domain: 관련성을 제한할 분야 (기본값computer science).sources:arXiv / Crossref / Semantic Scholar / GitHub / HuggingFace / PapersWithCode / RSS중 선택.lookback_days: 조회할 과거 기간 (중복 제거가 반복을 방지함).max_per_source,rss_feeds.
사용자가 키워드/소스/분야를 변경하라고 하면 이 파일을 편집하고 변경 사항을 사용자에게 알려주세요.
선택적 환경 변수 (저장소에 저장되지 않음):
SEMANTIC_SCHOLAR_KEY(S2 속도 제한 해제),GITHUB_TOKEN(GitHub 제한 해제),SMTP_*/EMAIL_TO(이메일), 그리고 푸시 채널 —TELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID,SLACK_WEBHOOK_URL,WECHAT_WEBHOOK(企业微信群机器人) 또는SERVERCHAN_KEY(Server酱).
실행 파이프라인 — 순서대로 수행
1 · 설정 읽기 및 쿼리 확장 (당신)
state/config.json을 읽습니다. 각 키워드에 대해 2–3개의 연관된 영어 검색 쿼리를 생각합니다 — 동의어, 전체 형태, 인접 하위 주제 등 — 그래서 리콜이 리터럴 용어에 국한되지 않도록 합니다 (예: C2Rust → ["C2Rust", "C-to-Rust translation", "migrating legacy C code to Rust"]). 이를 state/queries.json에 {"<keyword>": ["q1", "q2", ...], ...} 형식으로 작성합니다.
2 · 후보 수집 (스크립트)
cd skill/scripts && python3 fetch.py
활성화된 모든 소스에서 쿼리를 가져오고, state/seen.json에 이미 있거나 lookback_days보다 오래된 항목을 제거한 후 state/candidates.json에 기록합니다. 0건의 후보가 보고되면 사용자에게 "暂无新文献" (새 문헌 없음)이라고 알리고 중단합니다 (더 할 일이 없음).
3 · 관련성 필터링 및 요약 (당신)
state/candidates.json을 읽습니다. 각 항목에 대해 다음을 판단합니다: (a) 전산학 관련이고 (b) topic 키워드와 진정으로 관련이 있는가? 나머지는 제거합니다 (의학 "translation", 금융 "AI", 임의 GitHub 스타 리스트 등). 유지된 각 항목에 대해 간결한 중국어 요약을 작성하고 state/curated.json을 구성합니다 — 객체 리스트:
{"source","topic","title","url","venue","authors","published",
"tldr":"핵심 한 문장 (<=60자)","method":"방법 요약 (<=80자)",
"contributions":["핵심 기여1","핵심 기여2"]}
논문을 먼저, GitHub 저장소를 마지막에 배치합니다 (보조 신호). 소스에서 이미 tldr을 제공했다면 이를 바탕으로 작성할 수 있습니다.
GitHub 항목은 저장소이지 논문이 아닙니다 — 과도하게 요약하지 마세요. 저장소 설명(
abstract)을tldr로 사용하고method/contributions는 비워둡니다.fetch.py는 이미 별표 10개 이상인 저장소만 보관하고 별표 순으로 정렬하므로, 대개 실질적인 내용(강좌/프레임워크/awesome-list)이며 개인 잡음이 아닙니다.
4 · 핫토픽 종합 (당신, 선택 사항이지만 권장)
유지된 항목을 몇 개의 큰 전산학 하위 분야로 묶습니다 (자연어 처리 / 컴퓨터 비전 / 시스템 및 컴파일러 …; 적극적으로 병합). state/trends.json을 작성합니다:
{"top": [{"name","delta": <개수>, "summary": "<=80자 분야 요약", "papers": ["제목", ...]}, ... 최대 3개]}.
5 · 다이제스트 렌더링 (스크립트)
cd skill/scripts && python3 render.py
curated.json (+ trends.json)에서 digests/YYYY-MM-DD.md + .html을 작성하고 표시된 모든 항목을 seen.json에 기록하여 반복되지 않도록 합니다.
6 · 알림 (스크립트, 선택 사항)
cd skill/scripts && python3 notify.py # SMTP_* 환경 변수가 설정된 경우 HTML 다이제스트를 이메일로 전송
7 · 보고 (당신)
사용자에게 유지된 논문 수, 주요 핫 방향, 다이제스트 경로를 알려줍니다. HTML을 열거나 키워드를 조정할 수 있는 옵션을 제공합니다.
참고 사항
- 스크립트는 순수 Python 표준 라이브러리만 사용합니다 —
pip install이 필요 없습니다. fetch.py는 이미 잘못된 미래 날짜를 필터링하고 실행 간 중복을 제거합니다.- 이 스킬은 프로젝트의 FastAPI 웹 대시보드에 대응하는 에이전트 기반 버전입니다. 둘은 동일한 소스와 파이프라인 철학을 공유합니다.