POST https://webhook.site/your-unique-id { "article_url": "https://linkedin.com/feed/update/urn:li:activity:1234567890", "article_title": "Why Your Team Needs Async Communication", "article_body": "today...", "published_date": "2026-03-15T10:30:00Z" }
In n8n, set up an incoming webhook node that accepts this payload. Then add an HTTP request node to fetch the full article text if the webhook only sends the URL. Use a simple GET request with the Cheerio library to parse the LinkedIn page (if you have direct access) or rely on the body text sent by your webhook.
### Step 2: Transform the article into a video script.
Send the article body to Claude Opus 4.6 via the Anthropic API. Claude excels at transforming long-form writing into punchy, dialogue-driven scripts that work for video. Request a script that's 60 to 90 seconds when read aloud, structured with an opening hook, three main points, and a call-to-action.
POST https://api.anthropic.com/v1/messages { "model": "claude-opus-4.6", "max_tokens": 1024, "messages": [ { "role": "user", "content": "Convert this LinkedIn article into a 90-second video script for TikTok and YouTube Shorts. Use conversational language, include natural pauses, and end with a clear call-to-action. Article: [ARTICLE_BODY]" } ] }
Claude will return a polished script. Grab the `content[0].text` from the response and store it as a variable in your n8n workflow.
### Step 3: Generate voiceover with ElevenLabs.
Pass the video script to ElevenLabs Turbo v2.5. This generates broadcast-quality synthetic speech that sounds natural enough for professional video content. Choose a voice that matches your brand; ElevenLabs offers dozens. Set the stability to 0.7 and similarity to 0.75 for a balance between consistency and expressiveness.
POST https://api.elevenlabs.io/v1/text-to-speech/21m00Tcm4TlvDq8ikWAM?output_format=mp3_44100_128 { "text": "[YOUR_SCRIPT_FROM_CLAUDE]", "model_id": "eleven_turbo_v2_5", "voice_settings": { "stability": 0.7, "similarity_boost": 0.75 } } Authorization: xi-api-key YOUR_API_KEY
ElevenLabs returns an audio file. Download it and store it in cloud storage (Google Drive, Dropbox, or AWS S3). You'll need the file path for the next steps.
### Step 4: Create visual assets with Mirra.
Mirra specialises in turning written content into visually appealing video. Send your article title, key points, and the voiceover duration (calculate this from the ElevenLabs response). Mirra will generate motion graphics, text overlays, and transitions that sync to your voiceover. Mirra's API accepts a JSON request specifying the content, style, and duration:
POST https://api.mirra.app/v1/create-video { "title": "[ARTICLE_TITLE]", "content_blocks": [ { "text": "[OPENING_HOOK_FROM_SCRIPT]", "duration_seconds": 15, "animation": "fade-in" }, { "text": "[MAIN_POINT_1]", "duration_seconds": 20, "animation": "slide-left" } ], "voiceover_audio_url": "[ELEVENLAB_MP3_URL]", "style": "professional", "output_format": "mp4" } Authorization: Bearer YOUR_MIRRA_TOKEN
Mirra returns a video file with auto-synced captions and animations. Download and store this in your cloud storage.
### Step 5: Export platform-specific versions.
Different platforms need different aspect ratios and file sizes. Create three versions:
- YouTube Shorts: 1080 x 1920 (vertical, 60 seconds max)
- TikTok: 1080 x 1920 (vertical, up to 10 minutes)
- Instagram Reel: 1080 x 1920 (vertical, up to 90 seconds) Use FFmpeg via n8n's bash execution to crop and re-encode:
bash ffmpeg -i input.mp4 -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -crf 23 -c:a aac -b:a 128k youtube_shorts.mp4 # TikTok (same as YouTube but with different metadata) ffmpeg -i input.mp4 -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -crf 23 -c:a aac -b:a 128k tiktok.mp4 # Instagram Reel (trim to 90 seconds if needed) ffmpeg -i input.mp4 -t 90 -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -crf 23 -c:a aac -b:a 128k instagram_reel.mp4
Execute these commands in n8n using the Execute Command node, then upload each file to a designated folder in your cloud storage.
### Step 6: Log the output and notify you.
Finally, send yourself a notification with links to all three video files. Use a simple email node or a Slack webhook to alert you when videos are ready. Include the filenames, platform formats, and a note that they're ready to schedule.
POST https://hooks.slack.com/services/YOUR/WEBHOOK/URL { "text": "New video assets ready!", "attachments": [ { "title": "LinkedIn Article: Why Your Team Needs Async Communication", "fields": [ {"title": "YouTube Shorts", "value": "youtube_shorts.mp4"}, {"title": "TikTok", "value": "tiktok.mp4"}, {"title": "Instagram Reel", "value": "instagram_reel.mp4"} ] } ] }
End-to-end, this entire workflow takes 4 to 7 minutes per article, depending on article length and API response times.
## The Manual Alternative
If you prefer hands-on control, you can run each tool individually. Write your script manually in a Google Doc, paste it into ElevenLabs for voiceover generation, download the audio, then upload it to Mirra's web interface along with your article text. Mirra will generate the video in your browser. Export each platform version from Mirra's settings and upload manually to YouTube, TikTok, and Instagram. This approach gives you more creative input but takes 30 to 45 minutes per article. Most creators find the automated version worth the setup time after their second or third article.
## Pro Tips
### Batch your articles.
If you publish weekly, schedule the workflow to run every Monday morning.
Process five articles in one go rather than triggering the workflow individually each time. This reduces API call overhead and gives you a week's worth of video content at once.
### Monitor ElevenLabs rate limits.
ElevenLabs allows 10,000 characters per day on the free tier. If your articles are longer, you'll hit this limit quickly. Upgrade to a paid plan if you're processing more than two articles per week. The starter plan costs £5 per month and covers most creators.
### Add error handling to n8n.
If Claude fails to generate a script (rare, but possible), or if ElevenLabs is temporarily down, your workflow will stall. Add a Try-Catch node that catches API errors and sends you an alert. Include a fallback script template so the workflow doesn't break entirely.
### Test captions for accuracy.
Mirra generates captions automatically from the voiceover. Check the first few videos manually. If captions are misaligned or contain errors, adjust the script for clearer pronunciation, or use a more explicit caption file format that you upload separately.
### Store costs in mind.
Each workflow run incurs costs for Claude API calls, ElevenLabs character processing, Mirra video generation, and cloud storage. See the cost breakdown below. If you're publishing multiple articles weekly, costs add up quickly. Negotiate custom rates with n8n and Mirra if you're running this at scale.
## Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|------|-------------|--------------|-------|
| n8n | Professional | £50 | Covers 50,000 executions per month; most workflows use 10-20 per article |
| Claude API | Pay-as-you-go | £2-5 | Approx 1,000 tokens per script generation; Claude Opus 4.6 costs £0.015/1K tokens |
| ElevenLabs | Starter | £5 | 10,000 characters per day; upgrade to Pro (£99/month) if processing 5+ articles weekly |
| Mirra | Professional | £30 | 50 video generations per month; additional generations cost £0.50 each |
| Google Drive/AWS S3 | Standard | £0-10 | Minimal cost unless storing hundreds of videos; Google Drive free tier covers most use cases |
| **Total** | | **£87-100** | Per month for 1-2 articles per week | For creators posting more than three articles weekly, consider an annual contract with Mirra and ElevenLabs for a 20-30% discount.