One cool implementation of Mastodon-as-comments was with the G-Droid frontend app for the F-Droid ecosystem.
F-Droid apps don't have comments or ratings on the default F-Droid app. They're generally less necessary because the apps don't have ads or severe privacy concerns like the ones from Play Store do, but it's still nice to hear others' experiences and comments on them.
G-Droid introduced a commenting system by simply redirecting you to a mastodon URL when you clicked "Add a comment". That URL will by default add "@gdroid@mastodon.technology" and a hashtag based on the app package name to your post. For eg., for the Markor app, it would add
at the end of your comment post. The @username will notify a bot to pickup this comment, the hashtag will help it attribute it to the right app, and so your comment will get collected and displayed below the app listing in G-Droid.
Sadly, G-Droid itself doesn't seem to be actively maintained anymore, the last update being a few years old, but it's a really cool example of what is possible when you have open, flexible systems that can be plugged in together in many ways to create the features you need.
I ended up doing something similar, but statically, and searching for discussions dynamically rather than using a single hardcoded thread. Essentially it's a script that searches for recent posts linking to my domain name on Reddit, HN, etc, and then updates a file with the URL of that post and some information about when it was made and how many posts there are. Then there's a Hugo template that converts the data in this file to HTML.
The script runs every few hours using free GitHub runner time, and if it makes a change, it commits it and creates a pull request with the contents so that I can review it. (I could automatically commit straight to the main branch but I like having the manual review just in case.)
I couldn't get it to work for Mastodon because there's not really a public search for Mastodon (for all sorts of reasons), although at some point I want to get it working for Bluesky. I did try hooking it up with Twitter for a while, but that required all sorts of API keys and things that I didn't want to deal with so I gave up. You also need API keys for Reddit, but that was easier to get hold of and manage.
After spending far too much time integrating third-party comment systems into my website, I finally decided to roll my own in Common Lisp [1].
I’m quite happy with the result. It’s simple, minimal, and fast. It does exactly what I need and no more.
Plus, everything is held for my review before being published, so I don’t have to worry about spam, cross-site scripting, or off-topic comments. It’s been a satisfying solution.
When I publish something I like not shouting into the void so I want comments , but I also don't want to give a platform to anyone and everyone on my blog.
What works best for me is to add a link to the fediverse, linkedin and sometimes HN threads of comments when I publish a post. It's also a very low tech solution :)
At the same time, I am an opportunist — sometimes it is Reddit, sometimes it is ix Xm, and sometimes it is here, the Hacker News. Different posts resonate with different audiences; and I don't want to link to a ghost town.
One issue is that there is no such thing as "the default platform for discussions"—no matter which one you choose, only a small fraction of readers will be interested in participating.
> One issue is that there is no such thing as "the default platform for discussions"
Isn't this what the various linkback mechanisms tried to solve? It seems like the ideal solution: let anyone comment wherever they want, from a tweet to their own follow-up blog post, and connect them all via automated notifications.
Nice write-up! That the “View comments” simply redirects to the source post when JavaScript isn’t available — it feels very natural, more than I’d have expected!
I've been considering trying to get to a similar result, but considering making my actual blog _be_ a (minimal) ActivityPub sever with a si gle user/actor such that posting to the blog is publishing an ActivityPub post, and have replies to that post coming directly into the blogs own inbox, then show up as comments.
Anyone else weighed up the two approaches, I'm still on the fence tbh.
However since I'm not a very good frontend dev, posting to this is currently done through a CLI application without great UX. :D If you're interested, I would *love* to collaborate with someone on it.
While they seem different, they can be used in similar ways. Sorta like how Delta Chat turns email into something like IMs with a conversation view. It's all passing around text/media at the end of the day.
Yes, quite different concepts, but both are federated services that offer the necessary functionalities to be used as comments. One is a bit more "real-time" than the other.
I should perhaps also add a little disclaimer/warning: When i had a closer look at cactus comments a while ago, it seemed to be broken / "assembly required" in various parts and blogs that use it.
I think this is a pretty great step in the direction of not being wholly dependent on one platform; makes you start thinking about your website as the source and the social media networks as just a representation.
This is where I'm struggling. I have Bluesky comments set up but am of the impression that mastodon comments will be completely separate and clunky as a result
Nice! I'm waiting for (/ thinking of building) something similar for #atproto/Bluesky. You could even use OAuth to allow users to add responses inline, which would then also show up in the Bluesky feed (if you wanted), with a UX pretty similar to Disqus.
Mastodon is great, but the "pick a server" step is a pretty hard filter for most users, who just want to sign up for something.
You'd also get to benefit automatically from Bluesky's blocking/moderation tools.
The protocol is fully open and adoption is picking up rapidly. You can easily host your own data server in your preferred jurisdiction if that is important to you.
I wonder how that scales. I'm sure it wouldn't matter too much for a small personal blog but I assume the mastodon server wouldn't be very happy if the API was queried at a high rate.
Yeah, I made a note of that. I'm not sure anything I've written to my cheesy blog has hit HN before, so this is probably the biggest test I'm going to get.
If it were going to get any bigger, I'd want my own Mastodon server.
Edit: this is also why I made it an explicit user action to load the comments.
I like caches with a short TTL. Even caching for a single second will cap the amount of API requests. Just setting an expiry a minute out when you generate the page and put it behind a decent caching reverse proxy, is a decent option. Or just write the API response to a file and stat that file to check age before you respond (if so, just make sure to avoid race conditions; e.g. write to a separate file and rename). If you have something like Redis running, that's of course a great option too.
(but just having users click a button is likely to be more than enough)
As a Mastodon user who has been trying off an on to resurrect a blog and personal website, I'm starting to wonder whether the model of "personal blog with comments" really deserves to die given the nature of the modern web. If you're lucky, you just get ignored. Otherwise you just get consumed by AI and bots and psychopaths.
I have tried to get my static site generator (Lektor) to work with Mastodon and generate my Mastodon posts as a blog. I haven't had success yet because Lektor is obsolete and kind of garbage, but Mastodon's API is great.
I really like this solution, though. Just write a blog post and link to it from Mastodon. That solves the problem of Mastodon's text limit and of small hosted instances needing to regularly delete content to stay under their account limit.
As a technical feat and expression of FOSS integration this is cool but I don't know about the utility of it since any actual human being reading these comments will already be reading them on Mastodon. It is definitely better than the cancer that is Disqus though.
What weird fake information you're posting. Yes, administrators of fediverse servers can read your personal correspondence -- same as Facebook, X, and other social media sites that don't offer federation (unless you opt into some limited e2ee option). But I, as a fediverse admin, have no ability to read (private) correspondence between two others who don't use my instance.
Ultimately it comes down to: you must trust your instance admin. (Just like you must trust Facebook and X and Tiktok and whomever else). As a result, maybe take private conversations somewhere safer, like Signal or a pgp conversation. If you don't trust your instance admin, why did you sign up with your instance?
>If you don't trust your instance admin, why did you sign up with your instance?
Probably because you told them it was a cool OSS twitter alternative and not something that takes all of social media's moderation and privacy and content problems and multiplies them by the number of instances you join without any of the legal protections associated with being able to file civil or criminal complaints against an identifiable entity answerable to the laws of your country.
Haha it definitely takes the content moderation problems and distributes then across all the instances. But that's kind of the whole point. You can join an instance that moderates content in accordance to your preferences, rather than dealing with the weird policies of Meta/X. I'm sorry you don't like it though.
> I don't expect anyone without an account already to post, but my target audience largely already has such accounts
This is a ridiculous expectation. Virtually nobody uses Mastodon, especially since BlueSky now is the open platform of choice.
But even without this, Twitter-like websites for me and a lot of other people have absolutely no usecase, despite being in the audience who could read your blog. Expecting all your visitors to have an account in nonsensical.
Lol I knew I would get this kind of answer and downvotes.
You still have to make an account on a totally unrelated website. It's the shittiest experience one can think of.
But your excuse is "Hey actually you can also setup the whole application yourself before making the account to post a blog comment on an unrelated website, so that's actually super awesome!".
Absolutely ridiculous, and if any company you didn't like were to do something similar you would screech.
Usually blogs don't require creating an account to leave comments. Why present this false alternative when the common thing to do is just leaving a comment without creating an account?
why would you need to create an account to leave a comment? the site owner can own the entire flow if they so wish, including creating an anonymous actor for the comment.
One cool implementation of Mastodon-as-comments was with the G-Droid frontend app for the F-Droid ecosystem.
F-Droid apps don't have comments or ratings on the default F-Droid app. They're generally less necessary because the apps don't have ads or severe privacy concerns like the ones from Play Store do, but it's still nice to hear others' experiences and comments on them.
G-Droid introduced a commenting system by simply redirecting you to a mastodon URL when you clicked "Add a comment". That URL will by default add "@gdroid@mastodon.technology" and a hashtag based on the app package name to your post. For eg., for the Markor app, it would add
at the end of your comment post. The @username will notify a bot to pickup this comment, the hashtag will help it attribute it to the right app, and so your comment will get collected and displayed below the app listing in G-Droid.Sadly, G-Droid itself doesn't seem to be actively maintained anymore, the last update being a few years old, but it's a really cool example of what is possible when you have open, flexible systems that can be plugged in together in many ways to create the features you need.
This is a nice idea!
I ended up doing something similar, but statically, and searching for discussions dynamically rather than using a single hardcoded thread. Essentially it's a script that searches for recent posts linking to my domain name on Reddit, HN, etc, and then updates a file with the URL of that post and some information about when it was made and how many posts there are. Then there's a Hugo template that converts the data in this file to HTML.
The script runs every few hours using free GitHub runner time, and if it makes a change, it commits it and creates a pull request with the contents so that I can review it. (I could automatically commit straight to the main branch but I like having the manual review just in case.)
I couldn't get it to work for Mastodon because there's not really a public search for Mastodon (for all sorts of reasons), although at some point I want to get it working for Bluesky. I did try hooking it up with Twitter for a while, but that required all sorts of API keys and things that I didn't want to deal with so I gave up. You also need API keys for Reddit, but that was easier to get hold of and manage.
I wrote a post about how I implemented it here: https://jonathan-frere.com/posts/adding-discussions/
After spending far too much time integrating third-party comment systems into my website, I finally decided to roll my own in Common Lisp [1].
I’m quite happy with the result. It’s simple, minimal, and fast. It does exactly what I need and no more.
Plus, everything is held for my review before being published, so I don’t have to worry about spam, cross-site scripting, or off-topic comments. It’s been a satisfying solution.
[1] https://github.com/susam/susam.net/blob/main/form.lisp
I’ve seen a few times the option to email your comment, which I thought was a really elegant solution. So much in fact that I built that into my own site https://spenc.es/writing/email-as-a-commenting-system/#comme...
When I publish something I like not shouting into the void so I want comments , but I also don't want to give a platform to anyone and everyone on my blog.
What works best for me is to add a link to the fediverse, linkedin and sometimes HN threads of comments when I publish a post. It's also a very low tech solution :)
https://ergaster.org/posts/2024/03/06-welcoming-feedback/
I took a similar approach to linking to a comment thread, see e.g. Reddit links from https://p.migdal.pl/blog/2025/02/markdown-saves.
At the same time, I am an opportunist — sometimes it is Reddit, sometimes it is ix Xm, and sometimes it is here, the Hacker News. Different posts resonate with different audiences; and I don't want to link to a ghost town.
One issue is that there is no such thing as "the default platform for discussions"—no matter which one you choose, only a small fraction of readers will be interested in participating.
> One issue is that there is no such thing as "the default platform for discussions"
Isn't this what the various linkback mechanisms tried to solve? It seems like the ideal solution: let anyone comment wherever they want, from a tweet to their own follow-up blog post, and connect them all via automated notifications.
Nice write-up! That the “View comments” simply redirects to the source post when JavaScript isn’t available — it feels very natural, more than I’d have expected!
I wanted to do something similar a while back, but while avoiding JavaScript; so I wrote a shell script that outputs fedi/Mastodon threads as HTML. It’s almost certainly less stable than your approach, but it works well enough for my use-case: https://hak.xwx.moe/jadedctrl/fedi2html In action: https://jaded.xwx.moe/lib/haiku-k-esperanto.html?en
I've been considering trying to get to a similar result, but considering making my actual blog _be_ a (minimal) ActivityPub sever with a si gle user/actor such that posting to the blog is publishing an ActivityPub post, and have replies to that post coming directly into the blogs own inbox, then show up as comments.
Anyone else weighed up the two approaches, I'm still on the fence tbh.
I'm working on something like that here: https://git.sr.ht/~mariusor/oni
However since I'm not a very good frontend dev, posting to this is currently done through a CLI application without great UX. :D If you're interested, I would *love* to collaborate with someone on it.
PS. a running instance where I post now and then is https://marius.federated.id
Here's an example of such ActivityPub server that can be hosted on Netlify, and save JSON files to your blog repo: https://github.com/sinofp/lesspub
If you want to use Matrix instead of Mastodon for your blog's comments, there's https://cactus.chat/
There's a rather long list of other solutions over at https://darekkay.com/blog/static-site-comments/
And there's https://github.com/carlitoplatanito/disgus for adding Nostr based comments to your static blog.
Aren't they 2 very different things? Matrix is live chat, similar to IRC, whereas Mastadon is a microblogging platform similar to X.
While they seem different, they can be used in similar ways. Sorta like how Delta Chat turns email into something like IMs with a conversation view. It's all passing around text/media at the end of the day.
Yes, quite different concepts, but both are federated services that offer the necessary functionalities to be used as comments. One is a bit more "real-time" than the other.
I should perhaps also add a little disclaimer/warning: When i had a closer look at cactus comments a while ago, it seemed to be broken / "assembly required" in various parts and blogs that use it.
I've been doing this on my site for a couple of years: https://github.com/offbyone/ideas/blob/3f50f69494aca01f21aeb...
It's pretty easy to do. I recommend it, if you already use Fedi for anything.
I think this is a pretty great step in the direction of not being wholly dependent on one platform; makes you start thinking about your website as the source and the social media networks as just a representation.
https://micro.blog has a good implementation of this for both the Fediverse and Bluesky. A random example of mine that has an array of 'em if you want an example: https://zacwe.st/2025/02/12/amazon-is-removing-the-ability.h...
Great read. I posted some thoughts on the pros and cons of using Mastodon for comments. Overall, it's been a positive experience for my blog.
https://jszym.com/blog/mastodon_blog_comments/
Reminds me of this post on adding BlueSky likes: https://whitep4nth3r.com/blog/show-bluesky-likes-on-blog-pos...
If I would want comments on my blog I would try to integrate BlueSky and Mastodon comments.
This is where I'm struggling. I have Bluesky comments set up but am of the impression that mastodon comments will be completely separate and clunky as a result
Nice! I'm waiting for (/ thinking of building) something similar for #atproto/Bluesky. You could even use OAuth to allow users to add responses inline, which would then also show up in the Bluesky feed (if you wanted), with a UX pretty similar to Disqus.
Mastodon is great, but the "pick a server" step is a pretty hard filter for most users, who just want to sign up for something.
You'd also get to benefit automatically from Bluesky's blocking/moderation tools.
But bluesky is a proprietary service based in the US. A less privacy friendly choice for your readers/commenters.
The protocol is fully open and adoption is picking up rapidly. You can easily host your own data server in your preferred jurisdiction if that is important to you.
I did something similar recently - and was inspired by others who did it:
https://blog.nawaz.org/posts/2025/Jan/adding-fediverse-comme...
If you're using Quarto, I've got a plugin that adds bsky and masto comments
https://andreasthinks.me/posts/quarto_comments/open-social.h...
I found this similar project recently as well: https://danielpecos.com/2022/12/25/mastodon-as-comment-syste...
I wonder how that scales. I'm sure it wouldn't matter too much for a small personal blog but I assume the mastodon server wouldn't be very happy if the API was queried at a high rate.
The author made some sane choices by having the user press a button before loading the comments
Yeah, I made a note of that. I'm not sure anything I've written to my cheesy blog has hit HN before, so this is probably the biggest test I'm going to get.
If it were going to get any bigger, I'd want my own Mastodon server.
Edit: this is also why I made it an explicit user action to load the comments.
I like caches with a short TTL. Even caching for a single second will cap the amount of API requests. Just setting an expiry a minute out when you generate the page and put it behind a decent caching reverse proxy, is a decent option. Or just write the API response to a file and stat that file to check age before you respond (if so, just make sure to avoid race conditions; e.g. write to a separate file and rename). If you have something like Redis running, that's of course a great option too.
(but just having users click a button is likely to be more than enough)
I really like GitHub comments on blogs.
As in "utterances" and "giscus"?
Github is a proprietary service owned by Microsoft. Storing comments there is a less privacy friendly solution than this one.
As a Mastodon user who has been trying off an on to resurrect a blog and personal website, I'm starting to wonder whether the model of "personal blog with comments" really deserves to die given the nature of the modern web. If you're lucky, you just get ignored. Otherwise you just get consumed by AI and bots and psychopaths.
I have tried to get my static site generator (Lektor) to work with Mastodon and generate my Mastodon posts as a blog. I haven't had success yet because Lektor is obsolete and kind of garbage, but Mastodon's API is great.
I really like this solution, though. Just write a blog post and link to it from Mastodon. That solves the problem of Mastodon's text limit and of small hosted instances needing to regularly delete content to stay under their account limit.
As a technical feat and expression of FOSS integration this is cool but I don't know about the utility of it since any actual human being reading these comments will already be reading them on Mastodon. It is definitely better than the cancer that is Disqus though.
mastodon is a fediverse client
[dead]
[dead]
[flagged]
What weird fake information you're posting. Yes, administrators of fediverse servers can read your personal correspondence -- same as Facebook, X, and other social media sites that don't offer federation (unless you opt into some limited e2ee option). But I, as a fediverse admin, have no ability to read (private) correspondence between two others who don't use my instance.
Ultimately it comes down to: you must trust your instance admin. (Just like you must trust Facebook and X and Tiktok and whomever else). As a result, maybe take private conversations somewhere safer, like Signal or a pgp conversation. If you don't trust your instance admin, why did you sign up with your instance?
>If you don't trust your instance admin, why did you sign up with your instance?
Probably because you told them it was a cool OSS twitter alternative and not something that takes all of social media's moderation and privacy and content problems and multiplies them by the number of instances you join without any of the legal protections associated with being able to file civil or criminal complaints against an identifiable entity answerable to the laws of your country.
Haha it definitely takes the content moderation problems and distributes then across all the instances. But that's kind of the whole point. You can join an instance that moderates content in accordance to your preferences, rather than dealing with the weird policies of Meta/X. I'm sorry you don't like it though.
I can't think of something more hostile than requiring an account on a 3rd party, totally unrelated, platform to post a comment on a blog.
I'll literally take ads and tracking over it.
I could add a button to swap the comments out for ads and tracking. ;)
To your point, though, I don't expect anyone without an account already to post, but my target audience largely already has such accounts.
> I don't expect anyone without an account already to post, but my target audience largely already has such accounts
This is a ridiculous expectation. Virtually nobody uses Mastodon, especially since BlueSky now is the open platform of choice.
But even without this, Twitter-like websites for me and a lot of other people have absolutely no usecase, despite being in the audience who could read your blog. Expecting all your visitors to have an account in nonsensical.
Mastodon is part of the fediverse, meaning accounts are federated (accounts on services can communicate with other accounts on other services).
You can run your own server, on your own hardware, make your own account, own every step of the stack, and can comment on there.
It's not just 3rd-party login, it's YOUR-party login.
Lol I knew I would get this kind of answer and downvotes.
You still have to make an account on a totally unrelated website. It's the shittiest experience one can think of.
But your excuse is "Hey actually you can also setup the whole application yourself before making the account to post a blog comment on an unrelated website, so that's actually super awesome!".
Absolutely ridiculous, and if any company you didn't like were to do something similar you would screech.
You would prefer to create a new account on every blog you visit and wish to comment on?
Usually blogs don't require creating an account to leave comments. Why present this false alternative when the common thing to do is just leaving a comment without creating an account?
why would you need to create an account to leave a comment? the site owner can own the entire flow if they so wish, including creating an anonymous actor for the comment.
Disqus requires an account on their system, too.
Optionally it does not, see https://help.disqus.com/en/articles/1717211-guest-commenting