Overview
Drops a one-line pixel on your site that logs every visit from an LLM agent (ChatGPT, Perplexity, Claude, Gemini user-agents). Scavio receives the pixel hits and exposes a real-time feed. This workflow tails that feed, aggregates per route and per engine, and updates a Grafana dashboard every 30 seconds.
Trigger
Continuous streaming from Scavio agentic-traffic websocket
Schedule
Streaming real-time, 30-second aggregation
Workflow Steps
Install pixel
Add one line to your site's layout: <img src="https://api.scavio.dev/pixel.gif?site=X"/>.
Open streaming feed
Connect to wss://api.scavio.dev/agentic-traffic/stream with your API key.
Aggregate per engine
Bucket events by agent user-agent (chatgpt-user, perplexity-bot, etc.) per route.
Push to InfluxDB
Write {timestamp, engine, route, count} to a timeseries bucket.
Grafana dashboard
Pre-built dashboard renders live sparklines for each engine per route.
Anomaly alert
Alert when a route sees 3x the 7-day baseline LLM-agent traffic.
Python Implementation
import os, json, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
def poll():
r = requests.get("https://api.scavio.dev/api/v1/agentic-traffic/recent",
headers={"x-api-key": API_KEY},
params={"site": "scavio.dev", "window": "5m"})
return r.json().get("events", [])
counts = {}
for ev in poll():
key = (ev["engine"], ev["route"])
counts[key] = counts.get(key, 0) + 1
for (engine, route), n in counts.items():
print(engine, route, n)JavaScript Implementation
const API_KEY = process.env.SCAVIO_API_KEY;
async function poll() {
const url = "https://api.scavio.dev/api/v1/agentic-traffic/recent?site=scavio.dev&window=5m";
const r = await fetch(url, { headers: { "x-api-key": API_KEY } });
return (await r.json()).events || [];
}
const counts = new Map();
for (const ev of await poll()) {
const key = ev.engine + "|" + ev.route;
counts.set(key, (counts.get(key) || 0) + 1);
}
for (const [k, n] of counts) console.log(k, n);Platforms Used
Web search with knowledge graph, PAA, and AI overviews