Local SEO and AEO agencies want a productized system: same setup runs across every SMB client. Scavio MCP plus Claude Desktop gives the agency a templated AEO workflow that delivers daily snapshots without per-client custom code.
Prerequisites
- Claude Desktop or compatible MCP client
- Scavio API key
- Client list with brand keywords
Walkthrough
Step 1: Add Scavio MCP to Claude Desktop
Single hosted endpoint, no self-hosting.
// ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"scavio": {
"url": "https://mcp.scavio.dev/mcp",
"apiKey": "${SCAVIO_API_KEY}"
}
}
}Step 2: Define client template
Markdown template with brand and keyword variables.
# Client: {{brand}}
Keywords: {{keywords}}
Market: {{city}}
Competitors: {{competitors}}Step 3: Run daily snapshot
Claude with MCP queries Scavio for each keyword.
// Prompt to Claude:
// 'For each keyword in client.md, query Scavio with include_ai_overview, list ranks plus citations.'Step 4: Track Reddit brand mentions
Per-client Reddit scan.
// Prompt:
// 'Search Reddit for {{brand}}, return last 30 days of mentions, sentiment summary.'Step 5: Weekly client report
Claude composes the weekly markdown report.
// Prompt:
// 'Generate week-over-week AEO report for {{brand}} from Scavio data.'Python Example
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def client_snapshot(brand, keywords, city):
out = {}
for k in keywords:
r = requests.post('https://api.scavio.dev/api/v1/google',
headers={'x-api-key': API_KEY},
json={'query': f'{k} {city}', 'include_ai_overview': True}).json()
out[k] = {'serp': r.get('organic_results',[])[:10], 'ao': r.get('ai_overview')}
return out
print(client_snapshot('acme dental', ['best dentist', 'family dentist'], 'austin tx'))JavaScript Example
const API_KEY = process.env.SCAVIO_API_KEY;
export async function clientSnapshot(brand, keywords, city) {
const out = {};
for (const k of keywords) {
const r = await fetch('https://api.scavio.dev/api/v1/google', { method:'POST', headers:{'x-api-key':API_KEY,'Content-Type':'application/json'}, body: JSON.stringify({ query: `${k} ${city}`, include_ai_overview: true }) });
out[k] = await r.json();
}
return out;
}Expected Output
Per-client daily snapshot across SERP plus AI Overviews plus Reddit. Same MCP setup runs across N SMB clients with one credit pool. Weekly markdown report via Claude.