# Let your AI agent post to Bluesky

Source: https://postgale.com/integrations/bluesky

Yes, an AI agent can post to Bluesky through Postgale. You connect the account once with a Bluesky app password, and the agent can publish posts with links, mentions and hashtags, up to 4 images or a video, link cards, threads and replies, and delete what it posted.

## Can an AI agent post to Bluesky?

Postgale is the secure layer for AI agents on social media. This page covers Bluesky: what an agent can publish, what you need, the Bluesky rules Postgale applies, and how to connect an account.

Bluesky runs on the AT Protocol: posts are records in your own repository on your personal data server. Postgale signs in with an app password, finds your server (bsky.social or self-hosted), and turns one plain request from the agent (the text, the images, when to post) into a correct Bluesky post: clickable links, mentions and hashtags, uploaded images with alt text, a link card for the first link.

MCP (Model Context Protocol) is the open standard that lets AI assistants such as Claude and Cursor use outside tools. An MCP server is what they connect to. Postgale hosts one and a REST API, so ChatGPT, Claude, Cursor, VS Code, n8n or your own agent can post to Bluesky as a tool.

## What do you need?

- A Bluesky account and an app password (Settings → Privacy and security → App passwords). Never your account password.
- A Postgale workspace, and a sign-in or an API key for the agent.
- Optional images or a video on a public HTTPS URL (upload them with `upload_media`).
- An AI tool that can call Postgale: [ChatGPT](https://postgale.com/guides/chatgpt), [Claude](https://postgale.com/guides/claude), [Cursor](https://postgale.com/guides/cursor), [n8n](https://postgale.com/guides/n8n), VS Code, or your own code.

## What can the agent do on Bluesky?

| Task | What Postgale does |
| --- | --- |
| Publish | Posts up to 300 characters with clickable links, mentions and hashtags; up to 4 images or one video with alt text; a link card for the first link; scheduling. |
| Threads and replies | A thread of up to 25 posts in one request, or a reply to any Bluesky post. |
| Delete | Remove a post it published. |

## Which Bluesky rules does Postgale enforce?

- Text is limited to 300 characters as Bluesky counts them (an emoji counts once); a longer post is refused before it reaches Bluesky.
- Images: JPEG, PNG, WebP or GIF, up to 1 MB each and 4 per post. Video: one MP4 up to 100 MB and 3 minutes. Images and video are not mixed.
- Mentions of handles that do not exist stay plain text instead of breaking the post.
- Only app passwords are accepted. If you delete it in Bluesky, the account is marked as needing reconnection and your webhook hears about it.
- When Bluesky asks to slow down, Postgale waits until the limit resets before retrying.

## How do I connect Bluesky to an AI agent with Postgale?

1. In Bluesky, open Settings → Privacy and security → App passwords and add one named Postgale.
2. Create a Postgale workspace, open Dashboard → Accounts → Bluesky and enter your handle and the app password.
3. Connect your AI tool: add `https://postgale.com/mcp` in [ChatGPT](https://postgale.com/guides/chatgpt), [Claude](https://postgale.com/guides/claude) or [Cursor](https://postgale.com/guides/cursor) and sign in to Postgale, or create a key under Dashboard → API keys for [n8n](https://postgale.com/guides/n8n) or your own code.
4. Ask the agent for a draft first. Turn on approval in the dashboard if a person should sign off before anything goes live.

From your own code, `POST /api/v1/connect/bluesky` with the handle and app password connects the account directly. Postgale stores the app password encrypted and renews the session by itself.

## What does a Bluesky post from an agent look like?

> Ask your agent: “Post a 3-part thread on Bluesky about today’s release, with the screenshot on the first post and the changelog link at the end.”

POST /api/v1/posts (Bluesky):
```json
{
  "content": "ignored",
  "platforms": [
    {
      "accountId": "acc_bsky",
      "platformSpecificData": {
        "threadItems": [
          {
            "content": "Release 2.4 is out 🎉",
            "mediaUrl": "https://media.example.com/screenshot.png",
            "altText": "The new dashboard"
          },
          {
            "content": "Faster sync and dark mode."
          },
          {
            "content": "Full changelog: https://example.com/changelog"
          }
        ]
      }
    }
  ],
  "publishNow": true
}
```

Nothing has to go out unreviewed. Approval can be required per workspace, per connected account, per API key or per signed-in app; while it applies, posts wait as pending approval in the dashboard, and replies, direct messages and edits to live posts are refused. Every write the agent makes is kept in the audit log.

## What can’t an agent do on Bluesky through Postgale?

- Edit a post. Bluesky posts cannot be edited; delete and post again instead.
- Read likes, reposts or views yet.
- Send direct messages.

## Questions

### Can Claude post to Bluesky?

Yes. Add Postgale as a connector in Claude, connect the Bluesky account in Postgale with an app password and ask Claude to post. See the Claude guide.

### Does Postgale need my Bluesky password?

No. It uses an app password you create for it, which you can delete in Bluesky at any time to cut off access.

### Does it work with self-hosted Bluesky servers?

Yes. Postgale finds the server of each account from its handle, whether it is bsky.social or your own PDS.

## Related

- [Bluesky developer guide](https://postgale.com/docs/bluesky)
- [Mastodon](https://postgale.com/integrations/mastodon)
- [Connect Claude](https://postgale.com/guides/claude)
- [REST API reference](https://postgale.com/docs/api)
