Блог

SEO 7 хв чытання

JSON-LD разметка: гатовыя прыклады і генератар на PHP

JSON-LD – фармат структураваных дадзеных, які рэкамендуе Google. У гэтым гайдзе тлумачым, што варта пазначаць, паказваем гатовыя прыклады для самых карысных тыпаў schema.org і патэрн на PHP, якім мы генеруем карэктную разметку на кожнай старонцы без ручнога JSON.

Вокладка артыкула: JSON-LD разметка: гатовыя прыклады і генератар на PHP

Коратка

  • JSON-LD - гэта блок <script type="application/ld+json"> на старонцы, які апісвае яе машынам слоўнікам schema.org.
  • Пазначайце толькі тое, што карыстач бачыць на старонцы. Разметка, якая не супадае з кантэнтам, пагражае ручнымі санкцыямі і нічога не дае.
  • Пачніце з Organization, BreadcrumbList і Article або Product, а FAQPage, Service і LocalBusiness дадавайце там, дзе яны падыходзяць.
  • Генеруйце JSON на PHP з масіваў праз json_encode, адзін @graph на старонку, са стабільнымі значэннямі @id.
  • Правярайце шаблоны ў Rich Results Test і Schema Markup Validator і сачыце за справаздачамі паляпшэнняў у Search Console.

JSON-LD разметка паведамляе пошукавым сістэмам у машыначытальным выглядзе, чым з'яўляецца старонка: артыкулам, таварам з коштам, кампаніяй з кантактамі, спісам пытанняў і адказаў. Наведвальнікі яе не бачаць, яна не замяняе добры кантэнт і сама па сабе не паднімае пазіцыі. Затое яна робіць старонку прыдатнай для пашыраных вынікаў, дапамагае пошукавікам звязаць вашыя старонкі з патрэбнай сутнасцю і дае ІІ-пошуку чысцейшая крыніца. Мы генеруем яе на кожнай старонцы integrono.com і іншых сваіх сайтаў, а гэты гайд - практычная версія гэтай працы.

JSON-LD, Microdata і RDFa

Слоўнік schema.org можна ўбудаваць трыма сінтаксісамі. Microdata і RDFa дадаюць атрыбуты ў HTML-тэгі, з-за чаго разметка пераплятаецца з шаблонамі. JSON-LD жыве ў адным блоку script асобна ад вёрсткі, яго прасцей генераваць, тэставаць і мяняць. Google рэкамендуе JSON-LD, і мы выкарыстоўваем менавіта яго ўсюды.

Прынцыпы да прыкладаў

  • Апісвайце бачны кантэнт. Калі кошты, рэйтынгу ці FAQ няма на старонцы, іх не павінна быць і ў разметцы.
  • Выкарыстоўвайце абсалютныя URL і кананічны адрас старонкі.
  • Запаўняйце абавязковыя ўласцівасці цалкам і дадавайце рэкамендуемыя, калі ў вас ёсць рэальныя дадзеныя.
  • Звязвайце сутнасці праз @id. Аўтар артыкула - арганізацыя, апісаная адзін раз з @id, а не новая копія кожны раз.
  • Выкарыстоўвайце даты ў фармаце ISO 8601 (2026-10-28 або з часам і часавым поясам).
  • Не выдумляйце водгукі і рэйтынгі. Фальшывы AggregateRating - частая прычына ручных санкцый.

Прыклад 1. Organization (і WebSite)

Размясціце на галоўнай старонцы або ўвогуле для сайта графе. Ён апісвае сутнасць, на якую спасылаецца астатняя разметка.

{
  "@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"
  ]
}

Прыклад 2. BreadcrumbList

Разметка хлебных крошак дазваляе Google паказваць шлях да старонкі замест волкага URL у выдачы. Яна павінна супадаць з бачнымі крошкамі.

{
  "@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"}
  ]
}

Прыклад 3. Article

Для артыкулаў блога і гайдаў. Важныя ўласцівасці: загаловак, даты, аўтар, выдавец, выява і адрас старонкі.

{
  "@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}
}

Змяняйце dateModified толькі калі кантэнт сапраўды змяніўся. Абнаўленне даты пры кожным дэплоі - ціхі спосаб страціць давер.

Прыклад 4. Product з Offer

Для старонак тавараў з бачным коштам. Укажыце наяўнасць і валюту, а aggregateRating або review дадавайце, толькі калі рэальныя водгукі паказаны на старонцы.

{
  "@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"
  }
}

Прыклад 5. Service з Offer

Для платных паслуг, напрыклад аўдыту з фіксаванай цаной або пагадзіннай кансультацыі. Такі патэрн мы выкарыстоўваем на старонках уласных паслуг.

{
  "@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"
  }
}

Прыклад 6. FAQPage

