Skip to content
/ feeds Public

Pulling website feeds and generate static aggregator site

Notifications You must be signed in to change notification settings

llun/feeds

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Github Action for building static feed aggregator site

A GitHub Action that fetches RSS/Atom feeds from an OPML file and builds a static site aggregating all the feed content. This project creates a modern, responsive feed reader as a static site.

This action runs on Node.js 24 (runs.using: node24).

Usage

To use it, create a new repository and add an OPML file named feeds.opml with your list of website RSS/Atom feeds. Create a GitHub workflow like the one below to fetch data and store it in a contents branch:

name: Schedule

on:
  schedule:
    - cron: '0 * * * *'

jobs:
  playground:
    runs-on: ubuntu-latest
    name: Test
    steps:
      - name: Run Action
        uses: llun/feeds@4.0.0

After this, enable GitHub Pages on the contents branch and the content will be available on that page.

The action always reads the OPML file from the branch that triggered the workflow (for example main), then publishes generated output to the configured branch.

Configurations

This action can be configured to use a custom domain and different types of storage. Here are the available configuration options:

  • customDomain: Specifies the custom domain for the feeds site. Required when generating a static site as it's needed to generate the CNAME file.
  • branch: Branch where the static site will be generated. The default value is contents. This is the branch you'll need to point the repository's GitHub Pages to.
  • storageType: (Default is files) Content storage type, currently supports files and sqlite.
    • database: Legacy alias that behaves like files
    • files: Stores all feed contents in a JSON tree structure
    • sqlite: Stores content in a SQLite database that the client will download using HTTP chunks
  • opmlFile: Name of the OPML file containing the list of sites you want to include in your feed site.

Sample Configuration

name: Schedule

on:
  schedule:
    - cron: '0 * * * *'

jobs:
  playground:
    runs-on: ubuntu-latest
    name: Generate Feeds
    steps:
      - name: Run Action
        uses: llun/feeds@4.0.0
        with:
          storageType: files
          opmlFile: site.opml
          branch: public

Sample Sites

Sample Repository

About

Pulling website feeds and generate static aggregator site

Topics

Resources

Stars

Watchers

Forks

Contributors 7