r/n8n 2026 threads are full of engineers shipping article-to-social-post workflows, often spending 20+ hours wiring them together. This tutorial cuts that to 90 minutes by using Scavio as the single research backend: competitor angles, Reddit discussion quotes, and YouTube content mining all feed into one n8n workflow that outputs platform-tuned posts.
Prerequisites
- n8n self-hosted or cloud
- A Scavio API key
- An LLM credential (OpenAI, Anthropic, or Together)
Walkthrough
Step 1: Create a new n8n workflow
Start with a webhook or manual trigger that accepts an article URL.
// n8n Webhook node output
{ "article_url": "https://your-blog.com/post" }Step 2: Add an HTTP Request node for Scavio SERP
Research competitor takes on the same topic.
// HTTP Request node
POST https://api.scavio.dev/api/v1/search
Headers: x-api-key: {{ $credentials.scavio }}
Body: { "query": "{{ $json.article_title }} competing perspective" }Step 3: Add a Scavio Reddit node
Pull direct quotes from Reddit discussions on the same topic.
POST https://api.scavio.dev/api/v1/search
Body: { "platform": "reddit", "query": "{{ $json.topic }}" }Step 4: Add an LLM node to generate platform posts
Prompt the LLM to write LinkedIn, X, and Reddit variants using the research.
// LLM prompt template
You are a social media editor.
Source article: {{ $json.article_text }}
Competitor takes: {{ $json.serp_results }}
Reddit quotes: {{ $json.reddit_results }}
Produce:
1. LinkedIn post (180 words, professional tone)
2. X thread (5 tweets)
3. Reddit comment draft (no self-promo)Step 5: Fan out to distribution nodes
Send each platform output to LinkedIn, X, Buffer, or a review Slack channel.
// Slack node output for review
{ "channel": "#social-drafts", "text": "{{ $json.linkedin_post }}\n\n{{ $json.x_thread }}" }Python Example
# Equivalent Python runner without n8n:
import os
from scavio import Scavio
from openai import OpenAI
scavio = Scavio(api_key=os.environ['SCAVIO_API_KEY'])
llm = OpenAI()
def article_to_social(article_text: str, topic: str):
serp = scavio.search(query=f'{topic} competing perspective')
reddit = scavio.search(platform='reddit', query=topic)
prompt = f'Source: {article_text}\nSERP: {serp}\nReddit: {reddit}\n\nWrite LinkedIn, X, Reddit variants.'
return llm.chat.completions.create(model='gpt-4', messages=[{'role': 'user', 'content': prompt}]).choices[0].message.contentJavaScript Example
import { Scavio } from 'scavio';
const scavio = new Scavio({ apiKey: process.env.SCAVIO_API_KEY });
export async function articleToSocial(articleText, topic) {
const [serp, reddit] = await Promise.all([
scavio.search({ query: `${topic} competing perspective` }),
scavio.search({ platform: 'reddit', query: topic })
]);
return { serp, reddit };
}Expected Output
A single article generates 3 platform-tuned posts in under 2 minutes. Typical cost: 2 Scavio calls (~60 credits) + LLM tokens per article.