The Antisocial Microblogging Framework
A simple framework for running a self-hosted single-user microblog. To see an example of a microblog generated using asµBlog, check out status.rudism.com.
- asµBlog will connect to your XMPP server and convert any chat messages you send to it into posts
- asµBlog will monitor your Pinboard.in feed for a specific tag and turn those shared links into posts
- send new posts to a local TCP port on the asuµBlog server
- can be used for IPC between asµBlog and other processes (web servers, scripts, etc.)
Media Extraction & Processing
- OpenGraph image metadata retrieved from linked urls, resized if necessary, and embedded in posts
- Twitter status urls will quote the linked tweet in your post
- Convert urls into links
- Shorten links using a lilurl domain
- Auto link
- Auto link
@Usernamesto custom urls or Twitter profiles
- Generate static site from Handlebars templates and upload to an S3 bucket
- Optionally create invalidations against a CloudFront distribution
Written with extensibility in mind. You can write and run as many logging, posting, and publishing plugins as you can dream up to create posts from any number of sources and save them to any number of formats and destinations.
The only real limitation is you can just use one data saving plugin at a time. Currenly available are an ephemeral in-memory store or a SQLite database.
Posting plugins can either spin up their own thread to capture and create new posts at will (see
XmppPoster for an example), or can be pinged at a set interval to check for and create new posts (see
PinboardPoster for an example).
Saving plugins are responsible for persisting posts as well as acting as a key-value cache for other plugins. See
MemorySaver for a simple example which does not persist data between application runs.
Whenever a new post is received, publishing plugins are triggered with all of the blog's posts. See
ConsolePublisher for a simple example that just publishes new posts to the console.
Some other possibilities would be a publisher that mirrors new posts to Twitter or automatically shares them to Facebook. These have not been written yet. Pull requests are welcome!
Processing plugins are run against every new post prior to publishing them. Existing plugins do things like convert urls into links (see
HtmlizeProcessor for this example), extract image urls to generate embedded media, and pass links through a url shortener.
Currently the only logging plugin is
ConsoleLogger which dumps log output to the console, but others could be written to suit your needs.
config.ymland edit to suit your needs. See the example config to see how it works. You must specify one saver plugin, but can specify as many or as few of the other plugins as suit your needs.
Compile and run with mono:
asublog $> nuget restore asublog $> xbuild /t:Release asublog $> mono asubuild/bin/Release/asubuild.exe
- Start posting to your amazing new single-user microblog!