I added a Bluesky comment section to my blog

Posted by hydroxideOH- 11 hours ago

Counter254Comment90OpenOriginal

Comments

Comment by ulrischa 1 minute ago

But this means I have to make a bluesky posting for every article, right?

Comment by susam 9 hours ago

If you are rendering your blog or website with a static site generator, you could also consider importing comments as content files into your website source and then rendering them as part of the build. The full workflow would look like this:

1. Accept comments via email, CGI scripts, server-side program or by any other means that suits you. A simple hack that requires no server-side scripting: if you run your own web server, you can submit comments as GET query parameters logged in access.log, then extract them using grep, sed, etc. Personally, I use a server-side program to accept POST requests and write comments to a text file on the web server.

2. Review submitted comments. Delete spam.

3. Add comments to your website source repository as .md, .html or whatever format you use, similar to how you add blog posts as content files to your source.

4. Render comments alongside the rest of your site using your static site generator. Depending on the nature of your static site generator, this may require using or creating a template or layout that iterates over the comments and renders them.

It is a fairly hands-on workflow, so it may not suit everybody, but this is how I do it for my personal website. I see two main benefits of this approach. Since the review is manual in step 2, no spam can ever make it to my website. Step 3 ensures comments live entirely under my control, so I never need to worry about migrating them between platforms in the future.

Comment by ckardaris 8 hours ago

>1. Accept comments via email

In case anyone is curious, I (very) recently implemented a similar comment system based on email. I posted a write-up about it[1].

[1]: https://ckardaris.github.io/blog/2026/01/22/my-comments-run-...

Comment by 3 hours ago

Comment by RestartKernel 5 hours ago

I can see how that would work. For a small website, you're probably only looking at a few comments per day at absolute most, and you'll be reviewing them anyway to filter/approve them. (And the implementation lends to easy automation, since you just need to programatically update the Markdown file instead.)

Comment by andai 8 hours ago

>1. Accept comments via email

I only accept comments via Fax ;)

Comment by smnplk 8 hours ago

I only accept human written letters.

Comment by manuelmoreale 2 hours ago

You say this ironically but as a result of my blog I started receiving letters from people and it’s so rewarding.

Such an amazing way to interact with people.

Comment by dotancohen 2 hours ago

Carried by pigeons.

Comment by kurtis_reed 8 hours ago

Sounds terrible

Comment by susam 7 hours ago

Not for you then. That is perfectly fine. I have been using this approach for seven years now, and it has worked very well for me.

For anyone else who is interested in taking a look, here is my setup:

* The server-side program that processes the POST requests: https://github.com/susam/susam.net/blob/0.5.0/form.lisp#L254...

* The static site generator reads the comment files and renders them alongside the rest of the website: https://github.com/susam/susam.net/blob/0.5.0/site.lisp#L869...

* End result: https://susam.net/comments/

The last link shows the consolidated comments page that lists all approved comments posted across my entire personal website. The 'View original comment' link under each comment points to the individual comment page for each post.

Comment by ascorbic 9 hours ago

If you want a non-React solution, I made a Bluesky comments web component https://github.com/ascorbic/bluesky-comments-tag

It's very themeable. If for some reason you want your comments to look like Hacker News, there's a theme here: See the playground here: https://bluesky-comments.netlify.app/theme/

Comment by jesse_dot_id 8 hours ago

I like your idea and stole it but used Mastodon instead :)

https://jesse.id/blog/posts/you-can-now-comment-on-my-blog-f...

Comment by BeetleB 6 hours ago

People have been doing it with Mastodon (and perhaps Bluesky) for years.

https://blog.nawaz.org/posts/2025/Jan/adding-fediverse-comme...

Comment by mikae1 47 minutes ago

I'd love to see a combination of the two as one comment section.

Comment by p0w3n3d 9 hours ago

What about those EU anti-hate laws which punish the owner of the website instead, if comments are not filtered?

I'm asking of curiosity, when it started I disabled commenting on my web page

Comment by telmo 14 minutes ago

