---
title: SEO muutuste jälgimine
description: Salvestab SEO-elementide lähtetaseme, tuvastab muutused ja jälgib tagasilangusi.
category: Marketing
sublabel: SEO
author: AgriciDaniel
tags: 
license: MIT
source: https://github.com/AgriciDaniel/claude-seo
---

# SEO drift’i monitor (aprill 2026)

Git sinu SEO jaoks. Jäädvusta baasjooni, tuvasta regressioone, jälgi muudatusi ajas.

---

## Käsklused

| Käsklus | Eesmärk |
|---------|---------|
| `/seo drift baseline <url>` | Jäädvusta praegune SEO olek „tuntud hea“ hetkepildina |
| `/seo drift compare <url>` | Võrdle praegust lehe olekut salvestatud baasjoonega |
| `/seo drift history <url>` | Näita muudatuste ajalugu ja varasemaid võrdlusi |

---

## Mida see jäädvustab

Iga baasjoon salvestab need SEO-kriitilised elemendid:

| Element | Väli | Allikas |
|---------|-------|--------|
| Title tag | `title` | `parse_html.py` |
| Meta description | `meta_description` | `parse_html.py` |
| Canonical URL | `canonical` | `parse_html.py` |
| Robots direktiivid | `meta_robots` | `parse_html.py` |
| H1 pealkirjad | `h1` (array) | `parse_html.py` |
| H2 pealkirjad | `h2` (array) | `parse_html.py` |
| H3 pealkirjad | `h3` (array) | `parse_html.py` |
| JSON-LD schema | `schema` (array) | `parse_html.py` |
| Open Graph sildid | `open_graph` (dict) | `parse_html.py` |
| Core Web Vitals | `cwv` (dict) | `pagespeed_check.py` |
| HTTP staatuskood | `status_code` | `fetch_page.py` |
| HTML sisu räsi | `html_hash` (SHA-256) | Arvutatud |
| Schema sisu räsi | `schema_hash` (SHA-256) | Arvutatud |

---

## Kuidas võrdlus töötab

Võrdlusmootor rakendab **17 reeglit üle 3 tõsidustaseme**. Lae
`references/comparison-rules.md` täieliku reeglistiku jaoks lävedega,
soovitatud tegevuste ja oskustevaheliste viidetega.

### Tõsidustasemed

| Tase | Tähendus | Reageerimisaeg |
|-------|---------|---------------|
| **CRITICAL** | SEO-murdav muudatus, tõenäoline liikluse kadu | Kohe |
| **WARNING** | Potentsiaalne mõju, vajab uurimist | 1 nädala jooksul |
| **INFO** | Ainult teadlikkus, võib olla tahtlik | Vaata sobival ajal |

---

## Salvestus

Kõik andmed salvestatakse kohalikult SQLite’i:

```
~/.cache/claude-seo/drift/baselines.db
```

### Tabelid

- **baselines**: Jäädvustatud hetkepildid kõigi SEO elementidega
- **comparisons**: Diff tulemused käivitatud reeglite ja tõsidustega

URL-i normaliseerimine tagab järjepideva sobitamise: väiketähelised skeem/host, eemalda
vaikepordid (80/443), sorteeri päringuparameetrid, eemalda UTM-parameetrid, eemalda
lõpuslässid.

---

## Käsklus: `baseline`

Jäädvustab lehe praeguse oleku ja salvestab selle.

**Sammud:**
1. Valideeri URL (SSRF kaitse `google_auth.validate_url()` kaudu)
2. Too leht `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run fetch_page.py <URL>` kaudu
3. Parseeri HTML `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py <URL>` kaudu
4. Valikuliselt too CWV `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run pagespeed_check.py <URL>` kaudu (kasuta `--skip-cwv` vahelejätmiseks)
5. Räsi HTML keha ja schema sisu (SHA-256)
6. Salvesta hetkepilt SQLite’i

**Käivitus:**
```bash
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run drift_baseline.py <url>
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run drift_baseline.py <url> --skip-cwv
```

**Väljund:** JSON baasjoone ID, ajatempli, URL-i ja jäädvustatud elementide kokkuvõttega.

---

## Käsklus: `compare`

Toob lehe praeguse oleku ja võrdleb seda kõige hilisema baasjoonega.

