Blog

SEO 7 min czytania

Dane strukturalne JSON-LD: gotowe przykłady i generator PHP

JSON-LD to format zalecany przez Google w przypadku danych strukturalnych. Ten przewodnik wyjaśnia, co należy oznaczyć, pokazuje gotowe do kopiowania przykłady najbardziej przydatnych typów schema.org oraz mały wzorzec PHP, którego używamy do generowania prawidłowych znaczników na każdej stronie bez ręcznego pisania JSON.

Ilustracja okładkowa: Dane strukturalne JSON-LD: gotowe przykłady i generator PHP

W skrócie

  • JSON-LD to blok <script type="application/ld+json"> na stronie, który opisuje go maszynom przy użyciu słownictwa schema.org.
  • Zaznacz tylko to, co użytkownicy mogą zobaczyć na stronie. Znaczniki niezgodne z treścią ryzykują ręczne działania i nic nie dają.
  • Zacznij od Organization, BreadcrumbList i Article lub Product; dodaj FAQPage, Service lub LocalBusiness tam gdzie pasują.
  • Wygeneruj JSON w PHP z tablic za pomocą json_encode, jeden @graph na stronę, ze stabilnymi wartościami @id.
  • Sprawdzaj szablony za pomocą Rich Results Test i Schema Markup Validator oraz monitoruj raporty ulepszeń Search Console.

Dane strukturalne JSON-LD to sposób na poinformowanie wyszukiwarek w formie czytelnej maszynowo, czym jest strona: artykuł, produkt z ceną, firma z danymi kontaktowymi, lista pytań i odpowiedzi. Jest niewidoczny dla odwiedzających, nie zastępuje dobrych treści i sam w sobie nie podnosi rankingów. Funkcja ta sprawia, że strona może wyświetlać wyniki z rozbudowanymi wynikami, pomaga wyszukiwarkom łączyć strony z właściwymi elementami i zapewnia wyszukiwanie oparte na sztucznej inteligencji czystsze źródło do czytania. Generujemy go na każdej stronie integrono.com i innych naszych witryn, a ten przewodnik jest praktyczną wersją tej pracy.

JSON-LD vs Microdata vs RDFa

Słownictwo Schema.org można osadzić w trzech składniach. Microdata i RDFa umieszczają atrybuty w tagach HTML, co powoduje splątanie znaczników z szablonami. JSON-LD żyje w jednym bloku skryptu, oddzielonym od układu, dzięki czemu łatwiej jest go generować, testować i zmieniać. Google twierdzi, że zaleca JSON-LD i tego właśnie używamy wszędzie.

Zasady przed przykładami

  • Opisz widoczną treść. Jeśli na stronie nie ma ceny, oceny lub często zadawanych pytań, nie umieszczaj ich w znacznikach.
  • Użyj bezwzględnych adresów URL i kanonicznego adresu URL strony.
  • Uzupełnij wymagane właściwości i dodaj zalecane, gdy masz prawdziwe dane.
  • Użyj @id, aby połączyć elementy. Autorem artykułu jest organizacja zdefiniowana raz za pomocą @id, a nie za każdym razem nowa kopia.
  • Użyj dat w ISO 8601 (2026-10-28 lub z czasem i strefą).
  • Nie wymyślaj recenzji ani ocen. Fałszywe dane AggregateRating są częstą przyczyną ręcznych działań.

Przykład 1. Organizacja (i witryna internetowa)

Umieść to na stronie głównej lub na wykresie obejmującym całą witrynę. Definiuje podmiot, do którego odnosi się inny znacznik.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#organization",
  "name": "Example Studio",
  "url": "https://example.com/",
  "logo": "https://example.com/images/logo.png",
  "email": "[email protected]",
  "sameAs": [
    "https://github.com/example",
    "https://www.linkedin.com/company/example"
  ]
}

Przykład 2. Lista BreadcrumbList

Znacznik Breadcrumb pozwala Google wyświetlać w wynikach ścieżkę do strony zamiast nieprzetworzonego adresu URL. Musi pasować do widocznej bułki tartej.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/"},
    {"@type": "ListItem", "position": 2, "name": "Blog", "item": "https://example.com/blog"},
    {"@type": "ListItem", "position": 3, "name": "JSON-LD guide", "item": "https://example.com/blog/json-ld-guide"}
  ]
}