IANAL, etc. but this risk is usually exaggerated by people with a political agenda. EU legislation takes into account the size and purpose of websites. I have never heard of any small website being targeted by such legislation. Do your own due diligence, of course, and take care not to buy into internet hysteria and over-simplification.

Comment by pedropaulovc 9 hours ago

If you are looking for proactive filtering, you could leverage the Bluesky moderation labeler, I'm not aware of one focused on EU requirements though. If you are looking for reactive filtering, you may create a small labeler just for you where you can flag just the troublesome posts and then you filter them before the comment page is rendered.

Comment by madeofpalk 9 hours ago

I think regardless of any laws I really wanted want to publish hate speech on my website that has my name on it.

Comment by f311a 11 hours ago

My blog is fully static and I have a 50-line CF worker script that sends comments to me which I import directly to markdown of a blog post. There are ways to do comments without embedding.

Comment by sigmar 10 hours ago

Would be neat to automate the comment-with-markdown as a commit/PR? Like using Pull request as comment moderation

Comment by tclancy 4 hours ago

Would be cooler if it really was ColdFusion. Of course, 50 lines wouldn’t get you very far.

Comment by tombert 2 hours ago

Tangential, but recently I dove down the ColdFusion rabbit hole again.

My first job after dropping out of college was working with Flash and ColdFusion in 2012. Even by that time it was dated, but it was my first real dive into network and server programming so I do look at those days rather fondly.

CFML is one of those things that is simultaneously a brilliant and terrible product. The terrible part is obvious: it's a bloated language that doesn't lend itself terribly well to structure and historically has been very slow (though my understanding is that Lucee actually fixes that somewhat). The "brilliant" parts are less obvious but still cool. For example the cfquery blocks are really neat, and I say that without any sarcasm. Not only does it make it easy to write SQL directly, but there are nice built-in features to avoid injections with cfqueryparam that are easy to use, and you can simply add an attribute to the cfquery to specify caching. That's actually a really cool; I've seen people haphazardly reinvent different SQL caching heuristics and screw them up. The cfquery stuff makes it trivial and it has the advantage of doing it correctly.

Things like that are all over the language (though I haven't used it in awhile so I'd have to dig through notes to find specific examples); pages and pages of ugliness mixed with occasional spots of cleverness.

While I don't want to say I "miss" writing it, because I don't, I do have a bit of gratitude for its existence. If I hadn't picked up ColdFusion because of an, umm, "alternatively licensed" version of Dreamweaver when I was a teenager, my career would likely be very very different.

Comment by JCattheATM 10 hours ago

Care to share a link or some more info?

Comment by f311a 10 hours ago

How it works:

* CF worker on a subdomain that handles POST requests. Basically, a JS function that handles incoming requests.

* It stores comments in CF KV and sends me a copy to telegram

* All I need to do is copy it to Markdown (can be automated, but I manually approve the comments in case of spam)

* In Markdown, I'm using frontmatter to store arbitrary JSON data

* To avoid automated spam, I have a few tricks: do not expose the submit URL in HTML (insert it via JS) and calculate a simple checksum so that automated software that does not execute JS won't be able to post. Such software usually targets Wordpress blogs by scraping them from Google. I get zero spam from it.

Everything, including hosting and workers, costs me zero.

Example: https://rushter.com/blog/zsh-shell/

Comment by MarcelOlsz 9 hours ago

>Everything, including hosting and workers, costs me zero.

Your setup sounds cool. Do you host it on a home lab or something?

Comment by f311a 9 hours ago

Just a free plan on Cloudflare (CF in the comment above also means CloudFlare). Zero maintenance.

I push to Github and CF deploys static pages to CDN.

Comment by MarcelOlsz 9 hours ago

Ah awesome thanks. I've been using Netlify to do the same. CF scares me lol.

Comment by JCattheATM 9 hours ago

Interesting, thanks!

Comment by Brajeshwar 3 hours ago

This is very, very tempting, but despite not being that popular a blog, mine already went through the SPAM and hatred hell of the late 2000s and early 2010s.

I will not be tempted to have comments on my personal blog.

