The Social Media Production Engine
A two-part n8n system that turns a cold lead list into LinkedIn, Facebook, and Instagram content, grounded in what each lead's own site actually says.
Section One
What You're Building
Most social content calendars start from a blank page and a guess about what's been performing. This system starts from something you already have: a list of leads. It reads each lead's website, works out what that business actually talks about and cares about, and turns that into content angles built for the audience you're trying to reach, not a stock template repeated for everyone on the list.
Part 1 runs against your whole list at once. It scrapes every site, hands the combined content to GPT-4.1, and comes back with five distinct content angles, landing in an Airtable review table. Part 2 runs on demand: click a button next to any angle worth using, and it writes a LinkedIn post, a Facebook post, and an Instagram caption from that angle in parallel, saved straight to a content library.
Fig. 1 — system flow
Source
Lead list
Company + Website, from any CRM export
Scrape
n8n
Every lead's site pulled and cleaned
Generate
GPT-4.1
5 content angles per batch → Airtable
Publish
GPT-4.1 ×3
LinkedIn + Facebook + Instagram, in parallel
Why the angles come first
Content generation is cheap. Deciding what's worth publishing isn't. The system's job is to generate options, not guess for you. Five angles land in a review table, you pick the one that's actually worth a post, and only then does it spend effort writing three platform versions of it.
Section Two
What You Need
▸ Prerequisites
- Google Sheet with two columns: Company Name and Website
- OpenAI API key with GPT-4.1 access, added as an n8n credential
- Airtable base with Possible Angles and Created Content tables
- New Airtable base added to your Personal Access Token's scope
- Claude connected to n8n via the MCP connector
▸ The Stack
A note on Claude. You are not going to build a single node by hand. You connect Claude to your n8n account, describe both workflows in plain language, and Claude builds them, tests them, and fixes its own errors while you watch. Each step below is either a two-minute setup task or a prompt you paste into Claude.
If you're already running n8n and hold an OpenAI key, the only new line item is Airtable, and the free tier covers this comfortably. The GPT-4.1 calls themselves run a few cents per lead batch.
Section Three
Step-by-Step Build
01
Step One
Connect Claude to n8n
In n8n: Settings, then n8n API, create an API key. In Claude (claude.ai): Settings, Connectors, Add custom connector, name it n8n, and use your instance MCP URL: https://YOUR-INSTANCE.app.n8n.cloud/mcp-server/http with the API key. Once connected, Claude can create, edit, run, and debug workflows in your account.
02
Step Two
Two-minute prerequisites
Google Sheets: a sheet with two columns, Company Name and Website, holding your trimmed lead list. OpenAI: an API key with GPT-4.1 access, added as a credential in n8n. Airtable: a new base with two tables, Possible Angles and Created Content, matching the fields in the build prompt below. If the base is new, add it explicitly to your Personal Access Token's scope at airtable.com/create/tokens; PATs don't auto-inherit access to bases created after the token existed.
03
Step Three
Paste the build prompt
Open a Claude chat with the n8n connector on, paste the prompt below with your values filled in, then watch it work. One prompt builds both workflows in a single pass.
Copy this: the build prompt
Connect to my n8n and build two linked workflows: Social Media Production Engine - Part 1 and Social Media Production Engine - Part 2. My values: Google Sheet ID = [YOURS], sheet tab = [YOURS], Airtable base ID = [YOURS], Possible Angles table ID = [YOURS], Created Content table ID = [YOURS]. Part 1: Content Idea Generation 1. Manual trigger. 2. Google Sheets read node pulling Company Name and Website from my sheet. 3. Filter node dropping any row where Website is empty. 4. Limit node capping at 10 rows per run. 5. HTTP Request node, GET, url = the Website field, continue on error so one dead site never kills the run. 6. Aggregate node combining the response data from every successful scrape into one item. 7. Code node stripping scripts, styles, and tags from the combined HTML, outputting a field called extractedText. 8. An OpenAI node (Responses API, JSON-object output) using GPT-4.1, with the system prompt I'll provide, reading extractedText and returning five content angles as strict JSON. 9. Split Out node splitting the angles array into individual items. 10. Airtable create-record node saving each angle into my Possible Angles table, mapping Thematic Focus, Audience Appeal, Content Ideas, and Key Messaging Points. Part 2: Content Creation 1. Webhook, GET, path m7l5-create-content, receiving a recId query parameter. 2. Airtable get-record node fetching that angle by recId. Remember: the get-record node nests fields under json.fields, not top-level. 3. Fan out to three parallel branches, LinkedIn, Facebook, and Instagram, each an OpenAI node with the platform system prompt I'll provide, reading the angle's fields, followed by an Airtable create-record node saving into my Created Content table tagged with that platform. Use my existing n8n credentials for Google Sheets, OpenAI, and Airtable. Remember every dynamic value in n8n needs the = expression prefix. Build both workflows, validate them, and tell me what you built before running anything.
04
Step Four
Paste the system prompt for angle generation
This is the asset that keeps every angle grounded in something real instead of a generic industry observation. Paste it into the OpenAI node in Part 1 when Claude builds it.
Copy this: angle generation prompt
You analyze the combined website content for a batch of business leads and produce five distinct social content angles a marketer could write from.
Return ONLY valid JSON, no markdown fences, exactly this shape:
{"angles":[{"thematicFocus":"...","audienceAppeal":"...","contentIdeas":["...","...","..."],"keyMessagingPoints":["...","..."]}]}
Each angle must be grounded in something specific from the source text: a service they actually offer, a claim they actually make, an audience they actually mention.
Never invent a detail that isn't in the scraped content.Why the ban matters
Never invent a detail that isn't in the scraped content is the line that keeps this system honest. Skip it, and the angles read like they were written about any business in the niche, not the specific ones actually on your list.
05
Step Five
Paste the three platform system prompts
One per branch in Part 2. Each reads the same angle but writes to that platform's voice and length, which is what keeps LinkedIn from reading like a copy-pasted Instagram caption.
Copy this: LinkedIn post generator
You write a LinkedIn post from a single content angle: Thematic Focus, Audience Appeal, Key Messaging Points. Voice: direct, practical, written for a professional operator audience. No emojis, no hype words. 150-200 words. Lead with the thematic focus, use the messaging points as support, end with one genuine question inviting comments. No more than 3 hashtags, at the end.
Copy this: Facebook post generator
You write a Facebook post from the same angle. Voice: warmer and more conversational than LinkedIn, still no hype language. Under 120 words. Lead with the audience appeal, use one or two of the content ideas as supporting detail, close with a casual, inviting question.
Copy this: Instagram caption generator
You write an Instagram caption from the same angle. Voice: punchy, short lines. Under 100 words including hashtags. One-line hook, two or three short supporting lines drawn from the content ideas, a closing call-to-action, and 3-5 relevant hashtags.
06
Step Six
Test it with Claude
Paste the test prompt below. Claude runs both workflows, reads its own execution logs, and repairs whatever breaks. You never open an error message yourself.
Copy this: the test prompt
Run Part 1 manually now. Check the execution: if any node failed, read the error, fix it, and run it again. Repeat until angles land in my Possible Angles table. Then open one row, run its Create Content webhook manually with that record's ID, and confirm all three posts land in Created Content. Do not activate either workflow yet. Summarize what happened at each node.
Why this works
Three posts landing in Created Content IS the test passing. Everything upstream (the scrape, the angle generation, the webhook, the lookup) had to work correctly for those rows to exist.
07
Step Seven
Add the button, then activate
In the Airtable UI, add a button field to Possible Angles. Action: Open URL, Formula: your production webhook URL + "?recId=" & RECORD_ID(). This step stays manual; the Airtable API can't create button fields. Then tell Claude: "Schedule Part 1 and activate both workflows."
Good to know
The webhook URL lives in n8n under Part 2's trigger node once it's active. Copy it exactly into the button formula. A mistyped URL means the button fires at nothing and nothing happens.
Section Four
The Upgrade Path
Run it manually for the first few batches. You're not just checking for errors, you're teaching yourself which angles are actually worth clicking into content. Once the angles are consistently worth using, swapping the manual trigger for a schedule turns this from something you remember to run into a standing content pipeline.
From there it scales in a few directions. Point it at a new list and it works for a different vertical without touching the underlying logic, just repoint the source sheet. Add a "used for content" checkbox to the lead sheet and the same list can be revisited over time instead of scraped once and forgotten. And the content library it builds is a feed in its own right: wire a publishing tool downstream of the save steps, and approved posts go out the moment they land.
“Three posts landing in Created Content IS the test passing. Everything upstream had to work correctly for those rows to exist.”
— The Social Media Production Engine, p. 8
§ Fin.
Rather have it built for you?
This guide is one system from the Soulwire Studio workflow library. We build AI automations for businesses that run on process: intake, scheduling, proposals, compliance-heavy operations. If you'd rather spend your time closing deals than debugging content, book an audit and we'll find the automation hiding in your business.

