Bluesky scheduler for agent-drafted posts and threads

Bluesky has no built-in scheduler, and its API makes you do extra work for clickable links. SocialHandoff handles both: agents draft, you approve, and the post goes out on time with working links, mentions, and hashtags.

Limits

Character limit300 graphemes per post. An emoji or an accented letter counts as 1 grapheme even if it uses several bytes.
Media per postUp to 4 images, or 1 video. Images and video cannot be mixed in one post.
Image sizeThe AT Protocol image embed accepts blobs of about 1 MB each; the official app compresses larger photos. SocialHandoff checks for 1 MB per image.
VideoUp to 3 minutes and 100 MB, MP4. SocialHandoff does not publish video to Bluesky.
Links, mentions, hashtagsPlain text is not clickable. Each link, mention, and tag needs a facet with byte offsets. SocialHandoff adds them.
Alt textSupported per image and shown to screen readers and in the app's ALT badge.
  • Write for conversation. Bluesky rewards replies, so end with a real question when it fits.
  • Keep threads short, 2 to 5 posts, and make each post readable alone in a custom feed.
  • Resize images below 1 MB before you attach them to avoid a rejected draft.
  • Use a custom domain handle if you have one. It works as proof of identity on the network.

Scheduling on Bluesky natively

The Bluesky app has no scheduled posts feature. You write and publish in real time, or you use a tool that calls the AT Protocol API at the right moment. That makes a scheduler the only way to hold a post for a launch time, and it makes an approval step more valuable, because a scheduled post goes out while nobody is watching.

Why approve before it posts

Bluesky's early users are sharp about automated accounts. A post that sounds like a bot, repeats itself, or links to the wrong page gets noticed. With SocialHandoff, an agent drafts, a person reads the preview in the approval inbox or on the phone swipe stack, and only approved posts are scheduled. The audit log keeps a record of each approval, which helps if you post for a project or a company.

What SocialHandoff supports on Bluesky

  • 300-grapheme check, counted the way Bluesky counts, not by bytes or characters.
  • Reply-chain threads, each part posted as a reply to the previous one with correct root and parent references.
  • Up to 4 images at 1 MB each, with alt text.
  • Clickable links, mentions, and hashtags, turned into facets automatically so the post looks the same as one written in the app.
  • Duplicate protection: records are written with deterministic keys, so a retry after a network error resumes the thread instead of posting a copy.
  • Per-post metrics where available.

API notes

Bluesky uses an app password, not your main password. Create one in Settings, then Privacy and security, then App passwords, and paste it with your handle in SocialHandoff. Self-hosted PDS instances work if they are reachable on the public internet. The PDS allows about 300 new sessions a day per account; SocialHandoff opens one per publish, which is fine at normal volume. Rate limits on writes are generous for a single account.

Tools and agent guides

Check length in graphemes with the Bluesky character counter, and split a long draft with the thread splitter. A first post template is on the Bluesky intro post page.

Agent setups for Bluesky: Claude Desktop for Bluesky, Gemini CLI for Bluesky, Make for Bluesky, and LangChain for Bluesky. Connection steps are in Connect Bluesky.

Bluesky with AI agents

Frequently asked questions

Can you schedule posts on Bluesky?
Not in the Bluesky app. You need a tool that publishes through the API at the chosen time, such as SocialHandoff, which also adds an approval step.
Why are my Bluesky links not clickable when posted by other tools?
Bluesky needs a facet with byte offsets for every link, mention, and hashtag. SocialHandoff creates those facets, so links work as they do in the app.
How large can a Bluesky image be?
About 1 MB per image in the protocol's image embed, up to 4 per post. SocialHandoff rejects larger images at draft time so you can resize them.
Do I give SocialHandoff my Bluesky password?
No. You create an app password in Bluesky settings. It is stored encrypted and you can revoke it in Bluesky at any time.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial