Files
Paper-Monitoring-SW/docker-compose.nas.yml
KG-access 2543b0c23f feat: integrate Google Scholar alerts and improve paper filtering pipeline
- Add Google Scholar Alert collection via Gmail IMAP
- Add Gmail App Password based authentication
- Add Google Scholar environment variables to NAS compose configuration
- Enable Google Scholar Alert source in config.nas.yaml
- Disable subject filtering that incorrectly excluded Scholar alert emails
- Parse paper titles and links from Google Scholar alert HTML emails
- Deduplicate collected Scholar papers by normalized title
- Filter Scholar UI/control links such as update alert and unsubscribe entries
- Filter bracket-only alert labels such as [automotive radar]

- Add Google Scholar specific relevance threshold
- Keep global min_relevance at 2
- Set Google Scholar minimum relevance to 3
- Reduce Scholar candidates from 229 collected / 207 merged to 28 accepted

- Add Gemini API rate limiting
- Enforce minimum 13 second interval between Gemini requests
- Apply shared rate limiter to abstract and full-text enrichment
- Prevent Gemini free-tier 5 RPM quota errors
- Verify retry processing of previously failed AI enrichment jobs

- Verify end-to-end NAS workflow
- Google Scholar Alert collection successful
- Gemini enrichment successful without HTTP 429 errors
- Joplin report generation and WebDAV synchronization successful
2026-08-21 00:25:24 +09:00

41 lines
1.4 KiB
YAML

services:
paper-monitor-nas:
build:
context: .
dockerfile: Dockerfile.nas
image: paper-monitor-nas:latest
container_name: paper-monitor-nas-run
restart: "no"
environment:
TZ: Asia/Seoul
CIRCUIT_BREAKER_STATE: /state/provider_circuit_breaker_state.json
# Paper APIs
IEEE_API_KEY: ${IEEE_API_KEY:-}
SEMANTIC_SCHOLAR_API_KEY: ${SEMANTIC_SCHOLAR_API_KEY:-}
CROSSREF_MAILTO: ${CROSSREF_MAILTO:-}
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
GEMINI_API_KEY: ${GEMINI_API_KEY}
GROQ_API_KEY: ${GROQ_API_KEY}
GOOGLE_SCHOLAR_GMAIL_ADDRESS: ${GOOGLE_SCHOLAR_GMAIL_ADDRESS}
GOOGLE_SCHOLAR_GMAIL_APP_PASSWORD: ${GOOGLE_SCHOLAR_GMAIL_APP_PASSWORD}
# Existing Joplin WebDAV sync target
JOPLIN_WEBDAV_URL: ${JOPLIN_WEBDAV_URL}
JOPLIN_WEBDAV_USERNAME: ${JOPLIN_WEBDAV_USERNAME}
JOPLIN_WEBDAV_PASSWORD: ${JOPLIN_WEBDAV_PASSWORD}
JOPLIN_NOTEBOOK: ${JOPLIN_NOTEBOOK:-Radar Papers}
JOPLIN_WRITE_ENABLED: ${JOPLIN_WRITE_ENABLED:-false}
JOPLIN_IGNORE_TLS_ERRORS: ${JOPLIN_IGNORE_TLS_ERRORS:-false}
# Unpaywall E-Mail address for OA status and PDF URL retrieval.
# This is required for the Unpaywall API.
UNPAYWALL_EMAIL: ${UNPAYWALL_EMAIL}
volumes:
- ./config.nas.yaml:/app/config.yaml:ro
- ./data:/app/data
- ./joplin-profile:/joplin-profile
- ./state:/state