Do you love terminal RSS readers like Newsboat but hate managing their
urls file by hand? Tired of having your feeds trapped in one format
or another?
Then RSSM is for you!
RSSM is a personal tool I'm building originally for myself to keep track of my RSS feed ecosystem. It works across three primary systems:
- Newsboat: Terminal-based RSS reader.
- RSSSavvy: Web-based RSS reader.
- OPML: The universal standard for feed lists.
It manages your feeds and folders (one level deep) and handles the dirty work of syncing virtual feeds in Newsboat using queries and tags. No more manual syncing when you want to trial a new tool or cleanup your collection.
RSSM is built using Common Lisp and ocicl.
ros build rssm.ros
./rssm --version- Parse and manipulate Newsboat
urlsfiles. - Export/Import RSSSavvy JSON configurations.
- Standard OPML support.
- Convert between formats with the
convertsubcommand:Supported formats:# Convert Newsboat to OPML rssm convert --source-format newsboat --dest-format opml \ --input ~/.newsboat/urls --output feeds.opml # Short flags are also supported rssm convert -s json -d newsboat -i feeds.json -o ~/.newsboat/urls
newsboat,json(RSSSavvy),opml. - CLI interface powered by my CLIFF library.
- Automated feed discovery and cleanup.
The convert command transforms feeds through a shared internal model.
Supported formats for both source and destination:
newsboat: Newsboaturlsformat. The first tag on a feed line is treated as the folder name.json: RSSSavvy subscription JSON.opml: Outline Processor Markup Language.
Folder mapping rules (single-level only):
- Newsboat tags -> one folder (first tag only)
- RSSSavvy groups -> folder title, via
"RS <url>"filters - OPML nested outline -> parent outline title as folder
Examples:
# OPML to RSSSavvy JSON
rssm convert -s opml -d json -i feeds.opml -o feeds.json
# RSSSavvy JSON to Newsboat
rssm convert -s json -d newsboat -i feeds.json -o ~/.newsboat/urlsFor information on contributing, see CONTRIBUTING.md. For LLM agents working on this project, see AGENTS.md. Check out ROADMAP.md to see where we're going.