swaldman / unify-rss   0.0.4

GNU General Public License v3.0 only GitHub

A static generator or server that downloads multiple RSS feeds and combines them into a single merged feed.

Scala versions: 3.x


I'm dividing my writing output among a number of blogs and microblogging sites these days. I wanted to offer RSS feeds that would let you subscribe to all of these at once, in the unlikely and rather discreditable circumstance that you like to read what I write. So...

This application let's you configure any number of "synthetic" RSS feeds, each one built by merging any number of source feeds.

You can specify source feeds directly and/or subscribe to OPML feeds, which the application will follow as the source list changes dynamically over time.

library + script

unify rss is most easily run in library + script style.

You'll find the library on Maven Central.

In a scala-cli script, just configure your application just by building either a StaticGenConfig or DaemonConfig object.

In either case, the heart of your definition will be a Set of MergedFeed objects. MergedFeed is a trait; the class MergedFeed.Default provides a convenient implementation Each merged feed can be constituted of any number of individual RSS feeds, or sources of RSS feeds like OPML feeds.

Once you have defined your config object, your script simply runs a method of the ScriptEntry.

And that's it!

serve feeds as a daemon

You can periodically merge feeds in memory and have a daemon serve them. Just call ScriptEntry.startupDaemon( daemonConfig : DaemonCofig ).

You'll usually deploy your script with systemd, a Type=simple daemon.

static feed generation

You can generate merged feeds as static files, to be served as static files. Just call ScriptEntry.performStaticGen( sgc: StaticGenConfig ).

You'll usually deploy your script with systemd, a Type=simple service that will run, regenerate your feeds, then simply die. Use a systemd timer to periodically rerun and regenerate your feeds.


You can find a (rather complicated, alas) example script with systemd unit and timer files here.


  • RSS feeds are supposed to link to the site that produces them, but since these feeds are generated from multiple sites, we make up a "stub site" link back to this service. I have not yet implemented the serving of those "stub sites" yet though.



Let me know what you think!