chriswere.wales

Aggreplop

Aggreplop is a simple Bash script that aggregates multiple podcast and RSS/Atom feeds into a single website and RSS feed.

You can download the Aggreblop code here.

It downloads entries from a list of feeds, sorts them by publication date, renders an HTML page, and generates a combined RSS feed using lightweight HTML and XML templates.

The project is designed to be easy to understand, easy to modify, and depend only on standard Unix tools.

Features

Requirements

Aggreplop requires:

Directory Layout

feeds.csv          List of feeds to aggregate
template.html      HTML page template
template.xml       RSS feed template
item.html          HTML template for a single item
item.xml           RSS template for a single item
index.html         Generated HTML page
rss.xml            Generated RSS feed

Feed List

Feeds are listed in feeds.csv.

Each line has the format:

feed-url|author|category

For example:

https://example.com/feed.xml|Example Podcast|Podcast
https://example.org/rss|Chris Were|Blog

Blank lines and lines beginning with # are ignored.

Templates

Aggreplop uses four templates.

template.html

Defines the overall HTML page.

The placeholder

{{items}}

is replaced with the rendered list of feed items.

item.html

Defines how each HTML item is displayed.

Available placeholders are:

template.xml

Defines the overall RSS document.

The placeholder

{{items}}

is replaced with the generated RSS items.

item.xml

Defines a single RSS item using the same placeholders as item.html.

Usage

Run the script from the project directory:

./aggreplop

or, if installed in your $PATH:

aggreplop

The script downloads every configured feed, extracts each item’s publication date, title and link, sorts everything into reverse chronological order, then generates:

Existing output files are replaced when generation completes successfully.

Error Handling

If a feed cannot be downloaded, Aggreplop skips it and continues processing the remaining feeds.

Missing template files or configuration files cause the script to terminate with an error.

Philosophy

Aggreplop is intentionally simple.

Rather than relying on frameworks, databases or static-site generators, it uses a straightforward Bash pipeline and a small number of standard Unix utilities. The goal is for the entire generation process to remain readable, hackable and easy to adapt to individual websites.