How do you repurpose content with AI automatically? You set up a lightweight n8n workflow that pulls a single piece of source material, asks an LLM to rewrite it for three channels (Twitter, LinkedIn, and a newsletter), and hands each version off to a scheduler. The result is a full week of brand-consistent posts that publish on autopilot.
What is AI content repurposing? AI content repurposing is the process of using generative language models to transform a single piece of text (or audio/video) into multiple, channel-specific formats while preserving the original brand voice.
What you need
| Tool | Plan / Price | Role |
|---|---|---|
| n8n (self-hosted) | Free (Docker) - Cloud plan $20/mo for 20k executions | Orchestrates the workflow, calls APIs, and schedules posts |
| OpenAI GPT-4o | Pay-as-you-go, $0.005 / 1 k tokens (prompt) + $0.015 / 1 k tokens (completion) | Generates channel-specific copy |
| Twitter API v2 | Essential access $0/mo, pay-as-you-go for elevated features | Publishes tweets |
| LinkedIn Marketing API | Free for basic posting via approved app (requires LinkedIn developer app) | Publishes LinkedIn posts |
| ConvertKit (newsletter) | Free up to 1 000 subscribers, $29/mo for unlimited | Sends the repurposed newsletter |
| Buffer (scheduler) | Free plan 10 posts per channel, $15/mo for 100 posts | Times the releases across platforms |
| GitHub (optional) | Free | Stores the n8n workflow JSON for version control |
Estimated build time: 2-3 hours (including API key creation and testing).
Step-by-step build for content repurposing with ai
1. Create API credentials - OpenAI: generate a secret key in the OpenAI Platform. - Twitter: apply for Essential access at the Twitter Developer Portal and copy the Bearer Token. - LinkedIn: register an app at the LinkedIn Developer site and note the Client ID, Client Secret, and OAuth 2.0 access token. - ConvertKit: locate the API key under Account Settings → Advanced. - Buffer: obtain a personal access token from Settings → Your Apps.
- Spin up n8n
What this does: launches a self-hosted n8n instance with basic auth on port 5678.
- Create a new workflow called "Weekly Repurposer".
4. Add a "Webhook" node (HTTP POST) that receives the original content.
- Path: /repurpose
- Method: POST
- Expected JSON: { "title": "string", "body": "string" }
- Add an "OpenAI" node to generate channel-specific copy. Configure three separate executions (one per channel) using the same prompt template:
What this does: asks GPT-4o to produce a version of the source text tailored to the selected platform (Twitter, LinkedIn, or newsletter).
- Add three "Set" nodes to tag the output with
platform(twitter,linkedin,newsletter) and aschedule_time(e.g.,{{ $now.add(1, "day").toISO() }}for the next day).
7. Add a "Buffer" node for Twitter and LinkedIn posts.
- Choose "Create a post".
- Map text to the OpenAI output.
- Set scheduled_at to the schedule_time from the previous node.
Note: Buffer's free plan allows 10 scheduled posts per channel, which is enough for a single week.
8. Add a "ConvertKit" node for the newsletter.
- Action: "Create a broadcast".
- Subject: {{ $json.title }}
- Content: {{ $json.body }} (the AI-generated newsletter version).
- Connect the nodes: Webhook → OpenAI (split into three branches) → Set → Buffer/ConvertKit → End.
- Activate the workflow and test with a curl command:
What this does: triggers the whole pipeline, creating scheduled posts across all three channels.
11. Monitor and iterate - Use n8n's execution log to spot failures. - Adjust the OpenAI prompt length or temperature to fine-tune brand voice. - If you need more than 10 scheduled posts per week, upgrade Buffer or add a second n8n node that queues posts in a Google Sheet and publishes via a cron trigger.
Result: Once the webhook receives a single article, the workflow automatically produces a tweet thread, a LinkedIn carousel caption, and a newsletter draft, each queued for the next seven days.
Where this breaks
| Failure mode | Why it happens | Mitigation |
|---|---|---|
| OpenAI rate limits | Free-tier accounts are limited to 3 requests/second; higher traffic can hit the 60 rpm cap. | Use a paid plan or add a "Delay" node (e.g., 2 seconds) between OpenAI calls. |
| Twitter API quota | Essential access allows 500 tweets per month; exceeding this returns 429 errors. | Track usage in a "Set" node and pause the workflow when the quota is near. |
| LinkedIn OAuth token expiry | Access tokens are short-lived (≈60 days). | Refresh the token automatically with a "HTTP Request" node that calls the token endpoint before each run. |
| Buffer free-plan post limit | Only 10 scheduled posts per channel; a week of daily posts for three channels needs 21 slots. | Upgrade to Buffer's $15/mo plan or split the week across two Buffer accounts. |
| ConvertKit subscriber cap | Free tier caps at 1 000 subscribers; sending to a larger list fails. | Verify subscriber count before broadcasting; upgrade if needed. |
| n8n self-host downtime | Docker container may restart or run out of memory. | Enable persistent storage (-v ~/.n8n:/home/node/.n8n) and set a restart policy (--restart unless-stopped). |
Most breakages are quota-related; budgeting API usage and adding simple guards (delays, token refreshes) keeps the pipeline reliable.