Connecting my existing Bluesky account to Ghost is confusing and possibly buggy in two ways:
Bluesky DNS handle verification consistently fails even though the _atproto DNS TXT record is set correctly in Cloudflare (per Bluesky’s guide). Bluesky returns “Failed to verify handle. Please try again.” 100% of the time.
Enabling Bluesky auto‑posting in Ghost unexpectedly creates a fed.brid.gy account for my domain and posts there, instead of posting to my existing Bluesky account. I didn’t intend to create/bridge a new account—my goal was to connect Ghost with my existing Bluesky identity.
What did you expect to happen?
I expected Bluesky to verify my domain handle (via DNS) and map it to my existing Bluesky account.
I expected Ghost’s Bluesky auto‑posting to publish to that existing Bluesky account—not to create or route through a new fed.brid.gy identity.
Steps to Reproduce
In Cloudflare DNS for danielraffel.me, add a TXT record for Bluesky handle verification as instructed in their guide:
(No proxying; standard TTL. Record is visible publicly.)
In Bluesky (web), go to Settings → Change handle → I have my own domain, enter danielraffel.me, and click Verify DNS record.
Result: “Failed to verify handle. Please try again.” (reproducible 100%).
In Ghost Admin, enable Bluesky/auto‑post integration for the site user @daniel@danielraffel.me.
Result: Ghost appears to bridge via fed.brid.gy and creates/uses a new bridged account tied to the domain, rather than posting to my existing Bluesky account/handle.
Notes/observations:
DNS record propagated (using Cloudflare). I waited and also tried deleting/re‑adding the record. Same failure.
I also tried the steps in Safari and Chrome; DNS verification still fails in Bluesky.
I did not intend to create a bridged fediverse identity; I only wanted Ghost to auto-post to my existing Bluesky account.
Setup information
Ghost Version
6.0.1 (production)
Node.js Version
v22.18.0
How did you install Ghost?
Self-hosted. If maintainers need exact install details (CLI vs Docker, service config), I can provide them, but behavior should be independent of install method.
Host & Operating System
Self-hosted; domain DNS managed via Cloudflare.
Database type
MySQL 8
Browser & OS version
Safari 18.6 on macOS 15.6 (also reproduced in Chrome latest)
Relevant log / error output
No visible Ghost server errors related to the integration. Bluesky UI error:
Failed to verify handle. Please try again.
Additional context / questions for maintainers
Should Ghost’s Bluesky auto‑post require or implicitly create a fed.brid.gy identity? If so, the UI might need clearer language/warnings, and ideally an option to use an existing Bluesky account rather than creating a bridged one.
If Ghost supports posting to an existing Bluesky account, what’s the expected pre‑req (DNS handle verification vs .well-known/atproto-did)? If only one path is supported, the UI could direct users accordingly.
If Ghost requires the fed.brid.gy route, can we disable that and link to an existing Bluesky account directly?
Ghost<>BlueSky: Because BlueSky is built on a different protocol, it doesn’t work the same as everyone else – but, if you follow @bsky.brid.gy@bsky.brid.gy from your Ghost site, you can get your posts showing up there. More info on BridgyFed.
Thanks for sharing! I’d love to understand how to do all of this, but each of those links is a lot to parse. Has anyone come across clear, step-by-step instructions for setting up and using Bridgy Fed with Ghost, Bluesky, and Mastodon? I think I got some of the way there, but the Ghost Docs and Bridgy Fed pages are hard to follow, and the lack of straightforward guidance for Ghost users makes it extra challenging.
So far, I believe I’ve:
• Enabled Bluesky sharing in Ghost on a brand-new Bluesky account.
• Verified my existing Bluesky account with my Ghost URL.
• Used Bridgy Fed to connect my new Bluesky account with my old Mastodon account.
• Possibly set up a second Bridgy Fed account to bridge my old Bluesky account and old Mastodon account but couldn’t connect my Mastodon-bridged account to my domain when prompted.
I’ve clearly misconfigured something.
I suspect most people want to link existing accounts and just follow simple, step-by-step instructions. If the Ghost team is reading, it would be incredibly helpful to have a short, clear guide for those of us who already have Mastodon and Bluesky accounts and want to use them with our Ghost domain, especially when the Ghost domain is different from our social handles.
Turning on Bluesky sharing should come with a GIGANTIC warning it will create a new account!
I now sit with my official Bluesky account with my specific handle and one extra that auto posts everything. As much as I wanted the two to be the one I originally have been working that seem to be a dead end so I guess one just have to go with the flow. But a warning before creation would have been nice…
Fully agree, absolutely no part of the process suggests that it will create a new BlueSky account via a third party. Any advise on how to unlink and delete the automatic account?
If you want to disconnect Bluesky, you need to block Bridgy Fed account. You can see it your following list. Click to go it’s profile page, and then block from three dot menu.
Then it will stop publishing your posts on Bluesky. If you need to re-enable it later, first remove it from blocked accounts, then you can enable Bluesky sharing again.
For using our own domain on Bluesky, we need to send a DM from fediverse account to Bridgy Fed account, which is not currently possible with Ghost ActivityPub. I expect that we’ll either have DM feature or a special -automated- solution for Bluesky soon.
Does anyone know if the Ghost.org team has a roadmap with their plans for the Blue Sky and Mastodon integrations? I am very curious if Ghost users will be able to link to their existing accounts? The Bridgy Fed integration is so confusing.