Repeated SERP observations can identify pages worth reviewing, provided the query, engine, market and checked depth remain comparable. A ranking change is an observation. It is not, by itself, evidence of an algorithm penalty or a reason to rewrite every page.
Classify the observation before alerting
def rank_alert(previous, current, market_same):
if not market_same:
return 'incomparable'
if current is None:
return 'not_seen_within_checked_depth'
if previous is None:
return 'newly_seen'
return 'review_decline' if current > previous else 'stable_or_improved'
assert rank_alert(12, 18, True) == "review_decline"
assert rank_alert(12, None, True) == "not_seen_within_checked_depth"
assert rank_alert(12, 18, False) == "incomparable"
The local cases keep missing ranks and changed markets separate from a measured decline. Do not convert an absent result into position zero or a rank beyond the checked range.
Send the right evidence into the review queue
| Observation | Review material |
|---|---|
| Repeated comparable decline | Before/after SERP records and source URLs |
| Exposure without visible clicks | Relevant GSC query cohort and result presentation |
| Changed result types | Current search task and competing page formats |
| Newly observed result | Page job, target query and internal entry points |
| Incomplete collection | Failure record before any SEO conclusion |
Choose one intervention that addresses the task
For a page already near the first results page, inspect whether its opening answers the query, whether the evidence is adequate, and whether relevant strong pages link to it. For a page appearing on unrelated queries, reassess its job before changing its title. Keep a dated change log and evaluate the same query-market cohort afterward.
Store observations through the rank-tracking workflow. This page defines the review decision, not the whole storage client or an explanation of why Google changed a rank.
Reference documentation: www.searchcans.com — /google-search-api.