How to post to Bluesky from n8n
n8n-nodes-postwire and set Post → Publish with Networks set to Bluesky, or send one HTTP Request to https://postwire.io/api/post. Either way you connect Bluesky once with your handle and an app password, and the workflow publishes a post of up to 300 characters, a thread of up to 10 posts, and up to 4 images with alt text, with links, @mentions and #hashtags clickable. The node can write the Bluesky post from the previous step's data, and a whole thread counts as one post of your plan.Typical trigger: a new article in an RSS feed, a release on GitHub, an approved row in a sheet. The same node sends that news to Mastodon, LinkedIn or Telegram in the same step, each with its own text.
Updated . Written from PostWire's own code; vendor prices read on Oct 27, 2026. Live networks: TikTok, Instagram, YouTube, LinkedIn (personal profiles), Facebook Pages, Bluesky, Mastodon, Telegram, Discord, and X on paid plans.
Post to Bluesky from n8n, step by step
About eight minutes, on the free plan. On Oct 27, 2026 n8n's list of built-in app nodes ran from Bitwarden and Box straight to Brandfetch: there is no Bluesky node to configure, which is why the steps start with PostWire.
- Create a free PostWire account
Open postwire.io/dashboard.html, type your email and press Create my free account. PostWire emails you a link to confirm the address; connecting accounts and publishing unlock once it is confirmed. No password and no card (free plan: 1 business, 10 posts a month, 5 AI drafts a day (about 20 a month), 2 networks per post, 3 scheduled posts at a time — every network connects free, no card).
- Connect Bluesky with an app password
In Bluesky, open Settings → Privacy and security → App passwords, add one and copy it: it is not your account password, and deleting it in Bluesky disconnects PostWire. In the dashboard open Accounts, press Connect on Bluesky 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 right there. - Copy your API key
In the dashboard, open API & MCP and press Copy key on the API key card. It is sent as
Authorization: Bearer pw_live_…(theX-API-Keyheader also works). Keep it server-side. - Install the PostWire node
In n8n: Settings → Community nodes → Install, enter
n8n-nodes-postwire(version 0.4.3 on npm on Oct 27, 2026), then add a PostWire API credential with the key and press Test, which checks the key at once. Where community nodes cannot be installed, the HTTP Request node further down does the same job. - Configure Post → Publish
Networks: Bluesky. Content: Smart Distribute: Write a Native Post per Network, with the Idea from the previous node (e.g.
{{ $json.title }} — {{ $json.link }}): the Bluesky draft stays within 300 characters, conversational, with one or two specific hashtags at most. To send your own words, set Content to Same Text on Every Network. Media: None, or URL / Binary File for an image. For a thread, open Options: Thread lists the posts after the first, in order, and First Comment adds one reply under the last post, the place for a link; or turn on Split Long Text Into a Thread and PostWire cuts a long text into posts itself. Dry Run checks everything without publishing. - Or one HTTP Request node
POST to the REST API with header
Authorization: Bearer pw_live_….per_platform.bluesky.threadtakes the posts after the first (up to 9), ortrueto split the text at a paragraph, then a sentence, then a word and never inside a link.mediatakes up to 4 images, each with its ownalt:POST https://postwire.io/api/post Authorization: Bearer pw_live_… Content-Type: application/json { "platforms": ["bluesky"], "per_platform": { "bluesky": { "text": "{{ $json.hook }}", "thread": true, "first_comment": "Full post: {{ $json.link }}" } }, "media": [ { "url": "{{ $json.image }}", "type": "image", "alt": "{{ $json.image_alt }}" } ], "idempotency_key": "{{ $json.guid }}" } - Read the result, or schedule it
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. To publish later, use Post → Schedule with When: At a Specific Time or In the Next Free Queue Slot (orPOST /api/schedulewithrun_at).
With an RSS trigger, put the item's guid in Options → Idempotency Key (or idempotency_key): PostWire refuses a second post with the same key for 24 hours, so a re-run never posts the same article twice. A whole workflow, from the trigger to the post, is laid out in n8n social media automation.
Three ways to post to Bluesky from n8n
n8n's own documentation and each vendor's page, read on Oct 27, 2026.
| Route | How it plugs into n8n | Threads from the workflow | Free to start |
|---|---|---|---|
| PostWire | The node n8n-nodes-postwire (Bluesky under Networks), or an HTTP Request | Yes — Thread option, up to 10 posts, or split automatically | Free plan: 10 posts a month, a thread counts as 1 |
| n8n's HTTP Request node to Bluesky | No Bluesky node: generic HTTP Request calls you build | You chain each reply yourself | Part of n8n |
| Upload-Post (HTTP Request) | HTTP Request to its upload API | Not listed on its n8n page | Free plan: 10 uploads a month |
Checked on Oct 27, 2026 (2026-10-27) on each vendor's own pricing or docs page, linked in the first column and below. Monthly billing in USD unless noted. "Not listed" means we could not find it on their page, not that it is missing.
Where PostWire is ahead
- A node with Bluesky in its Networks list. n8n's list of built-in app nodes has no Bluesky node, and Upload-Post's n8n page uses an HTTP Request node.
- Threads from a node option: up to 10 posts, or one switch that splits a long text, checked as Bluesky counts before anything goes out. Upload-Post's n8n Bluesky page does not mention threads.
- Clickable links, mentions and hashtags, marked in the post record by PostWire, and a first comment under the thread for the link.
- The post is written in the node for Bluesky (within 300 characters, conversational, one or two hashtags) from the previous step's data.
- A thread counts as one post of the free plan's 10 a month. Upload-Post's free plan counts 10 uploads a month.
- Nine more networks from the same node, each with its own version of the news: TikTok, Instagram, YouTube, LinkedIn, Facebook Pages, Mastodon, Telegram, Discord, and X on paid plans.
- n8n docs — built-in app nodes (the full list: no Bluesky and no Mastodon node): docs.n8n.io/integrations/builtin/app-nodes/
- n8n docs — HTTP Request node (generic credentials for "integrations not supported by n8n"): docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/
- Upload-Post — n8n Bluesky upload (HTTP Request to its API; video, image or text; up to 4 images; 300 character limit): www.upload-post.com/n8n/bluesky-upload/
- Upload-Post plans (llms-full.txt: Free 10 uploads a month, 2 profiles; Basic $24 a month, 5 profiles): www.upload-post.com/llms-full.txt
Bluesky threads from n8n
- Up to 10 posts in one chain: the first post plus up to 9 in Thread (or
per_platform.bluesky.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: Split Long Text Into a Thread (or
"thread": true) cuts a long text, such as an article summary from an RSS item, into posts of up to 300 characters at a paragraph, a sentence, then a word. - Checked before anything goes out: every post 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.
- The link goes under the thread: First Comment is posted by you as a reply under the last post.
- One thread, one post of your plan, however many replies it has; the first comment is free too.
Source: PostWire's Bluesky publisher and thread code, and the node's options in n8n-nodes-postwire 0.4.3, read Oct 27, 2026.
Why there is no Bluesky node in n8n, and what that means
n8n's documentation lists every built-in app node in alphabetical order. On Oct 27, 2026 that list had no Bluesky node (n8n's app nodes). Without a community node, the route is n8n's HTTP Request node with generic credentials, which n8n's own docs describe as the option for "integrations not supported by n8n", where you "manually configure the authentication process".
For Bluesky that means building the AT Protocol calls yourself: signing in with the app password to get a session, uploading each image as a blob before the post, and creating the post record. A link written in plain text is not clickable on Bluesky until the post marks where it starts and ends, and a reply in a thread has to point both at the first post and at the one it answers. PostWire does those parts: it marks every link, @mention and #hashtag, uploads the images, and chains the replies.
What it does not do
PostWire publishes and schedules your own Bluesky posts and threads from n8n. 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. Images are up to 1 MB each (Bluesky's own limit is 1,000,000 bytes); a larger one is refused with its size and nothing is posted.
Questions people ask
Is there a Bluesky node in n8n?
Not a built-in one: on Oct 27, 2026 n8n's list of built-in app nodes had no Bluesky node. You post to Bluesky with a community node such as n8n-nodes-postwire, which has Bluesky in its Networks list, or with an HTTP Request node calling an API.
How do I post to Bluesky from n8n?
Install n8n-nodes-postwire (Settings → Community nodes), add a PostWire API credential, connect Bluesky once in PostWire with your handle and an app password, and use Post → Publish with Networks set to Bluesky. Or send an HTTP Request to https://postwire.io/api/post with "platforms": ["bluesky"].
Can n8n post a Bluesky thread?
Yes. In the PostWire node, Options → Thread lists the posts after the first (up to 9), and Split Long Text Into a Thread cuts a long text into posts of up to 300 characters. Through the API, per_platform.bluesky.thread takes the same list, or true. A thread counts as one post of your plan.
Do I give n8n my Bluesky password?
No. You create an app password in Bluesky's settings and paste it, with your handle, in PostWire's dashboard. n8n only holds your PostWire API key. Deleting the app password in Bluesky disconnects PostWire.
Can n8n post images to Bluesky?
Yes, up to 4 per post, each with its own alt text and up to 1 MB: the node takes one image by URL or as a binary file from a previous node, and the API's media list takes up to four. Video is not posted to Bluesky.
How do I stop an RSS workflow posting the same article twice?
Put the item's guid in Options → Idempotency Key (idempotency_key in the API). PostWire refuses a second post with the same key for 24 hours, so a re-run or a retried execution publishes once.
How much does it cost?
Bluesky, the API and the n8n node are on the free plan: 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; paid plans have a 14-day refund.
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.