**Sammud:**
1. Valideeri URL
2. Lae SQLite’ist kõige hilisem baasjoon (või konkreetne `--baseline-id`)
3. Too ja parseeri praegune lehe olek
4. Käivita kõik 17 võrdlusreeglit
5. Klassifitseeri leiud tõsiduse järgi
6. Salvesta võrdlustulemus
7. Väljasta JSON diff-aruanne

**Käivitus:**
```bash
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run drift_compare.py <url>
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run drift_compare.py <url> --baseline-id 5
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run drift_compare.py <url> --skip-cwv
```

**Väljund:** JSON kõigi käivitatud reeglite, vanade/uute väärtuste, tõsiduse ja tegevustega.

Pärast võrdlust paku HTML-aruande genereerimist:
```bash
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run drift_report.py <comparison_json_file> --output drift-report.html
```

---

## Käsklus: `history`

Näitab kõiki baasjooni ja võrdlusi URL-i jaoks.

**Käivitus:**
```bash
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run drift_history.py <url>
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run drift_history.py <url> --limit 10
```

**Väljund:** JSON massiiv baasjoontest (uusimad ees) ajatemplite ja võrdluste kokkuvõtetega.

---

## Oskustevaheline integratsioon

Kui drift tuvastatakse, soovita asjakohast spetsialiseeritud oskust:

| Leid | Soovitus |
|---------|----------------|
| Schema eemaldatud või muudetud | Käivita `/seo schema <url>` täielikuks valideerimiseks |
| CWV regressioon | Käivita `/seo technical <url>` jõudlusauditiks |
| Title või meta description muudetud | Käivita `/seo page <url>` sisuanalüüsiks |
| Canonical muudetud või eemaldatud | Käivita `/seo technical <url>` indekseeritavuse kontrolliks |
| Noindex lisatud | Käivita `/seo technical <url>` crawlability auditiks |
| H1/pealkirjastruktuur muudetud | Käivita `/seo content <url>` E-E-A-T ülevaatuseks |
| OG sildid eemaldatud | Käivita `/seo page <url>` sotsiaaljagamise analüüsiks |
| Staatuskood muutus veaks | Käivita `/seo technical <url>` täielikuks diagnostikaks |

---

## Veakäsitlemine

| Stsenaarium | Tegevus |
|----------|--------|
| URL kättesaamatu | Teata viga `fetch_page.py`-st. Ära arva olekut. Soovita kasutajal URL kontrollida. |
| URL-i jaoks baasjoont pole | Teata kasutajale ja soovita kõigepealt käivitada `baseline`. |
| SSRF blokeeritud (privaatne IP) | Teata `validate_url()` tagasilükkamine. Ära kunagi mööda mine. |
| SQLite andmebaas puudub | Loo automaatselt esimesel kasutamisel. Viga pole. |
| CWV toomine ebaõnnestub (API võtit pole) | Salvesta CWV väljadele `null`. Jäta CWV reeglid võrdluse ajal vahele. |
| Leht tagastab 4xx/5xx | Jäädvusta ikkagi baasjoonena (staatuskood ON jälgitav väli). |
| Mitmeid baasjooni eksisteerib | Kasuta kõige hilisemat, kui `--baseline-id` pole määratud. |

---

## Turvalisus

- **Kõik URL-i toomised** käivad `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run fetch_page.py` kaudu, mis jõustab SSRF kaitse
  (blokeerib privaatsed IP-d, loopback’i, reserveeritud vahemikud, GCP metadata lõpp-punktid)
- **Ei curl’i, ei subprocess HTTP kutseid** — ainult projekti valideeritud fetch-toru
- **Kõik SQLite päringud** kasutavad parametriseeritud kohatäiteid (`?`), mitte kunagi stringi interpolatsiooni
- **TLS alati kontrollitud** — `verify=False` pole torustikus kusagil

---

## Tüüpilised töövood

### Enne/pärast juurutamise kontroll
```
/seo drift baseline https://example.com     # Before deploy
# ... deploy happens ...
/seo drift compare https://example.com      # After deploy
```

### Jätkuv jälgimine
```
/seo drift baseline https://example.com     # Initial capture
# ... weeks later ...
/seo drift compare https://example.com      # Check for drift
/seo drift history https://example.com      # Review all changes
```

### Liikluse languse uurimine
```
/seo drift compare https://example.com      # What changed?
/seo drift history https://example.com      # When did it change?
```