Solution

Run SEO Pre-Write Rank Check

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 w

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

Python
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

JavaScript
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

Google

Web search with knowledge graph, PAA, and AI overviews

Frequently Asked Questions

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.

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.

SEO leads and content ops teams who want to stop cannibalizing their own ranking pages.

Yes. Scavio's free tier includes 500 credits per month with no credit card required. That is enough to validate this solution in your workflow.

Run SEO Pre-Write Rank Check

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 on