Browse the docs

Agent setup guide

Bluesky Thread Builder

A long text or article becomes a numbered Bluesky thread (hook first, call to action last), posted as one reply chain after you approve.

Available About 10 min to set up

What it does

A long text or article becomes a numbered Bluesky thread (hook first, call to action last), posted as one reply chain after you approve.

  • Takes a long text (article, newsletter or notes) from your form, CMS or a manual run.
  • AI writes a numbered Bluesky thread of 2 to 6 posts in your voice: a hook first, one idea per post, your call to action and link last, using only what the text says.
  • The thread waits for your approval in Reviews; you can edit, shorten or remove posts.
  • Before anything is posted, code checks every post (at most 300 characters, no leftover placeholders): the thread goes out completely or not at all.
  • Posts the first post, then each next post as a reply under the one before (same thread root), so it reads as one thread.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Bluesky, connected in Settings → Integrations (handle + app password).
  • A form, CMS or script that can send the text to a webhook (or run it by hand).

What it doesn't do

  • Nothing is posted without your approval.
  • Up to 6 posts per thread, text only: no images. Hashtags and @mentions appear as plain text on Bluesky (links are clickable).
  • Bluesky only (Mastodon threads aren't part of this agent).
  • If Bluesky refuses a post midway (e.g. its hourly limit), the earlier posts stay up; it doesn't delete them.

Availability and plans

Available

Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.

Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.

Before you start

  • A paid plan: agents run live, and the Free plan only runs Dry Runs.
  • An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
  • These apps, connected in Settings → Integrations: Bluesky.
  • A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
  • About 10 minutes.

Set it up step by step

Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.

1. Connect your AI provider

The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.

2. Connect Bluesky

Connect Bluesky with your handle and an app password (Settings → Integrations → Bluesky).

3. Describe your voice

Open “Write the thread” and replace the placeholder with your voice and call to action.

SettingWhat to enterIn step
Your voice and call to actionReplace the placeholder with your business, tone, how threads should open, the call to action and link for the last post, hashtags (if any) and words you never use. It starts as “[DESCRIBE YOUR BUSINESS, YOUR TONE, HOW YOU LIKE THREADS TO OPEN, THE CALL TO ACTION YOU USE AT THE END (E.G. A LINK TO YOUR NEWSLETTER OR SHOP), HASHTAGS (IF ANY) AND WORDS YOU NEVER USE HERE]” until you replace it.“Write the thread”

4. Pick your Bluesky account

Open each posting step (Post 1 to Post 6) and pick your Bluesky account.

SettingWhat to enterIn step
Bluesky accountThe Bluesky account the thread is posted from. Pick your connected Bluesky account.“Post 1 (the hook)”
Bluesky account (post 2, same one)The same Bluesky account. Pick your connected Bluesky account.“Post 2”
Bluesky account (post 3, same one)The same Bluesky account. Pick your connected Bluesky account.“Post 3”
Bluesky account (post 4, same one)The same Bluesky account. Pick your connected Bluesky account.“Post 4”
Bluesky account (post 5, same one)The same Bluesky account. Pick your connected Bluesky account.“Post 5”
Bluesky account (post 6, same one)The same Bluesky account. Pick your connected Bluesky account.“Post 6”

5. Test it with Dry Run

Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.

6. Switch the trigger on

Open the trigger, copy the webhook URL and secret into your form, CMS or script, and switch it on. Fields: title (optional), text, link (optional).

How it works

The agent is a normal workflow with 23 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.

  • New text to turn into a thread — Starts when your form or app sends data to the agent's webhook URL. Starts when your form, CMS or a manual run sends a long text: title (optional), text (the article, notes or newsletter), link (optional, used in the last post).
  • Write the thread — AI step (runs on your AI provider key). AI turns the text into a numbered Bluesky thread of 2 to 6 posts: a hook first, one idea per post, a call to action with your link last.
  • Approve the thread — A person approves or rejects it in Reviews (the run waits). The thread waits in Reviews: edit, shorten or remove posts (keep the numbering right), then approve to post it. Reject to post nothing.
  • Check the whole thread — Step. Branch: Approved. In code, before anything is posted: at least 2 posts, each at most 300 characters, and no leftover placeholders. A thread is posted completely or not at all.
  • Ready to post? — Decision: picks the branch to follow. The whole thread passed: it's posted. Otherwise nothing is posted.
  • Held: nothing posted — Kept in the run history. Branch: Held. A post was too long, missing or still had a placeholder. Fix it and send the text again.
  • Post 1 (the hook) — Bluesky: Create a post. Branch: Post. Publishes the first post; the rest reply under it.
  • Is there a post 2? — Step. In code: does the approved thread have a post 2?
  • Post 2? — Decision: picks the branch to follow. Post 2 follows, or the thread is complete.
  • Post 2 — Bluesky: Reply to a post. Branch: Post 2. Replies under post 1 (the thread's first post is the root), so the posts read as one thread.
  • Is there a post 3? — Step. In code: does the approved thread have a post 3?
  • Post 3? — Decision: picks the branch to follow. Post 3 follows, or the thread is complete.
  • Post 3 — Bluesky: Reply to a post. Branch: Post 3. Replies under post 2 (the thread's first post is the root), so the posts read as one thread.
  • Is there a post 4? — Step. In code: does the approved thread have a post 4?
  • Post 4? — Decision: picks the branch to follow. Post 4 follows, or the thread is complete.
  • Post 4 — Bluesky: Reply to a post. Branch: Post 4. Replies under post 3 (the thread's first post is the root), so the posts read as one thread.
  • Is there a post 5? — Step. In code: does the approved thread have a post 5?
  • Post 5? — Decision: picks the branch to follow. Post 5 follows, or the thread is complete.
  • Post 5 — Bluesky: Reply to a post. Branch: Post 5. Replies under post 4 (the thread's first post is the root), so the posts read as one thread.
  • Is there a post 6? — Step. In code: does the approved thread have a post 6?
  • Post 6? — Decision: picks the branch to follow. Post 6 follows, or the thread is complete.
  • Post 6 — Bluesky: Reply to a post. Branch: Post 6. Replies under post 5 (the thread's first post is the root), so the posts read as one thread.
  • Thread posted — Kept in the run history. Branch: Thread complete. The run history keeps the thread and every post's uri.

Test it with Dry Run

Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. Edit the sample to match the fields your own form or app sends.

Sample data fields

text, title, link.

  • Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
  • Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.

Go live

  • Open the trigger, copy the webhook URL and secret into your form, CMS or script, and switch it on. Fields: title (optional), text, link (optional).
  • The webhook is protected by a secret: send it in the header shown in the Activation panel (requests without it are refused with 403). Each request starts one run.
  • The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
  • When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.

Questions

How long can the thread be?

Up to 6 posts of at most 300 characters each. Longer texts are condensed to the key points.

What if one post fails?

The whole thread is checked before the first post goes out. If Bluesky refuses a post midway (for example because of its rate limit), the posts before it stay up and the run history shows where it stopped.

Can it add images?

No, posts are text only for now. Links are clickable; hashtags and @mentions appear as plain text.

Troubleshooting

  • “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
  • A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
  • An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
  • Nothing happens when your form sends data: check the webhook is switched on and the request carries the secret header (403 means it's missing or wrong).
  • A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
  • A step failed: open the run in History and check that step in the Trace tab for the error and what it received.

Generated from the agent's own workflow, so it always matches what the agent does. Last updated .