Comment by tomtomistaken 10 hours ago

Great thing! You could automate it further by checking the Bluesky API for a (first) post containing the correct blog post link (from the correct user).

Comment by tombert 2 hours ago

I do something kind of similar using Github Discussions for my comments: https://blog.tombert.com/

I didn't build it myself, I use Giscus, but it seems to work fine. Tough to say, though, since no one comments on my blog :)

Comment by dotancohen 2 hours ago

I just tried to leave a comment on the kids Logseq page. I'm on mobile, don't have access to my GitHub credentials to log in. I'm also extraordinarily wary of exposing credentials to such a critical service for the benefit of leaving a comment on a blog.

If you have an actual goal of fostering comments, perhaps consider lowering the bar of entry.

Comment by tombert 2 hours ago

I don't think there's an easy way to add other commenting systems for the Quartz static site generator that I use; their documentation seems to suggest that Giscus is the only way. I don't think Giscus has a way of allowing anonymous comments.

It's not a bad suggestion at all, but I'm not ambitious enough to extend Quartz to support another commenting system, especially since the analytics from Cloudflare Pages indicates that I don't get a lot of traffic anyway.

Comment by melvinroest 11 hours ago

Seems like a fun growth hacking way to grow Bluesky as well. I made an account just to test it out, haha

Comment by garganzol 11 hours ago

There is no question that for-profit social network projects will end up as Twitter did. The only question is when.

Ideally, the comment system should be either self-hosted or more fediverse-like. The rest is a temporary compromise that will sink in the sands of time.

Comment by 11 hours ago

Comment by vvpan 9 hours ago

I disagree. I think ATProtocol found a pretty good balance for de/centralization. Yes most people are on Bluesky PDSs but the data is easy to backup and move and Mastodon does not improve on that afaik.

Comment by guelo 10 hours ago

Mastodon had their shot and people found it too confusing.

Comment by elsjaako 10 hours ago

I know I shouldn't react this way, but this view that Mastodon can only be successful if it's the largest platform out there always gets under my skin. There are about a million active users of the fediverse, and I know plenty of us find it nice right now.

Active users are measured in different ways by different platforms, so if we compare registered users, fedi has 12.5M compared to 42M for Bluesky. So it's approximately 25% of the size.

It's not the best place to go if you want to get a large following, and it's not Serious Business, but as a user that's not what I want from a social platform. I have plenty of people to follow who are talking about things that interest me.

You're welcome to come have a look if you want, but otherwise no worries. We're doing fine. Maybe you'll check it out sometime when some drama happens at Bluesky. The fediverse is not going away any time soon.

Comment by jeffhwang 9 hours ago

It's probably user error on my part. But as a somewhat technical user, I've been locked out of Mastodon account for months for no discernible reason. I had my standard first name and last name and I'm on one of the biggest Mastodon servers (mastodon.social).

I suppose I could just create a brand new account or move to another server but it hasn't seemed worth the effort so far

Comment by elsjaako 8 hours ago

It is a more complex system than having a single central organization. Not every interest is well represented, so there may not be a lot of content for everyone.

I've never had a mastodon.social account, but I can understand the frustration of having technical issues. If you really wanted to join, like you said, you can just try joining on a different server or even software - with other social networks you generally don't get that choice.

But it looks like you gave it a try and made the rational choice that, for you, it's not worth that effort.

But just because it's not your thing, and it's not the biggest one out there, doesn't mean it failed or missed it's shot. Personally I think it's pretty amazing that an open source project, with no VC money or marketing department or big corporate tie in, has about a million active users, and has for a long time now.

Comment by skybrian 10 hours ago

They're not the biggest, but big enough to have a lot of active accounts, so I think they're likely to persist and get more than one shot on goal. (Similarly for Bluesky.)

Comment by soulofmischief 10 hours ago

My biggest turnoff has been the fact that you don't own your own data/account and are beholden to whichever dictator(s) run the instance you started out on. You can migrate, but that entire process is just convoluted. I should be able to create an account with my own keys and use them anywhere. Servers can choose to use and share allowlists or blocklists. Each instance being its own little world kills discovery and adds a ton of friction.

