Strukturált adatok Szakszó

JSON-LD

Szerző: · 7 perc olvasás · Frissítve:
JSON-LD - Strukturált adatok (szakszó) a tudástárban
JSON-LD - Strukturált adatok | eClick GEO-audit tudástár

A JSON-LD egy adatformátum, amivel géppel olvasható tényeket teszel az oldalra, külön <script type="application/ld+json"> blokkban. A látható tartalmat nem változtatja meg, csak leírja: ki vagy, mit árulsz, mennyibe kerül, ki írta a cikket.

Hogyan működik

A blokk egy sima JSON-objektum. A @context mondja meg, melyik szótárat használod, ez szinte mindig a https://schema.org. A @type adja meg az entitás típusát, például Organization, Product vagy Article. A kulcsok és az értékek a schema.org szókincsből jönnek.

A böngésző ezt a blokkot nem rajzolja ki. A robotok viszont kiolvassák, és összekötik a látható tartalommal. Három jelölési mód létezik a weben: microdata, RDFa és JSON-LD. A Google dokumentációja a JSON-LD-t ajánlja, mert nem kell a HTML-elemek közé keverni az adatot.

Miért jobb a másik kettőnél

A microdata attribútumokban él, így minden sablonváltás eltörheti. A JSON-LD egy különálló blokk, ezért kódból generálható és egyben tesztelhető. Több entitást is beletehetsz egyetlen blokkba a @graph (több séma egy blokkban) segítségével. Az entitások közti hivatkozást pedig a @id (entitás-azonosító a sémában) oldja meg.

Mit kezd vele egy generatív kereső

A nyelvi modellek a látható szöveget is olvassák, a JSON-LD nem helyettesíti azt. Viszont egyértelműsít. A szövegből egy modellnek ki kell találnia, hogy a „Bp., Fő utca 1.” egy cím. A JSON-LD-ben ez PostalAddress, tévedés nélkül. A riportokban azt látjuk, hogy a tiszta sémával rendelkező oldalakról az AI-összefoglalók pontosabb cégnevet és elérhetőséget idéznek.

Röviden: a JSON-LD az a réteg, ahol a gépnek szó szerint kimondod azt, amit az embernek csak megmutatsz.

Miért fontos

A JSON-LD a legolcsóbb módja annak, hogy a gép ne találgasson az oldaladról.

  • Rich result esély: az értékelés-csillag, az ár, a GYIK-harmonika és a morzsamenü a találati oldalon mind strukturált adatból jön.
  • Entitás-felismerés: a cégnév, a logó és a profiloldalak összekapcsolása ezen múlik, lásd sameAs.
  • AI-válaszok pontossága: a modellnek nem kell a lábléc szövegéből visszafejtenie a telefonszámot.
  • Hibatűrés: ha a JSON szintaktikailag hibás, a feldolgozó az egész blokkot eldobja. Nincs részleges pontszám.

A magyar KKV-oldalak többségén vagy egyáltalán nincs JSON-LD, vagy csak egy üres WebSite blokk van, tényleges adat nélkül. Ez ugyanannyit ér, mint a semmi.

Mit néz ebből a riport

Az audit megnézi, van-e egyáltalán application/ld+json blokk a HTML-ben, és lefut-e rajta a JSON-értelmezés. Ellenőrzi a @context és a @type meglétét, és azt, hogy a fontos típusok szerepelnek-e. Ha a blokk hibás szintaxisú, azt külön jelzi, mert az a keresőnél is teljes kiesést jelent.

Kikre vonatkozik

Minden nyilvános oldalra vonatkozik, de nem mindegyikre ugyanúgy.

  • Webshop: kötelező szint. Termékoldalon Product és Offer, a bolt adataira Organization.
  • Szolgáltató KKV: Organization vagy LocalBusiness, plusz a kapcsolati adatok.
  • Blog, hírportál: Article a szerzővel és a dátummal.
  • Egyoldalas bemutatkozó: itt is elég egy jó Organization blokk.

Nem vonatkozik staging- és fejlesztői környezetre, ott a noindex, meta robots és X-Robots-Tag a fontosabb. Zárt, bejelentkezés mögötti felületeken sincs értelme. A kosár- és pénztár-oldalakra sem kell séma.

Hogyan ellenőrzöd

  1. Nyisd meg az oldalt, és nézd meg a forrást a Ctrl+U billentyűvel.
  2. Keress rá az application/ld+json szövegre.
  3. Másold ki a blokk tartalmát, és futtasd le egy JSON-validátoron.
  4. Futtasd le az oldalt a Rich Results teszt eszközzel, ez a renderelt változatot nézi.
  5. Nézd meg a Search Console „Fejlesztések” menüpontját, ott látod az élő hibákat és a figyelmeztetéseket.

Jó jel:

  • Van legalább egy blokk, és hibátlanul értelmezhető JSON.
  • A @type valódi schema.org-típus, nem kitalált szó.
  • Az adatok egyeznek a látható tartalommal.
  • Egy oldalon nem ismétlődik ugyanaz az entitás többször.

Rossz jel:

  • A blokkban PHP- vagy JS-változó maradt, például {{ product.price }}.
  • A forrásban nincs semmi, csak a renderelt DOM-ban. Ezt a curl és a devtools összehasonlításával látod.
  • Több plugin is kiír Organization blokkot, eltérő adattal.
  • Csillagos értékelés van a sémában, de az oldalon nincs vélemény.

Hogyan javítod

