Not thrilled with Twitter lately? Mastodon is a good alternative social network that’s not controlled by one monolithic ad company.

It works a lot like Twitter, but with some key differences:

  • Posts are 500 characters
  • Mix public and private posts from the same account
  • Spoiler warnings!
  • Chronological timelines! You see posts in the order they arrive, not the order that some algorithm thinks will make you angry enough to “engage” more.
  • No ads!
  • Less data mining!
  • Human moderators!
  • Each server is its own community within the larger “Fediverse,” and they can all interact with each other.

Wait, what’s that last one again? Mastodon is not a centralized service, but software run by many different people and organizations. You can join a server (or “instance”) that suits you (or start your own!), and you can still interact with people on other instances because the servers talk to each other to make a larger combined service (“federation”). Think of it like choosing an email provider: You can still send to people on other providers, get replies, etc. Mastodon uses a standard called ActivityPub for this, which means it can interact with other software that uses that standard as well.

Join Mastodon gives you a quick run-down, and helps you choose an instance (don’t worry, you can always move later on). Some helpful guides (hat tip to @Canageek@cybre.space) include:

You can find me at @KelsonV@Wandering.Shop for general discussion, @KelsonReads@BookToot.club for books, and @KelsonV@Photog.Social for photography.

Oh yeah, there’s also this short video:

I have mixed feelings on Facebook closing down automated posts to personal* profiles. It might cut down on spam, and it will lead to better descriptions on link posts, but it also locks you further into their silo.

You can still write elsewhere and link back to it on Facebook, but you can’t use WordPress Publicize or IFTTT to post it, or Buffer to schedule it. You have to do it manually, which adds more friction, and you can’t time-shift it. I used to spread out look-at-this-cool-link posts using Buffer, and queue them up from Pocket while offline, but I can’t do that anymore.

If you want your Facebook audience to see your words or photos, it nudges you to maybe just post on Facebook to begin with (never mind that you want its main home to be somewhere you have more control). And it’s another way for them to get you back onto the site so they can try to keep you there for another 15 minutes, see some more ads, and generate more value content for Facebook.

Then again, I can’t help looking at it in terms of the debate over cross-posting from Twitter to Mastodon. There’s an argument that if you’re not actually on the platform, you’re not contributing to it. And while that debate tends to focus on auto-posts from a specific mismatched (and hostile) community, I think it’s fair to consider the broader context that if you’re not at least following up, you’re not really participating. (I’m especially guilty of that with my cross-posts to Tumblr.)

Though I suppose it matters more to a smaller community like the Fediverse than to something as massive as Facebook.

*Pages and groups can still accept automatic posts through the API, but those supposedly represent a business, or an organization, or a public persona rather than a “real” person.

Expanded from a Mastodon post on Wandering.Shop.

Mastodon is one of a newer crop of decentralized social networks that are trying to put the users first instead of building everything around ads, tracking, and attention-grabbing feedback loops.

It’s open source software run on a bunch of smaller networks, mostly volunteer-run, each with its own policies and moderators. (You can even run one yourself if you want!) These smaller networks can talk to each other behind the scenes, allowing you to follow and interact with people across networks (that’s where “federation” comes in). Each instance has a different community and flavor, and each is part of the broader community.

I’ve been on for a few months now. It takes a while to settle in, and it feels kind of like the early, optimistic days of Twitter, plus there’s an effort to learn from the past and make it better this time. You can find me at @kelsonv@mastodon.social (general discussion) and @kelsonv@photog.social (photography).

If you’re interested in trying it out, joinmastodon.org is a good place to start, and can suggest which instances might be a good fit. And this Brief Introduction to Mastodon goes into a bit more detail on how to use it and what the culture and etiquette is like.

One of the problems with Twitter’s search capability is that the results are isolated.

I’ve said before that one of the keys to making a social account feel like I own it is that I can find things in it if I want to go back later. You can search your old Twitter posts by adding your username to the query in the regular search form, but it only shows you the matching results, not other posts that might be connected.

