recovery-crawl
CommandScreaming Frog crawl with technical SEO issue classification including Shopware-specific patterns.
Audit all SEO changes made to a domain within a given period. Read-only audit_only mode.
> /plugin marketplace add maxschottke-spec/seo-survival-kit> /plugin install seo-rescue@seo-survival-kit
description: "Audit all SEO changes made to a domain within a given period. Read-only audit_only mode." allowed-tools: Bash, Read, Write, Edit, Glob, Grep, mcp__*
Auditiert alle SEO-Aenderungen an einer Domain innerhalb eines Zeitraums: Change-Inventar, fehlgeschlagene Versuche, unverifizierte Aenderungen, Risiko- und Approval-Compliance, Rollback-Readiness, Settlement-Gate-Status und Hypothesen-Registry. Read-only gegenueber dem Live-Shop — das Audit stellt fest, was passiert ist, und bewertet es; es aendert nichts.
Mode: immer `audit_only`. Change Budget: 0. Keine Live-Shop-Writes. Schreibt nur Report-Artefakte nach `~/.cache/seo-rescue/{slug}/` (via `lib/safe.js`, siehe Schritt 9).
Dieses Command ist read-only gegenueber dem Live-Shop — ein aktiver Settlement Gate (`references/SEO_SETTLEMENT_GATE.md`) blockiert es NIE. Sonderrolle: **`recovery-audit` ist der Writer der Gate-Datei** `~/.cache/seo-rescue/{slug}/recovery-gate.json` — alle anderen Commands (diagnose, plan, monitor, full) lesen sie nur. Die Gate-Detection selbst ist Teil des Ablaufs (Schritt 7).
/seo-rescue:recovery-audit <domain> [--days 14]
| Feld | Quelle | Pflicht | |------|--------|---------| | `domain` | CLI-Argument | ja | | `--days` | CLI-Flag | nein — Default: `14` |
`--days` definiert das Audit-Fenster: `period_end` = jetzt, `period_start` = jetzt minus `--days` Tage. Wird das Command vom Orchestrator (`recovery-full`) ohne Flag aufgerufen, gilt der Default 14.
Normalisiere den Input via `normalizeDomain()` aus `lib/safe.js` — gibt `input_domain`, `domain`, `canonical_domain`, `slug` zurueck.
`ensureDomainDir(slug)` — Modus 0700, Abbruch bei Symlink.
Falls eine `run_id` vom Orchestrator (`recovery-full`) uebergeben wurde: diese unveraendert verwenden, KEIN eigenes Prefix erzeugen. Sonst generiere eine eindeutige Run-ID fuer diesen Lauf:
node -e "const { randomUUID } = require('crypto'); console.log('aud-' + randomUUID().slice(0,8) + '-' + Date.now())"Speichere die Run-ID als `run_id`. Sie wird im Output-Schema mitgefuehrt.
`period_start` / `period_end` aus `--days` berechnen (Default 14) und im Output festhalten. Alle folgenden Schritte betrachten nur Aenderungen innerhalb dieses Fensters.
Primaerquelle ist `~/.cache/seo-rescue/{slug}/change-history.ndjson`. Fehlt sie oder ist sie unvollstaendig, rekonstruiere aus diesen Quellen **in Prioritaetsreihenfolge**:
1. `~/.cache/seo-rescue/{slug}/change-history.ndjson` (primaer, audit-safe) 2. `~/.cache/seo-rescue/{slug}/snapshots/` (lokale CMS-Slot-Snapshots und andere Before/After-Artefakte; werden von externem Tooling erzeugt — read-if-present, fehlende Snapshots sind kein Fehler) 3. **Shopware-API-`updatedAt`-Felder** mit `--days`-Filter auf: `seo-url`, `category`, `product`, `cms-slot` (nicht zuverlaessig — siehe Audit-Gap-Marker), `system-config`, `dreisc-seo-redirect` 4. Shell-History / Claude-Conversation-Logs (falls zugreifbar) 5. Shopware-Ist-Zustand vs. bekannte Snapshots 6. Screaming-Frog-Crawl-Diffs (mehrere Crawls vergleichen, falls vorhanden) 7. Live-HTTP-Checks (aktueller Zustand) 8. DataForSEO- / Sistrix- / GSC-Snapshots 9. Manuelle Ableitung aus Operator-Gedaechtnis oder Notizen
**Rekonstruktions-Marker:** Jeder rekonstruierte Eintrag muss enthalten:
{
"reconstructed": true,
"reconstruction_sources": ["..."],
"reconstruction_confidence": "high|medium|low",
"audit_source": "shopware_updatedAt_reconstruction"
}Fehlt `change-history.ndjson` vollstaendig, setze im Audit-Output `"not_audit_safe_reconstruction": true`.
Das Audit muss fuer jede erkannte Aenderung erfassen:
Das Audit muss erkennen:
Erkennt das Audit einen Major Batch, der nicht mit `triggered_settlement_gate: true` geloggt wurde:
1. Berechne `started_at`, `minimum_until`, `recommended_until` 2. Schreibe `~/.cache/seo-rescue/{slug}/recovery-gate.json` mit `settlement_gate_active: true` und rueckdatierten Werten — via `atomicWriteJSON()` unter Lock (siehe Schritt 9) 3. Appende ein `gate_activated`-Event an die `gate_history` der Gate-Datei (append-only, niemals bestehende Eintraege ueberschreiben) 4. Emittiere ein Finding `gate_activated_retroactively` mit Severity `high`
Das Audit emittiert ein `hypothesis_registry`-Array. Fuer jede Ursachen-Attribution (bei erfolgreichen Aenderungen, fehlgeschlagenen Versuchen oder offenen Risiken) enthaelt die Registry einen Eintrag per `schemas/hypothesis-verification.schema.json`.
Das Audit
Recovery-first decision support for ecommerce/D2C SEO. Claude Code skills for Core Update recovery diagnosis, prioritized action plans, weekly monitoring, and a Change Governor / Settlement Gate that prevents over-optimizing during recovery windows.
Screaming Frog crawl with technical SEO issue classification including Shopware-specific patterns.
Automatic domain diagnosis: Core Update impact, VI drop, keyword losses, backlink profile.
Full recovery workflow: diagnose -> crawl -> audit -> plan -> monitor. Respects Change Governor mode.
Weekly recovery tracking with VI, keyword data, and Change History effect tracking.
Generate prioritized action plan from diagnosis and crawl issues with Change Governor risk points.
Run a paid-ads (ROAS) workflow: audience segments, account structure, ad creative, experiment design, pre-launch signal QA + the…
Run the readiness doctor: which audit and launch actions are live or blocked. \"why is this action blocked\"