Most content teams write first and check rank potential later, wasting hours on posts that cannot rank. A 60-second Scavio pre-writing check surfaces the SERP difficulty, AI Overview presence, and domain-authority gap before you start. This tutorial wires the check into your editorial process.
Prerequisites
- Python 3.10+
- A Scavio API key
- A proposed post title or target keyword
Walkthrough
Step 1: Query the target keyword
Pull SERP + AI Overview.
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def pre_check(keyword):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': keyword, 'include': ['ai_overview', 'paa']})
return r.json()Step 2: Score top-10 authority
Count DR>50 domains in top 10. High count = hard SERP.
HIGH_AUTH = {'wikipedia.org', 'forbes.com', 'techcrunch.com', 'nytimes.com'}
def authority_score(results):
top10 = results.get('organic_results', [])[:10]
return sum(1 for r in top10 if any(d in r['link'] for d in HIGH_AUTH))Step 3: Check AI Overview presence
If an overview already exists, ranking is harder but GEO-valuable.
def has_overview(r):
return bool(r.get('ai_overview'))Step 4: Report a go/no-go verdict
Rules of thumb baked into a 30-line scorer.
def verdict(r):
auth = authority_score(r)
if auth >= 6: return 'NO-GO: top 10 dominated by DR>50'
if auth >= 4: return 'MAYBE: hard but possible with unique angle'
return 'GO: top 10 has room'Step 5: Add to your editorial CMS
Drop the verdict on every new draft ticket.
# Notion/Linear webhook example:
POST /webhook { "verdict": "MAYBE", "keyword": "..." }Python Example
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
HIGH = {'wikipedia.org', 'forbes.com', 'techcrunch.com'}
def check(kw):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': kw, 'include': ['ai_overview']}).json()
top = r.get('organic_results', [])[:10]
auth = sum(1 for x in top if any(d in x['link'] for d in HIGH))
return {'authority_count': auth, 'ai_overview': bool(r.get('ai_overview')), 'verdict': 'NO-GO' if auth >= 6 else 'GO'}
print(check('how to build an ai agent'))JavaScript Example
const API_KEY = process.env.SCAVIO_API_KEY;
const HIGH = ['wikipedia.org', 'forbes.com', 'techcrunch.com'];
export async function check(kw) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ query: kw, include: ['ai_overview'] })
});
const d = await r.json();
const top = (d.organic_results || []).slice(0, 10);
const auth = top.filter(x => HIGH.some(h => x.link.includes(h))).length;
return { authority_count: auth, ai_overview: !!d.ai_overview, verdict: auth >= 6 ? 'NO-GO' : 'GO' };
}Expected Output
Per-keyword verdict in under 5 seconds. Typical team saves 20-40 hours/month skipping no-go topics.