How it works
What this workflow does
Give the editor one reviewed LinkedIn draft and one reviewed Facebook draft from an approved article. An authenticated webhook accepts the article, validates approval and the public source URL, asks OpenAI for channel copy with an exact supporting excerpt, verifies that each excerpt appears in the article, appends the original link, and saves both drafts to Google Sheets.
The workflow imports inactive with dryRun: true. Run with sample data uses a fictional approved article and sample social copy, so the preview does not call OpenAI or Google Sheets.
This is the social-repurposing layer for the Content Publishing, Social Distribution & Newsletter Intelligence blueprint; the Campaign Launch Assurance & Weekly Performance blueprint covers planned distribution and measurement.
Approval and replay checks
Validate approved article requires a stable request ID, sourceApproved: true, a title, a public HTTPS source URL, and 100 to 20,000 characters of article text. An unapproved article stops before any model call.
The workflow reads the Social Draft Queue by Request ID. If the request already exists, the run stops and leaves the existing drafts and editorial status intact. Use a fresh revision ID for an intentional rewrite. Send one event per request at a time so two simultaneous attempts cannot overwrite editorial work.
Drafts must have evidence
OpenAI returns JSON with a LinkedIn draft, a Facebook draft, and an evidence excerpt for each channel. Drafts must be plain text, cannot contain links, HTML, metrics, testimonials, mentions, or new claims, and must follow the configured brand voice. The LinkedIn draft is limited to 1,400 characters and the Facebook draft to 600.
The evidence value must be between 12 and 200 characters and must appear exactly in the approved article. The workflow appends the original source URL to both drafts after validation. A generated link, unsupported excerpt, or oversized draft is rejected before the queue is updated.
Validation scope
The supplied report confirms the isolated n8n 2.47.4 import, inactive state, and sample path. It also covers structural checks, unapproved-content blocking, generated-link rejection, evidence validation, and editorial-queue preservation on replay. Live OpenAI and Google Sheets calls require a staging test with your accounts. The editor still reviews claims and edits each draft for the channel before publishing.
How to use
Before you start
- A current n8n instance.
- An OpenAI API key and a JSON-mode model.
- A Google spreadsheet tab for the social draft queue.
- A Google Sheets OAuth credential.
- A trusted approved-content queue that can send the authenticated payload.
1. Import and run the sample
Download the complete package, extract the ZIP, and read the full setup guide. Import article-to-social-drafts.n8n.json and keep it inactive.
Open Run with sample data and choose Test workflow. Check social copy and evidence should return LinkedIn and Facebook drafts with the supplied source URL and exact evidence.
2. Create the queue
Create a tab called Social Draft Queue with these exact headers:
| Request ID | Article | Source URL | LinkedIn Draft | LinkedIn Evidence | Facebook Draft | Facebook Evidence | Status |
|---|
Format Request ID as plain text. Select the Google Sheets OAuth credential on Find earlier social drafts and Save drafts for editor.
3. Configure model and credentials
In Setup, set spreadsheetId, the model, and the brandVoice. The default voice asks for clear, practical language without inflated claims, jargon, or forced engagement.
Connect an OpenAI bearer Header Auth credential on Draft social copy with OpenAI. Attach a private inbound Header Auth credential to Receive event.
4. Send an approved article
POST requestId, sourceApproved: true, title, sourceUrl, and articleText from the approved-content queue. The webhook acknowledges receipt; check the sheet or execution for the drafts.
Use the supplied test payloads for an approved article, the expected model output, and an unapproved article. An unapproved article must stop before a draft is generated. A generated link or unsupported excerpt must be rejected before the queue is updated.
5. Test and operate
Set dryRun to false in staging and check that each channel draft contains the supplied link and correct evidence. Replaying a saved request ID leaves the existing drafts and editorial status intact; use a fresh revision ID for intentional rewrites.
The output is draft copy for review, not an automatic publish. Editors should verify claims and edit for the channel before scheduling. Serialize events for the same request ID so two attempts cannot overwrite editorial work.
Related automations
Use the Source-Backed WordPress Draft System to create or refresh the long-form article first. The Industry News Digest System surfaces timely stories, the Search Content Decay Detection System identifies pages that need attention, and the Company Positioning Brief System keeps messages aligned with the audience. Read the Content Publishing & Newsletter Intelligence blueprint for the full publishing workflow. For AI-assisted sales follow-ups with the same draft-review pattern, use the Sales-Call Follow-Up Draft System.