Import RSS from other sites into Hugo /content with markdown posts

I have been researching how to make a Hugo site that pulls in content from other RSS feeds and imports them into the /content/ directory of Hugo.

I understand this is possible from using the data template feature in Hugo (https://gohugo.io/templates/data-templates/#datadriven-content), but the content would only be a range from this and would “expire” over time, depending on how the data templates are setup.

To describe this in another way, I wish to make an aggregator site that creates static content on a Hugo site from a list of RSS feeds I provide. As I understand it, Hugo would need to be run on a regular interval to update the feeds, etc.

Does anyone have any idea how to go about this or any examples they can share?

Are there any Go libraries that already do this?

First of all, at the moment Hugo cannot generate content/pages from data (https://github.com/gohugoio/hugo/issues/5074), but you can display content from data sources on a hugo page.

If you are using a cloud solution for deploying your site there are several ways you can have it run automatically. For instance, IFTT to trigger a Netlify webhook when the RSS is updated.

If you know any programming languages (Python, Go, Ruby, Javascript, etc.), it shouldn’t be very hard to write a program that downloads an RSS file, chops into pieces, and then saves each piece as a .md file for Hugo. Then you have to run the script regularly to get new changes.

But I wonder if Hugo is the right fit for what you’re trying to do? Hugo is a “static site” generator. What “static” means is that the files for all the pages are set up at deploy time and don’t change until you make a new deploy. It sounds like you want something “dynamic” that changes what pages are available every time someone checks it. The line between a static site and a dynamic site gets blurry as you can have static sites that redeploy on a schedule and dynamic sites that have a long cache time, but each has certain things that will be easier to do one way or the other.