The Problem
SEO teams write new articles targeting keywords their site already ranks for, then cannibalize the original ranking page. The fix is a pre-write check: before any brief goes to a writer, confirm the keyword doesn't already have a ranking page on your domain. Most teams skip this and pay for it in traffic drops 60 days later.
The Scavio Solution
Scavio Google search returns top 20 organic results per query. Check if your domain appears in the top 10; if yes, flag the brief for 'update existing' instead of 'write new'. A one-line check before every brief saves months of cannibalization damage.
Before
Write, publish, watch old page drop rank, spend 2 weeks figuring out why.
After
Pre-write check catches overlap in 200ms; brief gets tagged 'update' not 'new'.
Who It Is For
SEO leads and content ops teams who want to stop cannibalizing their own ranking pages.
Key Benefits
- Prevents content cannibalization before it happens
- 200ms check per keyword; runs in a GitHub action or n8n flow
- Outputs structured Go/No-Go/Update decision
- Plugs into Airtable, Notion, or any content ops tool
- Detects AI-Overview dominance as a secondary signal
Python Example
import os, requests
DOMAIN = 'scavio.dev'
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def precheck(keyword):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers=H, json={'query': keyword}).json()
for i, x in enumerate(r.get('organic_results', []), 1):
if DOMAIN in x.get('link', ''):
return {'decision': 'update-existing', 'rank': i, 'url': x['link']}
return {'decision': 'go'}
print(precheck('best serp api for python'))JavaScript Example
const DOMAIN = 'scavio.dev';
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'content-type': 'application/json' };
async function precheck(keyword) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H, body: JSON.stringify({ query: keyword })
}).then(r => r.json());
const idx = (r.organic_results || []).findIndex(x => (x.link || '').includes(DOMAIN));
if (idx >= 0) return { decision: 'update-existing', rank: idx + 1, url: r.organic_results[idx].link };
return { decision: 'go' };
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews