rssdigest

command module
v0.0.0-...-f8b4945 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2026 License: MIT Imports: 13 Imported by: 0

README

rssdigest 📰

Turn your RSS/Atom feeds into one daily email digest — summarized by an LLM, delivered on a schedule by GitHub Actions. No server to run, no subscription.

  • 📥 Parses RSS 2.0 and Atom
  • 🧠 Optional LLM summary (Anthropic) of the day's items
  • ✉️ Sends a text + HTML email over SMTP
  • ⏰ Ships a GitHub Actions cron workflow — host nothing
  • 🧪 --dry-run prints the digest instead of emailing
$ rssdigest --dry-run --since 24h
Your feed digest — Mon, 01 Jun 2026
========================================

A summary of today's themes…
----------------------------------------

• Go 1.27 released
  https://go.dev/blog/go1.27
• …

Install

go install github.com/banana2556/rssdigest@latest

Quick start (local)

  1. Edit feeds.txt — one feed URL per line (# comments allowed).
  2. Try it without sending: rssdigest --dry-run
  3. To email it, set the SMTP env vars below and run rssdigest.

Flags

Flag Default Description
--feeds feeds.txt File of feed URLs, one per line
--since 24h Include items published within this window
--dry-run false Print the digest instead of sending mail

Configuration (environment)

Variable Required Purpose
SMTP_HOST to send SMTP server host
SMTP_PORT no (def 587) SMTP port
SMTP_USER to send SMTP username
SMTP_PASS to send SMTP password
DIGEST_FROM to send From address
DIGEST_TO to send Recipient address
ANTHROPIC_API_KEY no Enables the LLM summary

Without ANTHROPIC_API_KEY the digest is just the item list (no summary). Without the SMTP vars, use --dry-run.

Scheduled delivery with GitHub Actions (no server)

.github/workflows/digest.yml runs the tool every day. To enable it:

  1. Commit your feeds.txt.
  2. In your repo: Settings → Secrets and variables → Actions, add SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, DIGEST_FROM, DIGEST_TO, and optionally ANTHROPIC_API_KEY.
  3. The workflow runs at 07:00 UTC daily (edit the cron: line to taste) and can be triggered manually from the Actions tab.

How it works

rssdigest reads the feed list, fetches each feed (a failing feed is logged and skipped), parses RSS/Atom into a common item type, keeps items published within --since, optionally asks the LLM for an overview, renders text + HTML, and either prints (--dry-run) or emails the result. It is stateless — the time window handles daily cadence, so there is no "seen" database to manage.

License

MIT

Documentation

Overview

Command rssdigest fetches RSS/Atom feeds, builds a digest of recent items, optionally summarizes it with an LLM, and emails it over SMTP.

Directories

Path Synopsis
internal
config
Package config loads rssdigest's SMTP and addressing settings from the env.
Package config loads rssdigest's SMTP and addressing settings from the env.
digest
Package digest selects recent feed items and renders them as an email body.
Package digest selects recent feed items and renders them as an email body.
feeds
Package feeds parses RSS 2.0 and Atom feeds into a common Item type.
Package feeds parses RSS 2.0 and Atom feeds into a common Item type.
mail
Package mail builds and sends a multipart (text + HTML) email.
Package mail builds and sends a multipart (text + HTML) email.
summarize
Package summarize turns feed items into an LLM-written digest overview.
Package summarize turns feed items into an LLM-written digest overview.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL