The Antisocial Microblogging Framework
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


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

Posting Methods

  • asµBlog will connect to your XMPP server and convert any chat messages you send to it into posts
  • asµBlog will monitor your 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 #hashtags
  • Auto link @Usernames to custom urls or Twitter profiles

Publishing Methods

  • 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

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

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.

Publishing Plugins

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

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.

Logging Plugins

Currently the only logging plugin is ConsoleLogger which dumps log output to the console, but others could be written to suit your needs.


  1. Rename config.yml.example to config.yml and 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.

  2. Compile and run with mono:

asublog $> nuget restore
asublog $> xbuild /t:Release
asublog $> mono asubuild/bin/Release/asubuild.exe
  1. Start posting to your amazing new single-user microblog!