Skip to main content

django-rss-filter

This is a Django app that creates filtered RSS feeds. It does this by filtering existing RSS feeds, removing articles that match filtered words and/or filtered categories. It's what powers https://www.rssfilter.com.

It comes with one view that returns the filtered feed XML, as well as Django Admin configuration to make it possible and easy to self-host your own instance of django-rss-filter. It does not come with views to create or edit filtered feeds; this can be done using the Django Admin.

What is this?

This is a plugin (an "app") for the Django web framework. It is not a standalone application ready to deploy, and requires a Django project to run.

If you are a Django developer: You're in the right place! Skip to the "Getting started" section to integrate this app into your project.

If you just want ready-to-use RSS filtering: Simply use https://www.rssfilter.com which has user-friendly ways to create and edit filtered RSS feeds.

Getting started

All instructions use uv, but should work just as well with pip or Poetry for example.

In an existing Django project:

  1. Install: uv add django-rss-filter
  2. Add rssfilter to INSTALLED_APPS
  3. uv run ./manage.py migrate
  4. Include the URL config: path("", include("rssfilter.urls"))

If you don't have a Django project yet, these are the steps to get started:

  1. uv init my-django-project
  2. cd my-django-project
  3. uv add django
  4. uv run django-admin startproject my_django_app .
  5. uv run ./manage.py migrate
  6. uv run ./manage.py createsuperuser
  7. uv run ./manage.py runserver

This will get you up and running with a working Admin site at http://127.0.0.1:8000/admin/.

Then follow the first four steps to add django-rss-filter to your Django project.

How to run the example project

There's an example Django project using django-rss-filter under example/.

All instructions use uv, but should work just as well with pip or Poetry for example.

  1. Clone this repository and navigate into the example project folder:

    git clone https://github.com/loopwerk/django-rss-filter.git
    cd django-rss-filter/example
    
  2. Set up the database and create an admin user:

    uv run ./manage.py migrate
    uv run ./manage.py createsuperuser
    
  3. Run the server:

    uv run ./manage.py runserver
    
  4. You're done! You can now go to http://127.0.0.1:8000/admin/ to create a feed using the superuser account you just created. You can then access the filtered feed at http://127.0.0.1:8000/[feed_uuid]/.

Settings

There is one setting that can be configured: RSS_FILTER_CACHE_SECONDS. The default value is 300 (5 minutes).

This setting controls how long a feed will be cached before it's fetched, filtered, and stored again.

Tests

Unit tests can be run with uv run pytest.

About Feature Requests

This project is feature-complete — it does what I needed it to do, and I’m not actively looking to expand its functionality.

I’m not accepting feature requests via issues. Please understand that asking for new features is essentially asking for free work — not just to build something, but to maintain it over time. And since I don’t personally need those features, I’m unlikely to invest time in them.

If you’d like to add a new feature, you’re welcome to open a pull request. Just know that I’ll evaluate it carefully, because even merged contributions become part of what I maintain. To avoid spending time on a PR that may not be accepted, I recommend starting a discussion first — that way we can talk through the idea and see if it fits.

This approach helps me avoid burnout and keep the project sustainable. Thanks for understanding!

Support

Commercial support is available via Loopwerk.

Metadata

Release files for django-rss-filter 0.17.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-rss-filter 0.17.0
File Size Uploaded Provenance
django_rss_filter-0.17.0.tar.gz 6.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for django-rss-filter 0.17.0
File Interpreter ABI Platform
django_rss_filter-0.17.0-py3-none-any.whl Python 3 none any Details

Total release size: 16.4 kB

Release files / django_rss_filter-0.17.0.tar.gz

Download URL django_rss_filter-0.17.0.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
26e938574845a8a94432c2030f0d19987f3954e6f0c9affe7447559c1d5150d2
BLAKE2b-256 checksum
How to use checksums
baf882c8caf2c0d183afd0d1b8bdf9d6df601a8ae4dd29fc765080fa697e282b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.

Transparency log

Release files / django_rss_filter-0.17.0-py3-none-any.whl

Download URL django_rss_filter-0.17.0-py3-none-any.whl
Size 9.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
23da70dbeee188b3094c560ca88d04a47bbe2c18674d9aa9737eeeb47a9b0654
BLAKE2b-256 checksum
How to use checksums
7153fffbf2e6667a26bbaa2d0bd2df6fb09349b8f3f18eb127dd1196383a9712
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.

Transparency log

Security for django-rss-filter 0.17.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for django_rss_filter-0.17.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page