Przykład 3. Artykuł

Do wpisów na blogu i przewodników. Właściwości, które mają znaczenie: nagłówek, daty, autor, wydawca, obraz i adres URL strony.

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "JSON-LD structured data: examples",
  "description": "Short summary of the article.",
  "url": "https://example.com/blog/json-ld-guide",
  "mainEntityOfPage": "https://example.com/blog/json-ld-guide",
  "inLanguage": "en",
  "datePublished": "2026-08-23",
  "dateModified": "2026-10-28",
  "author": {"@id": "https://example.com/#organization"},
  "publisher": {"@id": "https://example.com/#organization"},
  "image": {"@type": "ImageObject", "url": "https://example.com/images/blog/json-ld.webp", "width": 1200, "height": 630}
}

Zmień dateModified tylko wtedy, gdy treść naprawdę się zmienia. Wpadanie na niego przy każdym wdrożeniu to cichy sposób na utratę zaufania.

Przykład 4. Produkt z ofertą

Dla stron produktów z widoczną ceną. Uwzględnij dostępność i walutę; dodaj aggregateRating lub review tylko wtedy, gdy na stronie wyświetlane są prawdziwe recenzje.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Example product",
  "description": "What it is and who it is for.",
  "image": ["https://example.com/images/product.webp"],
  "sku": "EX-001",
  "brand": {"@type": "Brand", "name": "Example"},
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/product/ex-001",
    "priceCurrency": "EUR",
    "price": "49.00",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  }
}

Przykład 5. Usługa z ofertą

W przypadku usług płatnych, takich jak audyt w stałej cenie lub konsultacja godzinowa. Używamy tego wzorca na naszych własnych stronach usług.

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Architecture review",
  "serviceType": "Software architecture analysis",
  "provider": {"@id": "https://example.com/#organization"},
  "areaServed": "Worldwide",
  "offers": {
    "@type": "Offer",
    "price": "200",
    "priceCurrency": "EUR",
    "url": "https://example.com/services/architecture-review"
  }
}

Przykład 6. Strona FAQ

Znacznik FAQ opisuje listę pytań i odpowiedzi widocznych na stronie. Należy pamiętać, że od 2023 r. Google wyświetla szczegółowe wyniki z często zadawanymi pytaniami tylko dla ograniczonego zestawu wiarygodnych witryn, dlatego nie należy spodziewać się w wynikach odpowiedzi, które można rozszerzyć. Znacznik jest nadal ważny, nadal czytelny dla innych wyszukiwarek i systemów sztucznej inteligencji, a także utrzymuje strukturę często zadawanych pytań w sposób umożliwiający cytowanie przez maszyny.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Do I need structured data to rank?",
      "acceptedAnswer": {"@type": "Answer", "text": "No. It is not a ranking requirement, but it can make pages eligible for rich results."}
    }
  ]
}

Połącz wszystko w jednym @grafie

Strona rzadko ma tylko jeden element. Umieść je wszystkie w jednym skrypcie za pomocą @graph i odwołuj się do współdzielonych jednostek przez @id:

{
  "@context": "https://schema.org",
  "@graph": [
    {"@type": "Organization", "@id": "https://example.com/#organization", "name": "Example Studio"},
    {"@type": "Article", "headline": "...", "author": {"@id": "https://example.com/#organization"}},
    {"@type": "BreadcrumbList", "itemListElement": []},
    {"@type": "FAQPage", "mainEntity": []}
  ]
}

Bezpieczne generowanie JSON-LD w PHP

Nie łącz JSON ręcznie. Cytat w tytule przerywa cały skrypt, a wyszukiwarka po cichu go ignoruje. Zbuduj tablicę PHP i zakoduj ją. Liczą się dwie flagi: zachowaj czytelność Unicode i chroń kontekst HTML, unikając ukośników i tagów.

function jsonLdScript(array $graph): string
{
    $data = ['@context' => 'https://schema.org', '@graph' => $graph];
    $json = json_encode(
        $data,
        JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP | JSON_THROW_ON_ERROR
    );
    return '<script type="application/ld+json">' . $json . '</script>';
}

$graph = [
    ['@type' => 'Organization', '@id' => $site . '/#organization', 'name' => 'Example Studio', 'url' => $site . '/'],
    [
        '@type'         => 'Article',
        'headline'      => $title,
        'url'           => $canonical,
        'datePublished' => $published,
        'dateModified'  => $modified,
        'author'        => ['@id' => $site . '/#organization'],
    ],
];
echo jsonLdScript($graph);

