Announcing Social Comments for Ghost

Announcing Social Comments for Ghost
Portland Waterfront, March 2026

Most people on the internet hear the term "blog comments" and think ugh (derogatory) so much so that there are t-shirts and pins about how everyone should ignore them outright.

As someone that was there in the early days of blogging, I watched and helped develop the ways that weblog comments were first deployed in various systems (I even created a whole community around them!), so I always knew comments had real value. Mostly, the problem is how do you surface the gems from the drive-by noise? In the past, I'd require members to login or even pay a $5 cover fee before anyone could comment, but that really adds friction.

Traditional blog comments

In the first versions of weblog comments, we'd throw a blank form at the end of every post and people could fill it out with their name and comment, but they could impersonate literally anybody and say anything (derogatory). Then we moved to logins and memberships in various systems like blog engines and comment-specific apps, but that adds friction while also reducing anonymity.

A problem with the required-logins approach was that social media came along and gobbled up all of the internet's water-cooler talking energy, and quickly felt like a better place for it. Whenever I'd see a tweet/toot/skeet that said "hey everyone, go read this thing I wrote on this other site" I'd wish I could interact where I was already reading about it, instead of having to go through the motions to leave a comment somewhere else (that would also be hard/impossible to track replies to over there). It's so much easier to hit reply on social media and tell someone what you liked about something with no logins or muss or fuss.

Personal blogs feel personal

A xmas party at my house where we sent a flip-off photo to a friend who loves flip-off photos more than anything

On a single-author blog like this one, I love to hear feedback from readers, but having open comments was always a bad choice. Even when I required member signups before comments, someone that was determined to say shitty things could jump through the hoops and sign up just to post their nonsense instantly.

I've tried Wordpress comments, Disqus comments, and eventually Ghost comments but nothing quite worked right or balanced the ease of use for commenters with control for a person hosting them wants.

When you run a small site like this, it also adds a touch of anxiety to your life. A personal blog is like hosting a dinner party in your living room and the thought of someone leaving a bad comment really does feel like someone took a dump in the punch bowl in your own home. Thanks to the design of comment systems, unless you block every new comment for review before it's posted, an awful comment can happen at any time and that small worry sucks to live with constantly.

So what's the ideal solution?

Here's what I want out of a dream comment system:

  • Let me be selective about feedback and publish the most helpful things that people say, stuff that fills out a story, that brings additional context and information or shares some personal experience with a topic
  • Let people be as anonymous as they want
  • Don't make people sign up for anything on your site
  • Figure out a way to harness the power of social media, where people are already talking about your stuff, with no extra effort on their part
  • Reviewing and choosing the best comments by hand isn't that hard and helps make the posts better after I add them here

My first stab at Social Comments for Ghost

A few weeks ago I implemented it here and it's been great so far. I tend to "announce" every new post on my Mastodon feed (and that gets mirrored to Bluesky). I check my replies on both sites a couple times a day to see if anyone has any feedback. Sometimes people make great points or share something better that worked for them, and that's the perfect kind of thing I love to pull into my posts, so someone reading it on my own site later on gets a fuller picture with the best information.

Prior art

The first place I saw this done well was Kottke.org, where Jason not only gates his comments to paying supporters, but also adds selective mentions from Bluesky and Mastodon into his comment threads and I love how they came out. So this is inspired heavily by seeing that for the first time.

A Kottke.org thread with a Bluesky comment

How does it work?

In plain English, it's pretty straightforward.

  • I add links to selected outside mentions in a custom field in each post at Ghost
  • Some code pulls down any mentions and styles them to match the blog, displaying them as comments

I can add new comments using a simple HTML form stored locally, or in my case, I host it on a server in my house that I can reach from anywhere. It only takes a quick second to copy/paste URLs of mentions I want to share, and I'll eventually try and figure out how even easier ways to do this (honestly, I wish I could click some magical "super-favorite" button on a social media site that my blog could interpret and import right into a thread on my blog).

Some nitty gritty technical details

For the "custom field" in a post at Ghost, I use the Code injection feature to toss a list of outside mentions as a JSON blob in the Post footer field. Here's what that looks like in action in my admin view on a recent post.

Writing JSON isn't a fun thing to do off the top of your head, so I use a custom webpage to add and manage replies, and mine was coded in PHP and runs on my home NAS, where I connect securely to it through Tailscale.

The PHP page stores my custom Ghost app API key and the Ghost URL endpoint, and also lets me pick which post I want to attribute new mentions to. So I paste replies as URLs to mastodon or bluesky posts, hit Save to Ghost, and they're on my site. It even works great on my phone when I'm out and about.

Here's what that looks on my end.

Here's the code anyone can use at Ghost

I vibe-coded this with Claude for my own site over the course of a week, but since then I've created a more generic version for any Ghost blog, with the default templates meant to match the Casper theme. It also includes the self-hosting option for your JSON helper page, you just need a computer running PHP and a quick addition of your API key and URL. You can also run a version locally from a file that creates the JSON blob for you that you'll just paste into Ghost by hand.

GitHub - mathowie/social-comments-ghost: A social comments system for Ghost blogs
A social comments system for Ghost blogs. Contribute to mathowie/social-comments-ghost development by creating an account on GitHub.

Feel free to download it, give it a try on your own ghost blog, and let me know if it worked (or fork it for your own theme or to add new features).

If you want to try this out on your own Ghost blog, I'd suggest importing the Github repo into a new project at Claude, and using Claude to customize the output to your own Ghost theme and home server setup.

— Further Reading —