Schema.org to słownik ustrukturyzowanych metadanych, które dodają kontekst do treści na stronie. Google używał ich od lat dla rich snippets, ale w erze AI dostały drugi wiatr — modele językowe lepiej rozumieją treść gdy mają JSON-LD z jasnym typem encji.
JSON-LD w 60 sekund
JSON-LD (JSON for Linked Data) to sposób zapisu Schema.org wewnątrz HTML, w bloku <script type="application/ld+json">. Przykład dla artykułu:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Czym jest LLM-SEO i GEO",
"description": "Wprowadzenie do optymalizacji treści pod modele AI",
"author": {
"@type": "Organization",
"name": "Selpio"
},
"datePublished": "2026-04-19",
"mainEntityOfPage": "https://selpio.com/baza-wiedzy/czym-jest-llm-seo-geo"
}
</script>
Trzy pola są kluczowe: @context (zawsze schema.org), @type (klasa encji), reszta to właściwości tej klasy.
Dlaczego AI tego używa
Tradycyjny crawler czyta HTML i próbuje zgadnąć: “ten <h1> to tytuł? Autor jest w <div class='author'> czy <meta name='author'>?” Dla każdej strony inaczej, dużo hackowania.
JSON-LD daje jednoznaczną deklarację: to jest Artykuł, autor to ta firma, data publikacji to 2026-04-19. Model nie musi zgadywać — dostaje dane w strukturze z zasłużoną jednoznacznością.
Efekt:
- Wyższa jakość cytowań (model cytuje prawidłowego autora, właściwą datę).
- Lepsza ekstrakcja do tabel i porównań (np. porównanie cen produktów).
- Stabilniejsza widoczność w AI Overviews.
Najważniejsze typy dla LLM-SEO
1. Article — dla każdego tekstu
Każdy artykuł, blog post, case study powinien mieć Article (lub bardziej specyficzny BlogPosting, NewsArticle).
Pola wymagane (minimum): headline, author, datePublished.
Zalecane: description, image, keywords, wordCount, mainEntityOfPage.
2. FAQPage — dla sekcji pytań/odpowiedzi
Modele UWIELBIAJĄ FAQPage. To strukturalnie identyczny format z jakim rozmawiają z użytkownikami — pytanie → odpowiedź.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Czym różni się LLM-SEO od klasycznego SEO?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Klasyczne SEO optymalizuje pod Google, LLM-SEO pod ChatGPT/Claude/Perplexity. Liczy się cytowalność zamiast CTR."
}
},
{
"@type": "Question",
"name": "Czy muszę mieć llms.txt?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Nie jest wymagany, ale pomaga — to 10 minut pracy za realny wzrost widoczności w AI."
}
}
]
}
FAQPage to często najbardziej opłacalny schema dla stron informacyjnych — wysoki współczynnik cytowania z niskim kosztem implementacji.
3. HowTo — dla instrukcji
Dla artykułów typu “Jak zrobić X” używaj HowTo z listą step:
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Jak wdrożyć llms.txt",
"step": [
{ "@type": "HowToStep", "text": "Utwórz plik llms.txt z opisem strony" },
{ "@type": "HowToStep", "text": "Dodaj linki do najważniejszych podstron" },
{ "@type": "HowToStep", "text": "Umieść plik pod /llms.txt na serwerze" }
]
}
Model AI bardzo łatwo ekstraktuje kroki do uporządkowanej odpowiedzi.
4. Organization / LocalBusiness — dla firmy
Na stronie głównej i About dodaj Organization (lub LocalBusiness jeśli masz fizyczny adres):
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Selpio",
"url": "https://selpio.com",
"logo": "https://selpio.com/logo.png",
"sameAs": [
"https://twitter.com/selpio",
"https://linkedin.com/company/selpio"
]
}
Pole sameAs wpięte w profile społecznościowe pomaga modelom łączyć Twoją firmę z Jednym spójnym bytem.
5. Product — dla e-commerce
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Kawa ziarnista Arabica 1kg",
"description": "Świeżo palona kawa z Kolumbii",
"brand": { "@type": "Brand", "name": "Coffeemania" },
"offers": {
"@type": "Offer",
"price": "89.00",
"priceCurrency": "PLN",
"availability": "https://schema.org/InStock"
}
}
Jak to wdrożyć
Opcja 1 — Frameworki/CMS — większość nowoczesnych platform (Next.js, Astro, Gatsby, WordPress z Yoast/RankMath) ma helpery do JSON-LD. Nie pisz od zera.
Opcja 2 — Ręcznie — dla statycznych stron wstaw <script type="application/ld+json"> przed </head> lub na końcu <body>. Położenie nie ma znaczenia dla parsingu.
Opcja 3 — Google Tag Manager — można wstrzykiwać JSON-LD przez GTM, ale Google preferuje inline; niektóre crawlery AI mogą nie czekać na JS execution.
Weryfikacja
- Google Rich Results Test (trzecia iteracja dla Google, ale też mówi o błędach składni): https://search.google.com/test/rich-results
- Schema.org Validator: https://validator.schema.org
- Selpio AI Readiness — automatycznie sprawdza obecność i poprawność JSON-LD Article, FAQPage, HowTo.
Częste błędy
- Brak
@context— bez tego JSON-LD jest bezużyteczny. - Niewłaściwy typ —
"@type": "Post"nie istnieje. UżyjArticlelubBlogPosting. - Daty w złym formacie — musi być ISO 8601:
2026-04-19lub2026-04-19T10:30:00Z. Nie19.04.2026. - Relative URLs w
url/sameAs— zawsze pełne zhttps://. - Duplikowany Schema — ten sam
Articlezdefiniowany w dwóch miejscach na stronie. Niektóre parsery głupieją.
Praktyczny scenariusz — blog post
Typowy post na blogu firmowym powinien mieć dwa bloki JSON-LD:
Organization(Twoja firma) — raz na stronę, zwykle w layout.ArticlelubBlogPosting— per post, zheadline,author,datePublished.
Jeśli post zawiera sekcję FAQ — dodaj też FAQPage lub osadź Question/Answer wewnątrz Article przez mainEntity.