Structured Data: JSON-LD Schema Markup dla stron usługowych
Jak wdrożyć structured data (JSON-LD) dla strony usługowej: LocalBusiness, FAQPage, BreadcrumbList z gotowymi przykładami, walidacją w Rich Results Test i wpływem na SEO oraz wyszukiwarki AI.
Wdrażam structured data na każdej stronie, którą buduję – to jedno z najtańszych i najbardziej niedocenianych ulepszeń SEO. Nie wymaga nowych treści, nie wymaga backlinków, a daje wymierne efekty: rich results w Google, lepszy CTR i czytelność dla wyszukiwarek AI. W tym poście pokazuję kompletny zestaw JSON-LD dla strony usługowej – LocalBusiness, FAQPage i BreadcrumbList – z gotowymi przykładami i procedurą walidacji.
Czym jest structured data i po co ją wdrażać
Structured data to ustrukturyzowany opis treści strony w formacie zrozumiałym dla maszyn, oparty o słownik schema.org. Google, Bing i inne wyszukiwarki używają go do zrozumienia, co znajduje się na stronie, i do wyświetlania rozszerzonych wyników (rich results):
- LocalBusiness / Service – panel firmy, godziny otwarcia, oceny, cennik w wynikach,
- FAQPage – rozwijane pytania i odpowiedzi bezpośrednio w SERP,
- BreadcrumbList – ścieżka nawigacji pod tytułem wyniku.
Efektów jest więcej niż widać na pierwszy rzut oka. Rich results zwiększają CTR – badania wskazują, że wyniki z elementami strukturalnymi klikają się nawet 2-3 razy częściej niż zwykłe. Dodatkowo schema.org to język, w którym wyszukiwarki budują swoją wiedzę o Twojej firmie – a w erze wyszukiwarek AI (Google AI Overviews, ChatGPT Search, Perplexity) precyzyjna struktura danych to jedna z najlepszych inwestycji w tzw. GEO (generative engine optimization). Zwięzłe, oznaczone odpowiedzi mają największą szansę trafić do odpowiedzi generowanych przez AI.
JSON-LD: format, który wybrał Google
JSON-LD to blok JavaScriptu (w rzeczywistości danych) wstawiany w
sekcję <head> lub <body> strony. Google rekomenduje go wprost w
dokumentacji, bo jest niezależny od treści wizualnej – wdrożenie nie
wymaga dotykania HTML strony.
<script type="application/ld+json">{ "@context": "https://schema.org", "@type": "LocalBusiness", "name": "Przykładowa Firma Usługowa", "url": "https://firma.pl", "telephone": "+48 12 345 67 89", "email": "kontakt@firma.pl", "priceRange": "$$", "address": { "@type": "PostalAddress", "streetAddress": "ul. Przykładowa 12/3", "postalCode": "00-001", "addressLocality": "Warszawa", "addressCountry": "PL" }, "geo": { "@type": "GeoCoordinates", "latitude": 52.2297, "longitude": 21.0122 }, "openingHoursSpecification": [{ "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], "opens": "09:00", "closes": "17:00" }], "sameAs": ["https://www.facebook.com/firma", "https://www.linkedin.com/company/firma"]}</script>Uwaga na szczegóły, które Google faktycznie sprawdza: dane muszą
zgadzać się z treścią strony (adres widoczny w stopce, godziny na
podstronie kontakt), adres musi być zapisany jako struktura
PostalAddress, a nie string, a sameAs to oficjalne profile –
nie losowe katalogi.
Service: strona o usłudze, nie o firmie
Dla strony usługowej (np. jedna konkretna usługa na podstronie)
lepszym typem niż LocalBusiness jest Service – opisuje ofertę, a
nie firmę:
{ "@context": "https://schema.org", "@type": "Service", "serviceType": "Projektowanie stron internetowych", "provider": { "@type": "Organization", "name": "Firma Usługowa", "url": "https://firma.pl" }, "areaServed": { "@type": "Country", "name": "Polska" }, "offers": { "@type": "Offer", "price": "3000", "priceCurrency": "PLN", "description": "Strona firmowa oparta o statyczny generator, WCAG 2.2, PageSpeed > 90" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.9", "reviewCount": "37" }}aggregateRating dodawaj tylko, jeśli masz realne, opublikowane
opinie – Google traktuje zmyślone oceny jak spam i potrafi ukarać
całą domenę.
FAQPage: pytania z SERP prosto na stronę
FAQPage to jeden z najskuteczniejszych typów – pozwala przejąć pytania, które użytkownicy wpisują w Google, i pokazać odpowiedzi bezpośrednio w wynikach:
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "Ile kosztuje strona internetowa?", "acceptedAnswer": { "@type": "Answer", "text": "Strona firmowa oparta o statyczny generator to koszt 3-8 tys. PLN. WordPress z agencją: 15-30 tys. PLN." } }, { "@type": "Question", "name": "Jak długo trwa wykonanie strony?", "acceptedAnswer": { "@type": "Answer", "text": "Typowy projekt zajmuje 2-4 tygodnie: tydzień na treści i projekt, tydzień na wdrożenie, tydzień na testy i poprawki." } } ]}Najważniejsza zasada: pytania i odpowiedzi muszą być widoczne na stronie (FAQ w treści). Google odrzuca FAQPage, gdy treść jest niewidoczna lub schowana w akordeonach bez pełnej treści w HTML.
BreadcrumbList: nawigacja, którą Google rozumie
Breadcrumbs poprawiają CTR i pomagają Google zrozumieć strukturę
serwisu. Dla strony wielopoziomowej (np. /uslugi/projektowanie):
{ "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://firma.pl" }, { "@type": "ListItem", "position": 2, "name": "Usługi", "item": "https://firma.pl/uslugi" }, { "@type": "ListItem", "position": 3, "name": "Projektowanie stron", "item": "https://firma.pl/uslugi/projektowanie" } ]}position musi zaczynać się od 1 i rosnąć bez przerw, a URL-e w
item powinny prowadzić do faktycznie istniejących podstron.
Jak wdrożyć: procedura krok po kroku
- Wybierz typy – dla strony usługowej standardowo: Organization lub LocalBusiness (strona główna), Service (podstrony usług), FAQPage (sekcja FAQ), BreadcrumbList (wszystkie podstrony), a dla bloga dodatkowo Article/NewsArticle i BlogPosting.
- Generuj programowo – nie pisz JSON-LD ręcznie na każdej stronie. W Astro/Next wygeneruj dane z jednego źródła (np. pliku z danymi firmy) i wstrzyknij przez komponent. Jedno źródło prawdy = zero rozjazdów między danymi w stopce a schematem.
- Waliduj – każdą zmianę sprawdzaj w Google Rich Results Test
i w Search Console (raporty “Ulepszenia” → “Structured data”).
Walidator pokaże ostrzeżenia (np. “błąd: pole
geowymagane dla LocalBusiness”), które naprawiasz od razu. - Obserwuj – po 2-4 tygodniach sprawdź w Search Console, czy rich results faktycznie się pojawiły i czy CTR się zmienił.
Częste błędy i jak ich unikać
- Kopiowanie cudzych schematów – pola z innej branży (np.
menurestauracji na stronie usługowej) generują ostrzeżenia i brak rich results. - Niespójność z treścią – schema mówi “ul. X 12”, stopka mówi “ul. Y 3”. Google traci zaufanie do całej domeny.
- Zagnieżdżanie bez potrzeby – FAQPage zamiast
Questionzamiast listymainEntity; lokalizacja jako string zamiastPostalAddress. - Brak identyfikatorów –
@idna głównych węzłach pomaga Google łączyć encje (ta sama firma w Organization, LocalBusiness i BreadcrumbList). - Ignorowanie ostrzeżeń – ostrzeżenia nie blokują indeksacji, ale zwykle oznaczają, że rich result się nie pokaże.
Structured data a wyszukiwarki AI
W 2026 roku structured data ma nową, ważną rolę: karmi wyszukiwarki generatywne. Google AI Overviews, ChatGPT Search i Perplexity budują odpowiedzi z autorytatywnych źródeł – a strony z precyzyjną strukturą (jasne odpowiedzi na konkretne pytania, oznaczone encje, uporządkowane dane kontaktowe) są znacznie łatwiejsze do zacytowania. To nie jest spekulacja: schema.org to wspólny język całego ekosystemu wyszukiwania, a nie tylko Google. Strona usługowa z dobrym JSON-LD jest gotowa na oba światy – klasyczny SERP i odpowiedzi AI.
Checklist wdrożenia
- Organization/LocalBusiness na stronie głównej (dane zgodne ze stopką)
- Service na podstronach usług (cena, obszar, opinie tylko realne)
- FAQPage – pytania widoczne w treści strony
- BreadcrumbList na każdej podstronie (position bez przerw)
-
@idna głównych encjach - Walidacja w Rich Results Test + monitoring w Search Console
Co dalej
Chcesz, żebym wdrożył kompletny JSON-LD (LocalBusiness, Service, FAQPage, BreadcrumbList) na twojej stronie usługowej? Napisz do mnie – audyt struktury danych i wdrożenie zajmują 1-2 dni, koszt od 500 PLN.
Najczęściej zadawane pytania
Czy structured data faktycznie poprawia pozycje w Google?
Jaki format wybrać: JSON-LD, mikrodata czy RDFa?
Czy błędy w schema markup mogą zaszkodzić stronie?
Powiązane posty
- aiAI
GEO vs SEO: jak optymalizować treści pod wyszukiwarki AI w 2025
Generative Engine Optimization to nowa dyscyplina SEO. Jak pisać treści, które cytuje ChatGPT, Perplexity i Gemini. Praktyczne techniki z przykładami kodu i danymi.
5 min - aiAI
Jak wyszukiwarki AI rankują treści inaczej niż Google – i co z tym zrobić
Algorytmy rankingowe ChatGPT, Perplexity, Gemini i Google AI Overview – co mają wspólnego, czym się różnią, jak pod nie optymalizować. Dane z 12 miesięcy testów.
6 min