And instances seem to be pretty heavy on resources. Reminds me of why Matrix never really took off, running a Matrix server is just too difficult and time-consuming for what you get out of it.

I know proponents of Mastodon will point out that you can work around these warts, but I don't want to. I don't think the model is suited for me.

Comment by tolerance 10 hours ago

I’m not 100% sure but I think you essentially described how Nostr works in your first paragraph.

Comment by lagniappe 9 hours ago

Does Nostr have many users these days?

Comment by soulofmischief 9 hours ago

Noster is cool, I've experimented with it but it doesn't solve all of my problems and has some problems of its own, such as spam. Most importantly, it's not really P2P, despite being decentralized.

I have also explored other P2P approaches and built prototype social networks. I prefer a more P2P approach, I think it's more scalable, but it's complicated because IP privacy by default is important in large social networks. I'm still searching for the right solution. I think the advances in LLMs are going to help do a much better job at solving the moderation problem in social networks, and so I am experimenting with that in my off time.

Comment by cyode 10 hours ago

Not sure why above is downvoted. You’re right. Google Trends reveals how much of a flash in the pan Mastodon was post-Twitter: https://imgur.com/a/i2Vq9FR

Social media needs to be very simple for the masses to adopt. The elevator pitch needs to be one sentence and must not include the word “server”.

Comment by jsheard 10 hours ago

> The elevator pitch needs to be one sentence and must not include the word “server”.

Unless you're Discord, who got away with it by redefining "server" to mean something else.

Comment by 9 hours ago

Comment by arjvik 9 hours ago

As far as I remember, they called it a Guild in all their developer documentation

Comment by jsheard 9 hours ago

Yeah that was the original name they came up with, and it stuck internally. Makes sense as they need to distinguish the "servers" from the actual servers.

Comment by krapp 10 hours ago

Mastodon doesn't need to be "adopted by the masses" to be successful. I and plenty of other people are perfectly fine happy with it (and I use Mastodon comments for my blog.)

I don't understand the knee-jerk reactions whenever Mastodon comes up here. Someone always has to declare it dead, someone always has to rant about "leftist politics" and "fascist moderators." And then they usually suggest Nostr which is far more dead than Mastodon.

Nothing is perfect - Mastodon does have its rough edges - but even a moderately successful breakaway from mainstream social media is worth celebrating. I remember when the consensus on HN was that any alternative to the mainstream would be impossible, doomed to fail. The fediverse has its community and its identity, it isn't a flash in the pan.

Comment by BeetleB 8 hours ago

Same sentiment when it comes to Emacs. As a percentage, its use is generally constant or dropping. A tiny fraction of folks use it.

Yet in absolute numbers users are increasing. And Emacs activity is greater than it has ever been.

Yes. You don't need mass adoption to be wildly successful!

Comment by encom 9 hours ago

Of course, if you move the goalposts far enough you can say any result is a success. Mastodon looks to have around 800k active users. For comparison IRC has (according to netsplit.de) around 280k users. Is that successful?

Comment by BeetleB 6 hours ago

Mastodon has more users than HN. It's a success. It's also unlikely to go away. Well, OK, it may go away if BlueSky ever becomes decentralized in practice. If that doesn't happen, the only "threat" to Mastodon is some other federated, decentralized service.

It's been around long enough that it has reached steady state. Existing (active) users are happy with its architecture, and are not concerned with discoverability, etc. Why would they leave?

Comment by krapp 8 hours ago

>Mastodon looks to have around 800k active users. For comparison IRC has (according to netsplit.de) around 280k users. Is that successful?

Yes.

Bear in mind many people here would consider geminispace to be a success and I seriously doubt that it even has 100k users.

"Success" has valid definitions beyond market capture and revenue. Mastodon is a success because it hosts a community and because it represents a validation of the model of decentralized federated social media.

And it isn't a zero-sum game, either. The entire point is that there doesn't have to be one "Twitter" one "Facebook" one "Youtube," or even one protocol to rule them all.

