Bluesky Cross-Post
Each article you publish appears on Bluesky with a link card, with no copy and paste
What it does
Bluesky Cross-Post puts your newest article in front of your followers without a manual step. The instant a piece flips to live, however that happens (editor, bulk publish, REST API call or a scheduled run), the plugin logs in as you on Bluesky and writes a post. The text reads as the title, then a blank line, then the web address of the piece, hosted on your own domain once verified and on your subdomain before that. The address is tagged as a genuine link, and a preview card holding the title and your excerpt hangs underneath. A small Bluesky badge in the posts list tells you whether each attempt landed.
Who it's for
Writers, newsletter authors and independent publishers whose readers follow them on Bluesky and who would rather not paste every new link by hand. It suits anyone comfortable creating an app password in their Bluesky settings. You only need your handle and that password; VeloCMS does not ask for your main account password and registers no application on your behalf.
How it works
In Bluesky, open Settings, Privacy and Security, App Passwords and create a new one. Copy it, since Bluesky shows it only once.
Open the plugin in your admin, type your full handle such as yourhandle.bsky.social plus the app password, and save. Neither field may be empty.
Publish something. The plugin wakes on the draft-to-live switch and does so a single time per article.
The plugin signs in to bsky.social with your handle and password, then creates a post whose text is the title and link, with a link preview card attached.
The outcome is saved with the article. A green badge links to the new Bluesky post, whereas a red one keeps whatever reason Bluesky gave.
Settings you configure
- Bluesky Handle
- Your full handle, for example yourhandle.bsky.social. A leading @ is harmless, since it gets removed on save.
- App Password
- Created in Bluesky under Settings, Privacy and Security, App Passwords. We store it as ciphertext and the form never echoes it back. Never paste your main account password here.
What it can access
Per published article, the plugin looks at four things: the title, the slug, the excerpt and your site's ID, the last of which lets it assemble the link. Your readers, shop orders, unfinished drafts and article text stay out of reach. Traffic goes to bsky.social, and the plugin may contact only Bluesky's own hosts. The app password sits encrypted and is never handed back to the browser.
Permissions
- Read post title, URL, and excerpt when a post is published
- Make network calls to bsky.social (AT Protocol) to create posts
- Store your Bluesky app password encrypted
External network access
This plugin makes requests to the following domains:
bsky.socialbsky.apppublic.api.bsky.app
Capabilities
posts:readnetwork:fetchui:settingspost:afterPublish
Screenshots

Honest limits
A post is created when an article switches from draft to live. Re-saving or editing a live piece creates none, and publishing again after a post already went out does not repeat it.
Anything that went live before you installed the plugin is never announced retroactively.
A failure shows on the badge, and the Sync activity page offers a Retry sync button when Bluesky clearly refused the attempt, such as a rejected login. If the request went out but no clear answer came back, the plugin refuses to send again so as not to duplicate the post; check Bluesky and post by hand if it is missing.
Visibility is not consulted, so a members-only piece is announced with its link just the same.
The post carries a link preview card with text only. No image or thumbnail is uploaded.
The post text carries the full article title and is never shortened, so an unusually long title may be refused by Bluesky and show as failed. The preview card cuts its title and description at 300 characters.
The plugin signs in through bsky.social only, so an account hosted on a different server is not supported.
A Bluesky post stays up even if you later unpublish or delete the article.
With either setting blank, the article is passed over and no badge appears.
Frequently asked questions
Why an app password and not my normal password?
An app password is a separate credential you can revoke at any time in Bluesky without touching your account. The form asks for it, and the settings page tells you never to enter your main password.
Will a Bluesky outage stop my article from publishing?
No. Your article still goes live. Errors are caught inside the plugin and surface as a failed badge carrying Bluesky's reason.
Does the link use my own domain?
Yes. The address starts from your verified custom domain when you have one, or your VeloCMS subdomain if not, and ends with the article's blog path.
Where can I see whether a post went out?
Each article the plugin attempted shows a Bluesky badge in your posts list, linking to the post on success. Failures also gather on the Sync activity page under Integrations.
Related plugins
Specifications
- Category
- Social
- Price
- Included
- Version
- 1.0.0
- Source
- First-party
Browse more integrations
58 free first-party integrations available.