Last updated: 2026-06-11 · Bluesky · By SocialKit Team
Bluesky has no native scheduler and no in-app thread composer that lets you plan posts in advance. SocialKit fills both gaps: write each post in the thread, attach images or links, set a time, and the whole chain publishes automatically via the AT Protocol — no tab left open, no copy-pasting at midnight.
Before you start
You need a SocialKit account (the 7-day free trial is €0.00 due today) and a Bluesky account. Bluesky uses the AT Protocol rather than a traditional OAuth flow — as of June 2026, connecting a Bluesky account to SocialKit requires generating an app password inside Bluesky itself rather than logging in with your main credentials. This is a deliberate security boundary: SocialKit never sees your primary Bluesky password.
To generate an app password: open Bluesky → Settings → Privacy and Security → App Passwords → Add App Password. Give it a recognisable name (e.g. "SocialKit"), copy the generated password, and paste it into SocialKit's Bluesky connection screen. The app password can be revoked at any time from the same Bluesky settings panel without changing your main password.
Verify this flow matches the current SocialKit and Bluesky UI before proceeding, as both ship updates frequently.
In SocialKit, open workspace settings and go to the connected accounts section. Select Bluesky from the platform list. Enter your Bluesky handle (e.g. yourname.bsky.social or a custom domain handle) and the app password you generated — not your main Bluesky login password. As of June 2026, SocialKit authenticates via the AT Protocol API using this app-password credential. Once connected, you should see your Bluesky profile name and avatar confirmed in the accounts list.
Tip: If you manage multiple Bluesky accounts — for instance a personal handle and a brand handle — connect each separately with its own app password. Each counts as one of your plan's connected accounts.
Create a new post in SocialKit and select the Bluesky account you just connected as the publishing destination. If you also want to cross-post a version to X, Threads, or Mastodon in the same session, you can add those accounts here too — each gets its own per-platform caption field so you can tailor the text for different character limits and audience expectations.
In the Bluesky composer, activate the thread/multi-post toggle (the exact label may vary — look for "Thread" or an "Add post" button beneath the caption field). Your first post becomes the root of the thread. As of June 2026, Bluesky's character limit is 300 graphemes per post — note that this is a grapheme count, not a byte count: a standard ASCII character is one grapheme, a multi-byte emoji or CJK character also counts as one grapheme, but certain combined emoji sequences (e.g. skin-tone modifiers) may count as two or more. Use the SocialKit composer's live character counter or the free Bluesky character-counter tool to verify your count before scheduling.
Tip: Write your thread opening post as a standalone hook that works on its own — many readers see only the first post in their feed and click through only if it earns their attention.
Click "Add post" (or the equivalent in the composer) to append each additional post in the thread. SocialKit constructs the chain as AT Protocol reply refs — each post references the root and its immediate parent — which is what makes it a true thread rather than separate unlinked posts. Write the body of your argument, tutorial, or story across as many posts as you need, keeping each under the 300-grapheme limit. You can attach images to individual posts in the thread (image specs as of June 2026: JPEG or PNG, up to ~1 MB per image, ~2000 × 2000 px recommended — verify against the current Bluesky API limits in the composer).
Tip: Number your posts lightly if the sequence matters (e.g. "1/" at the start) — readers who quote-post or share a middle post will have context for where it fits in the chain.
Paste URLs into any post in the thread where relevant; Bluesky generates a link card preview using the page's Open Graph tags, displayed inline in the feed. As of June 2026, URLs in Bluesky posts are counted in full toward the 300-grapheme limit — unlike X, Bluesky does not normalize URL length. To preserve space, keep link-heavy posts short on surrounding text. If you are attaching images, add alt text for accessibility: SocialKit should provide an alt-text field alongside each image upload. Alt text does not count toward the grapheme limit.
Tip: If a URL is too long, shorten it with a custom domain shortener before composing — the full URL length counts against your 300 graphemes.
Pick a date and time for the thread to publish — SocialKit fires the first post and chains the rest automatically via the AT Protocol, so the whole thread appears in one go rather than dripping out over minutes. Check the /best-time-to-post/bluesky page for current audience-activity windows; as of June 2026 the Bluesky user base skews toward tech, journalism, and creator communities with active periods in the morning and early evening in US Eastern and European time zones. These are starting points, not prescriptions — review your own Bluesky analytics after a few weeks to refine.
Before finalising, use SocialKit's post-preview or the free Bluesky post-preview tool to check how each post in the thread will render in the Bluesky feed: link cards, image crops, and text truncation can all look different on-screen than in the composer. Once satisfied, click Schedule — SocialKit stores the full thread and publishes automatically at the set time with no further action needed.
Tip: Schedule threads at least 5–10 minutes ahead of the intended go-live time so the scheduler has buffer to submit all the chained posts via the API without hitting rate limits on high-volume days.
As of June 2026, Bluesky runs on the AT Protocol (atproto.com), a federated protocol where each post is a separate record on your Personal Data Server (PDS). A thread is not a single monolithic object — it is a series of individual posts where each reply record includes a "reply" field referencing both the root post (CID + URI) and the immediate parent post. This is why scheduling a Bluesky thread requires a tool that can construct and submit these reply refs correctly in sequence, rather than simply posting multiple standalone posts.
SocialKit handles this automatically — you write the thread in the composer and the scheduler submits each post in order with the correct AT Protocol reply structure. If you have ever tried to pre-write a thread in a notes app and manually copy-paste each post at publish time, this is the problem SocialKit eliminates.
Because the AT Protocol is actively developed, API behavior and rate limits can shift between releases. If you notice unexpected thread-linking behavior after a Bluesky platform update, reconnecting your Bluesky account in SocialKit's settings and re-checking the composer is usually the first diagnostic step.
Bluesky's per-post limit is 300 graphemes as of June 2026. In practice:
- Standard Latin characters, numbers, and common punctuation: 1 grapheme each. - Most emoji: 1 grapheme each (the emoji itself is one Unicode code point or a ZWJ sequence that Bluesky counts as one grapheme in most cases, but some complex sequences like flag emoji or keycap sequences may count as more — verify in the live counter). - CJK (Chinese, Japanese, Korean) characters: 1 grapheme each. - Full URLs: counted in full, one grapheme per character. A 60-character URL costs 60 graphemes. - Alt text on images: does NOT count toward the grapheme limit. - Usernames in mentions: count toward the limit.
The free Bluesky character-counter tool at /tools/bluesky-character-counter gives you a live count you can paste text into before opening the composer.
SocialKit's Bluesky scheduler handles the full thread workflow: compose each post, attach images with alt text, check grapheme counts, and schedule the entire chain to auto-publish via the AT Protocol. No tab left open, no manual copy-pasting. Bluesky is one of 11 platforms on every SocialKit plan — flat pricing, unlimited scheduled posts, 7-day free trial at €0.00 today.
Schedule Bluesky threads with SocialKitSchedule and cross-post to all 11 networks from one calendar on one flat plan. 7-day free trial — €0.00 due today.
€0.00 due today · cancel anytime · 7-day money-back guarantee
FAQ
The questions people ask before they schedule — answered honestly, hedged where platform behavior changes.
€0.00 due today · cancel anytime · 7-day money-back guarantee