POSSE to Mastodon using RSS and Azure Logic Apps

Introduction

Over the past year, I've made this website the main place where I post content. The easiest way to subscribe to content on my website is through the various RSS feeds. However, I have accounts on other platforms like X (formerly Twitter), Bluesky, and Mastodon where I'd still like to repost my content to. Since the changes to the Twitter API, the only place I cross-post to is Mastodon. The main reason behind it is, as of now, it's one of the few platforms that allows me to automate post creation via its REST APIs without restrictions. A large part of that is I self-host my own Mastodon instance but I assume there aren't as many restrictions when using other instances like mastodon.social. The way I automate posting is by setting up workflows using Azure Logic Apps. These workflows subscribe to my various RSS feeds and whenever a new post is published, they make an HTTP request to my Mastodon instance to create a new post. I've been doing this for some time but never got around to documenting it. This blog post goes into more details about how to set up these workflows.

What is POSSE

POSSE is short for "Post on your Own Site Syndicate Elsewhere". It's one of the patterns adopted within IndiWeb communities and projects. The main idea is, your website or a website you own or have administrative rights to becomes the main platform where you publish your content. Effectively, it's the cannonical version of your content. Once your content is on your website, you can optionally choose to distribute it on other platforms.

What is RSS

RSS is short for Really Simple Syndication. Accorting to Wikipedia, this protocol "allows users and applications to access updates to websites in a standardized, computer-readable format".

What is Mastodon

Mastodon is an open-source decentralized microblogging platform built on the ActivityPub protocol and part of the larger collective of federated systems known as the Fediverse.

What are Azure Logic Apps

If you've used workflow automation systems like IFTTT, then you generally know what Azure Logic Apps are.

A more formal definition from the Azure documentation - "Azure Logic Apps is a cloud platform where you can create and run automated workflows with little to no code. By using the visual designer and selecting from prebuilt operations, you can quickly build a workflow that integrates and manages your apps, data, services, and systems."

For more details, see the Azure Logic Apps documentation.

Prerequisites

Since you'll be creating Logic App Resources on Azure, you'll need an Azure account.

Create Consumption Azure Logic App Resource

There's various ways to create an Azure Logic App Resource but the easiest one for this relatively simple workflow is using the Azure Portal. For more details, see the create a consumption logic app resource documentation.

For the most part you can leave the defaults as is. Since the intended use for this workflow is personal and I don't need enterprise features, I chose to create my logic app using the consumption plan.

When prompted to choose Plan Type, select Consumption.

The Workflow

The workflow is relatively simple. Whenever a new item is posted to an RSS feed, make an HTTP POST request to the Mastodon API

flowchart TD A["RSS"] --> B["HTTP (Mastodon API)"]

Once your Logic App resource deploys to Azure, create a new logic app using the Blank Template. For more details, see the select a blank template documentation.

This will launch you into the Logic app designer UI where you can begin to configure your workflow.

RSS trigger

The first thing you'll want to do is set up the trigger that initiates the workflow. The trigger in this case will be new posts on an RSS feed.

In the Logic app designer, search for RSS and add it as a trigger.

Once the RSS trigger is added to your workflow, configure it as follows:

HTTP action

Now that your trigger is configured, it's time to do someting with the latest posts. In this case, since I want to create a new post on Mastodon, I can do so via their REST API.

Get Mastodon credentials

One thing that you'll need to publish posts to Mastodon is an application token. The easiest way to get one is using the Web UI.

To get your app credentials through the web UI:

  1. In the Mastodon Web UI, select Preferences.
  2. In the preferences page, select Development.
  3. In the development preferences tab, select New application.
  4. In the new application page:

If successful, this will create credentials and a token you can use to send authenticated requests to the Mastodon API.

Configure HTTP action

Now that you have your credentials, you can configure your HTTP action in the Logic Apps workflow.

In the Logic App designer:

  1. Select + New Step.
  2. Search for HTTP and add it as an action.
  3. Once the HTTP action is added, configure it as follows:

Save and run

That's it! Now you just need to select Save in the Logic app designer page.

Once it's saved, click Run trigger which will kick off your trigger. If you have anything recent to publish and everything is configured correctly, it should show up in your Mastodon feed.

Conclusion

By publishing content on your own website first, you're in full control of your content. Regardless of which platforms come and go, you won't have to adjust to those changes because your content is not locked in to those platforms. However, that doesn't mean you can't also publish your content there. Using protocols like RSS make it easy to subscribe to updates on your website. Using REST APIs provided by the respective platforms, you can automate publishing these updates. To further automate and simplify this process, you can use services like Azure Logic Apps to make publishing to all places easy.


Send me a message or webmention