discover-feed¶
A personal, "Discover-style" news-feed monitor driven by profiles (topics, sources, keywords, alert rules and an OpenAI-compatible LLM endpoint). It ingests your feeds, clusters related articles into stories, writes cited briefs and reports with a local or cloud LLM, and can search the web for extra coverage and background.
Stack: Python 3.12, FastAPI, SQLAlchemy + SQLite, APScheduler, Jinja2 + HTMX + Tailwind (CDN). RSS/Atom ingestion and LLM summaries are both implemented.

Features¶
| Feature | What it does |
|---|---|
| Sources and ingestion | RSS/Atom feeds plus Guardian, NewsData and X API adapters, budgets, OPML, catalog, health |
| Profiles, topics and the UI | Feed tabs per profile; articles matched to topics by keyword rules |
| Text extraction | Fetches each article's page and extracts the main text (robots-aware, polite pacing) |
| Clustering and tuning | Groups articles into stories with TF-IDF similarity and a labelled evaluation harness |
| Briefs and reports | LLM-written lead + 3 bullets and a 300-550 word report, each with [n] citations |
| Story Q&A | Ask follow-up questions about a story, answered only from its sources |
| Alerts and notifications | Keyword rules that notify via webhook, ntfy or email the moment an article lands |
| Web-search enrichment | Finds other publishers' coverage and adds it to under-sourced stories |
| Background and context links | Adds related background reading — never same-event coverage |
| Card images | Picks, validates, caches and proxies the best image per story |
| Authentication | Optional read keys and an admin key for exposing the port |
Quick start¶
Then open http://localhost:8000. No Docker? See Quick start for a local install, or run the offline demo.
Where things live¶
- Docs source:
docs/in the repository (this site is built from it). - The README is a short front page: https://github.com/babcoccl/discover-feed.
- API contract: openapi.v1.json (also
GET /api/v1/openapi.json).