Overview
n8n workflow for LLM-driven research. Webhook trigger receives a topic, fans out to Scavio search, extracts top 5 results, summarizes each with LLM node, returns combined brief.
Trigger
Webhook (ad-hoc) or Cron (scheduled digest)
Schedule
Webhook or daily
Workflow Steps
Webhook Trigger or Cron
Webhook for on-demand; Cron for daily.
Scavio search HTTP node
POST /api/v1/search with topic.
Split In Batches over top 5 results
Loop per result.
Scavio extract HTTP node per result
POST /api/v1/extract returning markdown.
LLM node summarizes each
Claude / GPT / Groq, 200-word brief.
Merge node
Combine into single response.
Respond to Webhook
Return combined brief.
Python Implementation
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': API_KEY}
def research(topic):
s = requests.post('https://api.scavio.dev/api/v1/search', headers=H, json={'query': topic}).json()
out = []
for r in s.get('organic_results', [])[:5]:
e = requests.post('https://api.scavio.dev/api/v1/extract', headers=H, json={'url': r['link'], 'format': 'markdown'}).json()
out.append({'url': r['link'], 'md': e.get('markdown', '')[:3000]})
return outJavaScript Implementation
// In n8n use HTTP Request nodes. Equivalent TS:
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function research(topic) {
const s = await fetch('https://api.scavio.dev/api/v1/search', { method: 'POST', headers: H, body: JSON.stringify({ query: topic }) }).then(r => r.json());
return s;
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews