4.3 KiB
Paper Monitor → Joplin
자동차 레이더 관련 신규 논문을 IEEE Xplore, Semantic Scholar, Crossref, Google Scholar Alert에서 수집하고 DOI/제목 기준으로 중복 제거한 뒤 Markdown 표와 Joplin note로 만드는 프로젝트입니다.
빠른 시작
cd paper-monitor
cp config.example.yaml config.yaml
cp .env.example .env
python -m venv .venv
# Linux/macOS: source .venv/bin/activate
# Windows: .venv\Scripts\activate
pip install -e .
환경변수에 필요한 키를 설정합니다.
IEEE_API_KEY=...
SEMANTIC_SCHOLAR_API_KEY=...
CROSSREF_MAILTO=you@example.com
JOPLIN_TOKEN=...
실행:
python -m paper_monitor --config config.yaml --dry-run
python -m paper_monitor --config config.yaml
--dry-run은 Joplin 쓰기만 생략합니다. SQLite와 Markdown 생성은 수행합니다.
동작
config.yaml의 각 검색어를 소스별로 조회- 최근
lookback_days필터 - DOI 우선, DOI 없으면 normalized-title hash로 중복 제거
- category와 relevance 1~5 계산
- 선택적으로 OpenAI API로 한국어 요약/relevance/category 보강
data/papers.db에 이미 본 논문 저장- 처음 발견한 논문만
data/outbox/*.md에 출력 - Joplin Data API가 사용 가능하면
Research/Radar Papersnote 자동 생성/갱신
Google Scholar
Scholar 검색 결과 HTML을 직접 scraping하지 않습니다. Google Scholar Alert를 Gmail로 받은 뒤 IMAP으로 읽습니다. google_scholar_alert.enabled: true로 켜고 아래 변수를 설정합니다.
GMAIL_ADDRESS=...
GMAIL_APP_PASSWORD=...
Google은 일반 계정 비밀번호를 IMAP 클라이언트에 직접 공유하는 방식을 권장하지 않습니다. 개인 계정에서 사용할 수 있는 경우 2단계 인증 + App Password를 쓰거나, 장기 운영에서는 Gmail OAuth/Gmail API로 collector를 교체하는 편이 좋습니다.
Joplin
기본 출력은 Joplin Data API입니다. Joplin Desktop에서 Web Clipper service를 켜고 token을 발급한 뒤:
joplin:
enabled: true
base_url: http://127.0.0.1:41184
token_env: JOPLIN_TOKEN
Joplin API가 실패해도 Markdown은 항상 data/outbox에 남습니다.
NAS에서 주의
NAS Docker 내부의 127.0.0.1:41184는 Windows PC가 아니라 NAS 컨테이너 자신입니다. 따라서 가장 간단한 1차 구성은 Windows Task Scheduler + Joplin Desktop/Web Clipper + 이 프로그램입니다. 논문 수집만 NAS에서 돌리고 Markdown을 NAS에 보관하는 것도 가능합니다.
Joplin 공식 Terminal 앱은 WebDAV sync와 cron 실행을 지원하므로, 향후 완전 NAS-only 구성으로 바꿀 때 사용할 수 있습니다.
AI 요약
기본은 off입니다.
ai:
enabled: true
api_key_env: OPENAI_API_KEY
model: gpt-5-mini
max_papers_per_run: 30
AI 호출이 실패해도 keyword 기반 결과로 계속 진행됩니다.
Docker / Synology Container Manager
cp config.example.yaml config.yaml
cp .env.example .env
docker compose build
docker compose run --rm paper-monitor
매일 06:00 cron 예:
0 6 * * * cd /volume1/docker/paper-monitor && /usr/bin/docker compose run --rm paper-monitor >> ./data/cron.log 2>&1
Synology Task Scheduler에서도 같은 명령을 User-defined script로 등록할 수 있습니다. 실제 docker 경로는 NAS에서 which docker로 확인하세요.
결과 형식
| Relevance | Category | Paper | Authors | Venue | Date | Citations | Source |
|---|---|---|---|---|---|---:|---|
| ★★★★★ | Imaging Radar, MIMO | [Paper title](...) | ... | IEEE TAP | 2026-08-11 | 2 | IEEE Xplore |
표 아래에 논문별 DOI, 링크, abstract excerpt 또는 AI summary가 추가됩니다.
권장 초기 설정
처음 1~2주는 AI와 Scholar Alert를 끄고 IEEE + Semantic Scholar + Crossref만 사용해 noise를 확인하는 것을 권장합니다.
app:
lookback_days: 14
min_relevance: 2
ai:
enabled: false
sources:
google_scholar_alert:
enabled: false
그 후 queries, categories, relevance_terms를 본인 관심 분야에 맞게 조정하면 됩니다.
보안
API key, Gmail App Password, Joplin token은 Git에 커밋하지 마세요. 환경변수/Docker secret 등을 사용하세요.