Vysvětlení vyhodnocení (seo:explain)
Rankbeam vyhodnocuje SEO stránky podle vrstev přednosti: konfigurace, databázové výchozí hodnoty — globální, typu modelu a routy —, vypočtené hodnoty modelu a nakonec explicitní seo_meta. Následuje zpracování přípony titulku, kanonické adresy a převodu obrázků na absolutní URL a ochrana indexování. Pokud vykreslený <title> nebo značka robots neodpovídá očekávání, seo:explain přesně ukáže, která vrstva nastavila jednotlivá pole a co přepsala.
Příkaz pouze čte, nepotřebuje síť ani licenci a neimplementuje slučování znovu. Původ hodnot získává z příspěvků jednotlivých vrstev samotného resolveru a výsledné hodnoty ze skutečného resolveru, takže se vysvětlení nemůže rozejít s vykresleným výstupem.
Použití
# Explain a specific record
php artisan seo:explain "App\Models\Post" 42
# Explain the first record of a model
php artisan seo:explain "App\Models\Post"
# With a route-defaults layer and a locale
php artisan seo:explain "App\Models\Post" 42 --route=posts.show --locale=de
# Machine-readable
php artisan seo:explain "App\Models\Post" 42 --jsonModel musí používat trait HasSEO.
Čtení výstupu
SEO resolution — Post #42 (locale: en, route: posts.show)
Layers, low → high: config · global · model-type · route · computed · explicit
Field Final value Set by Overrode
title My Post | Acme computed —
↳ title suffix ' | Acme' appended
description A hand-written summary… explicit computed: "An auto excerpt…"
canonical https://acme.com/blog/my-post post-processing —
↳ derived from model getUrlForSEO() (query string stripped)
robots noindex,nofollow explicit config: index,follow
↳ indexing guard forced 'noindex,nofollow' (environment 'staging' …)
og_image https://acme.com/share.jpg explicit config: /default-og.jpg
↳ absolutized from '/share.jpg'- Set by — vítězná vrstva, tedy vrstva s nejvyšší předností, která nastavila hodnotu jinou než null. Případně
post-processing, pokud pole nenastavila žádná vrstva a hodnota byla odvozena: kanonická adresa z URL požadavku či modelu, og:url z kanonické adresy nebo absolutní URL obrázku. - Overrode — všechny nižší vrstvy, které nabídly hodnotu a prohrály, v pořadí. Uvidíte, co bylo překryto.
- ↳ notes — následné zpracování, které po sloučení vrstev změnilo hodnotu: přípona titulku, odstranění parametrů kanonické URL, odvození og:url, převod obrázku na absolutní URL a ochrana indexování vynucující
noindexnad všemi vrstvami.
og:type a twitter:card
Tyto hodnoty mají výchozí nastavení frameworku odlišné od null (website / summary_large_image), takže nejvyšší vrstva, která je nastaví — obvykle computed — má přednost před config. Stránka bez uloženého řádku seo_meta k nim ničím nepřispívá, takže vypočtené og:type, například article, nikdy nepřekryje pouhé website. To odpovídá skutečnému slučování.
Vyhodnocení na úrovni webu
Podle doplnění záznamu konfigurace webu seo:explain uvádí také celowebové hodnoty, u kterých bývá původ nejasný: který zdroj nastavil hostitele kanonických adres, název webu a výchozí jazykovou verzi:
Site-level resolution
Value Resolved Source
Site name Acme env (APP_NAME)
Default locale en config (app.locale)
Canonical host acme.com programmatic (model getUrlForSEO())Zvlášť důležité je zkontrolovat hostitele kanonických adres. Nesprávný hostitel — uniklé localhost, http:// na webu https nebo URL aplikace neodpovídající URL modelu — je běžnou příčinou chybných kanonických odkazů na vlastní stránky.
Výstup JSON
--json vypíše úplný průběh: target, hodnoty jednotlivých polí winner / losers / final / notes a záznam site_level pro nástroje nebo CI:
{
"target": { "model": "App\\Models\\Post", "id": 42, "route": "posts.show", "locale": "en" },
"fields": {
"title": {
"final": "My Post | Acme",
"winner": { "layer": "computed", "value": "My Post" },
"losers": [],
"notes": ["title suffix ' | Acme' appended"]
}
},
"site_level": {
"canonical_host": { "value": "acme.com", "source": "programmatic (model getUrlForSEO())" }
}
}Související
- Pořadí přednosti resolveru — úplný řetězec sledovaný
seo:explain. - Bezplatný SEO audit —
seo:audithledá, co je špatně;seo:explainukazuje, proč má hodnota právě tuto podobu.