Comment by irishcoffee 10 hours ago

It’s hard for something to succeed when the selling point is “we aren’t that other thing!”

Edit to remove unintended flame bait.

Comment by tpdly 10 hours ago

True, but Bluesky really does solve pains that closed platforms can’t/won’t. Having a choice over your algorithm is like getting lead out of your pipes, or getting a bidet or something.

Comment by irishcoffee 5 hours ago

I am a bidet convert, they are fantastic.

I never used twitter and I don't use bsky, so I'm not sure how different they are. I just don't think that should be the goal.

Comment by 10 hours ago

Comment by mudkipdev 7 hours ago

You could actually do your own moderation top of it, just add a labeler and filter out comments which have a label applied

Comment by 3 hours ago

Comment by maelito 9 hours ago

After doing that to my blog too, I added a comment section to any OSM place on https://cartes.app.

You can now review places with an ATproto account. Any app can implement the same lexicon. Review data belongs to users, as JSON on their PDS.

Comment by vvpan 9 hours ago

That is very cool. How do you aggregate the data, listening to public bluesky firehose?

Comment by nicole_express 9 hours ago

One thing I'm curious about here is moderation; you are outsourcing it to Bluesky to a degree, but I assume you'd want a way to remove posts you don't want to reproduce on your blog beyond hoping that Bluesky management bans them?

Comment by thek3nger 9 hours ago

I made something similar on my blog and had the same question. I decided to show in my blog only the comments that I liked. Therefore transforming the “like” action into an “I approve” action.

But I have few comments. Not sure if is a good solution for people with a lot of comments.

Comment by bpavuk 9 hours ago

one could run a labeler (moderation service) and be in control of content one sees through Bluesky. custom categories, filtering, account and post labeling, etc.

"hateful comment" or "porn" data will stay on the PDS, but it will just not show up in the comments section

Comment by BeetleB 6 hours ago

I do something similar but with Mastodon.

I haven't implemented moderation, but in principle it's "easy". On a given post, store as an attribute the IDs of messages you don't want to appear (or even its descendants). The JS will have access to the info and can just filter it/them out.

Everything is done client side.

Comment by hydroxideOH- 7 hours ago