If you click on it you can get an actual conversation thread…but only those tweets that are connected as replies, so if you didn’t thread a tweetstorm properly, or if you had a big sprawling conversation with lots of different people, sometimes replying and sometimes posting something new…you can’t see the rest of it.

Worse, if you go back far enough, Twitter doesn’t even have threading. You might see “@friend Inconceivable!” but have no idea what they were saying that you replied to. (And that doesn’t even get into old shortlink and image providers that have shut down, removing content from your post as well.)

I have similar issues with Instagram, which basically has no real search, only hashtag-based timelines to go along with the account-based timelines. In both cases, when you get to a specific post, it’s a dead end. You can’t see anything around it without going back to the author’s profile, even if that author is you. Though depending on how you clicked on the Instagram link, you might get back/forward links.

(This is true for Mastodon as well, but to be fair, Mastodon is still building its search capabilities.)

WordPress, on the other hand, not only usually has next/previous links on each post, but you can view archives by category, tag, month and (for some permalink structures) day. When you find a post, you can see what’s around it. You can get more in the admin interface, but even as a visitor, you can still get the context.

I finally managed to hook up IFTTT to Mastodon to auto-post from another site! I use IFTTT as glue for linking several services together including sharing interesting links from Pocket when I’m offline: I can add a tag in the app on my tablet, and then when it syncs that tag up to the cloud, IFTTT will pick it up and create the share post on whichever service I’ve tagged it for.* I also use it to post from RSS and WordPress to publish new blog posts to services that aren’t available in Jetpack.

My main source was this post by @raucao@kosmos.social. It’s a bit out of date, but it pointed me in the right direction.

Note: I’ve updated this article several times (most recently April 2022) to add more information, clarify some issues, respond to changes in IFTTT’s layout, and make additional suggestions.

Before we go any further, if you’re hooking up something that’s totally automatic, rather than something triggered by your own actions on another site — especially if you don’t plan on posting to the same account manually — I’d recommend looking for a bot-friendly Mastodon instance like BotsIn.Space. That’s where I set up @SpeedForce@BotsIn.Space to post every time there’s a new blog entry on Speed Force.

1. Set up IFTTT’s Maker Webhooks

On IFTTT, go to maker_webhooks. Update: They’ve renamed it as just “Webhooks.” Activate it by clicking on the Connect button.

2. Set up Mastodon to allow IFTTT as an application

Go to Preferences/Development/Your Applications on your Mastodon instance (ex: on mastodon.social it’s here). Click on New Application. Enter the following:

Name: IFTTT
Website: https://maker.ifttt.com/ (at first I thought you needed the full URL from the IFTTT config, but it seems OK without it. Update April 2022: This now requires the full URL, such as https://maker.ifttt.com/use/some-long-access-string (thanks Michiel!)
Scopes: write:statuses

Submit the app.

Now open the new app you’ve created and look up the access token.

3. Create an IFTTT app!

Go back to IFTTT and create a new app. For example, I created an app triggered by Pocket, whenever an item is tagged share-mastodon. You could also set it up to autopost every time you blog with a specific tag, or every new item in an RSS feed, or all kinds of things. Even cross-post from Facebook or “the birdsite” (Twitter).

Since IFTTT has rearranged their site to make it easier to use pre-built recipes — sorry, apps — here are the steps to get to the point where you can build your own.

  1. Click on the “Get More” button at the top of the IFTTT page.
  2. The first bar should say “Make more Applets from scratch.” Click on the “IfThisThenThat” button in that bar.
  3. Click on “This” in “If +This Then That”
  4. Search for the type of service you want to hook up — RSS for a feed, or Pocket, or Facebook, etc. and choose the type of event you want to use (ex. “New feed item” or “New item tagged…”)
  5. Enter the info needed for the event — your feed URL, the tags you’re looking for, etc, and click on “Create Trigger.”
  6. Click on “That” in “If [rss] Then +That”
  7. Search for Webhooks and click on it.
  8. Choose “Make a Web Request”

