How to post to Bluesky from ChatGPT
https://postwire.io/api/mcp) you connect Bluesky once with your handle and an app password, approve the post or thread ChatGPT writes with generate_posts, and it publishes it with post_to_social or queues it with schedule_post: a post of up to 300 characters, a thread of up to 10 posts with the link in a reply under it, and up to 4 images with alt text. PostWire is not in ChatGPT's app directory yet (submitted to OpenAI's review on Sept 27, 2026), so today you add it as a custom connector in developer mode; in Claude it is already in the connector directory. A whole thread counts as one post of your plan. Bluesky is on the free plan: 1 business, 10 posts a month, 5 AI drafts a day, 2 networks per post, no card.Links, @mentions and #hashtags arrive clickable, because PostWire marks each one in the post record. The same request can carry the LinkedIn, Mastodon and X versions of the same news, each written for its own network.
Updated . Written from PostWire's own code; vendor prices read on Oct 29, 2026. Live networks: TikTok, Instagram, YouTube, LinkedIn (personal profiles), Facebook Pages, Bluesky, Mastodon, Telegram, Discord, and X on paid plans.
Set it up and post, step by step
Prompt to copy once Bluesky is connected: Write a Bluesky thread of 4 posts about our new CSV import with the link in a reply under the last one, show it to me, and schedule it for Thursday at 10am.
- Add PostWire as a custom connector
If your ChatGPT plan offers developer mode, turn it on under Settings → Security and login, then under Settings → Connectors add a custom connector with the URL
https://postwire.io/api/mcpand sign in when asked (OAuth). Menu names in ChatGPT change often; OpenAI's help page has the current path. PostWire is not in ChatGPT's app directory yet (submitted to OpenAI's review on Sept 27, 2026). Not available on your plan? Use PostWire in Claude, where it is in the connector directory. - Sign in with your email
A 6-digit code creates your free PostWire account inside the sign-in window: no password and no card. ChatGPT asks you to confirm a write action such as publishing before it runs.
- Create a Bluesky app password
In Bluesky, open the app passwords page (bsky.app/settings/app-passwords), add one and copy it. It is not your account password, and deleting it in Bluesky disconnects PostWire.
- Connect Bluesky
Ask "connect my Bluesky". The connector calls
create_connect_linkand returns a one-hour link; choose Bluesky there and paste your full handle (name.bsky.socialor your own domain) and the app password. PostWire signs in to Bluesky with them before it saves anything, so a wrong handle or password is refused on that page, with what to do about it. - Ask for the post or the thread
"Write a Bluesky post about the new CSV import."
generate_postsreturns a draft and publishes nothing: within 300 characters, conversational, with one or two specific hashtags at most. Ask for a thread, or give it an idea too long for one post, and it returnstext(the hook) plusthread(the posts after it, in order); when the idea has a link, the link comes back infirst_comment, to go in a reply under the last post. - Add images, if you want them
A file attached to a ChatGPT message does not reach a connector, so ask for an upload link:
create_upload_linkreturns a page where you pick the images on the phone or laptop that has it (up to 100 MB on the free plan and 1 GB on paid plans); say "uploaded" and the assistant reads it withget_uploaded_file. A public https link works too. - Post now, or schedule it
Say "post it" and the assistant calls
post_to_social; say "schedule it for Thursday at 10am" and it callsschedule_post, up to 365 days ahead, or withrun_at: "next_slot".threadholds up to 9 posts after the first, each a reply to the one before, andfirst_commentis one more reply under the last one. This is the call:{ "name": "schedule_post", "arguments": { "platforms": ["bluesky"], "per_platform": { "bluesky": { "text": "our CSV import went from 40 seconds to 6. here is what changed 🧵", "thread": [ "we stopped parsing the whole file before showing a preview.", "rows now stream in batches of 500.", "and errors name the row and the column. #buildinpublic" ], "first_comment": "details: https://example.com/changelog/csv-import" } }, "run_at": "2026-11-05T10:00:00-05:00" } } - Open the post
The result carries the post's link (
https://bsky.app/profile/…/post/…) and, for a thread, every post's id. If Bluesky refuses a later post of a thread, the earlier ones stay up and the result says which went out and which did not; nothing is posted twice.
"What's scheduled on Bluesky?" calls list_scheduled_posts, and "cancel Thursday's thread" calls cancel_scheduled_post; the same queue is on the dashboard's Queue page. Prefer to set it up by hand first? Open the dashboard, connect the account under Accounts and copy your key under API & MCP.
Bluesky threads from ChatGPT
- Up to 10 posts in one chain: the first post plus up to 9 more in
thread, each a reply to the one before, so Bluesky shows them as one thread. Images stay on the first post. - Let PostWire split it:
"thread": trueinstead of a list cuts the text into posts of up to 300 characters at a paragraph, then a sentence, then a word, and never inside a link. - The link goes under the thread:
first_commentis posted by you as a reply under the last post, where people look for it. - Checked before anything goes out: every post of a thread is measured as Bluesky counts it (300 graphemes, so an emoji counts once). A post over the limit is refused before the first one is sent, never cut halfway.
- One thread, one post of your plan: a thread counts as one post however many replies it has, and the first comment is free too.
Source: PostWire's Bluesky publisher and thread code, read Oct 29, 2026.
Bluesky's rules the connector works within
- 300 characters per post.
generate_postswrites within that, for Bluesky's tone: a person taking part in the conversation, not a brand announcement. - Clickable links, mentions and hashtags: on Bluesky a link is only clickable when the post marks where it starts and ends. PostWire marks every link, @mention and #hashtag.
- Up to 4 images, each with its own alt text, of up to 1 MB each (Bluesky's own limit is 1,000,000 bytes). A larger image is refused with its size and the fix, and no post is created.
- A deleted app password is noticed: PostWire's connection check signs in with it, and the dashboard asks you to reconnect.
More on Bluesky itself: Bluesky MCP server and does Bluesky have an API?
What it does not do
ChatGPT with PostWire writes, publishes and schedules your own posts and threads on Bluesky. It posts text and images, not video, and it does not attach a link card preview: a link stays a clickable link in the text. It does not read your timeline or notifications, and it does not like, repost, follow or send direct messages.
Questions people ask
Can ChatGPT post to Bluesky?
Not by itself. ChatGPT writes the post, and a connector publishes it. With PostWire's connector (https://postwire.io/api/mcp) and Bluesky connected once with an app password, ChatGPT publishes or schedules posts and threads after you approve the text.
Do I need my Bluesky password?
No. You paste an app password, which you create in Bluesky's settings and can delete there at any time; deleting it disconnects PostWire. It is not your account password.
Can ChatGPT post a Bluesky thread?
Yes. A thread is up to 10 posts, each within 300 characters, with the link in a reply under the last one. Every post is measured as Bluesky counts it before the first goes out, and a whole thread counts as one post of your plan.
Can ChatGPT schedule Bluesky posts?
Yes. It calls schedule_post with a time up to 365 days ahead, or "next_slot" for your next free posting hour, and PostWire publishes it at that time with ChatGPT closed. The free plan keeps 3 posts waiting at once.
Can it post images or video to Bluesky?
Images, yes: up to 4 per post, each with its own alt text and up to 1 MB. PostWire does not post video to Bluesky.
Are links clickable?
Yes. PostWire marks every link, @mention and #hashtag in the post record, so they arrive clickable. It does not attach a link card preview.
How much does it cost?
The free plan includes Bluesky and the connector: 1 business, 10 posts a month, 5 AI drafts a day, 2 networks per post, no card. Starter is $9 a month for 3 businesses and Pro $29 for 10, with every network in each post; nothing is charged from the chat — an upgrade link opens a Stripe page.
Try it on one business, free.
The free plan is 1 business, 10 posts a month, 5 AI drafts a day (about 20 a month) and 2 networks per post — every network connects free, no card, no time limit. Paid plans start at $9 a month and have a 14-day refund; Pro can be tried free for 7 days and Agency for 14, with a card at checkout and nothing charged that day.