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 (12 known updates, 2024-2026), seedAlgorithmUpdates(), getRecentUpdates(days), getActiveRollouts(), getAllUpdates()
Health Checker
lib/sentinel/health-checker.ts
checkSiteHealth(siteUrl, userId, orgId) — score 0-100 from GSC + PSI data
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: 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.4---56# Google Updates Sentinel — Algorithm Monitoring and Recovery78## Purpose910SYNTHEX runs a Sentinel system that monitors site health, tracks Google11algorithm updates, and alerts when performance regressions correlate with12known rollouts. This skill documents how to interpret Sentinel data,13diagnose algorithm impacts, and execute recovery strategies.1415## Sentinel Architecture1617| Layer | File | Exports / Purpose |18| -------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |19| Orchestrator | `lib/sentinel/sentinel-agent.ts` | `runSentinelCheck(userId, orgId)` — full check: seed updates, resolve site URL, check health, run alerts |20| | | `runSentinelCheckForAllUsers()` — batch check for cron (limit 100 users) |21| Algorithm Feed | `lib/sentinel/algorithm-feed.ts` | `KNOWN_ALGORITHM_UPDATES` (12 known updates, 2024-2026), `seedAlgorithmUpdates()`, `getRecentUpdates(days)`, `getActiveRollouts()`, `getAllUpdates()` |22| Health Checker | `lib/sentinel/health-checker.ts` | `checkSiteHealth(siteUrl, userId, orgId)` — score 0-100 from GSC + PSI data |23| | | `getSnapshotHistory(userId, siteUrl, days)`, `getLatestSnapshot(userId, siteUrl)` |24| Alert Engine | `lib/sentinel/alert-engine.ts` | `runAlertEngine(current, previous, recentUpdates, thresholds)` — compares snapshots, emits alerts |25| Types | `lib/sentinel/types.ts` | `CoreWebVitals`, `SiteHealthReport`, `AlertThresholds`, `DEFAULT_THRESHOLDS`, `AlertType`, `AlertSeverity` |26| Cron | `app/api/cron/sentinel/route.ts` | Runs `runSentinelCheckForAllUsers()` on schedule |27| Manual trigger | `POST /api/sentinel/check` | Triggers sentinel check for the authenticated user |28| Models | Prisma: `AlgorithmUpdate`, `SiteHealthSnapshot`, `SentinelAlert` | Persistent storage for updates, snapshots, and alerts |2930## Alert Types and Thresholds3132From `DEFAULT_THRESHOLDS` in `lib/sentinel/types.ts`:3334| Alert Type | Severity | Threshold | Description |35| ------------------- | -------- | ---------------------------------------------- | -------------------------------- |36| `ranking-drop` | warning | Position worsens by 20%+ | Average position declining |37| `ranking-drop` | critical | Position worsens by 50%+ | Severe ranking regression |38| `traffic-drop` | warning | Clicks drop by 30%+ | Traffic volume declining |39| `traffic-drop` | critical | Clicks drop by 60%+ | Major traffic loss |40| `crawl-error-spike` | warning | Coverage errors increase 50%+ | Crawl error surge detected |41| `cwv-regression` | warning | LCP >3.0s | Largest Contentful Paint failed |42| `cwv-regression` | warning | INP >300ms | Interaction to Next Paint failed |43| `cwv-regression` | warning | CLS >0.25 | Cumulative Layout Shift failed |44| `algorithm-update` | critical | Traffic drop during active high-impact rollout | Correlated algorithm impact |45| `algorithm-update` | info | First snapshot recorded | Baseline established |4647## Update Type Reference Guide4849### Core Updates5051- **What it targets**: broad quality, relevance, and authority reassessment52- **Symptoms**: gradual ranking shifts across multiple pages; can be positive or negative53- **Diagnosis**: compare GSC analytics 28 days before vs after rollout start; check page-level changes54- **Recovery**: improve content quality, demonstrate E-E-A-T, add original research; recovery typically occurs at next core update (3-6 months)55- **Timeline**: rollout 2-4 weeks; recovery at next core update cycle56- **Known updates in feed**: March 2024, August 2024, November 2024, March 2025, August 2025, November 2025, March 20265758### Spam Updates5960- **What it targets**: scaled content abuse, expired domain abuse, parasite SEO, link manipulation61- **Symptoms**: sudden deindexing of affected pages; manual action in Search Console62- **Diagnosis**: check for manual actions in GSC; review content for auto-generated or scraped patterns63- **Recovery**: remove or substantially rewrite flagged content; submit reconsideration request64- **Timeline**: rollout 1-2 weeks; recovery after reconsideration (weeks to months)65- **Known updates in feed**: March 2024, December 2024, June 20256667### Helpful Content Updates6869- **What it targets**: content created primarily for search engines rather than people70- **Symptoms**: site-wide classifier applied; entire domain affected, not just individual pages71- **Diagnosis**: audit for pages that add no unique value, are thin, or target keywords without genuine expertise72- **Recovery**: remove or significantly improve unhelpful pages; focus on demonstrating firsthand experience73- **Timeline**: classifier is site-wide and persistent; recovery when classifier is lifted (next HCU or core update)74- **Known updates in feed**: February 20267576### Link Spam Updates7778- **What it targets**: unnatural link patterns, private blog networks (PBNs), guest post networks, paid links79- **Symptoms**: links nullified (no manual action, but rankings drop as link equity disappears)80- **Diagnosis**: audit backlink profile for unnatural patterns; check for sudden loss of referring domains81- **Recovery**: disavow toxic backlinks; focus on earning editorial links through quality content82- **Timeline**: rollout 1-2 weeks; recovery gradual as new editorial links are earned83- **Known updates in feed**: December 20258485### Product Reviews / Local Updates8687- **What it targets**: review quality, firsthand experience signals, local result accuracy88- **Symptoms**: product review pages or local listings shift in rankings89- **Diagnosis**: check review content for genuine firsthand experience; verify local listing accuracy90- **Recovery**: demonstrate firsthand experience with products; ensure GBP listing is complete and accurate9192## Diagnosis Workflow Decision Tree9394```95Sentinel alert triggered96 |97 +--> What alert type?98 |99 +--> algorithm-update (correlated with active rollout)100 | |101 | +--> Identify the update type from AlgorithmUpdate.updateType102 | | core / spam / helpful-content / link-spam / other103 | |104 | +--> Follow type-specific recovery strategy (see above)105 | |106 | +--> Cross-reference: which pages lost the most?107 | fetchAnalytics with dimensions: ['page']108 | Compare 28 days before vs during rollout109 |110 +--> traffic-drop (no active rollout)111 | |112 | +--> Technical issue investigation:113 | | 1. Check server errors in coverage (GSCSnapshot)114 | | 2. Check robots.txt for accidental blocks115 | | 3. Check for recent deploys that may have broken pages116 | | 4. Check CWV regression (SiteHealthSnapshot.coreWebVitals)117 | |118 | +--> Competitive investigation:119 | Invoke competitive-local-strategy skill120 | Check if competitors published superior content121 |122 +--> ranking-drop123 | |124 | +--> Single page or site-wide?125 | | Use fetchAnalytics dimensions: ['page'] to identify126 | |127 | +--> Single page: content or technical issue with that URL128 | +--> Site-wide: algorithm impact or domain-level issue129 |130 +--> crawl-error-spike131 | |132 | +--> Check coverage report details133 | +--> Server errors: check hosting, SSL, CDN134 | +--> Redirect errors: audit redirect chains135 | +--> Soft 404s: fix page content or return proper 404136 |137 +--> cwv-regression138 |139 +--> Which metric failed?140 | LCP >3.0s: check image sizes, server response, render-blocking resources141 | INP >300ms: check JavaScript execution, main thread blocking142 | CLS >0.25: check layout shifts from ads, images without dimensions, dynamic content143 |144 +--> Run PageSpeed Insights for detailed recommendations145 SiteHealthReport.coreWebVitals from health-checker.ts146```147148## Proactive Hardening Checklist149150Protect against future algorithm impacts:151152- [ ] **E-E-A-T on every page** — author bios, credentials, firsthand experience, citations153- [ ] **Core Web Vitals passing** — LCP <2.5s, INP <200ms, CLS <0.1 (good thresholds, not just passing)154- [ ] **No link schemes** — no purchased links, no PBN links, no excessive reciprocal links155- [ ] **AI content human-reviewed** — all AI-generated content edited and verified by a human156- [ ] **No fake or gated reviews** — genuine reviews only, never incentivised with discounts157- [ ] **Accurate schema markup** — LocalBusiness, FAQ, HowTo as appropriate; no misleading markup158- [ ] **Mobile parity** — mobile version has same content as desktop159- [ ] **Sentinel + GSC monitor running daily** — automated detection of regressions160- [ ] **Regular content audit** — remove or improve thin, outdated, or duplicate pages quarterly161162## Health Score Interpretation163164Computed by `computeHealthScore()` in `lib/sentinel/health-checker.ts`:165166| Component | Weight | Scoring |167| ---------------- | --------- | ------------------------------------------------------------ |168| Average position | 30 points | Position 1 = 30pts, position 10 = 18pts, position 50+ = 0pts |169| Click volume | 20 points | 1,000+ clicks = 20pts, scales linearly down |170| Coverage errors | 20 points | 0 errors = 20pts, 50+ errors = 0pts |171| Core Web Vitals | 30 points | 10pts each for LCP, INP, CLS passing thresholds |172173### Score Ranges174175| Score | Status | Action |176| ------ | ---------------- | ------------------------------------------------------------- |177| 80-100 | Healthy | Maintain current practices; monitor for changes |178| 60-79 | Attention needed | Investigate weakest component; address before it worsens |179| 40-59 | At risk | Multiple components degraded; prioritise fixes immediately |180| <40 | Critical | Significant issues across the board; emergency audit required |181182## Monitoring Cadence183184| Frequency | Mechanism | Purpose |185| ------------------------ | ------------------------------------ | ------------------------------------------------------------------------------ |186| Daily (automated) | Sentinel cron (`/api/cron/sentinel`) | Full health check + alert generation for all users with websites |187| Real-time (event-driven) | `SentinelAlert` table | Persisted alerts with severity, type, and related update ID |188| On-demand | `POST /api/sentinel/check` | Manual trigger for immediate health check |189| Manual curation | `KNOWN_ALGORITHM_UPDATES` array | New updates added to `lib/sentinel/algorithm-feed.ts` as Google announces them |190191### Adding New Algorithm Updates192193When Google announces a new algorithm update:1941951. Add entry to `KNOWN_ALGORITHM_UPDATES` in `lib/sentinel/algorithm-feed.ts`1962. Include: `name`, `updateType`, `announcedAt`, `rolloutStart`, `rolloutEnd` (null if ongoing), `impactLevel`, `description`, `sourceUrl`1973. The `seedAlgorithmUpdates()` function will upsert it on next cron run1984. Set `rolloutEnd` once Google confirms the rollout is complete199200> **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.201202---203204## Foundation & Gate Wiring (SYN-1049)205206> Adopted from the senior-skill standard so every artefact this connector produces is checked against the locked foundation before it lands.207208**Reads at every invocation (never cached — re-read each run):**209210- `.claude/memory/ceo-foundation.md` — AI-search realism, verification gates for impact claims, universal taboos.211- `.claude/memory/verification-gates.md` — gate state for any claim referenced.212213**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.214215**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.216217**Spec:** see `spec.md` in this skill directory.
Run npx skillmds@latest 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. 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.