And now you’re ready to configure how IFTTT will actually talk to your Mastodon app. Enter the following settings:

URL: https://mastodon.example.com/api/v1/statuses?access_token=1234567890 (replace mastodon.example.com with your server and replace 1234567890 with the access token you got from Mastodon.)
Method: POST
Content Type: application/x-www-form-urlencoded
Body: status=Whatever you want to post

For example, to share a link from Pocket you might want the body to be

status=<<<{{Title}}>>> <<<{{Url}}>>>

Or for posting from WordPress, you might want it to be

status=New blog post: <<<{{PostTitle}}>>>
<<<{{PostUrl}}>>>

Or from an RSS feed, you could use

status=New post: <<<{{EntryTitle}}>>>
<<<{{EntryUrl}}>>>

The “ingredients” available (Title/PostTitle/etc.) will depend on the source you’re using, and you can get them from the IFTTT user interface. RSS feeds will have EntryTitle, EntryUrl, etc., WordPress will have PostTitle and PostUrl, and so on. You can click on the “Add ingredient” button to see what’s available.

Watch out for ampersands and single quotes, because the API handler treats them as separators. Even if they’re in the source material! When I first set this up, I ran into problems where single quotes in the original post would cause the Mastodon post to break. Wrapping the ingredient like this <<<{{Title}}>>> will prevent that.

Be sure to include the status= at the beginning! You can also add optional parameters for the Statuses method of the Mastodon API to add spoiler text, mark it as sensitive content, change the visibility (public, followers-only, etc), and so on.

To post an excerpt in a CW that doesn’t show up in local/federated timelines or hashtag searches, you would do something like this:

spoiler_text=Link: <<<{{Title}}>>>&visibility=unlisted&status=<<<{{Url}}>>> <<<{{Excerpt}}>>>

Or you could auto-generate a private draft, which you can go back to manually and fine-tune using Mastodon’s “Delete and re-draft” feature.

visibility=direct&status=< <<{{Title}}>>> "< <<{{Excerpt}}>>>" < <<{{Url}}>>>

Unfortunately, this method can’t post images because uploading images to Mastodon is a two-step process** and IFTTT webhooks can only do one step. For Twitter, the cross-poster crossposter.masto.donte.com.br, can handle image uploads. And if you want to go full Rube Goldberg, you can hook up a chain like Instagram→ IFTTT→ Twitter→ Crossposter→ Mastodon. (Thanks to @outside_rs for confirming this works!)

Click on “Create action.”

Add a title and click on “Finish.”

4. Test it out!

Go and post something that should trigger the rule, then come back and click “Check Now” on the IFTTT applet. Make sure it comes through the way you want it to. Adjust it as needed, using “Check Now” to verify each change, until it’s working the way you want it.

Once you’re done, let it go! Over time, IFTTT will adjust its checking frequency based on how often you post to the source feed. I’ve got some that it usually catches within 10 minutes, and others that it takes a few hours.

You can follow me on Mastodon at @kelsonv@wandering.shop. If you’re not on Mastodon, but would like to check it out, start at JoinMastodon.org. It’s a quick overview of what Mastodon is, how it’s different from Twitter, how different instances work (think of them as different servers on an MMO game, or different email services), and how to pick an instance that suits you.

*The day after testing the Pocket-to-Mastodon connection with a few links, I discovered something interesting about IFTTT when it re-posted one of those links to Buffer. Apparently IFTTT doesn’t know which tags are new, only which bookmarks have been updated and what the current tags are. My new Pocket-to-Mastodon applet picked up the share-mastodon tag I’d just added, and my Pocket-to-Buffer applet picked up the old share-buffer tag that had been on there since I first shared it last month.

**The Mastodon API needs the image to be uploaded before you post the status, and IFTTT apps can only take one action.