rss-kakapo
A Fediverse service that turns Mastodon into your feed reader: mention the birb with a website's address, and it creates an account that toots every new post of that site's RSS or Atom feed.
rss-kakapo is a fork of RSS Parrot by Gabor L Ugray, taken at v0.0.99. It is meant for small, private instances rather than one big public one. Please don't report problems with rss-kakapo to RSS Parrot.
Differences from RSS Parrot
- Who may request feeds can be restricted. With
restrict_requests: true, only the monikers (@user@host) listed inallowed_requesters_filemay ask the birb for new feeds; everyone else gets a polite refusal. An empty or missing list then denies everyone. Off by default. - Feeds are polled politely. A check sends the
ETagandLast-Modifiedof the last successful response back asIf-None-Match/If-Modified-Since, so an unchanged feed costs a304with no body. Each consecutive failed check doubles the wait before the next one, and aRetry-Afterfrom the server is honoured. A server can't silence a feed this way, though: the wait after a failure is capped atmax_retry_delay_hours(default 24) — soRetry-After: 3024000still means "try again tomorrow". A feed whose normal interval is longer than the cap just stays on its normal schedule, so a failing feed is never polled more often than a healthy one. - Logs always go to stderr, through a small stdlib logger instead of
charmbracelet/log, which drops eleven modules from the dependency tree.log_fileis ignored. - No rss-parrot.net branding in the web pages and the birb's texts: the instance's own host is shown, and there are no analytics.
- Nix:
package.nixbuilds the server and itswww/tree with any nixpkgs (callPackage);flake.nixwraps it.
The binary is rss-kakapo, but the Go module is still called rss_parrot,
to keep upstream commits easy to cherry-pick.
Source
https://sources.profpatsch.de/rss-kakapo/
Upstream history is kept intact; the fork's commits sit on top of upstream's
v0.0.99 tag.
License
MIT, see LICENSE. Copyright for the original work remains with Gabor L Ugray.