WordPress

  1. Nézd meg, melyik bővítményed generál sémát. A Yoast, a Rank Math és a SEOPress is ír ki JSON-LD-t.
  2. Egyszerre csak egy forrást hagyj aktívan, különben duplikálódik az entitás.
  3. Töltsd ki a bővítmény oldalán a cég adatait, a logót és a profil-linkeket.
  4. Egyedi típushoz használd a wp_head horgot, és wp_json_encode függvénnyel írd ki az adatot.

Shopify

  1. A legtöbb téma alapból kiír Product sémát a termékoldalon.
  2. A theme.liquid és a termék-sablon fájljaiban keresd az ld+json blokkot.
  3. Ha appot is használsz sémára, kapcsold ki a téma saját kiírását.
  4. Az árat és a készletet mindig Liquid-változóból töltsd, ne kézzel.

Unas

  1. Ellenőrizd, mit generál a rendszer alapértelmezetten a termékoldalakon.
  2. A hiányzó cégadatokat a sablonszerkesztőben, saját HTML-blokkban told be.
  3. A blokk a </head> elé vagy a <body> végére is kerülhet, mindkettő érvényes.

Shoprenter

  1. A sablonszerkesztőben keresd meg a fejléc-sablont.
  2. Illessz be egy saját ld+json blokkot a bolt adataival.
  3. Termékoldalon a sablonváltozókat használd, hogy az ár mindig szinkronban legyen.

Egyedi fejlesztés

  1. Egyetlen szerveroldali helyen állítsd elő a sémát, ne szórd szét a sablonokban.
  2. Használj @graph (több séma egy blokkban) szerkezetet, és kösd össze az entitásokat @id (entitás-azonosító a sémában) értékekkel.
  3. Az értékeket ugyanabból az adatforrásból vedd, amiből a látható tartalom jön.
  4. Tegyél a CI-be egy egyszerű JSON-parse ellenőrzést a generált oldalakra.

Gyakori hibák

  • Hibás JSON szintaxis: egy felesleges vessző miatt az egész blokkot eldobja a feldolgozó.
  • Kitöltetlen sablonváltozó: a {{ price }} maradvány a forrásban azt jelenti, hogy soha nem nézte meg senki.
  • Duplikált entitás: két bővítmény két különböző cégnevet ír ki, a kereső nem tudja, melyik az igaz.
  • Látható tartalom nélküli adat: ha a sémában szereplő ár az oldalon nem jelenik meg, az irányelvsértés.
  • Kitalált típusnevek: a @type csak schema.org-ban létező típus lehet, különben figyelmen kívül marad.
  • Csak JS-ből beszúrt blokk: a kliensoldali séma késve vagy egyáltalán nem jut el minden feldolgozóhoz.
  • Relatív URL-ek: az @id és a url mezőben mindig teljes, abszolút cím kell.

Technikai példa

Egy minimális, de használható cégblokk. A @id teszi lehetővé, hogy más entitások hivatkozzanak rá.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://pelda.hu/#organization",
  "name": "Példa Kft.",
  "url": "https://pelda.hu/",
  "logo": "https://pelda.hu/logo.png",
  "telephone": "+36 1 234 5678",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Fő utca 1.",
    "addressLocality": "Budapest",
    "postalCode": "1011",
    "addressCountry": "HU"
  },
  "sameAs": [
    "https://www.facebook.com/pelda",
    "https://www.linkedin.com/company/pelda"
  ]
}
</script>

Így nézed meg, hogy a blokk a nyers HTML-ben is benne van-e, nem csak a renderelt DOM-ban:

curl -s https://pelda.hu/ | grep -c 'application/ld+json'

Ha az eredmény 0, de a devtools Elements fülén látod a blokkot, akkor JavaScript szúrja be. Ez a legtöbb feldolgozónál kockázatos.

Gyakori kérdések

A head-be vagy a body-ba tegyem a JSON-LD-t?
Mindkettő érvényes, a Google mindkét helyen feldolgozza. A <head> a tisztább megoldás, mert ott nem keveredik a tartalommal. Ha a sablonod miatt egyszerűbb a body végére tenni, az sem hiba. A lényeg, hogy a szerver által küldött HTML-ben benne legyen.
Kaphatok büntetést a strukturált adat miatt?
A hibás séma önmagában nem büntetés, egyszerűen figyelmen kívül marad. Manuális intézkedés akkor jöhet, ha a séma olyan adatot állít, ami az oldalon nincs ott. Tipikus eset a kitalált értékelés-csillag. A látható tartalom és a séma mindig egyezzen.
Elég, ha csak JSON-LD-t teszek ki, szöveget nem írok?
Nem. A JSON-LD kiegészítő réteg, nem helyettesíti a tartalmat. A keresők és a nyelvi modellek elsődlegesen a látható szöveget dolgozzák fel, lásd strukturált adatok: így beszél az oldalad a gépekkel. Séma nélküli jó szöveg többet ér, mint szöveg nélküli jó séma.
Hány blokk lehet egy oldalon?
Technikailag több is, ezt a feldolgozók kezelik. Karbantartás szempontjából viszont egy blokk a jobb, @graph szerkezettel. Így egy helyen látod az összes entitást, és nem lesz belőlük két különböző változat.
Miért nem látszik a rich result, pedig a teszt hibátlan?
A megfelelő séma nem garancia a kiemelt megjelenésre, csak a belépő hozzá. A Google dönt arról, mikor mutatja. Ellenőrizd a Search Console Fejlesztések riportját, és adj neki néhány hetet az újrafeldolgozásra.

Források

Kapcsolódó fogalmak

A te oldaladon hogy áll a(z) „JSON-LD”?

Futtass egy GEO-auditot: pontszám, fejlesztői ítélet, a leggyorsabb javítások, és minden tételhez bizonyíték.

Ingyenes GEO-audit indítása