n8n
Post to X, Bluesky, LinkedIn, Threads, Mastodon, Instagram, Facebook, and Telegram from an n8n workflow with the @chirpie/n8n-nodes-chirpie community node, covering posting, threads, scheduling, accounts, analytics, and AI Agent tool use.
@chirpie/n8n-nodes-chirpie is a community node that puts Chirpie in your n8n workflows. One node covers posting, threads, scheduling, listing accounts, and analytics, and it is available to n8n AI Agents as a tool, so an agent can look up your connected accounts and publish on its own.
Install
- Open Settings → Community Nodes.
- Select Install.
- Enter
@chirpie/n8n-nodes-chirpie. - Agree to the risks of using community nodes and select Install.
The Chirpie node then appears in the nodes panel.
cd ~/.n8n/nodes
npm install @chirpie/n8n-nodes-chirpieRestart n8n afterwards.
n8n Cloud only allows community nodes that n8n has verified. One-click install on Cloud is coming. Until then, use a self-hosted n8n instance.
Add your credential
- Create an API key in the dashboard.
- In n8n, add a Chirpie API credential and paste the key.
- Leave Base URL as
https://chirpie.ai. - Select Test. The credential calls
GET /api/v1/accountsand confirms the key works.
Connect your social accounts once in the dashboard. The node publishes through whatever is connected there, with no per-platform setup inside n8n.
Operations
| Resource | Operation | Description |
|---|---|---|
| Post | Create | Publish now, or schedule with Schedule At |
| Post | Get | Fetch a single post by ID |
| Post | Get Many | List posts, filtered by status or account. Turn on Include Hidden for the ones you hid |
| Post | Update | Edit a post that has not published yet, or finish a draft. Leaving Schedule At out keeps the time it already has |
| Post | Publish | Send a saved draft now, checking it in full and charging it as a post |
| Post | Retry First Comment | Post a first comment that failed, again. It re-sends the text the post already carries |
| Post | Delete | Take the post down from the platform. Chirpie keeps it, marked deleted. A published TikTok post, a Facebook Page story, or a post on an Instagram account connected through Instagram rather than via Facebook, cannot be deleted and refuses with delete_unsupported |
| Post | Hide | Hide a post from your Chirpie listings. Nothing reaches the platform |
| Post | Unhide | Put a hidden post back in your listings |
| Thread | Create | Publish a 2–25 post thread, now or scheduled. A thread is atomic: if any part fails, the parts already published are deleted and the quota is refunded |
| Account | Get Many | List your connected social accounts |
| Account | Activate | Switch a connected account on so it can publish |
| Account | Deactivate | Switch a connected account off, keeping it connected |
| Analytic | Get | Engagement metrics for a published post |
Analytic → Get has one option, Refresh: ask the platform for the current numbers
instead of reading the stored snapshot. Allowed once per post every 5 minutes; past that it
answers 429 and the stored numbers are still one ordinary call away. See
Analytics.
Every operation returns the post, thread, account, or metrics object directly: id, status, platform_post_id and the rest are available on the output item without any extra unwrapping.
Create a post
Account ID is the id of a connected account. Run Account → Get Many once to find it, or copy it from the dashboard.
Optional settings live under Options:
- Media URLs: a comma-separated list of public image or video URLs. Chirpie downloads them and uploads them to the platform for you.
- Media IDs: ids from the Media -> Upload operation, comma separated. Upload runs on the node's binary input, so a file that arrived from an earlier step can be attached without ever having a public URL.
- Schedule At: publish at a future time instead of immediately. See Scheduling.
- Draft: save the post without sending it. Nothing reaches the platform, nothing counts against your monthly quota, and the output lists anything that would stop it publishing as it stands.
- First Comment: a comment to publish under the post as soon as it goes out, the link-in-the-first-comment pattern. X, Threads, Instagram and Facebook only, and it counts as one post against your monthly quota. See First comment.
- Timezone: the IANA timezone a Schedule At with no offset is read in, such as
America/New_York. Ignored when the time already carries an offset. Leave it empty to use the timezone saved on the Chirpie account. See Timezones. - Idempotency Key: makes a retry of this item safe. The same key with the same request replays the first answer for 24 hours instead of publishing again. Set it from something stable across a retry, such as the execution id plus the item index. See Idempotency.
Create a thread
Posts is a list; add one entry per post in the thread, each with its own text and optional media (an ID from Media -> Upload, or a public URL). On X, Bluesky, Threads, Mastodon, and Telegram each post replies to the one before it. On platforms without native threading, each is published as a standalone post.
Options → Draft saves the thread instead of sending it, on the same terms as a post.
Options → First Comment publishes one comment under the thread's last part as soon as it goes out, on the same terms as a post.
Options → Timezone and Options → Idempotency Key work exactly as they do on a post. Media → Upload carries Idempotency Key too, so a retried upload does not leave a second copy behind.
First comments
Post → Update → Update Fields → First Comment replaces the first comment on a post that has not published yet, and an empty value removes it. A first comment never fails its post, so a published post can be carrying one that did not go out: Post → Retry First Comment with Post ID sends it again.
Drafts
A draft is saved and nothing else, so a workflow can write copy now and send it later, or leave it for a person to approve.
- Post → Create (or Thread → Create) with Options → Draft switched on.
- Post → Get Many with Status set to
draftto find what is waiting. - Then either Post → Publish with Post ID, which sends it now and takes the quota, or Post → Update with Schedule At, which queues it. To change only the time a draft remembers, switch Update Fields → Draft on as well.
Everything a create checks is checked at that point, so a draft that would be refused stays a draft, untouched. See Drafts.
Use it with an AI Agent
The Chirpie node is usable as a tool. Connect it to an AI Agent node's tool input and the agent can call it on its own.
A good setup is two Chirpie tool nodes:
- Account → Get Many, so the agent can resolve "my LinkedIn" to an account ID.
- Post → Create, with Account ID and Text set to
$fromAI(...)expressions so the agent fills them in.
Give the agent a system message telling it to list accounts before posting, and to respect the platform's character limit. Then "post 'shipping today' to X" is enough.
A ready-made workflow ships with the package as examples/ai-agent-social-posting.json. Import it with Workflows → Import from File and set your credentials.
Example workflow: schedule a daily post
- Schedule Trigger: every day at 09:00.
- Chirpie: Resource Post, Operation Create.
- Account ID: the account you want to publish through.
- Text:
={{ $json.text }}from whatever built the copy upstream. - Options → Schedule At:
={{ $now.plus({ hours: 3 }) }}to queue it three hours out instead of publishing immediately.
- Chirpie: Resource Analytic, Operation Get, with Post ID set to
={{ $json.id }}from step 2, run later to pull engagement.
Schedule At accepts any n8n datetime: a picker value, an expression, or a $now calculation. A value carrying an offset (which is what the date picker and $now both produce) is converted to UTC before sending, so workflow timezones are handled for you. A value with no offset is sent exactly as written and resolved by Chirpie, in Options → Timezone or in the timezone saved on your account. That is the form to use for a time that has to survive a daylight-saving change, because an offset worked out today is wrong on the other side of one.
Errors
The node surfaces Chirpie's API errors directly. The common ones:
| Status | Meaning |
|---|---|
401 | The API key is invalid or was revoked |
404 | The account ID doesn't exist, or the account is disconnected |
403 | The API key does not hold the scope the operation needs |
409 / 422 | An Idempotency Key already in progress, or reused for a different request |
429 | Monthly post limit reached, or past your plan's burst limit (120 requests a minute on Free, up to 1,200 on Pro and above) |
See Errors for the full list, and Rate limits for quotas.
FAQ
Can I use the Chirpie node on n8n Cloud?
Not yet. n8n Cloud only runs community nodes that n8n has verified, and one-click Cloud install is coming. On a self-hosted n8n instance you can install it today from Settings → Community Nodes.
Which platforms can the node post to?
Every account you have connected. X/Twitter, Bluesky, LinkedIn, Threads, Mastodon, Instagram, Facebook and Telegram connect today, and more are coming soon, which the node picks up automatically. It has no platform picker: you choose an Account ID, and the platform follows from whichever account that is.
Do I need separate credentials for each social network?
No. One Chirpie API credential covers every platform. You connect the social accounts once in the Chirpie dashboard, and the node publishes through them.
How do I find an Account ID?
Add a Chirpie node with Account → Get Many and run it once. Each item's id is an account ID. You can also copy it from the dashboard.
Can an AI Agent use this node?
Yes. The node is exposed as a tool, so it can be attached to an AI Agent node's tool input. Use $fromAI(...) expressions on Account ID and Text to let the agent fill them in.
Can I post to several platforms at once?
In the node, run one Chirpie node per account, for example a Loop Over Items node over a list of account IDs, or parallel Chirpie nodes. Each node call publishes to a single account. The Chirpie API itself takes many accounts in one request, with per-account text and media: see Post to several accounts at once if you are calling it from an HTTP Request node, the SDK, the CLI, or MCP.
Does the node upload image files?
It takes public Media URLs, not binary data. Chirpie downloads each URL and uploads it to the platform. If your workflow produces a binary, put it somewhere publicly reachable first and pass that URL.
Can the node save a draft for approval?
Yes. Switch Options → Draft on in Post → Create or Thread → Create and nothing is sent: the post is saved, and nothing counts against your monthly quota. Send it later with Post → Publish, or queue it with Post → Update and a Schedule At.
Is it free?
The node is MIT licensed and free. Posting counts against your Chirpie plan's monthly quota. See Rate limits.
Where is the source code?
On GitHub at Firefloco/chirpie-n8n. Every npm release is published from that repository by GitHub Actions with an npm provenance statement, so the "Provenance" panel on the npm page links each version back to the exact commit and workflow run that built it.