Bluesky allows you to hide replies to your own post (https://bsky.social/about/blog/08-28-2024-anti-toxicity-feat...), and these hidden replies are exposed in API data as well. So I filter out any posts in that hidden reply array.

Comment by jasoneckert 9 hours ago

This is great!

I did something similar, but with GitHub Discussions because my blog is hosted on GitHub Pages and composited with Hugo, and I wanted all components to run as close as possible to one another: https://jasoneckert.github.io/myblog/github-discussions-blog...

Comment by 7777777phil 10 hours ago

This is super cool, left a comment, nothing more to say!

Comment by pmb 11 hours ago

It's nice, right? I did it a while ago and I highly recommend it. https://triplepat.com/blog/2024/10/17/how-the-website-works

Comment by joeyhage 7 hours ago

Hey, Micah! So cool seeing you on here. I met you when you interned at Principal several years ago. Hope you are well!

Comment by hydroxideOH- 7 hours ago

Hey Joey! My Covid-era Principal internship feels like a fever dream now lol but I appreciated the support back then. Hope you're doing well too!

Comment by tomtomistaken 10 hours ago

I am working on https://libmap.org where you can add posts to a map via Bluesky and mastodon.social.

Comment by vvpan 9 hours ago

You and this person should hang out https://news.ycombinator.com/item?id=46748560

Comment by twism 8 hours ago

I did something similar when X was twitter.

Comment by jesse_dot_id 11 hours ago

Cool use of a social network.

Comment by hahahahhaah 9 hours ago

Like Disqus I guess. Hopefully though with the magic incentive alignment about who is the product in a better place.

That said in Wordpress you spend zero devops time, and get comments and decent spam filtering options. You also don't need users to have a social account.

Comment by bk496 11 hours ago

Cool!

Comment by IshKebab 9 hours ago

> [Bluesky] can't easily be taken over by an authoritarian billionaire creep

It definitely can. Bluesky is not as decentralised as you think.

https://dustycloud.org/blog/how-decentralized-is-bluesky/

Comment by lukev 8 hours ago

A lot's changed since 2024. The decentralization primitives were always in place, but now they're being actively used. Hosting your own PDS is quite viable if you're tech-inclined, or check out Blacksky.

There's also rumors that the W European social network launched a few days ago is built on ATProto.

Comment by bubbi 1 hour ago

[dead]

Comment by BillLumbergh 10 hours ago

Bluesky isn't anything special though and will disappear soon enough.

Comment by dang 10 hours ago

"Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something."

https://news.ycombinator.com/newsguidelines.html

Comment by axpy906 9 hours ago

My eyes.

Comment by lingrush4 5 hours ago

[flagged]

Comment by dana321 10 hours ago

[flagged]

Comment by dang 10 hours ago

Could you please stop posting unsubstantive comments and flamebait? You've unfortunately been doing it repeatedly. It's not what this site is for, and destroys what it is for.

If you wouldn't mind reviewing https://news.ycombinator.com/newsguidelines.html and taking the intended spirit of the site more to heart, we'd be grateful.

Comment by bartread 9 hours ago

In 2026? And you host/manage it yourself rather than deferring that to a major platform that wants to monetise your words?

Yeah, well, you kind of are special.

Comment by socalgal2 10 hours ago

Everyone has different needs. I run tech tutorials so I need:

(*) the entire post, not a excerpt and link to another platform

(*) long posts - posts need to be the size of stack overflow questions

(*) code blocks - it's a tech questions, posters need to be able to post code

(*) screenshots - posters need to be able to post pictures of what's wrong.

(*) serving a static site - I don't want to run a server so a script with an iframe is best. Though it would be nice if they had a message protocol for sizing.

(*) good a blocking/dealing with spam - it should be good at blocking spam. It should be easy to deal with 1000 spam messages should it ever happen. If I have to manually delete them one at a time then no.

(*) free - haha. the stuff I write is open source. I don't want to have to pay on top of my time.

(*) a sustainable business model - not sure what this means except my impression of things like giscus is they either require a server (see above), or they're running the service at a loss so it will probably eventually die.

(*) editable by mod - the posts need to be useful to other users and often posters mis-format

I don't use anything related to github because I expect github will eventually disallow this. I would consider using github if github itself offered the service. Github has one of the best UIs for tech question IMO. Markdown, drag and drop images, drag and drop video, large message size.

I use disqus because even though it sucks, it mostly checks all of those boxes. It's worst part is code blocks. It supports them but they are hard to use.

I looked into things like giscus and utterance. They both require a server or you trusting that they'll run theirs forever. They also use that ludicris "Act on your behalf" BS github permissions system.

Comment by publicdebates 9 hours ago

> There are other services that could be used for this purpose instead. Notably, I could embed replies from the social media formerly known as Twitter.

Twitter split into x, bluesky, and truthsocial. By picking one, you now allow comments from only 1/3 of your readers. Maybe that's intentional, a sort of ad hoc political filter or gate. But I think it's noteworthy.

Comment by galleywest200 8 hours ago

Doesn’t Twitter make you pay an exorbitant fee for accessing their API? At least BlueSky is free to access anything on the AT Protocol.

Comment by jsheard 8 hours ago

Yep, the free tier only gives you 100 reads per month, and the cheapest paid tier is $200 per month.

Comment by mcintyre1994 8 hours ago

If we grant your premise, isn’t bluesky the only one of them where you can access the data freely?

Comment by Vaslo 1 hour ago

Blue sky isn’t even close to X

Comment by lukev 8 hours ago

Firstly, the idea that "1/3" of people went to truthsocial is laughable.

Readers are free to create accounts on whichever platforms they choose, in order to follow you. And publishes are free to choose which platforms they endorse.

Notably, of the three mentioned, ATProto is by far the most open and extensible protocol, and less subject to the whims of an addled billionaire.