I built this n8n social media automation template so I would stop opening a blank composer every morning. It pulls fresh headlines from a news feed and hands each one to an AI node that writes post drafts. Those drafts land in a Google Sheet for me to approve before anything goes live. It does not publish on its own, and that is on purpose. Treat it as a drafting assistant that removes the blank-page problem, not a hands-off posting machine.
Here is what you are importing, end to end:
-
A Schedule Trigger that fires on a morning cron
-
An RSS Read node (or an HTTP Request node for a news API) to pull headlines
-
A Filter plus a Remove Duplicates node to drop repeats and off-topic items
-
An OpenAI node that drafts a post per platform
-
A Google Sheets or Slack node where you review before publishing
1. What this n8n template actually does
The job is narrow and useful: catch the morning news in your niche and turn it into rough post drafts you can edit in a few minutes. n8n is genuinely good at the boring parts of that loop, the scheduled trigger and the data routing between steps. The writing still needs your judgment, and the publish decision still needs a human nod.
I keep this flow draft-only for two reasons. AI drafts off a raw headline are hit or miss, so a review step protects your credibility. Auto-publishing also carries real cost and risk on some platforms, which I cover further down. If you are deciding what to hand to automation first, my rule is to automate the trigger and the first draft, then keep approval in human hands. I wrote more about that split in what to automate first in social content.
2. The nodes, in order
Seven nodes do the whole job. Here is what each one is for and the single setting that decides whether it behaves:
|
Node |
Role in this flow |
The setting that matters |
|---|---|---|
|
Schedule Trigger |
Starts the run on a morning schedule |
Cron expression and timezone |
|
RSS Read |
Reads items from a news feed by URL |
The feed URL |
|
HTTP Request (optional) |
Calls a news API when there is no feed |
Auth header and endpoint |
|
Filter |
Keeps only on-topic items |
Your keyword condition |
|
Remove Duplicates |
Drops headlines you have already seen |
The field to compare, usually the link |
|
OpenAI |
Writes a draft per platform |
Model and your prompt |
|
Google Sheets or Slack |
Lands drafts for review |
The sheet or channel and mapped fields |
One gotcha I hit early: the RSS Read node only processes the first input item, so scanning several feeds in one run means passing the URLs through a Loop Over Items node first. I learned that the hard way, and knowing it up front saves you a confusing afternoon.
3. Import the JSON into n8n
n8n stores every workflow as JSON, so a template is just a file you import. Once you have the .json file, exported from another instance or shared by a builder, the import takes under a minute:
-
Open a new or existing workflow in the n8n editor.
-
Click the three-dot menu at the top right.
-
Choose Import from File to upload the .json, or Import from URL to pull it from a link.
-
Save the workflow once the nodes appear on the canvas.
Imported nodes arrive without their credentials, and that catches almost everyone. Exported n8n JSON deliberately leaves keys out, so the nodes show empty credential fields after import. You reconnect each one by opening the node and selecting or creating its credential. n8n’s export and import documentation spells this out, and an unconnected key is the single most common reason a freshly imported template does nothing on its first run.
4. The prompt that turns a headline into a draft
The OpenAI node does the writing, and the prompt is where the quality lives. I feed it the headline and summary from the RSS item, then ask for one draft per platform with the character limits baked in. Here is the prompt I actually use, with n8n expressions pulling the feed fields:
You are my social media drafting assistant. Turn the news item below into three short post drafts in my voice.
Headline: {{ $json.title }} | Summary: {{ $json.contentSnippet }} | Source: {{ $json.link }}
LinkedIn draft: up to 3,000 characters. Lead with a concrete takeaway in the first 200 characters and keep the language plain.
X draft: up to 280 characters. State one clear idea and add the link only if it earns the click.
Threads draft: up to 500 characters. Keep it conversational and end on a question.
Keep my point of view. Do not invent numbers. If the headline is thin, say so instead of padding. Return the three drafts as labelled sections.
Each limit in the prompt comes from the platform itself. LinkedIn allows up to 3,000 characters, though AuthoredUp’s analysis of LinkedIn posts found the 1,301 to 2,500 character range tends to engage best. Threads caps a main post at 500 characters under Meta’s September 2025 update, and a free X post still stops at 280. A quick reference:
|
Platform |
Max characters per post |
Practical note |
|---|---|---|
|
|
3,000 |
Only about 210 characters show before “see more” on desktop |
|
X (free) |
280 |
X Premium raises this to 25,000 |
|
Threads |
500 |
Optional text attachments up to 10,000 |
The drafts still need an edit pass before they earn a slot in your queue. I run mine through the fixed routine in my 30-minute batch system, which keeps the AI from flattening my voice.
5. Schedule it so the drafts land each morning
The Schedule Trigger node controls timing, and it works like the Unix cron utility. For drafts waiting in your sheet by 7 a.m. on weekdays, set the node to a custom Cron expression of 0 7 * * 1-5. You can sanity-check any expression at crontab.guru before you trust it.
Two settings decide whether this fires at all. A scheduled workflow only runs after you save and activate it, so a draft sitting in the editor will never trigger. Timezone is the other one. A self-hosted n8n instance defaults to America/New_York, so a 7 a.m. expression runs on New York time unless you set the workflow timezone yourself. n8n’s Schedule Trigger common-issues page lists timezone mismatch and inactive workflows as the top reasons morning runs misfire, which matches every debugging session I have had with this node.
If you want the publish step to hit good windows rather than just landing drafts at dawn, my breakdown of the best time to post by platform pairs well with this schedule.
6. Where n8n shines, and where it gets fiddly
n8n earns its place on the trigger and routing side. Scheduling a run, pulling a feed, filtering items and moving data between nodes all work reliably once configured. The friction shows up in three predictable places.
Auth. Because exported JSON never carries credentials, you rebuild every API key and OAuth connection by hand after import. OAuth setup for the social platforms is the slowest part, and it is where most first-time builders stall.
Platform APIs. n8n’s node library ships native LinkedIn and X nodes but no Threads node, so posting to Threads means an HTTP Request node aimed at Meta’s Threads API. X is the bigger surprise. Its API is pay-per-use, and according to X’s developer pricing pages it costs about $0.015 to create a post and $0.20 if that post contains a URL. Auto-publishing links at scale is metered, which is one more reason I keep this flow at the draft stage.
Keeping it alive. A self-hosted instance has to run continuously, or the scheduled run is simply skipped while the machine is asleep. There is no catch-up afterwards. If reliability matters, you either keep the box on or move to a hosted plan.
Troubleshooting: keys and rate limits
When a run fails, the cause is usually authentication or a rate limit. Check the credential on the failing node first, since an expired or unconnected key is the common culprit. The OpenAI node throws an HTTP 429 when you cross a rate limit, and OpenAI’s rate-limit guidance says to retry with exponential backoff rather than hammering the same request, because a resend still counts against your limit. Your remaining allowance shows up in the response headers, so you can watch it as volume grows.
7. The no-build alternative: Trustypost
This template is worth it if you enjoy maintaining workflows and want full control. Plenty of people do not, and that is who Trustypost is built for. It is an all-in-one tool that tracks trends and industry news to generate post ideas, then lets you pick, edit, schedule and publish across LinkedIn, X and Threads from one place. There is no hosting to babysit, no OAuth to rebuild after every import, and no per-post API metering to budget for.
The honest framing is the same one I apply to n8n. The tool removes the blank page and the platform plumbing, and a quick human review still does the quality control. If your real bottleneck is publishing the same idea to several feeds without three logins, the workflows in how to post on multiple platforms at once show where a tool like this saves the most time.
Conclusion: drafts in the morning, judgment in your hands
An n8n social media automation template like this one runs a full news-to-draft pipeline from built-in nodes, and you import it as a single JSON file. The real value sits in triggering and routing, while the writing and the publish decision stay with you. Budget time for the predictable friction too, mainly reconnecting credentials after every import and working around the missing Threads node and X’s metered API.
So start small if you want to build it. Wire the Schedule Trigger to one RSS feed and the OpenAI node, send the output to a sheet, then watch it run for a week before you add a second platform or any publish step. If maintaining all of that starts to feel like a second job, a managed all-in-one tool gets you to the same morning drafts without the upkeep.
Frequently Asked Questions (FAQ)
Can n8n post to social media on its own?
n8n can publish to LinkedIn and X through native nodes, and to Threads through an HTTP Request node aimed at Meta’s API, since there is no dedicated Threads node. I still route output to a sheet or Slack for review instead. AI drafts off raw headlines vary in quality, and a human approval step protects your credibility before anything reaches a public feed.
Is there a ready-made n8n template for social media?
You can build or import one entirely from built-in nodes. The core chain runs a Schedule Trigger into an RSS Read node, cleans the list with Filter and Remove Duplicates, then sends each headline to an OpenAI node and drops the drafts into Google Sheets for review. n8n stores workflows as JSON, so a shared template imports from the editor’s three-dot menu in under a minute.
Does auto-posting to X cost money?
Yes. X’s API is pay-per-use rather than free for automated posting. According to X’s developer pricing pages, creating a post costs about $0.015, and a post containing a URL costs about $0.20, billed from prepaid credits. Rates can change and are shown live in the Developer Console. That metering is a real reason to keep an automated flow at the draft stage instead of auto-publishing links.
Why didn’t my scheduled drafts appear this morning?
Two causes cover most cases. The workflow was saved but never activated, so the Schedule Trigger never fired. Or the timezone is wrong: a self-hosted n8n instance defaults to America/New_York, so a 7 a.m. expression runs on New York time unless you set the workflow timezone. In my experience, both are the most common reasons scheduled runs misfire.
Do I need to know how to code to use this template?
No coding is required, but expect configuration work. The nodes connect visually, yet you still reconnect every API credential after import and handle OAuth for each platform, which is the slowest part. If you would rather skip hosting and credential upkeep entirely, a managed all-in-one tool produces the same morning drafts and handles scheduling and publishing for you.