JSON_HEX_TAG zamienia < i > w sekwencje ucieczki, dzięki czemu treść użytkownika nigdy nie będzie mogła wcześniej zamknąć tagu skryptu. Zasil generator tymi samymi danymi, które renderują stronę (tytuł, cena, daty), aby znaczniki i widoczna treść nie mogły się od siebie oddalić. W witrynie wielojęzycznej przetłumacz pola tekstowe i ustaw inLanguage według ustawień regionalnych; w ten sposób powstają artykuły i znaczniki FAQ na tym blogu.

Waliduj i monitoruj

  1. Rich Results Test sprawdzający kwalifikowalność typów wyników z elementami rozszerzonymi Google.
  2. Schema Markup Validator dla ogólnej składni schema.org dowolnego typu.
  3. Raporty ulepszeń Search Console (nawigacja, produkty, często zadawane pytania itd.) pod kątem błędów i ostrzeżeń na dużą skalę po zaindeksowaniu Twoich stron przez Google.
  4. Test jednostkowy, który renderuje każdy szablon i sprawdza, czy JSON-LD analizuje i zawiera wymagane klucze, zapobiega regresji po refaktoryzowaniu.

Błędy, które Cię kosztują

  • Oznaczenia treści, których nie ma na stronie (ukryte FAQ, wymyślone oceny, ceny różniące się od widocznych).
  • Kilka sprzecznych bloków wtyczki i szablonu, każdy z inną Organization.
  • Względne adresy URL, błędne daty lub brakujący @id.
  • Zepsuty JSON z ręcznego budowania ciągów i cudzysłowów bez ucieczki.
  • Traktowanie schematu jako sztuczki rankingowej. Jest to narzędzie zapewniające przejrzystość; strona nadal musi zasługiwać na ranking.

Jak możemy pomóc

Dane strukturalne to część naszej technicznej pracy związanej z SEO: projektujemy schemat Twoich szablonów, implementujemy generator na Twoim stosie i konfigurujemy weryfikację, aby pozostała poprawna po wydaniu. Jeśli chcesz mieć przegląd tego, co jest nie tak w Twojej witrynie, zacznij od naszej listy kontrolnej technicznego audytu SEO lub umów się na konsultację.

Najczęściej zadawane pytania

Co to są dane strukturalne JSON-LD ?

JSON-LD to blok skryptu zawierający dane schema.org w formacie JSON, który opisuje zawartość strony dla wyszukiwarek, na przykład artykuł, produkt, organizację lub FAQ.

Czy dane strukturalne poprawiają rankingi?

Nie bezpośrednio. Pomaga wyszukiwarkom zrozumieć stronę i może zapewnić jej dostęp do bogatych wyników, co może poprawić współczynnik klikalności, ale nie jest to wymóg rankingowy.

Gdzie umieścić skrypt JSON-LD ?

Gdziekolwiek w nagłówku HTML lub treści strony; większość witryn wkłada to do głowy. Musi być obecny w wyrenderowanym kodzie HTML pobieranym przez Google, więc generowanie po stronie serwera jest najbezpieczniejszym podejściem.

Czy nadal warto dodać znaczniki FAQPage?

Google wyświetla teraz szczegółowe wyniki z często zadawanymi pytaniami tylko dla ograniczonego zestawu witryn, ale prawidłowe znaczniki często zadawanych pytań pozostają czytelne dla innych wyszukiwarek i systemów sztucznej inteligencji. Dodaj go tylko dla pytań i odpowiedzi widocznych na stronie.

Jak testować dane strukturalne?

Użyj Rich Results Test Google, aby uzyskać odpowiednie wyniki z elementami rozszerzonymi, Schema Markup Validator w celu sprawdzenia ogólnej składni oraz raportów ulepszeń Search Console, aby śledzić błędy w całej witrynie.

Bezpłatna rozmowa odkrywcza

Bałagan w stacku albo zawieszona integracja - Integrono zaplanuje najmądrzejszy pierwszy ruch.

Dostajesz senior-ocenę pułapek budżetowych, zależności i tego, czy kupować, sklejać czy budować - zanim zacznie się płatna praca. CEO zostaje w pętli.