Limits
| Character limit | 300 graphemes per post. An emoji or an accented letter counts as 1 grapheme even if it uses several bytes. |
|---|---|
| Media per post | Up to 4 images, or 1 video. Images and video cannot be mixed in one post. |
| Image size | The AT Protocol image embed accepts blobs of about 1 MB each; the official app compresses larger photos. SocialHandoff checks for 1 MB per image. |
| Video | Up to 3 minutes and 100 MB, MP4. SocialHandoff does not publish video to Bluesky. |
| Links, mentions, hashtags | Plain text is not clickable. Each link, mention, and tag needs a facet with byte offsets. SocialHandoff adds them. |
| Alt text | Supported 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.