Projects
/news
Oil and gas news aggregator
Industry news for Russian oil and gas is scattered across wire services, company pages, and Telegram channels, and most of it repeats. This runs a sweep every hour, collapses the duplicates, and keeps the result full-text searchable.
Why hourly and not daily
A Telegram channel's web view returns roughly the last twenty posts. Prolific channels clear that in a day, so a single daily pass silently loses the tail. Hourly costs nothing extra and keeps the record complete.
What it is made of
Standard library only — no pip, no framework. Deduplication is done on normalised titles and canonical URLs, search is SQLite's FTS5, and the daily brief is assembled by a language model from the previous day's items. Five systemd units carry it: the sweep, the brief, the web feed, and a Telegram bot split into a long-poll listener and a once-a-day sender, because those two have different failure modes.
The feed is running on this server.