llm_aggregator
Aggregate RSS feeds and summarise them with LLMs
What is it?
llm_aggregator fetches articles from multiple RSS/Atom feeds, filters and
processes the content, and sends it to any OpenAI-compatible LLM to produce a
concise summary, without you needing to read dozens or hundreds of posts.
Supports: RSS 2.0, Atom, JSON Feed | OpenAI-compatible APIs | Local LLMs (Ollama, etc.) | TUI with live progress | Text/Markdown/JSON output
Quick start
# Create a feeds file
cat > feeds.txt << 'EOF'
https://news.ycombinator.com/rss
https://lwn.net/headlines/newrss
EOF
# Run
llm_aggregator --api-key <YOUR_KEY> --base-url <URL> \
-f feeds.txt -p "What are the top tech stories today?"
First run? See docs/USAGE.md for installation, configuration, and all available options.
Key features
| | |
|β|β|
| π | Concurrent feed fetching with rate limiting |
| π | Keyword filtering (include/exclude, caseβinsensitive) |
| π
| Dateβbased filtering and sorting (date/title/source) |
| π€ | Any OpenAI-compatible API (Deepseek, Ollama, OpenRouter, β¦) |
| π₯οΈ | Interactive TUI with progress bar and mouse scrolling |
| π¦ | Config file, environment variables, and CLI flags |
| π | Read feeds directly from stdin via --stdin |
| π§ | Dryβrun mode to validate config without API calls |
TUI mode
Enable the TUI with -t for a colourful progress bar, live article counters,
and elapsed time. The TUI renders LLM output as styled Markdown (headers,
bold, code blocks, lists) and supports keyboard navigation (j/k, arrows, b,
g/G) and mouse wheel scrolling.

Architecture
Feeds file / stdin
β
βββββββββββββββ
β aggregator β RSS/Atom/JSON Feed parsing, concurrent fetching
βββββββββββββββ
β
βββββββββββββββ
β processor β Filter by keywords/age, sort, truncate
βββββββββββββββ
β
βββββββββββββββ
β llm β OpenAI-compatible API call
βββββββββββββββ
β
βββββββββββββββ
β output β Text / Markdown / JSON
βββββββββββββββ
Configuration precedence
CLI flags > Environment variables > Config file > Defaults
Create ~/.config/llm_aggregator/config.toml (see
docs/USAGE.md for the full reference).
Building
Detailed build instructions (standard build, goreleaser, cross-compilation, man page installation, tests, and linting) are in docs/BUILD.md.
Licence
This project is licensed under European Union Public Licence 1.2.