With Statuz
A free CLI for Bluesky, X, Mastodon, LinkedIn and Reddit. Bluesky needs no developer app.
Connect
npm i -g statuz-cli
statuz accounts connect --platform bluesky
statuz startYou sign in on Bluesky's own page. On your own PDS: add --server with your handle (--server alice.example.com) or your PDS URL. The daemon (statuz start) sends scheduled posts.
Schedule a post
statuz posts create --text "Launching our public roadmap Friday" --to bluesky --at "thu 9am"--at takes ISO times or words like "tomorrow 8:30". See Scheduling.
Links, @mentions and #hashtags become clickable, and the first link gets a preview card.
With an image and alt text
statuz media add --path ./roadmap.png --alt "Roadmap: three themes for Q4"
statuz posts create --text "Here's the plan" --media <media id> --to bluesky --at "fri 10am"Up to 4 images (2 MB each) or one video.
Threads
statuz posts create --to bluesky --at "mon 9am" \
--text "1/ We moved our team from Slack to async docs." \
--text "2/ Meetings dropped by half." \
--text "3/ Decisions got slower at first, then faster."Each post is checked against Bluesky's 300 characters before saving. Too long? Split it with the thread splitter.
Several accounts
statuz posts create --text "New episode" --to @studio.bsky.social --to @me.bsky.social
statuz accounts default --account @me.bsky.socialdefault picks which account --to bluesky means.
Cross-posting
Add --to x --to mastodon --to linkedin. See the cross-posting guide.
Let an agent do it
claude mcp add statuz -- statuz mcpTurn this changelog into a Bluesky thread and schedule it for 9am tomorrow.
When to post on Bluesky
- Weekday mornings, 8–10am in your followers' time zone.
- Early evening, 6–9pm.
- Following is chronological, so a post's first hour matters most.
- Custom feeds pick posts up later; hashtags help them find you.
Best practices
- Write for Bluesky: casual, shorter, fewer hashtags than X.
- Add alt text to every image.
- Use one or two hashtags that a feed or community already follows.
- Reply to people. Bluesky rewards conversation more than broadcasting.
Troubleshooting
- Didn't publish:
statuz status, thenstatuz accounts check. Retry withstatuz posts publish --id <id>. - Wrong time:
statuz config set --key timezone --value Europe/Berlin, or--timezoneper post. - Image rejected: keep it under 2 MB.
Start with the quick start.