| name | indexation-monitor |
| description | Specialist tool that samples URL inspection per pillar via gsc-mcp. Reports indexation %, flags pillars stuck below 80% after 14d, triggers S1/S2 on noindex regressions or sitemap omissions. |
| metadata | {"family":"ops","owner":"seo","last_reviewed":"2026-04-29T00:00:00.000Z","version":"1.0.0","related_skills":["seo-foundations","traffic-monitor","seo-health","phased-seo-rollout"],"kpis":["≥90% of launched-pillar URLs indexed within 30d","Per-pSEO-template indexation rate ≥70% after 60d"],"marketing_pillar":4,"seo_standard":"A","kpi_tier":1,"funnel_stage":"all","maturity_stage":"descriptive","used_by_stages":[1,8]} |
Indexation Monitor
Sample-based URL inspection per pillar via gsc-mcp.inspect_url. Cheap, focused tool — does ONE thing well.
When to Use
- Stage 1 Discovery weekly — surfaces indexation lag as opportunity context.
- Stage 8 UX per-ship — verify shipped pages get indexed.
- Per-pillar launch (Monday rhythm in 030-launch-cadence.mdc) — verify launch took effect.
- Ad-hoc: incident response.
Do Not Use When
- Need full SEO health audit — use
seo-health.
- Need traffic snapshot — use
traffic-monitor.
Inputs
- Pillar list from
nextjs-app/src/shared/launch/pillars.ts
- URL sample per pillar (default 20 URLs sampled deterministically per pillar via hash)
gsc-mcp.inspect_url (1 quota per call, cached 30d)
Workflow
Weekly run
- For each launched pillar:
- Sample 20 URLs deterministically (hash-based for cache stability).
- Call
gsc-mcp.inspect_url per URL (skips on cache hit).
- Compute indexation rate = indexed_count / sample_count.
- Per launched pillar:
- Check indexation rate against SLO (≥90% within 30d post-
launchedAt).
- Flag pillars stuck below 80% at 14d post-launch.
- Trigger S2 if any pillar drops <70%.
- For pSEO templates with launched URLs:
- Per-template sample of 20 URLs.
- Compute per-template indexation rate.
- Flag templates <70% indexed at 60d post-launch (Schwartz framework).
Per-pillar launch (Monday)
- Run immediately after Vercel deploy completes.
- Verify pillar URLs are still being served (no
noindex accident).
- 24h post-launch: re-sample to verify indexation has started.
Output Contract
Markdown block at nextjs-app/docs/reports/<date>/indexation-monitor.md:
## Indexation Monitor — <date>
### Per-Launched-Pillar Indexation
| Pillar | Days post-launch | Sample size | Indexed | Rate | Status |
|---|---|---|---|---|---|
| foundation | 60d | 20 | 19 | 95% | PASS |
| tools | 25d | 20 | 18 | 90% | PASS |
| editorialGuides | 18d | 20 | 14 | 70% | WARN — below 80% at 14d |
| ... | ... | ... | ... | ... | ... |
### Per-pSEO-Template Indexation
| Template | URLs sampled | Indexed | Rate | Status |
|---|---|---|---|---|
| city-role-page | 20 | 14 | 70% | PASS (≥70%) |
| state paycheck calculator | 20 | 19 | 95% | PASS |
| ... | ... | ... | ... | ... |
### Flagged
- editorialGuides: 70% at 14d (target ≥80%) → schedule for Discovery as `link_injection` candidate
- (none): no S1/S2 conditions
### Quota Used Today
- gsc-mcp.inspect_url calls: <count> / 2000 daily quota
Incident Triggers
Per seo-foundations/reference/excellence-targets.md Standard A:
- Launched pillar indexation drops <50% = S2 →
indexation-regression.md runbook.
- Launched pillar
noindex accident detected = S1 → noindex-accident.md runbook.
- Sitemap omission of launched URLs = S1 →
sitemap-drift.md runbook.
- pSEO template indexation <50% = S2 →
pseo-thinning.md runbook.
Sampling Discipline
- Deterministic hash-based sampling so the same URLs are inspected over time (allows trend tracking).
- Default sample 20 URLs per pillar; raise only when investigating a flagged regression.
- Cached 30d per
040-mcp-usage.mdc; only re-inspects when window expires.
References