How to post to Bluesky from n8n

n8n has no built-in Bluesky node, so to post to Bluesky from n8n you add the community node 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.

  1. 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).

  2. 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.social or 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.

  3. 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_… (the X-API-Key header also works). Keep it server-side.

  4. 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.

  5. 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.

  6. Or one HTTP Request node

    POST to the REST API with header Authorization: Bearer pw_live_…. per_platform.bluesky.thread takes the posts after the first (up to 9), or true to split the text at a paragraph, then a sentence, then a word and never inside a link. media takes up to 4 images, each with its own alt:

    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 }}"
    }
  7. 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 (or POST /api/schedule with run_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.

RouteHow it plugs into n8nThreads from the workflowFree to start
PostWireThe node n8n-nodes-postwire (Bluesky under Networks), or an HTTP RequestYes — Thread option, up to 10 posts, or split automaticallyFree plan: 10 posts a month, a thread counts as 1
n8n's HTTP Request node to BlueskyNo Bluesky node: generic HTTP Request calls you buildYou chain each reply yourselfPart of n8n
Upload-Post (HTTP Request)HTTP Request to its upload APINot listed on its n8n pageFree 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.
Sources, all read on Oct 27, 2026:

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.