From a4a1e8d7d79ace4efc7750fd2f49c38d9b016866 Mon Sep 17 00:00:00 2001 From: Chris W Date: Sat, 9 Dec 2023 17:29:59 -0700 Subject: [PATCH] new post --- .frontmatter/database/taxonomyDb.json | 2 +- ...ng-n8n-to-create-a-simple-mastodon-bot.png | Bin 0 -> 53873 bytes ...ing-n8n-to-create-a-simple-mastodon-bot.md | 59 ++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 public/images/using-n8n-to-create-a-simple-mastodon-bot.png create mode 100644 src/content/posts/using-n8n-to-create-a-simple-mastodon-bot.md diff --git a/.frontmatter/database/taxonomyDb.json b/.frontmatter/database/taxonomyDb.json index 9e26dfe..51cf0b4 100644 --- a/.frontmatter/database/taxonomyDb.json +++ b/.frontmatter/database/taxonomyDb.json @@ -1 +1 @@ -{} \ No newline at end of file +{"taxonomy":{"tags":["bot","fediverse","mastodon","n8n"]}} \ No newline at end of file diff --git a/public/images/using-n8n-to-create-a-simple-mastodon-bot.png b/public/images/using-n8n-to-create-a-simple-mastodon-bot.png new file mode 100644 index 0000000000000000000000000000000000000000..6191e67c77a577e34aa626ba892ee0b50b57309b GIT binary patch literal 53873 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 B2xR~O literal 0 HcmV?d00001 diff --git a/src/content/posts/using-n8n-to-create-a-simple-mastodon-bot.md b/src/content/posts/using-n8n-to-create-a-simple-mastodon-bot.md new file mode 100644 index 0000000..931c790 --- /dev/null +++ b/src/content/posts/using-n8n-to-create-a-simple-mastodon-bot.md @@ -0,0 +1,59 @@ +--- +title: Using n8n to create a simple Mastodon bot +pubDate: 2023-12-09T23:53:19.889Z +description: Why go through the hassle of programming a bot from scratch when you can use a node based workflow with n8n +author: Chris W +heroImage: /images/using-n8n-to-create-a-simple-mastodon-bot.png +tags: + - bot + - fediverse + - mastodon + - n8n +--- + +I am no stranger to bot development. One of the projects listed on my [projects page](/projects) is actually a bot framework written for Telegram which I've been working on for the past several years. I've also dipped my toe into the Mastodon bot scene with a simple Crystal-based take on the `!remindme` bot from Reddit. However, that bot is not currently running and that leads me to the topic of this post. + +## n8n + +For those that are unaware, [n8n](https://n8n.io/) is a node-based workflow automation tool. It's similar to Zapier or IFTTT but it's open source and can be self-hosted. It has a ton of integrations ranging from the usual suspects like Twitter (no I will not be calling it X) and Telegram, to ones you might not suspect like Postgres, AWS, and pretty much everything from Google. While it's lacking a Mastodon specific integration, it does have a generic HTTP request node which can be used to interact with the Mastodon API. + +## The bot + +The bot we're going to be working on here is a very simple one. You see, I have this blog and I want to post links to new posts on Mastodon. I could do this manually, but there's always the chance that I'll forget; and anyway, why not automate it if I can? So, what we're going to do is scrape the RSS feed for this blog, check if there are any new posts, and if there are, post them to Mastodon. + +Now I keep saying Mastodon here, but in reality my instance of choice is [Firefish](https://joinfirefish.org/) which is a fork of Misskey, but I tend to use the term Mastodon as a catch-all for the fediverse. Anyway, let's get started. + +### The workflow + +We'll be using the following nodes (more or less in order): + +##### RSS Feed Trigger + +This is our input node. It will check the RSS feed periodically and trigger the wokflow with the most recent post. + + +##### Postgres - Check if post exists + +You can use whatever you want, but I chose Postgres as it was what I already had ready to go. This node will check the database to see if the post has already been posted. Since the lack of a post will return an empty result which isn't the easiest to use, we will run `SELECT COUNT(*) FROM posts WHERE guid = ...`. + +##### IF/ELSE + +This node will check the result of the Postgres node. If the result is less than 1 we can continue on. + +##### HTTP Request + +This is the node that will actually post to Mastodon (or whatever service you're using). All it has to do is send a JSON request to your instance, along with the auth token. In the case of Misskey the auth token is included in the JSON body as the `i` field, but your results may vary. + +##### Postgres - Insert post + +Lastly we'll update the database with the new post. + +### The finished workflow + +![The finished workflow](/images/using-n8n-to-create-a-simple-mastodon-bot.png) + +You can check out the JSON for the entire finished workflow [here](https://0x45.st/repeat-gain-sum.json), and import it into your own n8n instance if you want to use it as a starting point for your own bot. + +## Conclusion + +As always, you're going to have more control if you write your own bot from scratch. For lots of things this probablt isn't the right workflow. However, if you're just looking to automate something simple, n8n is a great tool to have in your toolbox. I hope this post has been helpful to you, and if you have any questions feel free to reach out to me in the fediverse at [@watzon@watzonmanor.com](https://watzonmanor.com/@watzon).