This project is:
- A stateless, (aspirationally) transparent, filtering proxy for RSS, Atom, and JSON feeds.
- A command-line tool for fetching and filtering feeds.
- A user interface to manage a feed's filters.
I created this for podcasts. Your mileage may vary with other types of feeds -- that support comes purely from these awesome libraries that power this project:
github.com/mmcdole/gofeedgithub.com/gorilla/feeds
You can create a filtered feed URL from an existing feed using the public instance of filter-feed available at:
Please don't abuse this service 🙏.
filter-feed fetch URL FILTER (OVERRIDE)
Where:
URLis the URL for the feed.FILTERis either:- A
FilterSpec - A
FilterSpecs - A path to a JSON file beginning with
file://(ex.file://my-filter.json), that contains aFilterSpecorFilterSpecs.
- A
- (Optional)
OVERRIDEis either:- A
OverrideSpec - A
OverrideSpecs - path to a JSON file, beginning with
file://(ex.file://my-override.json), that contains aOverrideSpecorOverrideSpecs.
- A
Start the server:
filter-feed server --redis-address ":6379"Or start the server in a container:
docker run --rm -p 8080:8080 ghcr.io/cartermckinnon/filter-feed server --redis-address "redis.host:6379"Generate a URL on the filter-feed.me website, or with the command-line:
filter-feed url URL FILTER (OVERRIDE)Where URL, FILTER, and OVERRIDE are as defined above.
The filtered URL's path will look something like:
/v1/ff/ChRodHRwczovL2NhdC5mZWVkL3JzcxIYCgVyZWdleBIILipjYXRzLioaBXRpdGxl
Just send a GET for that path to a filter-feed server, such as the one I run at api.filter-feed.me:
curl https://api.filter-feed.me/v1/ff/ChRodHRwczovL2NhdC5mZWVkL3JzcxIYCgVyZWdleBIILipjYXRzLioaBXRpdGxl
-
Install Earthly.
-
Compile the protocol buffers:
make proto- Build locally:
go build- Build for release:
make