KG-access f7e31aef1c feat: implement Groq fallback for Gemini failures and update ops docs
add Groq dependency and NAS config entries for fallback provider
implement Gemini -> Groq fallback flow on quota, timeout, and API errors
validate Groq API key with models listing and runtime invocation path
update AI orchestration logic in runner and ai enrichment pipeline
update TODO document to mark Groq auth, integration, and verification as completed
2026-08-22 15:19:59 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00
2026-08-15 23:43:07 +09:00

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 생성은 수행합니다.

동작

  1. config.yaml의 각 검색어를 소스별로 조회
  2. 최근 lookback_days 필터
  3. DOI 우선, DOI 없으면 normalized-title hash로 중복 제거
  4. category와 relevance 1~5 계산
  5. 선택적으로 OpenAI API로 한국어 요약/relevance/category 보강
  6. data/papers.db에 이미 본 논문 저장
  7. 처음 발견한 논문만 data/outbox/*.md에 출력
  8. Joplin Data API가 사용 가능하면 Research/Radar Papers note 자동 생성/갱신

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 등을 사용하세요.

S
Description
논문을 자동으로 검색하고, 노트(Joplin)으로 정리하는 SW
Readme
147 KiB
Languages
Python 93.8%
Shell 5.1%
Assembly 0.8%
Dockerfile 0.3%