news-recap
Your feeds. Fewer repeats. A clearer picture.
Turn RSS feeds into a daily digest: related reports grouped together, vague headlines clarified, and links back to the original sources. Choose the topics to follow, the noise to exclude, and the language to read in.
- Read stories, not a wall of headlines. Related reports come together in topic sections, with summaries and links to their sources.
- Get past the clickbait. When a headline hides the news, the pipeline fetches the article and rewrites the headline from its content.
- Have it ready when you are. Schedule digest creation and read it in the browser. Interrupted runs resume from saved progress.
Quick start
The free way needs no API keys: install uv
and the Antigravity CLI (agy), then run:
uv tool install news-recap --upgrade --python 3.13
news-recap config set rss "YOUR_RSS_URL"
news-recap config set language en # the digest language; default ru
news-recap ingest
news-recap create
news-recap serve
Settings live in ~/.news_recap_data/config.toml (news-recap config shows them); use
news-recap config set agent claude or codex for a subscription agent. For scheduled runs,
optional Jev filtering and all settings, see the manual.
Under the hood
Storage that fits the workflow. I started with SQLite, SQLModel, and Alembic,
then found that the database added more machinery than this batch-processing
workflow needed. Typed msgspec structures now carry data through processing
and JSON storage, with daily article partitions and resumable checkpoints.
The database prototype
remains available for comparison.
Spend model calls where judgment matters. Embeddings narrow down candidate duplicates; LLMs decide which reports belong together and write the digest. Code removes duplicate and overlapping blocks after generation. Full articles are fetched selectively, when their headlines need clarification.
Coding agents as pipeline workers. The pipeline invokes Codex, Claude Code, or Antigravity through their CLI interfaces, with task-specific model selection and saved intermediate results. The agent integration guide describes the launch commands and task contracts for adapting this approach to another batch-processing application.
Development process
In this project, I experimented with an iterative development workflow using Codex and Claude Code: written plans, implementation, and separate review passes, followed by trials on real news feeds.
Those trials also shaped the architecture. The pipeline experiments compare digest strategies on the same article corpus, including processing time, article coverage, and the resulting section structure.
Contributing
Bootstrap the development environment and install pre-commit hooks:
source ./activate.sh
pre-commit install
Run the checks and test suite:
uv run inv pre
uv run pytest --cov=src tests/
See the contributor guide for repository conventions and
uv run invoke --list for available development tasks.
Metadata
Release files for news-recap 1.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| news_recap-1.10.0.tar.gz | 955.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| news_recap-1.10.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / news_recap-1.10.0.tar.gz
| Download URL | news_recap-1.10.0.tar.gz |
|---|---|
| Size | 955.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6288dbdd000f27d4486b706b5af49cf400ff0044c873eb78044df9ab829adc4e
|
|
BLAKE2b-256 checksum How to use checksums |
e887cdf0eafa470f6d8beb2f33b42511120be74ed3c1711f7ef128199e3e500c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / news_recap-1.10.0-py3-none-any.whl
| Download URL | news_recap-1.10.0-py3-none-any.whl |
|---|---|
| Size | 163.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f77a93d5c8369cd27647511b4b024ade029ad2eff2e277fbd1f99b80cd11ed8
|
|
BLAKE2b-256 checksum How to use checksums |
2668e7f4b81868b16315a444d61e93ebb925e53548b976674bb1520899706790
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for news-recap 1.10.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.