Joining the ActivityPub network - Ghost Changelog

For the past few years, networked publishing has become an increasingly hot topic. Various platforms have allowed writers to follow, like and reply to posts from one another - making writing on the internet an altogether more social experience.

The problem, though, has always been that those networks have been closed, proprietary, and limited in their utility and longevity. We've all seen what happens when networks either run out of money, or get commandeered by people with... too much money.

At Ghost we've been interested in publishing networks for a long time, but as you have come to expect from us after over a decade of releasing open, decentralized technology that puts people first: We're doing things in our own way.

Building ActivityPub
Ghost is federating over ActivityPub to become part of the world’s largest publishing network.
Building ActivityPub

We're excited to share that we've started work on bringing ActivityPub support to Ghost, making it possible for all Ghost publishers to distribute their work across to the largest decentralized network in the world.

It's going to take some time for us to ramp up our efforts here, but we're going to be sharing our build diary and all the details with you as we go.

We've put together a full overview of what this means for you, and we're looking forward to hearing what you think!


Very cool, very promising!
Just one question: Do I understand correctly, that one part of the plan is to put an ActivityPub client into the ghost backend? What’s the thinking behind that?
Don’t get me wrong, I don’t have an issue with it, I just don’t quite get the point.


Yay for open standards!

This and webmention support are among my favorite recent developments in Ghost.


The ability to easily read other blogs in the Ghost network parallels a feature like that on services like Medium and Substack, where you not only publish content there, but are also intended to read content there.

Compare these two screenshots. The first is of Substack’s “reader” experience, the second is a mockup of Ghost’s reader experience:

It’s not a feature I personally plan to use, but I do subscribe to a few different Ghost newsletters at this point and would consider trying out an experience to read all my newsletters in one place rather than scattered throughout my email Inbox.


That would essentially be a play to build a standalone Ghost reader client, no? Like an open-web Substack which is a different product than the CMS?

I mean why not, I love Omnivore, I’d be interested in something similar from Ghost.

There are already plenty of ActivityPub reader apps that we mostly think of as Mastodon apps now.

There may be space for one focused on long form content, but it’s not clear how it would feel different than Mastodon apps. I haven’t tried the Medium or Substack apps to see how they add value.

I’d recommend filling out the survey. They’re pretty open-minded here. I brought up a few different levels of integration they might consider, myself, and kind of settled on the idea that they should just make one activitypub instance for ghost pro, and give each ghost pro blog an opt in to automatically integrate with that instance.

If there was one ActivityPub instance for all of Ghost(Pro), who would moderate it?

If there’s one ActivityPub instance per blog, who moderates is clear: The blog owners, who may disagree about how they want to moderate.


That’s true. I guess the Ghost team wouldn’t want to moderate it. But then again, they have to moderate this forum. The great risk of moderating an activitypub instance would be that it might grow too big… in which case, it would be a success, result in more ghost blogs and more ghost subscriptions, and therefore worth it.

The single instance also has the value of positive network effects. My blog has 186 subscribers, only ~4 of whom leave comments–an activitypub instance for those 4 would be pretty useless. All I’d do is automatically post to that instance and then repost to my account where people actually follow me.

A ghost-wide instance has a builtin network of Ghost bloggers and users who now have a great place to interact with each other, via the local feeds, discover more ghost blogs, search through ghost posts by activitypub post contents, (as opposed to ghost explore which only lets you search through blogs by name/description), and interact with the rest of the fediverse. The instance having a purpose and its own active community gives it that potential to grow through the fediverse.

The separate instances is also a much trickier technical challenge, since you need to automatically generate and maintain a very large number of instances now.

Not really. Not only do they have several volunteer moderators, but at one time the serious possibility of shutting the forum down was mentioned due to unruly users. Moreover, there’s nothing that says Ghost must continue to host this forum. It’s not so much benefitting them so much as it’s benefitting self-hosted users, as Ghost(Pro) customers can always just email customer service.

This would seem to go against what Ghost has said to Casey Newton of Platformer of what they would never do. As Newton stated upon migrating from Substack to Ghost a few months ago,

Ghost tells us it has no plans to build the recommendation infrastructure Substack has. It does not seek to be a social network. Instead, it seeks only to build good, solid infrastructure for internet businesses. That means that even if Nazis were able to set up shop here, they would be denied access to the growth infrastructure that Substack provides them. Among other benefits, that means that there is nowhere on Ghost where their content will appear next to Platformer.

Granted, a Ghost-operated Mastodon instance wouldn’t be a social network per se, but close. Secondly, Platformer Toot’s of their latest pieces on a Ghost-maintained Mastondon instance could very well appear next to Toot’s of pieces they wouldn’t want to be (somewhat) associated with.

My interpretation of all this could be wrong, but I’ve got a feeling Ghost will not create a Ghost-wide instance.

EDIT: I forgot to add that while Ghost could simply shut down the forum with no major setback if they were to lose all their voluntreer moderators, if they operated a Mastodon instance in a similar manner, with volunteer moderators, if those moderators were to all suddenly leave Ghost could possibly be up shit’s creek, a shutdown of the instance potentially causing problems for many users who had gone all in on it.

I guess ghost could have a social network without being a social network, but yeah, that is tricky. It would be opt-in, so that’s something. I mean, the ideal solution is to ban Nazis, but they don’t want to hire a moderation team, that makes sense.

Another option would be to add a feature that links to and automatically posts to your chosen social networks, including Mastodon. It might be tricky to enable logging into mastodon servers generally. (Ideally, I’d like it if it could also generate images to post to Instagram / Pixelfed–there are some paid plugins for that, but I would love a free integration that generates and posts those images automatically).

Looks like Mastodon implements OAuth2, so probably not tricky. :slight_smile:

1 Like

I’m wondering, will it be possible to include other’s posts into my website?

For example, I’m writing about software X. The amount of quality content I can produce is rather limited. I’d like to add curated posts on the same topic inside my website, so when users visit it they see a few of my posts and a number of external materials.

Not sure how it’s better to implement technically. So far I can only imagine copy-pasting the whole post + adding the canonical URL to the original website.

Yes. Services like Mastodon, and I expect Ghost, produce RSS feeds for ActivityPub content.

The same methods you can use today to embed RSS content should work.

All indications from Ghost’s ActivityPub code published so far is that there be an ActivityPub instance as part of each Ghost install.

1 Like

that will be interesting as im hosting my own mastodon instance on my domain as well. if it follows what i understand of activitypub then i might be able to move the account from that instance to my ghost server im running in docker