So... let's talk ActivityPub and buttons and links

An experiment in public, and exploration of mistranslation of relative URLs.

So... let's talk ActivityPub and buttons and links

I quite like what https://www.leicester.news/ is doing with CTAs at the start of their article. (You can see that I've um... borrrowed the idea.) That's a great way to work around the inability to have sign-up cards in ActivityPub. Here's their implementation:

This is not a CTA you can click. It's an image!

Then I clicked the button, which is when I discovered that it attempted to open portal from MY admin domain. So yeah, that's not gonna work.

So, the rest of this post will be an exploration of buttons and what happens when they're no longer on your site, but in the reader.

Relative URLs are now a problem

A relative URL is one that doesn't include the domain, and might not include the full path. So /blog/read-my-post would be an example of a relative URL, and the absolute equivalent would be https://www.spectralwebservices.com/blog/read-my-post. There's a lot to like about relative URLs. If you change your domain name, they still work, as long as you retain the same structure of the website.

When your browser sees a relative URL, it understands what the absolute url should be by looking at your current location. So if I put a link to /blog/read-my-post over on https://cathy.sarisky.link, the browser would turn it into a request to https://cathy.sarisky.link/blog/read-my-post.

Sounds great, right? Enter ActivityPub.

If you've got your network tab turned on, you're going to want to make sure that you aren't using any relative urls in your links, because the ActivityPub reader runs in a browser window on the READER's Ghost site, not on yours.

This is a little bit complicated, because we can generate links multiple ways within Ghost. So, here are some buttons and links. I'm very interested in reports of any that don't load correctly.

Definitely an absolute url that I typed out myself: Spectral Web Services homepage☑️

A hand-typed relative URL that will work only if you're on my site: Visit the blog☑️ (This was a surprise. I guess relative URLs are getting rewritten? It's absolute on web also.)

A url that I chose with the link tool: Should you read in the Ghost reader☑️(generated with the UI below).

A button that I typed out an absolute URL for: ☑️

A button I made with the URL offered by the Ghost UI: ❌This does not work.

(I'm going to update this post with my findings after I publish it and can check the results, but you may or may not get the latest update. Feel free to pop on over to my site (with this absolute link) to read the results.

Or, you know, you could just click the buttons and see what happens. 😄


For links in the editor, hovering reveals the URL they're going to. The buttons are a little bit more of a pain, but editing each one does show a url, absolute or relative. Assuming there isn't any link rewriting going on, my advice is probably just going to be to double check any "portal" links before you publish.

I'm also going to mark this post as members only access, so that we can look at the paywall below. I'm interested to see what happens. Presumably the post is going out with a CTA card that has an absolute URL, right? ☑️The button below works. However, it says you have to be a paid member, which doesn't match my post settings. Whoops.

Right, ok. Hitting publish. Let's see what happens!