tinyfeed is a CLI tool that generate a static HTML page from a collection of feeds.
You can effortlessly set it up in crond or systemd and direct your HTTP server
to the generated index.html
and voilà, you’ve got yourself a webpage
that aggregate your feeds.
- RSS, Atom and JSON feeds are all supported thanks to the awesome gofeed library
- Highly customizable, especially with the ability to use external stylesheet and templates.
- Dark / Light theme based on system preference
- Generated page is lightweight and fully accessible
- Summaries of the articles are available by clinking on the side
The CLI app is design to work with basic pipelining and stdout redirections.
Usage:
tinyfeed [FEED_URL ...] [flags]
Examples:
single feed tinyfeed lovergne.dev/rss.xml > index.html
multiple feeds cat feeds.txt | tinyfeed > index.html
Flags:
-i, --images Add this flag to load images in summaries
-d, --description string Add a description after the name of your page
-h, --help help for tinyfeed
-l, --limit int How many articles will be included (default 50)
-n, --name string Title of the page. (default "Feed")
-q, --quiet Add this flag to silence warnings.
-s, --stylesheet string Path to an external CSS stylesheet
-t, --template string Path to a custom HTML+Go template file.
--timeout int timeout to get feeds in seconds (default 15)
cat feeds | tinyfeed > /tpm/tinyfeed && mv tinyfeed /path/to/index.html
You can download the official binaries from the releases page. Currently only arm64 architecure on Linux, Mqx and Windows, is supported. If you need something else than that, please open an issue and I will add it to the releases process.
Here is a quick example of how to install the binary for linux:
wget https://github.com/TheBigRoomXXL/tinyfeed/releases/latest/download/tinyfeed_linux_arm64
chmod +x tinyfeed_linux_arm64
sudo mv tinyfeed_linux_arm64 /usr/local/bin/tinyfeed
tinyfeed --help
If you are on Alpine you also need to install gcompat to fix the usual musl / glibc compatibility issues.
apk add gcompat
go install github.com/TheBigRoomXXL/tinyfeed@latest
You can provide you own template for page generation. For an exemple template check out the built-in one. To learn about HTML+Go template check the official documentation.
Inside you template you will have access to data with the following struct and functions:
type data struct {
Metadata map[string]string
Items []*gofeed.Item
Feeds []*gofeed.Feed
}
func preview(item *gofeed.Item) string
func domain(item *gofeed.Item) string
You have created a page with tinyfeed and you want to share it? You can open a merge request or an issue to add it to the demo section.
If you need anything related to this project wether it's' just giving feedback, help to understand something or feature request just open a issue on this repos.
The project was heavily inspired by Hacker News and tinystatus.
Thank you @MariaLetta for the awesome free-gophers-pack wich I adapted for the banner.