← Back to blog

Monitor Bluesky Mentions with n8n and Claude

Build idea, not a verified tutorial. This was drafted by an automation Daniel built. Tool interfaces change often — check the current docs before relying on the steps.

Bluesky is growing fast — ATProto Spaces just launched this week, pulling even more attention to the platform. But most social-listening tools don't cover it yet, so brand mentions pile up unread. This workflow checks Bluesky for your brand name every morning, asks Claude to rate sentiment and flag anything that needs a reply, then drops a tidy summary into a Slack channel.

TRIGGERORCHESTRATEAI / ENRICHOUTPUTEvery morning(Schedule)Bluesky search APIClaude summarises +flagsDigest in Slack
How it flows
1

Create a free n8n Cloud account

n8n is a visual automation tool — think of it as a flowchart where each box does one job. Go to n8n.io and click Get started free. Sign up and you land on the n8n Cloud dashboard. A free trial is available for new users with no card required to start.

n8n · Home dashboard
1 Start a new workflow
+ New workflow
2 Rename the workflow
NameBluesky Brand Monitor
Click the name at the top of the canvas to rename
2

Add a Schedule Trigger

A trigger is what kicks the workflow off. Click Add first step (or press N) to open the node search panel. Search for Schedule Trigger and select it. Set it to run once a day at a time that suits you — 8 AM is a good default. This node has no external account to connect; it just uses n8n's built-in clock.

n8n · Node search panel
1 Open node search
Add first step
2 Find the trigger
3 Configure the schedule
Trigger intervalDays
Trigger at hour8
Trigger at minute0
3

Search Bluesky with an HTTP Request node

Bluesky's AT Protocol — the open network underneath Bluesky — has a public search endpoint anyone can call. You'll use n8n's HTTP Request node to call it. Click the + connector on your Schedule Trigger node to add the next step, search for HTTP Request, and select it. Paste the URL below into the URL field and replace `YourBrand` with your actual brand name.

n8n · HTTP Request node
1 Add the next node
2 Configure the request
MethodGET
URLhttps://api.bsky.app/xrpc/app.bsky.feed.searchPosts
AuthenticationNone (public endpoint)
3 Add query parameters
qYourBrand
limit25
sortlatest
Click 'Add parameter' for each row
4 Test the call now
Test step
4

Extract the post texts with an Edit Fields node

The API returns a nested JSON object (a structured blob of data). Before Claude can read it, you need to pull out just the post text from each result. Add an Edit Fields (Set) node. You'll write a short expression — n8n's way of picking a value from earlier data — to grab the text field from each post. n8n shows you the available fields on the left as you type.

n8n · Edit Fields (Set) node
1 Add next node
2 Map the field you need
postText{{ $json.posts.map(p => p.record.text).join(' | ') }}
Use the expression editor (grey {} icon) to paste the expression
3 What this expression does
It joins the text of all returned posts into one string, separated by |, so Claude can read them in a single message. n8n expressions guide →
5

Connect Claude to summarise and flag

Now add a Basic LLM Chain node — this is n8n's simple way to send a prompt to an AI and get text back. Inside it you'll attach a Anthropic Chat Model sub-node, which is where your Claude API key lives. First, create the API key: go to console.anthropic.com → Settings → API Keys → + Create Key, copy the key (it starts with `sk-ant-` and is shown only once), then save it in n8n under Settings → Credentials → Add Credential → Anthropic API.

n8n · Basic LLM Chain node
1 Add the AI node
2 Attach a Claude model underneath
Anthropic Chat Model
claude-haiku-4 · cheapest, fast
3 Write your prompt in the Prompt field
Here are recent Bluesky posts mentioning our brand. Summarise overall sentiment in 2-3 sentences. Then list any posts that need an urgent reply (complaints, direct questions). Posts: {{ $json.postText }}
ReturnsSentiment: mostly positive. 2 posts need replies: [1] …
4 Credential setup
API Keysk-ant-… (paste from Anthropic Console)
Modelclaude-haiku-4
Use Haiku to keep costs low — under $0.01 per daily run
6

Send the digest to Slack

Add a Slack node as the final step. Connect your Slack workspace using the Sign in with Slack button inside the node — n8n opens a browser pop-up to authorise access. Choose the Send a message operation, pick the channel (e.g. `#marketing`), and set the message text to the output of the Claude node using an expression.

n8n · Slack node
1 Add the output node
2 Configure the message
ResourceMessage
OperationSend a message
Channel#marketing
Message text{{ $json.text }} — (expression pointing to Claude output)
3 Activate the workflow so it runs on schedule
Activate workflow

What you get

Every morning n8n fetches the latest 25 Bluesky posts mentioning your brand, Claude summarises the mood and flags any posts that need a reply, and the whole digest lands in your chosen Slack channel before the team starts the day. Total cost is near zero — n8n Cloud free trial, Claude Haiku at fractions of a cent per run, and Slack's free tier. Rough effort: ~1.5 hours to build, free tiers throughout. Claude Haiku costs roughly $0.001 per daily run. n8n Cloud free trial included..

Sources