Ghid tehnic
De ce markup-ul tău valid nu produce rezultate îmbogățite
„Se parsează fără erori” și „este valid pentru tipul declarat” sunt două lucruri diferite. Al doilea decide dacă primești un rezultat îmbogățit.
Actualizat la · Echipa BrandScan
Cele două niveluri de validare
Aproape toate instrumentele gratuite verifică doar primul nivel: blocul `application/ld+json` este JSON corect sintactic. Trece orice site care nu are o virgulă în plus.
Al doilea nivel este cel care contează: tipul declarat are proprietățile pe care le cere vocabularul Schema.org, iar valorile lor au forma așteptată. Un `Organization` fără `logo` se parsează perfect și nu produce niciun knowledge panel. Un `Article` cu `datePublished: "15 ianuarie 2026"` este JSON valid și o dată invalidă.
// Se parsează. Nu produce nimic.
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Exemplu SRL"
}
// Complet pentru tipul declarat.
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Exemplu SRL",
"url": "https://exemplu.ro",
"logo": "https://exemplu.ro/logo.png",
"sameAs": ["https://www.linkedin.com/company/exemplu"]
}Proprietățile obligatorii pe tipurile uzuale
Lista de mai jos acoperă tipurile pe care le întâlnești pe un site comercial obișnuit. Dacă lipsește oricare dintre proprietățile marcate ca obligatorii, tipul este ignorat la generarea rezultatelor îmbogățite.
- · Organization — `name`, `url`, `logo`. Recomandate: `sameAs`, `description`, un punct de contact.
- · LocalBusiness — pe lângă cele de la Organization: `address`. Fără adresă nu ești eligibil pentru rezultate locale.
- · Article — `headline` și `datePublished` în format ISO 8601. Recomandate: `author.name`, `dateModified`, `image`.
- · FAQPage — `mainEntity[]`, fiecare cu `name` și `acceptedAnswer.text`. O întrebare fără răspuns invalidează intrarea.
- · Product — `name`, `image` și `offers` cu `price`, `priceCurrency` și `availability`.
- · BreadcrumbList — `itemListElement[]` cu cel puțin două niveluri, fiecare cu `position` și `name`.
- · AggregateRating — `ratingValue` și `reviewCount` (sau `ratingCount`).
Stelele fără număr de recenzii sunt respinse
Cea mai frecventă cauză de respingere a markup-ului de rating este un `AggregateRating` cu `ratingValue` dar fără `reviewCount` sau `ratingCount`. Un rating fără nimic în spate nu poate fi verificat, așa că este ignorat în tăcere — vezi markup-ul „valid” în instrumentele de test și nu vezi niciodată stelele în rezultate.
Regula practică: dacă afișezi stele, numărul de recenzii trebuie să fie și în markup, și vizibil pe pagină. Markup-ul care descrie ceva ce utilizatorul nu poate vedea este o încălcare a ghidurilor, nu doar o omisiune tehnică.
{
"@type": "AggregateRating",
"ratingValue": 4.8,
"reviewCount": 132,
"bestRating": 5
}Consecvența entității între pagini
O problemă care nu apare la testarea unei singure pagini: aceeași organizație descrisă diferit de la o pagină la alta. Numele scris în două feluri, un logo pe pagina principală și altul pe blog, profiluri sociale prezente doar undeva.
Pentru un consumator automat, două descrieri diferite pot însemna două entități diferite, iar semnalele se împart în loc să se adune. Fiecare pagină validează perfect în izolare și totuși rezultatul nu apare.
Soluția este structurală, nu de conținut: generează blocul Organization dintr-o singură sursă comună în șablon, nu manual pe fiecare pagină.
Breadcrumb-ul trebuie să reflecte adresa reală
Un `BreadcrumbList` care declară un singur nivel pe o pagină aflată la `/servicii/consultanta/audit` contrazice structura reală a adresei. Contradicția este vizibilă automat, iar markup-ul devine nesigur ca sursă.
Verifică simplu: numărul de intrări din breadcrumb ar trebui să corespundă segmentelor din cale, iar adresele din `item` trebuie să fie absolute și pe același domeniu.
Cum verifici corect
Un instrument care spune doar „JSON-LD valid” nu îți răspunde la întrebarea care contează. Verifică pe tip, pe fiecare șablon de pagină, nu doar pe pagina principală.
- · Testează câte o pagină din fiecare șablon: acasă, categorie, produs sau articol, contact.
- · Confirmă că fiecare tip declarat are proprietățile obligatorii de mai sus.
- · Compară blocul Organization între două-trei pagini diferite, caracter cu caracter.
- · Verifică datele în format ISO 8601 (`2026-01-15`), nu în format local.
- · Asigură-te că adresele din markup sunt absolute, nu relative.
Întrebări frecvente
JSON-LD sau microdate?
JSON-LD. Este formatul recomandat de Google, se poate genera într-un singur loc în șablon și nu se amestecă cu HTML-ul de prezentare, deci se strică mult mai rar la o modificare de design.
Pot declara mai multe tipuri pe aceeași pagină?
Da, și de obicei chiar trebuie. O pagină de articol are în mod normal Article, BreadcrumbList și Organization ca publisher. Folosește `@graph` pentru a le lega între ele prin `@id` în loc să repeți aceleași date.
Markup-ul garantează un rezultat îmbogățit?
Nu. Markup-ul corect este condiția necesară, nu suficientă: face pagina eligibilă. Afișarea rămâne la latitudinea motorului și depinde de calitatea paginii și de context.
Ce fac dacă validatorul nu semnalează nicio eroare, dar rezultatele tot nu apar?
Verifică în ordine: proprietățile obligatorii pentru tipul respectiv, consecvența entității între pagini, corespondența dintre ce spune markup-ul și ce se vede efectiv pe pagină, și dacă pagina este indexabilă. Cauza este aproape întotdeauna una dintre acestea patru.
Verifică-ți site-ul acum
Rulează gratuit verificările din acest ghid pe propriul site.