Model or dataset
versun/RSSBox avatar
versun/RSSBox

RSSBox: a Django service that translates, summarizes and filters feeds before you read them

让RSS管理更智能,让信息获取更高效 | Smarter RSS management, more efficient information access

679 stars78 forksPythonGPL-3.0

At a glance

What is it?
RSSBox, formerly RSS Translator, is a self-hosted Python application that rewrites incoming feeds through DeepL or any OpenAI-compatible model, then republishes them as new RSS or JSON feeds. It is built for people who already run a feed reader and want translation, full-text fetching and AI filtering to happen upstream rather than in the client.
Who is it for?
Adopt RSSBox if you already self-host services, read feeds in more than one language, and are willing to hold API credentials for DeepL or an OpenAI-compatible endpoint, because the translation step is the product and it does not work without a provider. Do not adopt it if you want a hosted reader, a mobile app, or a feed pipeline that keeps working when your model quota runs out.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 16, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem RSSBox targets: translation and filtering happen after the feed arrives

Most feed readers treat an item as finished text. If the item is in a language you do not read, or if the site only publishes a summary, the reader cannot help. The usual workarounds are per-article machine translation in the browser, a separate full-text service, or manual filtering by eye. RSSBox moves all three operations to the point where the feed is fetched. The README frames the project as making RSS management smarter and information access more efficient, and the feature list backs that up: translate a title, translate content, or summarize; show both languages side by side; subscribe to the translated RSS or JSON output; fetch the full text; filter by keyword or with an AI filter; and merge several sources into one via tags. The audience is narrow and specific. It is someone who already runs a feed reader, is comfortable running a Django service and a database, and reads across languages. If you only read feeds in one language and the sites publish full text, RSSBox adds an API bill and an extra hop for no gain.

The mechanism: RSSBox sits between the origin feed and your reader

RSSBox is not a reader. The repository is a Django project, and the data flow implied by the feature list is a pipeline. You register a source feed. The source is assigned a translation engine, chosen per source, so one feed can go through DeepL while another goes through an OpenAI-compatible model. RSSBox fetches the source on a schedule you control, since the README lists control over update frequency for translated sources. It then applies the configured operation (translate, summarize, or both), optionally fetches the full article text, optionally applies keyword or AI filtering, and writes the result out as a new RSS or JSON Feed that your reader subscribes to directly. Tags are the grouping primitive: several sources can be merged into one unified output, and filters can be applied at that merged level rather than per source. The README also states that you can view the translation status of each source and see the tokens or characters each source has consumed. That accounting is the part worth paying attention to, because it is the only cost signal the project exposes and it is per source, not per article.

Running it: the documented paths are Docker and uv

The README documents two entry points and does not describe a manual install in the excerpt available. For contributors, the flow is: git clone https://github.com/versun/rssbox.git, cd rssbox, create a branch with git checkout -b feature/your-feature-name, then run uv run dev, which the README says will automatically install dependencies and complete initialization. Before opening a pull request, the README asks that the code pass ruff format checks and basic tests. For deployment, the repository publishes a Docker image under versun/rssbox, and the README links the Docker Hub version badge, so the image is the intended production path. The homepage at rssbox.app and a hosted demo are linked, which suggests the maintainer runs a reference instance, but the README does not describe the demo's configuration or limits. What the README does not give is a configuration reference: no environment variable names, no database setup, no translation engine credential keys. Those must live in the docs site at rssbox.app, which is outside the material available here. Treat that as the first thing to read before you plan a deployment, because the engine credentials are the one piece you cannot infer.

The dependency you cannot design around: every translated item costs money

RSSBox supports DeepL and any model behind an OpenAI-compatible interface. There is no local, offline translation engine in the list. That means the core feature is metered by a third party, and the failure mode is straightforward: when your DeepL quota is exhausted or your model endpoint returns errors, the pipeline stops producing translated items. Whether it falls back to the original text or emits nothing is not stated in the README, and that distinction matters a great deal for a feed you rely on. The per-source token and character counters help you watch this, but they are a reporting feature, not a budget cap. There is also no indication in the README of caching or deduplication across a re-fetch, so a source with a high update frequency and a long retention window is the expensive configuration. If you subscribe to a busy feed and set it to update often, you are paying per item, repeatedly, for content you may not read. That is a design trade-off, not a bug, but it should shape which sources you add.

Where RSSBox is the wrong tool

Three cases stand out. First, if you want a reading experience, RSSBox is the wrong layer. It has no reader UI described in the README, and the output is meant to be consumed in something else. Second, if you need a feed pipeline that survives an outage of an external API without intervention, RSSBox is a poor fit because translation is the central operation and it depends on a provider. Third, if your sources are already in your language and publish full text, the only features left that apply to you are keyword filtering, AI filtering and tag-based merging. For those, a self-hosted Django service with a database is a heavy way to get a filter. The honest comparison is with the original problem: browser-side translation plus a full-text service plus manual skimming. That stack costs no infrastructure and no API key, but it costs you per-article effort and it cannot produce a single merged feed. RSSBox trades recurring API cost and an operational surface for removing that effort. Whether the trade is good depends entirely on how many foreign-language or truncated feeds you actually read.

Maintenance, releases and what GPL-3.0 means for a self-hoster

The repository is not archived, and the release cadence visible in the material is frequent: 2026.9.6 on 2026-09-06, 2026.9.5 the day before, and 2026.8.4 about a month earlier. The version scheme is date-based, which makes it easy to tell how stale a pinned Docker tag is. Frequent releases are a maintenance signal in both directions: fixes arrive quickly, and so do changes you have to absorb. If you pin an image tag, pin an exact one such as a dated release rather than a moving tag, and read the release notes before moving. The project is licensed GPL-3.0. For someone running RSSBox on their own server to read their own feeds, that is unremarkable. It becomes a question if you plan to modify RSSBox and distribute the modified version, or to offer it to others as a network service, because the GPL carries obligations in those scenarios. This is a description of the licence, not legal advice; if you are building a product on top of RSSBox, talk to someone qualified about what GPL-3.0 requires of you. The README also points to a public budget spreadsheet and a sponsor list, which tells you the project is funded by donations rather than by a company with a support contract. Plan accordingly: your support channel is the Telegram group and the issue tracker, not an SLA.

What to check before you commit

Start with the docs site at rssbox.app, because the README excerpt here does not name a single configuration key, and you cannot deploy without the engine credentials and the database settings. Then confirm the fallback behaviour when a translation engine fails, since that determines whether a broken API key silently degrades your feed or empties it. Then run one source through the pipeline and compare the per-source token count against your provider's usage dashboard; if those two numbers disagree, the cost estimates you build on top of RSSBox are wrong. Finally, test the tag-based merge with the reader you actually use, because a merged feed is a different document shape from the sources it combines, and not every client handles that identically. RSSBox is worth adopting when translation is the reason you are looking at it. If it is not, the filtering and merging features alone do not justify the moving parts.

Editorial conclusion

Adopt RSSBox if you already self-host services, read feeds in more than one language, and are willing to hold API credentials for DeepL or an OpenAI-compatible endpoint, because the translation step is the product and it does not work without a provider. Do not adopt it if you want a hosted reader, a mobile app, or a feed pipeline that keeps working when your model quota runs out. Before committing, verify three things in your own deployment: that the Docker image tag you pin matches a release you have read the notes for, that per-source token accounting lines up with your provider's billing dashboard, and that the tag-based merge feature produces the combined feed shape your reader actually accepts.

Official sources

  1. License: GPL-3.0
  2. Project website
  3. README
  4. Releases
  5. versun/RSSBox on GitHub
Community notes

Community notes