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 reading dozens 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
```bash
# Install
go install github.com/maxwelljensen/llm_aggregator/cmd/llm_aggregator.go@latest
# Create a feeds file
cat > feeds.txt << 'EOF'
https://news.ycombinator.com/rss
https://lwn.net/headlines/newrss
EOF
# Run
llm_aggregator -f feeds.txt -p "What are the top tech stories today?"
```
**First run?** See [docs/USAGE.md](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](docs/USAGE.md#configuration) for the full reference).
## Building
Detailed build instructions (standard build, goreleaser, cross-compilation,
man page installation, tests, and linting) are in
[docs/BUILD.md](docs/BUILD.md).
---
## Licence
This project is licensed under [European Union Public Licence
1.2](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12).