
Grzegorz Kalmus
Autor
Schema.org to zunifikowany słownik danych strukturalnych, który pozwala wyszukiwarkom zrozumieć, co konkretnie oferuje Twoja firma – nie tylko przeczytać tekst, ale zinterpretować go semantycznie. Dla lokalnego biznesu w Polsce właściwie zaimplementowane dane strukturalne oznaczają jedno: lepszą widoczność w wynikach Google, w tym rich results z oceną gwiazdkową, godzinami otwarcia, cenami usług i sekcją FAQ bezpośrednio w SERP.
Według danych Google Search Central, strony z poprawnymi danymi strukturalnymi uzyskują nawet o 20-30% wyższy CTR w porównaniu do zwykłych wyników. W praktyce oznacza to więcej kliknięć bez zmiany pozycji.
W tym przewodniku pokażę Ci krok po kroku, jak wdrożyć cztery kluczowe typy schema dla lokalnej firmy usługowej: LocalBusiness, Service, FAQPage i BreadcrumbList. Wszystkie przykłady opierają się na fikcyjnej polskiej firmie – agencji marketingowej z Piaseczna – ale kod nadaje się bezpośrednio do użycia po podstawieniu własnych danych.
Czego się dowiesz:
- Jak napisać poprawny JSON-LD dla LocalBusiness i Service
- Jak zbudować FAQPage pod rich results Google
- Jak dodać BreadcrumbList i Review
- Jak przetestować dane w Rich Results Test
- Jakie błędy eliminują Cię z rich results
Czym jest Schema.org i dlaczego JSON-LD to jedyna sensowna opcja
Schema.org to wspólny projekt Google, Bing, Yahoo i Yandex uruchomiony w 2011 roku. Definiuje słownik typów i właściwości, które można dodać do stron w trzech formatach: JSON-LD, Microdata i RDFa. Google jednoznacznie rekomenduje JSON-LD jako format preferowany – jest łatwiejszy do utrzymania, nie miesza się z HTML-em i można go wstrzyknąć w dowolne miejsce strony bez ingerencji w markup.
JSON-LD umieszcza się w tagu <script type="application/ld+json">, najczęściej w sekcji <head> lub tuż przed </body>. WordPress i Next.js obsługują to natywnie – wystarczy odpowiednia wtyczka lub komponent.
Ważne: Dane strukturalne nie są czynnikiem rankingowym bezpośrednio. Pomagają Google zrozumieć treść i kwalifikują stronę do rich results, co przekłada się na wyższy CTR – a to już wpływa na pozycję pośrednio.
LocalBusiness – fundament dla każdej firmy lokalnej
Typ LocalBusiness (lub jego bardziej szczegółowe podtypy: LegalService, MedicalBusiness, HomeAndConstructionBusiness itp.) to podstawa danych strukturalnych dla każdej firmy z fizyczną lokalizacją lub obszarem obsługi. Powoduje, że Google może wyświetlić Twoją firmę w Knowledge Panel i w wynikach lokalnych.
Przykład dla agencji marketingowej Studio Kalmus z Piaseczna:
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"@id": "https://studiokalmus.com/#business",
"name": "Studio Kalmus",
"description": "Agencja tworzenia stron internetowych i pozycjonowania SEO. Obsługujemy firmy z Piaseczna, Warszawy i całego woj. mazowieckiego.",
"url": "https://studiokalmus.com",
"telephone": "+48-XXX-XXX-XXX",
"email": "kontakt@studiokalmus.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "ul. Przykładowa 1",
"addressLocality": "Piaseczno",
"postalCode": "05-500",
"addressRegion": "mazowieckie",
"addressCountry": "PL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.0785,
"longitude": 21.0206
},
"areaServed": [
{
"@type": "City",
"name": "Piaseczno"
},
{
"@type": "City",
"name": "Warszawa"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "09:00",
"closes": "17:00"
}
],
"priceRange": "$$",
"currenciesAccepted": "PLN",
"paymentAccepted": "przelew bankowy, karta kredytowa",
"hasMap": "https://maps.google.com/?q=Piaseczno+ul.+Przykladowa+1",
"logo": {
"@type": "ImageObject",
"url": "https://studiokalmus.com/logo.png",
"width": 300,
"height": 100
},
"image": "https://studiokalmus.com/og-image.jpg",
"sameAs": [
"https://www.facebook.com/studiokalmus",
"https://www.linkedin.com/company/studiokalmus"
]
}
Kilka uwag do powyższego kodu:
@idz fragmentem#businesspozwala odwoływać się do tego obiektu z innych typów schema na tej samej stronie – unikaj duplikowania danych.areaServedjest kluczowe dla firm bez stacjonarnej obsługi klientów (np. pracujących zdalnie) – wpisz wszystkie obsługiwane miasta.priceRangew formacie znakowym ($, $$, $$$) jest wyświetlany przez Google w wynikach lokalnych.- Właściwość
sameAsłączy Twój wpis z profilami w mediach społecznościowych – wzmacnia Knowledge Panel.
Jeśli prowadzisz agencję web lub SEO w regionie, warto też dodać osobne strony dla każdego obsługiwanego miasta z dedykowanym schema. Przykładowo, nasza strona dla firm z Piaseczna i klientów z Warszawy korzysta z tego mechanizmu.
Service – opisz każdą usługę oddzielnie
Typ Service pozwala zdefiniować konkretną usługę oferowaną przez firmę. Google używa tych danych do wyświetlania usług w wynikach wyszukiwania i w Google Business Profile. Dla agencji web lub SEO każda usługa powinna mieć własny blok schema.
{
"@context": "https://schema.org",
"@type": "Service",
"@id": "https://studiokalmus.com/pozycjonowanie-stron#service",
"name": "Pozycjonowanie stron internetowych",
"alternateName": "SEO",
"description": "Kompleksowe pozycjonowanie stron w Google dla firm lokalnych. Audyt SEO, optymalizacja techniczna, budowa linków, treści pod wyszukiwarki.",
"url": "https://studiokalmus.com/pozycjonowanie-stron",
"provider": {
"@id": "https://studiokalmus.com/#business"
},
"areaServed": {
"@type": "State",
"name": "mazowieckie"
},
"serviceType": "SEO, pozycjonowanie lokalne",
"category": "Marketing internetowy",
"offers": {
"@type": "Offer",
"priceCurrency": "PLN",
"price": "800",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"priceCurrency": "PLN",
"price": "800",
"unitText": "miesięcznie"
},
"availability": "https://schema.org/InStock",
"url": "https://studiokalmus.com/cennik"
},
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Pakiety SEO",
"itemListElement": [
{
"@type": "Offer",
"name": "Pakiet Start",
"description": "Audyt SEO + optymalizacja on-page + 5 fraz"
},
{
"@type": "Offer",
"name": "Pakiet Pro",
"description": "Pełne pozycjonowanie + linkbuilding + raportowanie"
}
]
}
}
Zwróć uwagę na "provider": {"@id": "..."} – zamiast powtarzać cały obiekt LocalBusiness, odwołujesz się do niego przez ID. To dobra praktyka dla stron z wieloma blokami schema.
Jeśli chcesz dowiedzieć się, ile kosztuje pozycjonowanie stron lub projektowanie stron internetowych, sprawdź nasze strony usługowe z aktualnymi cennikami.
FAQPage – najprostszy sposób na pozycję w rich results
Spośród wszystkich typów schema, FAQPage jest tym, który najszybciej daje widoczne efekty. Google wyświetla pytania i odpowiedzi bezpośrednio pod wynikiem wyszukiwania, zwiększając jego rozmiar nawet 3-krotnie. Warunek: pytania i odpowiedzi muszą faktycznie znajdować się na stronie w widocznym HTML-u – schema FAQPage jest tylko ich odzwierciedleniem, nie zastąpieniem.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Ile kosztuje pozycjonowanie strony w Piasecznie?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Ceny pozycjonowania dla lokalnych firm zaczynają się od 800 zł miesięcznie. Koszt zależy od liczby fraz, konkurencyjności rynku i zakresu działań. Szczegółowy cennik znajdziesz na stronie /cennik."
}
},
{
"@type": "Question",
"name": "Jak długo trwa pozycjonowanie lokalne?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Pierwsze wyniki widoczne są po 2-4 miesiącach. Stabilne pozycje w top 3 dla fraz lokalnych osiągamy zazwyczaj po 6-9 miesiącach systematycznych działań."
}
},
{
"@type": "Question",
"name": "Czy schema.org wpływa na ranking w Google?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Bezpośrednio nie - Google nie traktuje danych strukturalnych jako sygnału rankingowego. Jednak rich results (gwiazdki, FAQ, dane o firmie) zwiększają CTR, co pośrednio wpływa na pozycje."
}
}
]
}
Ważne zasady dla FAQPage:
- Treść odpowiedzi w schema musi być identyczna lub przynajmniej spójna z tym, co widzi użytkownik na stronie.
- Google może zdyskwalifikować FAQ schema, jeśli pytania są ukryte za accordion bez możliwości indeksowania.
- Maksymalnie 10 pytań w schema – więcej Google i tak nie wyświetli, a ryzyko błędów rośnie.
- Odpowiedź może zawierać podstawowe HTML (
<a>,<strong>) – Google wyrenderuje je w rich results.
BreadcrumbList – nawigacja widoczna w wynikach wyszukiwania
Schema BreadcrumbList sprawia, że zamiast surowego URL-a Google wyświetla ścieżkę nawigacji: studiokalmus.com > Blog > SEO > Schema.org. To szczegół, ale poprawia UX wyników i wzmacnia strukturę serwisu w oczach bota.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Strona główna",
"item": "https://studiokalmus.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://studiokalmus.com/blog"
},
{
"@type": "ListItem",
"position": 3,
"name": "SEO",
"item": "https://studiokalmus.com/blog/kategoria/seo"
},
{
"@type": "ListItem",
"position": 4,
"name": "Schema.org dla lokalnego biznesu",
"item": "https://studiokalmus.com/schema-org-lokalny-biznes-przewodnik"
}
]
}
Pozycja (position) musi być ciągłą sekwencją od 1. Brakujący poziom lub powtórzone numery powodują błąd w walidatorze.
Review i AggregateRating – gwiazdki w wynikach wyszukiwania
Schema Review i AggregateRating to te typy, które jako pierwsze przychodzą na myśl gdy słyszy się „dane strukturalne”. Gwiazdki w wynikach wyszukiwania są jednym z najsilniejszych sygnałów CTR – według Moz, wyniki z rich results gwiazdkowymi mają CTR wyższy o 15-30% w porównaniu do wyników bez nich.
Krytyczna uwaga: Google od 2023 roku restrykcyjnie egzekwuje zasadę, że AggregateRating z typem LocalBusiness nie kwalifikuje się do rich results w zwykłych wynikach wyszukiwania. Gwiazdki dla firm lokalnych pojawiają się wyłącznie w Google Business Profile i w Google Maps. W wynikach organicznych gwiazdki możesz uzyskać dla: Product, Recipe, Movie, Course i kilku innych typów – ale nie LocalBusiness.
Dla recenzji konkretnej usługi (np. strony na zamówienie jako produktu) schema wygląda tak:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Strona internetowa dla firmy",
"description": "Projekt i realizacja strony firmowej na Next.js lub WordPress.",
"brand": {
"@type": "Brand",
"name": "Studio Kalmus"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "47",
"bestRating": "5",
"worstRating": "1"
},
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Marek Kowalski"
},
"datePublished": "2026-03-15",
"reviewBody": "Profesjonalna realizacja, termin dotrzymany, strona działa szybko. Polecam.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
}
}
]
}
Jak sprawdzić poprawność – Rich Results Test krok po kroku
Zanim wdrożysz schema na produkcję, zawsze weryfikuj ją w Rich Results Test (oficjalnym narzędziu Google). Procedura jest prosta:
- Wejdź na search.google.com/test/rich-results.
- Wybierz „Testuj URL” (dla strony na produkcji) lub „Testuj kod” (dla snippetu przed wdrożeniem).
- Wklej URL lub kod JSON-LD i kliknij „Testuj”.
- Narzędzie pokaże: wykryte typy, błędy (blokujące kwalifikację) i ostrzeżenia (nieblokujące).
- Kliknij w dany typ (np. FAQ), żeby zobaczyć podgląd jak rich result będzie wyglądał w SERP.
Dodatkowe narzędzie: validator.schema.org – walidator samego Schema.org bez filtrowania pod kątem Google. Przydatne do sprawdzenia poprawności typów i właściwości bez zależności od reguł Google.
Najczęstsze błędy i jak ich unikać
| Błąd | Skutek | Jak naprawić |
|---|---|---|
| Treść FAQ niewidoczna na stronie (tylko w schema) | Dyskwalifikacja z rich results | FAQ musi być w HTML-u strony, dostępne dla użytkownika |
| Błędny format daty (np. „15.03.2026” zamiast „2026-03-15”) | Błąd parsowania, pominięcie właściwości | Używaj formatu ISO 8601: YYYY-MM-DD |
| Brakujące pole „name” lub „url” w LocalBusiness | Niekompletny Knowledge Panel | Te dwa pola są wymagane – zawsze uzupełniaj |
| AggregateRating z fikcyjnymi recenzjami | Penalty od Google, usunięcie z rich results | Tylko prawdziwe opinie z weryfikowalnym źródłem |
| Kilka bloków schema z tym samym @type na jednej stronie | Konflikty, nadpisywanie danych | Użyj jednego bloku z @id i odwołań, lub tablicy @graph |
| Brak @context lub błędna jego wartość | Schema całkowicie ignorowana | Zawsze: „@context”: „https://schema.org” |
Jak wdrożyć schema w WordPress i Next.js
WordPress z Yoast SEO
Yoast SEO automatycznie generuje podstawowe schema (LocalBusiness, BreadcrumbList, WebPage, WebSite) na podstawie ustawień w panelu. Przejdź do: SEO > Wygląd w wyszukiwarce > Typ treści i upewnij się, że każdy typ strony ma przypisany właściwy typ schema. Dla FAQ użyj bloku Gutenberg „FAQ” z rozszerzenia Yoast – generuje FAQPage automatycznie.
Next.js / headless
W Next.js schema dodajesz przez komponent lub bezpośrednio w metadanych strony:
// app/pozycjonowanie-stron/page.tsx
export default function PozycjonowaniePage() {
const schema = {
"@context": "https://schema.org",
"@type": "Service",
"name": "Pozycjonowanie stron",
// ...reszta właściwości
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
{/* reszta strony */}
</>
);
}
Dla projektów na Next.js lub WordPress headless warto rozważyć dedykowaną bibliotekę schema-dts (TypeScript types dla Schema.org) – eliminuje literówki w nazwach właściwości już na etapie kompilacji.
Jeśli potrzebujesz pomocy z wdrożeniem danych strukturalnych w swoim projekcie, sprawdź naszą ofertę tworzenia stron internetowych lub skontaktuj się bezpośrednio przez formularz kontaktowy.
Najczęstsze pytania (FAQ)
Czy muszę wdrożyć schema.org, żeby rankować lokalnie?
Dane strukturalne nie są wymagane do pozycjonowania lokalnego – strony bez schema też rankują. Jednak LocalBusiness schema zwiększa szansę na Knowledge Panel i rich results, co przekłada się na lepszy CTR. To szczególnie ważne dla fraz z intencją lokalną, gdzie użytkownicy porównują firmy bezpośrednio w wynikach wyszukiwania.
Ile bloków schema mogę umieścić na jednej stronie?
Teoretycznie nie ma limitu, ale praktycznie każdy blok powinien dotyczyć treści faktycznie obecnej na stronie. Najlepszą praktyką jest użycie konstrukcji @graph, która pozwala powiązać wiele typów w jednym bloku JSON-LD i uniknąć duplikowania właściwości takich jak @context.
Jak często Google aktualizuje dane z schema w wynikach?
Google pobiera i przetwarza dane strukturalne przy każdym crawlu strony. Czas od wdrożenia do pojawienia się rich results wynosi zazwyczaj od kilku dni do 4 tygodni. Możesz przyspieszyć ten proces przez ręczne zgłoszenie URL w Google Search Console (Sprawdzanie URL > Zażądaj indeksowania).
Czy schema FAQPage nadal działa po zmianach Google w 2023 roku?
Google w sierpniu 2023 ograniczył wyświetlanie FAQ rich results – domyślnie pokazuje je tylko dla zaufanych, autorytatywnych stron (rządowych, zdrowotnych). Dla typowych witryn firmowych FAQ rich results pojawiają się rzadziej niż przed 2023 rokiem. Mimo to warto je wdrożyć – Google nadal indeksuje te dane i może je wykorzystywać w innych formatach wyników.
Czy mogę używać schema na stronach z treścią generowaną przez AI?
Tak, ale z zastrzeżeniem: dane w schema muszą być zgodne z faktyczną treścią strony i weryfikowalne. Szczególnie dotyczy to Review i AggregateRating – fikcyjne recenzje w schema to jeden z najszybszych sposobów na penalty od Google. E-E-A-T i autentyczność są kluczowe.
Jak sprawdzić, czy moje schema jest już w indeksie Google?
W Google Search Console przejdź do sekcji Ulepszenia (lub Wyszukiwanie > Elementy z rozszerzonymi wynikami). GSC pokazuje wykryte typy schema, liczbę stron z błędami i stron zakwalifikowanych do rich results. To jedyne miarodajne źródło – zewnętrzne narzędzia mogą dawać fałszywe sygnały.
Podsumowanie
Schema.org to jeden z tych elementów optymalizacji, które wymagają jednorazowego nakładu pracy, a procentują miesiącami i latami. Poprawnie zaimplementowany LocalBusiness schema może pojawić się w Knowledge Panel jeszcze w tym samym tygodniu. FAQ schema poszerza Twój wynik w SERP bez zmiany pozycji. BreadcrumbList porządkuje wyświetlany URL i sygnalizuje Google strukturę serwisu.
Kluczowe zasady, które warto zapamiętać:
- JSON-LD to jedyna sensowna opcja implementacji – zarówno dla WordPress, jak i Next.js.
- Dane w schema muszą odpowiadać treści widocznej na stronie – nie można „ukrywać” informacji tylko w skrypcie.
- Zawsze testuj w Rich Results Test przed wdrożeniem na produkcję.
- AggregateRating dla LocalBusiness nie daje gwiazdek w wynikach organicznych – to mit, który wciąż krąży.
- Używaj
@idi@graphdla złożonych stron z wieloma typami schema.
Jeśli chcesz, żebyśmy wdrożyli dane strukturalne na Twojej stronie lub przeprowadzili audyt istniejących schema, sprawdź naszą ofertę pozycjonowania stron i aktualny cennik.
Wdrozymy schema.org na Twojej stronie
Audyt istniejacych danych strukturalnych, wdrozenie LocalBusiness, Service, FAQ i BreadcrumbList, weryfikacja w Rich Results Test. Sprawdz oferte i zapytaj o wycene.

