Overview
Agency-grade SEO data rollup for 300 client domains. Daily rank tracking via DataForSEO PAYG + weekly AEO/AI Overview tracking via Scavio + monthly backlink via Ahrefs. Rollup to Postgres/BQ → per-client report.
Trigger
Daily 6am (rank), Weekly Mon (AEO), Monthly 1st (backlink)
Schedule
Daily / weekly / monthly tiers
Workflow Steps
Daily DataForSEO rank pull
300 domains × 50 keywords = 15K queries × $0.60/1K = $9/day.
Weekly Scavio AEO snapshot per priority keyword
include_ai_overview: true to track citation positions.
Monthly Ahrefs backlink delta query
Reserve credits for content explorer + backlink queries.
Persist rows to Postgres / BigQuery
Per-client tables: rank_tracking, ai_overview_citations, backlinks, keyword_rankings.
LLM-narrate per-client weekly report
'Client X's keyword Y dropped 3 positions; AI Overview now cites competitor Z.'
Email/Slack the report to client + internal team
Auto-send weekly cadence.
Python Implementation
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def aeo_snapshot(keyword):
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'query': keyword, 'include_ai_overview': True}).json()
return {
'keyword': keyword,
'organic_top3': r.get('organic_results', [])[:3],
'ai_overview_cites': r.get('ai_overview', {}).get('citations', []),
}JavaScript Implementation
// Same in TS.Platforms Used
Web search with knowledge graph, PAA, and AI overviews