Overview
End-to-end daily AEO measurement workflow for SaaS founders. Pull SERP with `include_ai_overview: true`, pull Reddit brand mentions, normalize into a single citation table, and store deltas. Solo founder budget, multi-surface coverage, easy to extend with weekly ChatGPT/Perplexity prompt studies.
Trigger
Daily 8 AM
Schedule
Daily 8 AM
Workflow Steps
Define brand keyword set
10 to 30 brand and category keywords stored in a config file.
SERP plus AI Overviews
One Scavio call per keyword with `include_ai_overview: true`.
Reddit search per keyword
Reddit endpoint returns recent threads mentioning the brand.
Normalize citations
Flatten into rows of (keyword, surface, url, date).
Store in DuckDB
Append to local DuckDB file for delta queries.
Email weekly delta
Friday digest of new citations, lost citations, new Reddit threads.
Python Implementation
import os, requests, datetime, duckdb
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY}
db = duckdb.connect("aeo.duckdb")
db.execute("CREATE TABLE IF NOT EXISTS citations(keyword TEXT, surface TEXT, url TEXT, date DATE)")
def snapshot(keywords):
today = datetime.date.today()
for k in keywords:
serp = requests.post("https://api.scavio.dev/api/v1/google",
headers=H, json={"query": k, "include_ai_overview": True}).json()
for u in serp.get("organic_results", [])[:10]:
db.execute("INSERT INTO citations VALUES (?, ?, ?, ?)", (k, "serp", u["link"], today))
for c in (serp.get("ai_overview") or {}).get("citations", []):
db.execute("INSERT INTO citations VALUES (?, ?, ?, ?)", (k, "ai_overview", c, today))
rdt = requests.post("https://api.scavio.dev/api/v1/reddit/search",
headers=H, json={"query": k}).json()
for p in rdt.get("posts", [])[:10]:
db.execute("INSERT INTO citations VALUES (?, ?, ?, ?)", (k, "reddit", p.get("url",""), today))JavaScript Implementation
const H = { "x-api-key": process.env.SCAVIO_API_KEY, "content-type": "application/json" };
async function snapshot(keywords) {
for (const k of keywords) {
const serp = await fetch("https://api.scavio.dev/api/v1/google", {
method: "POST", headers: H,
body: JSON.stringify({ query: k, include_ai_overview: true })
}).then(r => r.json());
const rdt = await fetch("https://api.scavio.dev/api/v1/reddit/search", {
method: "POST", headers: H,
body: JSON.stringify({ query: k })
}).then(r => r.json());
console.log(k, serp.ai_overview, rdt.posts);
}
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews
Community, posts & threaded comments from any subreddit