Feed me
nom is a terminal based RRS feed reader using Glow styled markdown to improve the reading experience and a simple TUI using Bubbletea.
- Local sync and offline reading
- Backend connections (miniflux, freshrss supported)
- Vim style keybindings for navigation
- Plenty more features such as mark read/unread, filtering and feed naming
See releases for binaries. E.g.
$ curl -L https://github.com/guyfedwards/nom/releases/download/v2.1.4/nom_2.1.4_darwin_amd64.tar.gz | tar -xzvf -$ nom # start TUI
$ nom list -n 20 # list feed items in $PAGER, optionally show more
$ nom add <feed_url>
$ nom --feed <feed_url> # preview feed without adding to configConfig lives by default in $XDG_CONFIG_HOME/nom/config.yml or $HOME/Library/Application Support/nom/config.yml on darwin.
You can customise the location of the config file with the --config-path flag.
Feeds are added to the config file and have a url and name.
feeds:
- url: https://dropbox.tech/feed
# name will be prefixed to all entries in the list
name: dropbox
- url: https://snyk.io/blog/feedYou can also add feeds with the add command:
$ nom add <url>To add youtube feeds you can go to a channel and run the following in the browser console to get the rss feed link:
console.log(`https://www.youtube.com/feeds/videos.xml?channel_id=${document.querySelector("link[rel='canonical']").href.split('/channel/').reverse()[0]}`)Show read items by default. (can be toggled with M)
showread: trueAutomatically mark items as read on selection or navigation through items.
autoread: trueAs well as adding feeds directly, you can pull in feeds from another source. You can add multiple backends and the feeds will all be added.
backends:
miniflux:
host: http://myminiflux.foo
api_key: jafksdljfladjfk
freshrss:
host: http://myfreshrss.bar
user: admin
password: muchstrongBy default links are opened in the browser, you can specify commands to open certain links based on a regex string.
regex can be any valid golang regex string, it will be matched against the feed item link.
cmd is run as a child command. The %s denotes the position of the link in the command.
openers:
- regex: "youtube"
cmd: "mpv %s"nom uses sqlite as a store for feeds and metadata. It is stored next to the config in $XDG_CONFIG_HOME/nom/nom.db. This can be backed up like any file and will store articles, read state etc. It can also be deleted to start from scratch redownloading all articles and no state.
Build nom image
docker build -t nom .This embeds the local docker-config.yml file into the container and will be used by default.
Running the nom via docker
docker run --rm -it nomUse the -v command line argument to mount a local config onto /app/docker-config.yml as desired.
You can use the backends-compose.yml to spin up a local instance of miniflux and freshrss if needed for development.
$ docker-compose -f backends-compose.yml up