# Turn an approved article into social drafts

Adapt one approved article for LinkedIn and Facebook. Give the editor each draft, its supporting excerpt, and the original article link in Google Sheets.

**Category** Marketing · Social Media  
**Tools** n8n, OpenAI, Google Sheets  
**Trigger** Authenticated POST from an approved-content queue  
**Package** [Workflow JSON](article-to-social-drafts.n8n.json) · [Test payloads](test-payloads.json) · [Validation report](validation-report.txt)

Import the JSON in n8n and run **Run with sample data**. The workflow imports inactive with **dryRun** enabled. The sample run uses fictional data and skips connected apps. Select credentials on the named nodes before testing live inputs.

## How it works

1. Accept a stable request ID, approved article text, and its public URL.
2. Generate one draft per channel using your configured brand voice. Check that each supporting excerpt appears in the article and add the original URL.
3. Save both drafts as **Needs review** in Google Sheets. An editor reviews and schedules the posts using the team's usual tools.

## How to use

1. Create a **Social Draft Queue** tab with **Request ID, Article, Source URL, LinkedIn Draft, LinkedIn Evidence, Facebook Draft, Facebook Evidence, Status**. Format Request ID as plain text.
2. In **Setup**, enter the spreadsheet ID, OpenAI model, and brand voice. Connect **Google Sheets OAuth2** on both Sheets nodes and an OpenAI bearer **Header Auth** credential on the model node.
3. Attach a private inbound **Header Auth** credential. POST **requestId**, **sourceApproved**, **title**, **sourceUrl**, and **articleText** from the approved-content queue. The webhook acknowledges receipt.
4. Disable dry run in staging and check that each channel's draft includes the supplied link and correct evidence. Review any claims and edit for the channel before publishing.

## Test and operate

- An unapproved article stops before a draft is generated.
- A generated link or unsupported excerpt is rejected before the queue is updated.
- Replaying a saved request ID leaves the existing drafts and editorial status intact. Use a fresh revision ID for intentional rewrites.
- Send one event per request at a time so two simultaneous attempts cannot overwrite editorial work.

[n8n Marketing source](https://n8n.io/workflows/17164-repurpose-blog-posts-into-social-content-with-gemini-google-sheets-and-slack/)
