Skip to content

Latest commit

 

History

248 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

agaetr

A modular system to take a list of RSS feeds (or user input of a single url!), process them, and send them to social media with images, content warnings, and sensitive image flags when available. Also includes an example of a daily post creator (such as for Postie and WordPress), bookmarking utility for newsboat, and a GUI poster, hooty.

What is agaetr?

agaetr is a modular system made up of several small programs designed to take input (particularly RSS feeds) and then share them to various social media outputs. The system is designed for single user use, as API keys are required. Setting up multiple posters is a significant initial effort, but the idea is that once you've done that once, you can use it for agaetr, mutt, GUI tools, a bookmarker for newsboat, etc., without further configuration.

agaetr is an anglicization of ágætr, meaning "famous".

Key Features

  • RSS Feed Processing: Automatically processes RSS feeds from various sources
  • Multi-platform Posting: Send to multiple social media platforms simultaneously
  • Content Warnings: Advanced content warning system with keyword matching
  • Image Handling: Automatic image detection, alt-text generation, and sensitive content flagging
  • URL Processing: Link deobfuscation and optional shortening
  • Preprocessing: Custom preprocessing scripts for non-standard RSS feeds
  • Modular Architecture: Easy to add new services and customize behavior
  • Archival Support: Integration with Wayback Machine for link preservation

Recent Reliability Fixes

  • Queue rows with an empty trailing description field now parse correctly during --push.
  • --push --loud now behaves verbosely regardless of argument order.
  • If URL cleanup or archive lookup fails, agaetr now keeps the original link instead of posting without a URL.
  • Mastodon and Bluesky senders now build post bodies more safely and avoid eval for posting commands.
  • A tag that exactly matches a configured CW keyword, such as uspol, now triggers that content warning during parsing.

Architecture Philosophy

This was created because pay services are expensive, and other options are either limited or subject to frequent bitrot. The modular structure is specifically designed so that it should be easy to create a new module for additional services, as it relies on other programs to do most of the posting. Therefore, if one posting tool dies, another can be found and relatively easily swapped in without changing your whole setup.

One of the reasons there are multiple different example service wrappers (and that they are written in straightforward BASH scripting) is so that future users (including yourself) can use them as templates or examples for other tools or new services with as little fuss as possible and without requiring extensive knowledge.

Special thanks to Alvin Alexander, whose post got me on the right track.

Installation and documentation is at the wiki.

TODO

Roadmap:

  • send via beeper to recipient(s)
  • linkedin (via crossposter)
  • reduce logspam
  • record success/failure for each outbound source.
  • store data in sqlite perhaps, instead of a straight text file

About

Modular scripts to take text, images, and links from RSS feeds and push to social media

Topics

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages