Přejít na obsah

SEO skóre — transparentní, verzované, součást Pro

Sken Pro přiřadí každé stránce SEO skóre 0–100, tedy jedno číslo, které při přechodu z Rank Math nebo Yoastu očekáváte. Na rozdíl od neprůhledného hodnocení je plně dohledatelné: každý odečtený bod odpovídá přesně jednomu problému skenu a stejná sada problémů vždy vytvoří stejné číslo.

score = 100 − Σ penalty(issue) for each scored issue   (floored at 0)

Jedno číslo, jeden vlastník

Číselné skóre je funkcí Pro. Ukládá se do záznamu seo_scan_results v Pro, nikdy zpět do seo_meta v Core; starý sloupec seo_score byl v Core 3 odstraněn. Bezplatný seo:audit v Core hlásí u stránek pass / warn / fail, tedy úspěch, upozornění nebo chybu, bez čísla. Skóre je přidanou hodnotou placeného balíčku.

Kritéria hodnocení

Skóre se počítá podle zveřejněných a verzovaných kritérií v Rankbeam\Seo\Pro\Scanning\ScoreRubric. Definují je dvě věci: výslovný seznam započítávaných kódů problémů a pevná srážka podle závažnosti.

ZávažnostSrážkaVýznam
critical−40Nález s vysokým dopadem podle těchto kritérií.
warning−15Nález, který je vhodné brzy prošetřit.
notice−5Doporučené zlepšení.

Závažnost každého kódu se čte přímo z registru problémů, jediného zdroje pravdy. Kritéria ji znovu neodvozují. Každý kód má právě jednu závažnost, aby skóre zůstalo deterministické.

Co se do skóre započítává

Jde o deterministické kontroly zvolené podle produktových kritérií Rankbeamu, včetně heuristik vyžadujících redakční posouzení. Kritický problém stojí 40 bodů, upozornění 15 a oznámení 5. Skóre nepředpovídá výkon ve vyhledávání.

KódZávažnostSrážka
missing_titlecritical−40
missing_descriptionwarning−15
missing_og_imagenotice−5
duplicate_titlewarning−15
duplicate_descriptionwarning−15
title_too_longwarning−15
title_too_shortnotice−5
description_too_longwarning−15
description_too_shortnotice−5
robots_conflict_indexingcritical−40
robots_conflict_followingwarning−15
noindex_warningwarning−15
invalid_canonicalcritical−40
cross_domain_canonicalwarning−15
shared_canonicalnotice−5
insecure_canonicalwarning−15
http_errorcritical−40
empty_responsecritical−40
missing_canonicalnotice−5
missing_h1notice−5
missing_image_altwarning−15
thin_contentnotice−5
mixed_contentwarning−15
canonical_target_brokencritical−40
canonical_target_redirectwarning−15
canonical_target_noindexwarning−15

Kódy metadat se zjišťují při skenování modelu, zatímco kódy vykreslování a sítě pouze při skenování URL; viz třídy provádění. Skóre cíle typu model proto odráží kontroly metadat a skóre cíle typu URL vykreslenou stránku. Skóre modelu 100 znamená „žádné vady metadat“, nikoli „vykreslená stránka je dokonalá“. K tomu oskenujte URL.

Co se do skóre záměrně NEZAPOČÍTÁVÁ

Tyto kódy registru jsou výslovně vyloučené. Vyloučení je součástí kontraktu: test ověřuje, že každý kód registru se buď započítává, nebo je uveden zde.

KódProč je vyloučený
missing_focus_keywordDoporučení. Vyžaduje volitelný postup seo.keywords.enabled. Stránka nesmí získat nižší skóre jen proto, že nepoužívá hlavní klíčová slova, a skóre nesmí záviset na konfiguračním příznaku.
noindex_pageInformace. noindex je záměrný stav, nikoli vada kvality metadat. Heuristika „noindex s kanonickou URL vlastní stránky“ se místo toho hodnotí přes noindex_warning.
multiple_h1Informace. Google toleruje více H1, proto za ně není srážka.
blocked_urlChybějící důkaz. SsrfGuard odmítl načtení, takže stránka nebyla zkontrolována. Nejde o vadu stránky.
canonical_target_blockedChybějící důkaz. Kanonický cíl nebylo možné ověřit. Nejde o vadu stránky.
hreflang_invalid_code, hreflang_missing_self_reference, hreflang_duplicate_code, hreflang_missing_x_defaultZatím doporučení. Tyto kódy hreflang v Pro se zobrazují ve skenu. Bezplatný audit má vlastní kódy hreflang; skóre se jimi zatím nemění. Jejich započítání by vyžadovalo zvýšení VERSION.
html_lang_missing, html_lang_invalid, html_lang_mismatchDoporučení. Jazykové kontroly jsou z těchto kritérií vyloučené.
hreflang_not_reciprocalDoporučení. Volitelná kontrola vzájemnosti odkazů se neboduje.
hreflang_target_unverifiedChybějící důkaz. Vzájemnost odkazů nebylo možné ověřit.
aeo_missing_author, aeo_article_missing_dateDoporučení. Signály připravenosti pro odpovědi (AEO) ve skenu a bezplatném auditu označují článek bez entity autora nebo data publikace. Skóre nemění; to by vyžadovalo zvýšení VERSION.

Hustota klíčových slov, působivá slova a zbytek kontrolního seznamu stránky do skóre vůbec nevstupují. Jsou to doporučující kontroly v samostatném seznamu pass/warn/fail, nikoli kódy registru.

Verzování — historické skóre se nikdy tiše nemění

Každé uložené skóre je označené hodnotou ScoreRubric::VERSION, která jej vytvořila (rubric_version). Má to dva důsledky:

  • Nový kód problému nemá žádný bodový dopad, dokud není záměrně přidán do seznamu. Vydání nové kontroly tak nikdy zpětně nezmění uložené skóre. Změna seznamu nebo vah je sama změnou kritérií a zvyšuje jejich verzi.
  • Skóre je uložené a při čtení se nepřepočítává. Číslo, které jste viděli minulý týden, uvidíte i dnes spolu s kritérii, která ho vysvětlují.

Kam se ukládá

Každý sken vloží nebo aktualizuje jeden řádek na cíl v seo_scan_results:

SloupecCo obsahuje
scannable_type / scannable_idHodnocený model; null u cílů typu URL.
urlHodnocená URL.
scoreČíslo 0–100.
rubric_versionKritéria, podle kterých vzniklo.
penalty_totalHrubý součet srážek před omezením výsledku zdola nulou.
scored_issuesKolik problémů číslo ovlivnilo.
breakdown[{code, severity, penalty}, …] — úplný rozpis.
keywords_enabledStav seo.keywords.enabled při skenování; zaznamenává se pro transparentnost, skóre na něm nezávisí.
scan_run_idBěh, který skóre vytvořil. Při odstranění běhu se nastaví null, řádek se neodstraní: skóre je aktuální stav, nikoli historie běhů.
scored_atKdy bylo skóre vypočítáno.

Čtení skóre

Bez panelu — nejnovější skóre modelu:

php
use Rankbeam\Seo\Pro\Facades\SeoPro;

$result = SeoPro::resultFor($post);

$result?->score;     // e.g. 85
$result?->grade();   // 'A'..'F'
$result?->breakdown; // [['code' => 'cross_domain_canonical', 'severity' => 'warning', 'penalty' => 15]]

php artisan seo-pro:scan-status vypisuje v souhrnu průměrné skóre webu. Přehled Filamentu jej ukazuje jako hlavní statistiku „Prům. SEO skóre“ s barvou podle známky.

Pásma známek

Známka písmenem slouží k prezentaci a odvozuje se z čísla; závazná je číselná hodnota:

SkóreZnámka
90-100A
75-89B
50-74C
25-49D
0-24F

Signál ke kontrole před zveřejněním (noindex_warning)

noindex_warning vzniká, když stránka kombinuje noindex s kanonickou URL vlastní stránky. Rankbeam to považuje za signál ke kontrole před zveřejněním. Kanonická URL vlastní stránky nedokazuje záměr indexovat: kombinace může být úmyslná. Kanonická URL na jiné doméně tuto heuristiku nespouští. Problém obsahuje context.shipping_signal, například self_canonical, a porovnávané canonical a page_url.

Kontrolu používají oba skenery. Sken modelu (PageScanner) porovnává uloženou kanonickou adresu s URL modelu. Sken vykreslené URL (UrlScanner) povýší stránku noindex s kanonickou URL vlastní stránky z informativního noindex_page na bodovaný problém noindex_warning. Proto je samotné noindex_page vyloučené: možný konflikt řeší v obou cestách noindex_warning. Před změnou direktivy indexace ověřte skutečný záměr stránky.

Konfigurace

php
// config/seo-pro.php → 'scan'
'score' => [
    'enabled' => true, // turn the scoring pass + its persistence on/off
],

Seznam započítávaných kódů ani váhy nejsou konfigurovatelné. Pro danou hodnotu rubric_version musí být skóre deterministické ve všech instalacích. Změna výpočtu je proto změnou kritérií na úrovni kódu, nikoli nastavením.

rankbeam/laravel-seo je distribuován pod licencí MIT.