Разметка FAQ апісвае спіс пытанняў і адказаў, якія бачныя на старонцы. Улічыце, што з 2023 гады Google паказвае FAQ-снипеты толькі для абмежаванага круга аўтарытэтных сайтаў, таму не чакайце якія расчыняюцца адказаў у выдачы. Разметка застаецца валіднай, яе чытаюць іншыя пошукавікі і ІІ-сістэмы, і яна трымае FAQ у структуры, якую машыны могуць цытаваць.

{
  "@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."}
    }
  ]
}

Аб'яднайце ўсё ў адным @graph

На старонцы рэдка бывае адна сутнасць. Змесціце ўсё ў адзін script з дапамогай @graph і спасылайцеся на агульныя сутнасці па @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": []}
  ]
}

Бяспечная генерацыя JSON-LD на PHP

Не зьбірайце JSON радкамі ўручную. Звычка ў загалоўку ламае ўвесь блок, і пошукавік моўчкі яго ігнаруе. Збярыце масіў PHP і закадуйце яго. Важныя два наборы сцягоў: чытэльны Unicode і абарона HTML-кантэксту праз экранаванне слэшаў і тэгаў.

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 ператварае < і > у escape-паслядоўнасці, таму карыстацкі кантэнт не зможа датэрмінова зачыніць тэг script. Перадавайце ў генератар тыя ж дадзеныя, з якіх будуецца старонка (загаловак, кошт, даты), каб разметка і бачны кантэнт не разыходзіліся. На шматмоўным сайце пераводзіце тэкставыя палі і задавайце inLanguage для кожнай лакалі: менавіта так зроблена разметка артыкулаў і FAQ у гэтым блогу.

Праверка і маніторынг

  1. Rich Results Test – прыдатнасць для тыпаў пашыраных вынікаў Google.
  2. Schema Markup Validator - агульны сінтаксіс schema.org для любога тыпу.
  3. Справаздачы аб паляпшэннях у Search Console (хлебныя крошкі, тавары, FAQ і іншыя) - памылкі і папярэджанні ў маштабе сайта пасля сканавання старонак Google.
  4. Юніт-тэст, які рэндэрытуе кожны шаблон і правярае, што JSON-LD парсіцца і ўтрымоўвае патрэбныя ключы, прадухіляе рэгрэсіі пасля рэфактарынгу.

Памылкі, якія каштуюць дорага

  • Разметка кантэнту, якога няма на старонцы (схаваны FAQ, выдуманыя рэйтынгі, кошты, якія адрозніваюцца ад бачных).
  • Некалькі канфліктуючых блокаў ад плагіна і шаблону з рознымі Organization.
  • Адносныя URL, няслушныя даты або адсутнасць @id.
  • Зламаны JSON з-за ручной зборкі радкоў і неэкранаваных двукоссяў.
  • Разметка як трук для ранжыравання. Гэта інструмент яснасці, а старонка ўсё роўна павінна заслужыць пазіцыі.

Чым мы можам дапамагчы

Структураваныя дадзеныя - частка нашай працы па тэхнічным SEO: мы праектуючы схему для вашых шаблонаў, рэалізуемы генератар у вашым стэку і наладжваем праверкі, каб разметка заставалася карэктнай пасля рэлізаў. Калі жадаеце ўбачыць агульную карціну праблем сайта, пачніце з нашага чэк-ліста тэхнічнага SEO-аўдыту ці запішыцеся на кансультацыю.

Частыя пытанні

Што такое JSON-LD разметка?

Гэта блок script з дадзенымі schema.org у фармаце JSON, які апісвае змесціва старонкі для пошукавых сістэм, напрыклад артыкул, тавар, арганізацыю ці FAQ.

Ці паляпшае структураваная разметка пазіцыі?

Наўпрост няма. Яна дапамагае пошукавікам зразумець старонку і робіць яе прыдатнай для пашыраных вынікаў, што можа павысіць CTR, але не з'яўляецца патрабаваннем ранжыравання.

Куды ўстаўляць JSON-LD ?

У любое месца HTML, часцей за ўсё ў head. Ён павінен прысутнічаць у адмаляваным HTML, які атрымлівае Google, таму надзейней за ўсё генераваць яго на серверы.

Ці варта дадаваць разметку FAQPage?

Google паказвае FAQ-снипеты толькі для абмежаванага круга сайтаў, але валідную разметку чытаюць іншыя пошукавікі і ІІ-сістэмы. Дадавайце яе толькі для пытанняў і адказаў, якія бачныя на старонцы.

Як праверыць структураваныя дадзеныя?

Выкарыстоўвайце Rich Results Test ад Google для пашыраных вынікаў, Schema Markup Validator для агульнага сінтаксісу і справаздачы аб паляпшэннях у Search Console для адсочвання памылак па ўсім сайце.

Бясплатны званок для выяўлення

Прынясіце бязладны стэк ці завіслую інтэграцыю - Integrono намячае самы разумны першы крок.

Вы атрымліваеце экспертную ацэнку бюджэтных пастак, залежнасцей і таго, ці варта купляць, склейваць ці будаваць - да пачатку платнай працы. CEO застаецца ў кантуры.