0.0
No release in over 3 years
NewsFetcher monitors RSS and Atom feeds, tracking which items have been delivered, and sends new feed items as individual HTML emails using configurable mail delivery methods.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

Runtime

 Project Readme

NewsFetcher

NewsFetcher monitors RSS and Atom feeds and delivers new items as individual HTML emails. It tracks which feed items have already been delivered, so you only receive new content.

Features

  • Monitors multiple RSS/Atom feeds organized into subscriptions
  • Delivers each new feed item as a separate HTML email with custom styling
  • Tracks item history to avoid re-delivering the same content
  • Supports multiple delivery methods (SMTP, Maildir, etc.)
  • Configurable update intervals and age limits per subscription
  • Multi-threaded updating for efficiency
  • Feed discovery from web pages
  • Per-subscription and global configuration

Installation

gem install newsfetcher

Quick Start

Initialize a profile with your email settings:

newsfetcher init --mail-from feeds@example.com --mail-to you@example.com

Discover a feed for a website:

newsfetcher discover https://example.com/

Add a feed subscription:

newsfetcher add https://example.com/feed.xml

Update all subscriptions and deliver new items:

newsfetcher update

Usage

NewsFetcher organizes feeds into subscriptions stored in ~/.newsfetcher by default. Each subscription has its own configuration and tracks which items have been delivered.

Commands

  • init — Initialize a new profile with email settings
  • add URI [PATH] [ID] — Add a new feed subscription
  • update [IDs...] — Update subscriptions and deliver new items
  • show [IDs...] — Display subscription details
  • enable ID — Enable a disabled subscription
  • disable ID — Disable a subscription
  • remove ID — Remove a subscription
  • reset ID — Clear item history (next update will re-deliver all items)
  • edit ID — Edit subscription configuration
  • dir — Show the profile directory path
  • discover URI — Find feeds in a web page
  • get URI — Fetch and display a feed without saving
  • uniq — Remove duplicate items from history
  • fix — Fix subscription issues

Configuration

Configuration lives in JSON files at the profile and subscription levels. Profile-level settings in ~/.newsfetcher/config.json serve as defaults for all subscriptions.

Key configuration options:

  • mail_from, mail_to — Email sender and recipient
  • mail_subject — Subject line template (supports ERB)
  • delivery_method — How to deliver mail (:smtp, :maildir, etc.)
  • delivery_params — Parameters for the delivery method
  • update_interval — Minimum time between updates (default: 1 hour)
  • max_age — How long to track items (default: 30 days)
  • max_threads — Number of concurrent subscription updates (default: 100)
  • disabled — Whether to skip this subscription during updates
  • ignore_uris — Array of regex patterns to ignore items
  • root_folder — Prefix for maildir folders or mail subject
  • consolidate — Use shorter folder names

Subscription-specific settings override profile defaults.

Styling

Email messages use HTML with embedded CSS compiled from SCSS. The default stylesheet is included, but you can specify additional stylesheets:

{
  "aux_stylesheets": ["~/.newsfetcher/custom.scss"]
}

Automation

Run newsfetcher update periodically using cron, launchd, or your preferred scheduler to automatically check feeds and deliver new items.

How It Works

NewsFetcher fetches each feed, parses it with Feedjira, and compares items against the subscription’s history. New items (not previously seen and within the configured age limit) are formatted as HTML emails and delivered using Ruby’s Mail gem.

Each subscription maintains two history files: one tracking delivered items, one tracking HTTP responses. These histories are automatically pruned based on the max_age setting.

Requirements

Ruby 2.7 or later.

License

MIT