SOULWIRE STUDIOCONCEPT BUILDBUILT WITH N8N + OPENAI GPT-4.1 + GOOGLE SHEETS + AIRTABLEFREE TO DOWNLOADSOULWIRE STUDIOCONCEPT BUILDBUILT WITH N8N + OPENAI GPT-4.1 + GOOGLE SHEETS + AIRTABLEFREE TO DOWNLOAD
CONTENTINTRODUCTION

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.

Difficulty
Advanced
Stack
n8n · OpenAI GPT-4.1 · Google Sheets · Airtable
Cost
n8n + OpenAI (Airtable free)
01

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.

02

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

n8nAutomation engine
GPT-4.1Angles + platform copy
Google SheetsLead list source
AirtableReview + content library

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.

III

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.
OUTPUT: 2 n8n workflows · 10 + 3 nodes

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.
OUTPUT: 3 posts in Created Content

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.

04

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

Or this

§ 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.

Soulwire Studio

Systems with soul: custom websites, AI automation, and the digital ecosystems behind them, built for mission-driven businesses.

© 2026 Soulwire Studio · Veteran-owned · San Antonio, TX