Automated Scientific Literature Monitoring System
Project description
AlvitrSentinel
Automated Scientific Literature Monitoring System
AlvitrSentinel is a command-line tool that automates the daily monitoring of scientific literature. It fetches articles from RSS feeds of major journals, uses AI to generate summaries, classify topics, and score relevance to your research interests, then produces interactive HTML reports for convenient review and manual archiving to reference managers such as Zotero.
The language of LLM prompts has been set to be Chinese. If you need to use English, please modify ai_engine.py.
Skills
I also support AI skills in AlvitrSentinelSkills.
Features
- RSS Feed Fetching — Supports ETag conditional requests for efficient caching, automatic retries with exponential back-off, and configurable timeouts.
- Three-Layer Abstract Acquisition — (1) RSS-embedded description, (2) web-page capture of the abstract section, (3) title-only fallback with appropriate labeling.
- AI-Powered Processing — Batch LLM calls via any OpenAI-compatible API to generate Chinese-language summaries, assign topic tags, and produce a 1-5 relevance score with rationale.
- Dual HTML Reports — A daily briefing stratified by relevance tier, and a cumulative single-page dashboard with full-text search, date-range filtering, topic filtering, and paginated results.
- Optional Embedding Vectors — Compute dense vectors for semantic search and article clustering using a separate embedding model.
- Pure File-Based Storage — JSON files partitioned by date; no database required.
- Flexible Configuration — YAML config covering AI models, research interests, topic taxonomy, feed list, and all pipeline parameters.
Installation
pip install alvitr-sentinel
Or install from source:
git clone https://github.com/Secretloong/AlvitrSentinel.git
cd alvitr-sentinel
pip install -e .
Quick Start
# 1. Initialize project (creates directories, config, and feed list)
alvitr-sentinel --init
# 2. Edit configuration
# - Set your LLM API key
# - Describe your research interests
# - Customize the feed list
vim config.yaml
vim journal-feeds.txt
# 3. Run the full pipeline
alvitr-sentinel
Command-Line Usage
| Command | Description |
|---|---|
alvitr-sentinel |
Full pipeline run |
alvitr-sentinel --init |
Initialize project directory |
alvitr-sentinel --fetch-only |
Fetch and parse only, skip AI (useful for testing) |
alvitr-sentinel --no-ai |
Skip AI processing, still store and generate reports |
alvitr-sentinel --report-only |
Regenerate reports from existing data |
alvitr-sentinel --date 2026-03-20 |
Process a specific date |
alvitr-sentinel --days 60 |
Override dashboard display window |
alvitr-sentinel -v |
Enable verbose logging |
alvitr-sentinel --version |
Show version |
Configuration
The config.yaml file controls all aspects of the pipeline:
| Section | Key Fields | Description |
|---|---|---|
ai.llm |
base_url, api_key, model |
LLM inference model for summarization and scoring |
ai.embedding |
enabled, base_url, model |
Optional embedding model for semantic search |
research_interests |
(free text) | Natural-language description of your research focus; directly affects relevance scoring |
topic_taxonomy |
(list) | Topic labels the AI assigns to each article |
filter |
min_relevance, highlight_threshold |
Controls report filtering and highlighting |
fetcher |
timeout, retries, user_agent |
Feed fetching behavior |
parser |
min_abstract_length, scrape_abstract |
Abstract extraction settings |
Pipeline Architecture
journal-feeds.txt
|
v
+---------+ +---------+ +-----------+ +---------+ +--------+
| Fetcher | --> | Parser | --> | AIEngine | --> | Storage | --> | Report |
+---------+ +---------+ +-----------+ +---------+ +--------+
RSS Feed Metadata Summarize, JSON by HTML
fetch with extraction, classify, date, daily +
ETag cache 3-layer score dedup index dashboard
abstract
Output
- Daily Briefing:
data/reports/daily/YYYY-MM-DD.html— Articles grouped by relevance tier (high / medium / low) with AI summaries, topic tags, and direct links to original papers. - Cumulative Dashboard:
data/reports/dashboard.html— A self-contained single-page application with search, filtering, sorting, and pagination across all collected articles.
Supported AI Services
Any OpenAI-compatible API endpoint works, including:
- Alibaba Cloud DashScope (Qwen series)
- SiliconCloud / SiliconFlow
- OpenAI
- Azure OpenAI
- Local LLM servers (vLLM, Ollama, etc.)
Module Overview
| Module | Description |
|---|---|
fetcher.py |
RSS/Atom feed fetcher with conditional request caching and retry logic |
parser.py |
Article metadata extraction with three-tier abstract acquisition |
ai_engine.py |
AI summarization, classification, and relevance scoring engine |
storage.py |
JSON file storage layer with deduplication index |
report_generator.py |
Jinja2-based HTML report generator (daily briefing + dashboard) |
pipeline.py |
CLI entry point and pipeline orchestrator |
Requirements
- Python >= 3.9
- feedparser, requests, openai, jinja2, pyyaml, beautifulsoup4, lxml, tqdm
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alvitr_sentinel-1.0.2.tar.gz.
File metadata
- Download URL: alvitr_sentinel-1.0.2.tar.gz
- Upload date:
- Size: 31.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
661c374b8da02beff1e29957dfcdee025e5421706b48703d0df0842d3e8d66a7
|
|
| MD5 |
a61ce69842944a983719da543da836be
|
|
| BLAKE2b-256 |
3c3fe699c20fcbdeffbaf78fd4f129a6137aefa8b76d75f74428a673f3d3c9a6
|
File details
Details for the file alvitr_sentinel-1.0.2-py3-none-any.whl.
File metadata
- Download URL: alvitr_sentinel-1.0.2-py3-none-any.whl
- Upload date:
- Size: 34.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a9b59fa1fa713b49f6cc07c9d3152a3c42bc57abb0c7846daf5a47c7bc962f7
|
|
| MD5 |
f4c07e670d9dcc18fd2fc2277bbc076a
|
|
| BLAKE2b-256 |
81409b50a9efcf7d48cc66912c8d1f7760bb90efc825bb74000a82c3d82fb348
|