Introducing ActivityBot - the simplest way to build Mastodon Bots


As you may have read, BotsIn.Space is closing down, I have lots of automated bot accounts living on the Fediverse - and I want them to continue posting. Installing and maintaining an entire Mastodon instance sounds like hard work. Paying people to host my stuff feels like putting my fate in someone else's hands.

Say… didn't I write my own ActivityPub server? Why, yes! Yes I did!

I took the code and stripped it down to the bare essentials. All you need to do is upload two files0 - index.php and .htaccess - fill in your details, and you're done.

Get the ActivityBot source code on GitLab.

There's no database, no containers, no caching. It is as simple as I could make it

This bot can do the following:

  • 🔍 Be discovered on the Fediverse
  • 👉 Be followed by other accounts
  • 🚫 Be unfollowed by accounts
  • 📩 Send messages to the Fediverse
  • 💌 Send direct messages to users
  • 🖼️ Attach an image & alt text to a message
  • 🕸️ Autolink URls, hashtags, and @ mentions
  • 🚚 Move followers from an old account
  • 🔏 Verify cryptographic signatures
  • 🪵 Log sent messages and error.

That's it! Here's what it doesn't do:

  • ❌ Receive messages (other than follows and unfollows)
  • ❌ Thread replies
  • ❌ Delete or update a post
  • ❌ Create Polls
  • ❌ Attach multiple images
  • ❌ Set focus point for images
  • ❌ Set sensitivity for images / blur
  • ❌ Set "Content Warning"
  • ❌ Accurate support for converting user's text to HTML
  • ❌ Cannot be discovered by Lemmy instances

Grab a subdomain (don't buy a whole new domain name!) and stick this code on it. You'll have an ActivityPub bot running in minutes.

You can follow one of my bots @colours@colours.bots.edent.tel

Feedback very much welcome.


  1. You can also upload a .env file for your configuration if you want. ↩︎


Share this post on…

  • Mastodon
  • Facebook
  • LinkedIn
  • BlueSky
  • Threads
  • Reddit
  • HackerNews
  • Lobsters
  • WhatsApp
  • Telegram

9 thoughts on “Introducing ActivityBot - the simplest way to build Mastodon Bots”

  1. @blog From a quick read of the code:

    Around https://gitlab.com/edent/activity-bot/-/blob/9fed3dff8b3f02c836a1e48ae02b40c3d74a057d/index.php#L815 Note construction seems to be missing the cc field, which is present in the Create activity, they need to match.

    Around https://gitlab.com/edent/activity-bot/-/blob/9fed3dff8b3f02c836a1e48ae02b40c3d74a057d/index.php#L1039 means the mention part of the bot is Mastodon-specific as other servers don't use https://{$domain}/@{$user} and also will likely not work properly as it doesn't seems to add their ActivityPub IDs to to or cc fields.
    Might be a better idea to have the bot client mention via raw ActivityPub IDs instead of @username@domain since that requires keeping a user database.

    | Reply to original comment on queer.hacktivis.me

What are your reckons?

All comments are moderated and may not be published immediately. Your email address will not be published.

Allowed HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <p> <pre> <br> <img src="" alt="" title="" srcset="">