Algorithm update types, diagnosis workflows, recovery strategies, and proactive hardening for Google algorithm changes. Use when diagnosing traffic drops, responding to algorithm updates, or hardening sites against future updates.
Google Updates Sentinel — Algorithm Monitoring and Recovery
Purpose
SYNTHEX runs a Sentinel system that monitors site health, tracks Google
algorithm updates, and alerts when performance regressions correlate with
known rollouts. This skill documents how to interpret Sentinel data,
diagnose algorithm impacts, and execute recovery strategies.
Sentinel Architecture
Layer
File
Exports / Purpose
Orchestrator
lib/sentinel/sentinel-agent.ts
runSentinelCheck(userId, orgId) — full check: seed updates, resolve site URL, check health, run alerts
runSentinelCheckForAllUsers() — batch check for cron (limit 100 users)
Algorithm Feed
lib/sentinel/algorithm-feed.ts
KNOWN_ALGORITHM_UPDATES (18 official updates since March 2024, offline fallback), syncLiveAlgorithmUpdates() (Google Search Status Dashboard feed, 6 h throttle), getAlgorithmFeedStatus(), seedAlgorithmUpdates(), getRecentUpdates(days), getActiveRollouts(), getAllUpdates()
Health Checker
lib/sentinel/health-checker.ts
checkSiteHealth(siteUrl, userId, orgId) — score 0-100 from GSC + PSI data
Persistent storage for updates, snapshots, and alerts
Alert Types and Thresholds
From DEFAULT_THRESHOLDS in lib/sentinel/types.ts:
Alert Type
Severity
Threshold
Description
ranking-drop
warning
Position worsens by 20%+
Average position declining
ranking-drop
critical
Position worsens by 50%+
Severe ranking regression
traffic-drop
warning
Clicks drop by 30%+
Traffic volume declining
traffic-drop
critical
Clicks drop by 60%+
Major traffic loss
crawl-error-spike
warning
Coverage errors increase 50%+
Crawl error surge detected
cwv-regression
warning
LCP >3.0s
Largest Contentful Paint failed
cwv-regression
warning
INP >300ms
Interaction to Next Paint failed
cwv-regression
warning
CLS >0.25
Cumulative Layout Shift failed
algorithm-update
critical
Traffic drop during active high-impact rollout
Correlated algorithm impact
algorithm-update
info
First snapshot recorded
Baseline established
Update Type Reference Guide
Core Updates
What it targets: broad quality, relevance, and authority reassessment
Symptoms: gradual ranking shifts across multiple pages; can be positive or negative
Diagnosis: compare GSC analytics 28 days before vs after rollout start; check page-level changes
Recovery: improve content quality, demonstrate E-E-A-T, add original research; recovery typically occurs at next core update (3-6 months)
Timeline: rollout 2-4 weeks; recovery at next core update cycle
Known updates in fallback: March 2024, August 2024, November 2024, December 2024, March 2025, June 2025, December 2025, March 2026, May 2026
Spam Updates
What it targets: scaled content abuse, expired domain abuse, parasite SEO, link manipulation
Symptoms: sudden deindexing of affected pages; manual action in Search Console
Diagnosis: check for manual actions in GSC; review content for auto-generated or scraped patterns
Recovery: remove or substantially rewrite flagged content; submit reconsideration request
Timeline: rollout 1-2 weeks; recovery after reconsideration (weeks to months)
Known updates in fallback: March 2024, June 2024, December 2024, August 2025, March 2026, June 2026, August 2026, September 2026
Policy: site reputation abuse policy updated 28/08/2026; scaled content abuse covers mass generation without added value, AI-assisted or not [VERIFIED]
Helpful content (no longer a separate update)
Status: since the March 2024 core update Google assesses helpfulness inside its core ranking systems: "There's no longer one signal or system used to do this" [VERIFIED: developers.google.com/search/blog/2024/03/core-update-spam-policies]. There are no standalone helpful content updates to wait for.
Diagnosis: treat helpfulness drops as core-update impact; audit for pages that add no unique value, are thin, or target keywords without genuine expertise
Recovery: improve or remove unhelpful pages; show firsthand experience; E-E-A-T is guidance, not a specific ranking factor [VERIFIED]
Retracted: an earlier fallback list carried an invented "February 2026 helpful content update"; it never existed and is hidden by RETRACTED_SEED_IDS
Link Spam Updates
What it targets: unnatural link patterns, private blog networks (PBNs), guest post networks, paid links
Symptoms: links nullified (no manual action, but rankings drop as link equity disappears)
Diagnosis: audit backlink profile for unnatural patterns; check for sudden loss of referring domains
Recovery: disavow toxic backlinks; focus on earning editorial links through quality content
Timeline: rollout 1-2 weeks; recovery gradual as new editorial links are earned
Known updates in fallback: none as a separate named update since March 2024 (link spam is handled by spam updates; an invented "December 2025 link spam update" was retracted)
Other dashboard incidents
February 2026 Discover update is in the fallback as other; the live feed maps non-ranking incidents (crawling, indexing, serving) to gssd-<id> rows with low impact
Product Reviews / Local Updates
What it targets: review quality, firsthand experience signals, local result accuracy
Symptoms: product review pages or local listings shift in rankings
Diagnosis: check review content for genuine firsthand experience; verify local listing accuracy
Recovery: demonstrate firsthand experience with products; ensure GBP listing is complete and accurate
Diagnosis Workflow Decision Tree
Sentinel alert triggered
|
+--> What alert type?
|
+--> algorithm-update (correlated with active rollout)
| |
| +--> Identify the update type from AlgorithmUpdate.updateType
| | core / spam / helpful-content / link-spam / other
| |
| +--> Follow type-specific recovery strategy (see above)
| |
| +--> Cross-reference: which pages lost the most?
| fetchAnalytics with dimensions: ['page']
| Compare 28 days before vs during rollout
|
+--> traffic-drop (no active rollout)
| |
| +--> Technical issue investigation:
| | 1. Check server errors in coverage (GSCSnapshot)
| | 2. Check robots.txt for accidental blocks
| | 3. Check for recent deploys that may have broken pages
| | 4. Check CWV regression (SiteHealthSnapshot.coreWebVitals)
| |
| +--> Competitive investigation:
| Invoke competitive-local-strategy skill
| Check if competitors published superior content
|
+--> ranking-drop
| |
| +--> Single page or site-wide?
| | Use fetchAnalytics dimensions: ['page'] to identify
| |
| +--> Single page: content or technical issue with that URL
| +--> Site-wide: algorithm impact or domain-level issue
|
+--> crawl-error-spike
| |
| +--> Check coverage report details
| +--> Server errors: check hosting, SSL, CDN
| +--> Redirect errors: audit redirect chains
| +--> Soft 404s: fix page content or return proper 404
|
+--> cwv-regression
|
+--> Which metric failed?
| LCP >3.0s: check image sizes, server response, render-blocking resources
| INP >300ms: check JavaScript execution, main thread blocking
| CLS >0.25: check layout shifts from ads, images without dimensions, dynamic content
|
+--> Run PageSpeed Insights for detailed recommendations
SiteHealthReport.coreWebVitals from health-checker.ts
Proactive Hardening Checklist
Protect against future algorithm impacts:
E-E-A-T on every page — author bios, credentials, firsthand experience, citations
Core Web Vitals passing — LCP <2.5s, INP <200ms, CLS <0.1 (good thresholds, not just passing)
No link schemes — no purchased links, no PBN links, no excessive reciprocal links
AI content human-reviewed — all AI-generated content edited and verified by a human
No fake or gated reviews — genuine reviews only, never incentivised with discounts
Accurate schema markup — LocalBusiness, FAQ, HowTo as appropriate; no misleading markup
Mobile parity — mobile version has same content as desktop
Significant issues across the board; emergency audit required
Monitoring Cadence
Frequency
Mechanism
Purpose
Daily (automated)
Sentinel cron (/api/cron/sentinel)
Full health check + alert generation for all users with websites
Real-time (event-driven)
SentinelAlert table
Persisted alerts with severity, type, and related update ID
On-demand
POST /api/sentinel/check
Manual trigger for immediate health check
Every 6 h (when checked)
syncLiveAlgorithmUpdates()
Reads status.search.google.com/incidents.json; failures return unavailable, never an empty success
Fallback curation
KNOWN_ALGORITHM_UPDATES array
Offline fallback only; must match the dashboard's exact UTC times and incident URLs
Adding New Algorithm Updates
The live feed picks up new Google Search Status Dashboard incidents automatically. Only update the offline fallback, and only from the dashboard itself (never from a blog or memory):
Add entry to KNOWN_ALGORITHM_UPDATES in lib/sentinel/algorithm-feed.ts with the dashboard's UTC begin/end and status.search.google.com/incidents/<id> URL
The seedAlgorithmUpdates() function will upsert it on next cron run
Set rolloutEnd once Google confirms the rollout is complete
Reference skill: This is a read-only architecture guide — it documents existing systems and does not generate creative or code output. No capability uplift block is needed.
Foundation & Gate Wiring (SYN-1049)
Adopted from the senior-skill standard so every artefact this connector produces is checked against the locked foundation before it lands.
Reads at every invocation (never cached — re-read each run):
.claude/memory/verification-gates.md — gate state for any claim referenced.
Output gate: every client-facing artefact this connector produces routes through brand-voice-enforce before the CEO batched-review queue. A REJECT blocks the artefact until the quoted offending string is fixed.
Evidence standard: every quantitative or factual claim carries exactly one tag — [VERIFIED] / [INFERENCE] / [UNCONFIRMED]. Untagged = defect (.claude/rules/fabel-evidence-standard.md). Never state a projected result as fact.
Spec: see spec.md in this skill directory.
1---2name: google-updates-sentinel3description: >-4 Algorithm update types, diagnosis workflows, recovery strategies, and5 proactive hardening for Google algorithm changes. Use when diagnosing traffic6 drops, responding to algorithm updates, or hardening sites against future7 updates.8metadata:9 source: https://skillmd.com/skills/cleanexpo/google-updates-sentinel10 author: synthex11 version: '1.1'12 engine: synthex-ai-agency13 type: reference-skill14 triggers:15 - algorithm update16 - google update17 - core update18 - spam update19 - helpful content20 - ranking drop21 - traffic drop22 - penalty23 - sentinel24 - algorithm recovery25 requires:26 - google-search-console27context: fork28---2930# Google Updates Sentinel — Algorithm Monitoring and Recovery3132## Purpose3334SYNTHEX runs a Sentinel system that monitors site health, tracks Google35algorithm updates, and alerts when performance regressions correlate with36known rollouts. This skill documents how to interpret Sentinel data,37diagnose algorithm impacts, and execute recovery strategies.3839## Sentinel Architecture4041| Layer | File | Exports / Purpose |42| -------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |43| Orchestrator | `lib/sentinel/sentinel-agent.ts` | `runSentinelCheck(userId, orgId)` — full check: seed updates, resolve site URL, check health, run alerts |44| | | `runSentinelCheckForAllUsers()` — batch check for cron (limit 100 users) |45| Algorithm Feed | `lib/sentinel/algorithm-feed.ts` | `KNOWN_ALGORITHM_UPDATES` (18 official updates since March 2024, offline fallback), `syncLiveAlgorithmUpdates()` (Google Search Status Dashboard feed, 6 h throttle), `getAlgorithmFeedStatus()`, `seedAlgorithmUpdates()`, `getRecentUpdates(days)`, `getActiveRollouts()`, `getAllUpdates()` |46| Health Checker | `lib/sentinel/health-checker.ts` | `checkSiteHealth(siteUrl, userId, orgId)` — score 0-100 from GSC + PSI data |47| | | `getSnapshotHistory(userId, siteUrl, days)`, `getLatestSnapshot(userId, siteUrl)` |48| Alert Engine | `lib/sentinel/alert-engine.ts` | `runAlertEngine(current, previous, recentUpdates, thresholds)` — compares snapshots, emits alerts |49| Types | `lib/sentinel/types.ts` | `CoreWebVitals`, `SiteHealthReport`, `AlertThresholds`, `DEFAULT_THRESHOLDS`, `AlertType`, `AlertSeverity` |50| Cron | `app/api/cron/sentinel/route.ts` | Runs `runSentinelCheckForAllUsers()` on schedule |51| Manual trigger | `POST /api/sentinel/check` | Triggers sentinel check for the authenticated user |52| Models | Prisma: `AlgorithmUpdate`, `SiteHealthSnapshot`, `SentinelAlert` | Persistent storage for updates, snapshots, and alerts |5354## Alert Types and Thresholds5556From `DEFAULT_THRESHOLDS` in `lib/sentinel/types.ts`:5758| Alert Type | Severity | Threshold | Description |59| ------------------- | -------- | ---------------------------------------------- | -------------------------------- |60| `ranking-drop` | warning | Position worsens by 20%+ | Average position declining |61| `ranking-drop` | critical | Position worsens by 50%+ | Severe ranking regression |62| `traffic-drop` | warning | Clicks drop by 30%+ | Traffic volume declining |63| `traffic-drop` | critical | Clicks drop by 60%+ | Major traffic loss |64| `crawl-error-spike` | warning | Coverage errors increase 50%+ | Crawl error surge detected |65| `cwv-regression` | warning | LCP >3.0s | Largest Contentful Paint failed |66| `cwv-regression` | warning | INP >300ms | Interaction to Next Paint failed |67| `cwv-regression` | warning | CLS >0.25 | Cumulative Layout Shift failed |68| `algorithm-update` | critical | Traffic drop during active high-impact rollout | Correlated algorithm impact |69| `algorithm-update` | info | First snapshot recorded | Baseline established |7071## Update Type Reference Guide7273### Core Updates7475- **What it targets**: broad quality, relevance, and authority reassessment76- **Symptoms**: gradual ranking shifts across multiple pages; can be positive or negative77- **Diagnosis**: compare GSC analytics 28 days before vs after rollout start; check page-level changes78- **Recovery**: improve content quality, demonstrate E-E-A-T, add original research; recovery typically occurs at next core update (3-6 months)79- **Timeline**: rollout 2-4 weeks; recovery at next core update cycle80- **Known updates in fallback**: March 2024, August 2024, November 2024, December 2024, March 2025, June 2025, December 2025, March 2026, May 20268182### Spam Updates8384- **What it targets**: scaled content abuse, expired domain abuse, parasite SEO, link manipulation85- **Symptoms**: sudden deindexing of affected pages; manual action in Search Console86- **Diagnosis**: check for manual actions in GSC; review content for auto-generated or scraped patterns87- **Recovery**: remove or substantially rewrite flagged content; submit reconsideration request88- **Timeline**: rollout 1-2 weeks; recovery after reconsideration (weeks to months)89- **Known updates in fallback**: March 2024, June 2024, December 2024, August 2025, March 2026, June 2026, August 2026, September 202690- **Policy**: site reputation abuse policy updated 28/08/2026; scaled content abuse covers mass generation without added value, AI-assisted or not `[VERIFIED]`9192### Helpful content (no longer a separate update)9394- **Status**: since the March 2024 core update Google assesses helpfulness inside its core ranking systems: "There's no longer one signal or system used to do this" `[VERIFIED: developers.google.com/search/blog/2024/03/core-update-spam-policies]`. There are no standalone helpful content updates to wait for.95- **Diagnosis**: treat helpfulness drops as core-update impact; audit for pages that add no unique value, are thin, or target keywords without genuine expertise96- **Recovery**: improve or remove unhelpful pages; show firsthand experience; E-E-A-T is guidance, not a specific ranking factor `[VERIFIED]`97- **Retracted**: an earlier fallback list carried an invented "February 2026 helpful content update"; it never existed and is hidden by `RETRACTED_SEED_IDS`9899### Link Spam Updates100101- **What it targets**: unnatural link patterns, private blog networks (PBNs), guest post networks, paid links102- **Symptoms**: links nullified (no manual action, but rankings drop as link equity disappears)103- **Diagnosis**: audit backlink profile for unnatural patterns; check for sudden loss of referring domains104- **Recovery**: disavow toxic backlinks; focus on earning editorial links through quality content105- **Timeline**: rollout 1-2 weeks; recovery gradual as new editorial links are earned106- **Known updates in fallback**: none as a separate named update since March 2024 (link spam is handled by spam updates; an invented "December 2025 link spam update" was retracted)107108### Other dashboard incidents109110- `February 2026 Discover update` is in the fallback as `other`; the live feed maps non-ranking incidents (crawling, indexing, serving) to `gssd-<id>` rows with low impact111112### Product Reviews / Local Updates113114- **What it targets**: review quality, firsthand experience signals, local result accuracy115- **Symptoms**: product review pages or local listings shift in rankings116- **Diagnosis**: check review content for genuine firsthand experience; verify local listing accuracy117- **Recovery**: demonstrate firsthand experience with products; ensure GBP listing is complete and accurate118119## Diagnosis Workflow Decision Tree120121```122Sentinel alert triggered123 |124 +--> What alert type?125 |126 +--> algorithm-update (correlated with active rollout)127 | |128 | +--> Identify the update type from AlgorithmUpdate.updateType129 | | core / spam / helpful-content / link-spam / other130 | |131 | +--> Follow type-specific recovery strategy (see above)132 | |133 | +--> Cross-reference: which pages lost the most?134 | fetchAnalytics with dimensions: ['page']135 | Compare 28 days before vs during rollout136 |137 +--> traffic-drop (no active rollout)138 | |139 | +--> Technical issue investigation:140 | | 1. Check server errors in coverage (GSCSnapshot)141 | | 2. Check robots.txt for accidental blocks142 | | 3. Check for recent deploys that may have broken pages143 | | 4. Check CWV regression (SiteHealthSnapshot.coreWebVitals)144 | |145 | +--> Competitive investigation:146 | Invoke competitive-local-strategy skill147 | Check if competitors published superior content148 |149 +--> ranking-drop150 | |151 | +--> Single page or site-wide?152 | | Use fetchAnalytics dimensions: ['page'] to identify153 | |154 | +--> Single page: content or technical issue with that URL155 | +--> Site-wide: algorithm impact or domain-level issue156 |157 +--> crawl-error-spike158 | |159 | +--> Check coverage report details160 | +--> Server errors: check hosting, SSL, CDN161 | +--> Redirect errors: audit redirect chains162 | +--> Soft 404s: fix page content or return proper 404163 |164 +--> cwv-regression165 |166 +--> Which metric failed?167 | LCP >3.0s: check image sizes, server response, render-blocking resources168 | INP >300ms: check JavaScript execution, main thread blocking169 | CLS >0.25: check layout shifts from ads, images without dimensions, dynamic content170 |171 +--> Run PageSpeed Insights for detailed recommendations172 SiteHealthReport.coreWebVitals from health-checker.ts173```174175## Proactive Hardening Checklist176177Protect against future algorithm impacts:178179- [ ] **E-E-A-T on every page** — author bios, credentials, firsthand experience, citations180- [ ] **Core Web Vitals passing** — LCP <2.5s, INP <200ms, CLS <0.1 (good thresholds, not just passing)181- [ ] **No link schemes** — no purchased links, no PBN links, no excessive reciprocal links182- [ ] **AI content human-reviewed** — all AI-generated content edited and verified by a human183- [ ] **No fake or gated reviews** — genuine reviews only, never incentivised with discounts184- [ ] **Accurate schema markup** — LocalBusiness, FAQ, HowTo as appropriate; no misleading markup185- [ ] **Mobile parity** — mobile version has same content as desktop186- [ ] **Sentinel + GSC monitor running daily** — automated detection of regressions187- [ ] **Regular content audit** — remove or improve thin, outdated, or duplicate pages quarterly188189## Health Score Interpretation190191Computed by `computeHealthScore()` in `lib/sentinel/health-checker.ts`:192193| Component | Weight | Scoring |194| ---------------- | --------- | ------------------------------------------------------------ |195| Average position | 30 points | Position 1 = 30pts, position 10 = 18pts, position 50+ = 0pts |196| Click volume | 20 points | 1,000+ clicks = 20pts, scales linearly down |197| Coverage errors | 20 points | 0 errors = 20pts, 50+ errors = 0pts |198| Core Web Vitals | 30 points | 10pts each for LCP, INP, CLS passing thresholds |199200### Score Ranges201202| Score | Status | Action |203| ------ | ---------------- | ------------------------------------------------------------- |204| 80-100 | Healthy | Maintain current practices; monitor for changes |205| 60-79 | Attention needed | Investigate weakest component; address before it worsens |206| 40-59 | At risk | Multiple components degraded; prioritise fixes immediately |207| <40 | Critical | Significant issues across the board; emergency audit required |208209## Monitoring Cadence210211| Frequency | Mechanism | Purpose |212| ------------------------ | ------------------------------------ | ------------------------------------------------------------------------------------------------------ |213| Daily (automated) | Sentinel cron (`/api/cron/sentinel`) | Full health check + alert generation for all users with websites |214| Real-time (event-driven) | `SentinelAlert` table | Persisted alerts with severity, type, and related update ID |215| On-demand | `POST /api/sentinel/check` | Manual trigger for immediate health check |216| Every 6 h (when checked) | `syncLiveAlgorithmUpdates()` | Reads `status.search.google.com/incidents.json`; failures return `unavailable`, never an empty success |217| Fallback curation | `KNOWN_ALGORITHM_UPDATES` array | Offline fallback only; must match the dashboard's exact UTC times and incident URLs |218219### Adding New Algorithm Updates220221The live feed picks up new Google Search Status Dashboard incidents automatically. Only update the offline fallback, and only from the dashboard itself (never from a blog or memory):2222231. Add entry to `KNOWN_ALGORITHM_UPDATES` in `lib/sentinel/algorithm-feed.ts` with the dashboard's UTC begin/end and `status.search.google.com/incidents/<id>` URL2242. Include: `name`, `updateType`, `announcedAt`, `rolloutStart`, `rolloutEnd` (null if ongoing), `impactLevel`, `description`, `sourceUrl`2253. The `seedAlgorithmUpdates()` function will upsert it on next cron run2264. Set `rolloutEnd` once Google confirms the rollout is complete227228> **Reference skill:** This is a read-only architecture guide — it documents existing systems and does not generate creative or code output. No capability uplift block is needed.229230---231232## Foundation & Gate Wiring (SYN-1049)233234> Adopted from the senior-skill standard so every artefact this connector produces is checked against the locked foundation before it lands.235236**Reads at every invocation (never cached — re-read each run):**237238- `.claude/memory/ceo-foundation.md` — AI-search realism, verification gates for impact claims, universal taboos.239- `.claude/memory/verification-gates.md` — gate state for any claim referenced.240241**Output gate:** every client-facing artefact this connector produces routes through `brand-voice-enforce` before the CEO batched-review queue. A REJECT blocks the artefact until the quoted offending string is fixed.242243**Evidence standard:** every quantitative or factual claim carries exactly one tag — `[VERIFIED]` / `[INFERENCE]` / `[UNCONFIRMED]`. Untagged = defect (`.claude/rules/fabel-evidence-standard.md`). Never state a projected result as fact.244245**Spec:** see `spec.md` in this skill directory.
Run npx get-skill add cleanexpo/google-updates-sentinel in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Algorithm update types, diagnosis workflows, recovery strategies, and proactive hardening for Google algorithm changes. Use when diagnosing traffic drops, responding to algorithm updates, or hardening sites against future updates. It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. Capability flags: docs only. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
cleanexpo (@cleanexpo) published this skill. Their other Agent Skills are listed on their SkillMD profile.