Automate social posting with n8n (step-by-step)
Want your social media to post itself? By connecting n8n to SchedPilot, any workflow — a new blog post, an RSS item, a Google Sheets row, or a form submission — can automatically draft and schedule posts across all your social accounts. This step-by-step guide shows you how to build it with n8n’s HTTP Request node, add an optional AI caption step, and keep a human approval step before anything goes live.
No custom node to install and no code to write: SchedPilot exposes a simple REST API, and n8n can call it directly. Let’s build the automation.
Try SchedPilot for free
Free trial · No upfront payment · 10+ platforms
Post on 10 platforms at once. Great for influencers, marketers, agencies.
What you’ll build
A single n8n workflow that:
- Triggers on an event (new RSS item, blog post, sheet row, webhook, or a schedule).
- Generates a caption with an AI node (optional).
- Waits for your approval in Slack or email (optional but recommended).
- Schedules the post to every connected social account via SchedPilot.
Prerequisites
| You’ll need | Notes |
|---|---|
| A SchedPilot account with API access | API keys are available on the Platinum plan. |
| At least one connected social account | Connect X, Instagram, LinkedIn, TikTok, and more in the SchedPilot dashboard. |
| An n8n instance | n8n Cloud or a self-hosted instance — either works. |
| Your SchedPilot API key | Starts with smm_. We’ll grab it in Step 1. |
Step 1 — Get your SchedPilot API key
smm_xxxxxxxxxxxxxxxx.Step 2 — (Optional) List your connected accounts
By default, SchedPilot schedules your post to every connected account. If you want to confirm what’s connected — or later target specific accounts — call the accounts endpoint first:
curl "https://api.schedpilot.com/developers/v1/accounts" \
-H "Authorization: Bearer smm_your_key"
This returns each connected account with its platform and ID. To scope a post to specific accounts, pass their IDs in your request — see the create-post reference for the exact field.
Step 3 — Create the workflow & add a trigger
- RSS Feed Trigger — post every new item from a blog or podcast feed.
- Schedule Trigger — post daily/weekly at a fixed time.
- Webhook — fire from your app, a CMS, or a form.
- Google Sheets Trigger — post the next row from a content calendar.
Step 4 — (Optional) Generate a caption with AI
Add an OpenAI (or Google Gemini) node between your trigger and SchedPilot to turn raw input into a platform-ready caption. A simple prompt:
Write a short, engaging social media caption for this content.
Keep it under 280 characters and add 2 relevant hashtags.
Content: {{ $json.title }} — {{ $json.contentSnippet }}
The generated text becomes the content of your post in the next step.
Step 5 — Add the HTTP Request node (this posts to SchedPilot)
This is the core of the automation. Add an HTTP Request node and configure it:
| Field | Value |
|---|---|
| Method | POST |
| URL | https://api.schedpilot.com/developers/v1/post |
| Authentication | Generic → Header Auth |
| Header name | Authorization |
| Header value | Bearer smm_your_key |
| Send Body | On, as JSON |
Set the JSON body. Use n8n expressions ({{ }}) to pull in data from previous nodes:
{
"content": "{{ $json.caption }}",
"date": "2026-07-15",
"time": "09:00",
"timezone": "America/New_York"
}
content is your post text. date (YYYY-MM-DD) and time (HH:mm) set the schedule; add an optional timezone. To publish immediately instead, send "post_instant": true. You can also attach media (attachments) and add an X reply thread (replies).To post at a dynamic time (e.g. “tomorrow at 9am”), compute the date in a Set or Code node and reference it: "date": "{{ $json.date }}".
What SchedPilot returns
A successful call returns 202 Accepted with the scheduled post details:
{
"post_id": 8791,
"status": "scheduled",
"scheduled_date": "2026-07-15 09:00:00",
"timezone": "America/New_York",
"accounts": 4,
"media": 0,
"replies": 0
}
Step 6 — (Recommended) Add a human approval step
Letting automation publish unchecked is risky. Add n8n’s Send and Wait for approval action (or a Slack/email node) before the HTTP Request node, so a person signs off first.
Step 7 — Test, then activate
202.Real workflows you can build today
- Blog → social: RSS Trigger → AI caption → SchedPilot. Every new article auto-posts to X, LinkedIn & Threads.
- Content calendar: Google Sheets Trigger → SchedPilot. Schedule a month of posts from a spreadsheet.
- Product launches: Webhook from your app → SchedPilot. A new release announces itself.
- Evergreen recycling: Schedule Trigger → pick a random past post → SchedPilot. Keep channels active automatically.
- Form to post: Typeform/Tally → AI caption → approval → SchedPilot.
Bonus: close the loop with webhooks
Want n8n to know when a post actually goes live (or fails)? Add a Webhook node in a second workflow and register its URL in SchedPilot under API Access → Webhooks. SchedPilot will POST a post.published or post.failed event so you can log results, alert Slack, or retry.
Frequently asked questions
Do I need a special SchedPilot node for n8n?
No. SchedPilot works with n8n’s built-in HTTP Request node calling the REST API, so there’s nothing extra to install.
Do I need to know how to code?
No. Everything is configured with n8n’s visual nodes. The only “code” is a small JSON body you copy from this guide.
Which SchedPilot plan includes API access?
API keys are available on the Platinum plan. See pricing for details.
Which platforms can I post to?
SchedPilot supports 9 networks: Instagram, X (Twitter), LinkedIn, TikTok, Threads, Facebook, YouTube, Pinterest, and Bluesky.
Can I review posts before they publish?
Yes. Add an approval step in n8n, and every scheduled post also waits in your SchedPilot calendar so you stay in control.
Automate your social media the smart way
Connect n8n to SchedPilot and let your workflows post across every network — with you in control.
SchedPilot