W wynikach Google obok konkurencji wisi zwykły niebieski link — tytuł, URL, dwa zdania opisu. Obok Ciebie ktoś ma gwiazdki, rozwijane FAQ, okruszki nawigacji albo ceny produktów. Kto dostanie kliknięcie? Ten, kto wygląda jak odpowiedź, nie jak zwykła linijka tekstu. ⭐
Schema (dane strukturalne) to sposób, żeby powiedzieć Google w języku maszynowym: „To firma lokalna”, „To artykuł”, „To pytanie i odpowiedź” — zamiast liczyć, że robot sam wszystko zgaduje z layoutu strony z 2014 roku. Efektem czasem są rich snippets (rozszerzone wyniki) — większa ekspozycja i często wyższy CTR (więcej kliknięć przy tej samej pozycji).
Ten wpis jest dla właściciela małej firmy i osoby, która ogarnia stronę „po godzinach” — bez doktoratu z JSON-a, za to z konkretem: co wdrożyć, gdzie, jak sprawdzić. Jeśli strona ma być w ogóle indeksowana i widoczna, schema idzie po fundamentach — patrz też indeksacja: noindex i canonical i E-E-A-T.
🧩 Schema, JSON-LD, rich snippets — nie myl pojęć
| Pojęcie | Co to jest |
|---|---|
| Schema.org | Słownik typów (Organization, Product, FAQ…) — wspólny standard |
| Dane strukturalne | Implementacja schema na stronie (najczęściej JSON-LD w <script>) |
| Rich snippet / rich result | Efekt w Google — gwiazdki, FAQ, breadcrumb — gdy Google uzna dane za wiarygodne |
| CTR | Współczynnik klikalności — ile osób kliknęło vs zobaczyło wynik |
Ważne: schema nie gwarantuje rich snippetu. To kwalifikacja, nie efekt automatyczny. Google może pokazać rozszerzenie, może zignorować, może pokazać tylko część. Mimo to warto — nawet bez gwiazdek dane pomagają zrozumieć treść (szczególnie lokalnie i w AI Overviews).
📦 JSON-LD — format, którego używa większość małych stron
Najprościej wkleić blok JSON-LD w <head> lub tuż przed </body>:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Przykładowa Firma",
"telephone": "+48123456789",
"address": {
"@type": "PostalAddress",
"streetAddress": "ul. Kwiatowa 12",
"addressLocality": "Kraków",
"postalCode": "30-001",
"addressCountry": "PL"
},
"url": "https://example.pl"
}
</script>
Dlaczego JSON-LD: nie trzeba owijać HTML-a atrybutami itemscope — czytelniejsze dla CMS-ów
(WordPress + wtyczka, Shoper, IdoSell często generują to automatycznie).
Zasada: dane w schema muszą zgadzać się z tym, co widać na stronie — ten sam telefon, adres, nazwa. Rozjazd = ryzyko ignorowania albo problemów z zaufaniem (NAP).
🎯 Co wdrożyć na małej stronie — priorytety
1. Organization / LocalBusiness — strona główna lub Kontakt
Kiedy: firma z adresem, telefonem, strefą usług.
Co daje: lepsze zrozumienie firmy jako podmiotu; podstawa pod Mapy + organic.
Dla LocalBusiness dodaj: openingHours, geo, image, sameAs (linki do Facebooka itd.).
🎂 Cukiernia stacjonarna → LocalBusiness + godziny + zdjęcie witryny.
❄️ HVAC z dojazdem → LocalBusiness z adresem siedziby + areaServed (obszar).
📺 Sklep RTV → LocalBusiness + Store jeśli platforma wspiera.
2. Article — wpisy bloga
Kiedy: każdy artykuł poradnikowy.
Pola: headline, datePublished, dateModified, author, image, publisher.
Wspiera E-E-A-T — autor i data to sygnały zaufania (budowanie autorytetu). Blog Boostilii w Astro może generować Article automatycznie z frontmatter — warto to mieć w szablonie przy buildzie.
3. FAQPage — sekcja FAQ na usłudze lub wpisie
Kiedy: masz 3–8 realnych pytań klientów z konkretnymi odpowiedziami.
Co daje: czasem rozwijane FAQ bezpośrednio w wynikach Google — więcej miejsca na SERP.
Pułapka: FAQ niewidoczne dla użytkownika (tylko w JSON) — niedozwolone w wytycznych Google. Tekst musi być na stronie.
🔧 Warsztat: „Czy wymiana oleju obejmuje filtr?” — pytanie + odpowiedź widoczna i w schema.
4. BreadcrumbList — okruszki nawigacji
Kiedy: blog, kategorie sklepu, hierarchia usług.
Co daje: ładniejszy URL w wyniku: Strona główna > Blog > Tytuł wpisu.
5. Product — sklep internetowy
Kiedy: karty produktów z ceną, dostępnością, zdjęciem.
Pola: name, image, offers (cena, waluta, availability).
Uwaga: ceny w schema = ceny na stronie. Promocja w schema a inna cena w koszyku = kłopot.
6. Review / AggregateRating — ostrożnie
Gwiazdki w Google tylko przy prawdziwych, widocznych recenzjach — najczęściej z własnego systemu opinii na stronie albo zgodnie z wytycznymi Google. Nie wklejaj oceny 5.0 z głowy. Opinie z wizytówki Google nie zawsze można swobodnie przenieść jako AggregateRating na stronę — czytaj aktualne wytyczne Google dotyczące rich results z recenzjami.
Bezpieczniejszy start: FAQ + Article + LocalBusiness bez kombinowania z gwiazdkami.
🔧 Jak wdrożyć bez programisty (i z programistą)
CMS / sklep
- WordPress: Yoast, Rank Math, SEOPress — sekcja schema, często automatycznie.
- Shoper / IdoSell / SaaS: sprawdź w ustawieniach SEO lub dokumentacji „dane strukturalne”.
- Wix / Squarespace: wbudowane fragmenty — ograniczone, ale lepsze niż nic.
Ręcznie / szablon
- Jeden blok JSON-LD na typ strony (stopka PHP, layout Astro).
- Nie duplikuj sprzecznych typów na jednej stronie (np. dwa różne LocalBusiness z innym telefonem).
Walidacja — obowiązkowy krok
- Google Rich Results Test — czy Google widzi typ i błędy.
- Search Console → Ulepszenia (Enhancements) — FAQ, produkty, breadcrumb — po wdrożeniu i indeksacji.
- Podgląd źródła strony — czy JSON-LD jest poprawny JSON (przecinek, cudzysłowy).
Jedna literówka w JSON = cały blok do kosza. Walidator to Twój przyjaciel, nie wróg. 🤝
📈 Rich snippets a CTR — czego oczekiwać
Rich result nie podnosi rankingu magicznie — działa głównie na klikalność przy podobnej pozycji.
| Typ | Potencjalny efekt |
|---|---|
| FAQ | Więcej miejsca, odpowiedź przed kliknięciem — czasem mniej kliknięć, czasem więcej (zależy od intencji) |
| Breadcrumb | Czytelniejszy wynik, lekki wzrost CTR |
| Product (cena) | Wyższy CTR u klientów porównujących oferty; wymaga aktualnych danych |
| Gwiazdki | Silny wyróżnik przy równych tytułach — tylko przy legalnych review |
Mierz w Search Console: CTR strony przed i po (4–8 tygodni). Jednorazowy skok o 0,5 pp CTR przy 1000 wyświetleń = 5 dodatkowych wejść — mała firma to czuje.
🏭 Przykłady wdrożeń wg branży
Firma usługowa (HVAC, remonty)
- LocalBusiness na Kontakt.
- FAQPage na stronie „Montaż klimatyzacji” (cennik orientacyjny, czas montażu, gwarancja).
- Article na wpisach bloga poradnikowych.
- BreadcrumbList na blogu.
Sklep stacjonarny + e-commerce
- LocalBusiness + Product na kartach.
- Spójność ceny schema ↔ strona.
- Organization z logo (
publisherw Article).
Gabinet / salon
- LocalBusiness z godzinami,
MedicalBusiness/HealthAndBeautyBusinessjeśli pasuje typ. - FAQ o pierwszej wizycie, przygotowaniu, płatnościach — bez obietnic medycznych w schema, których nie ma w treści.
Blog ekspercki (bez sklepu)
- Article + Person jako autor + BreadcrumbList.
- Opcjonalnie FAQPage w dłuższych poradnikach.
🚫 Błędy, które widzi się często
Schema niezgodne ze stroną
Inny telefon w JSON-LD niż w stopce — gorsze niż brak schema.
FAQ ukryte tylko dla Google
Ryzyko ręcznej kary Google / utraty rich results.
Sztuczne gwiazdki 5.0 bez recenzji
Naruszenie wytycznych — możesz stracić wszystkie rich snippets.
Pięć typów naraz bez sensu
„Recipe” na stronie hydraulika — Google zignoruje; wygląda jak spam.
Duplikaty JSON-LD
Dwa wtyczkowe bloki LocalBusiness — sprzeczne dane. Zostaw jeden.
Schema zamiast treści
JSON nie zastąpi artykułu. Robot i człowiek potrzebują normalnego HTML-a.
✅ Checklist wdrożenia schema
- 📇 LocalBusiness / Organization — dane = NAP ze strony i wizytówki.
- 📰 Article — na wpisach bloga (autor, data, obrazek).
- ❓ FAQPage — tylko gdzie FAQ widać na stronie.
- 🍞 BreadcrumbList — jeśli masz okruszki w UI.
- 🛒 Product — tylko przy aktualnej cenie i dostępności.
- 🧪 Rich Results Test — zero krytycznych błędów.
- 📊 Search Console — sekcja Ulepszenia po 2–4 tygodniach.
- 🔄 Aktualizacja schema przy zmianie ceny, godzin, adresu.
💡 Podsumowanie
Schema i rich snippets to sposób, żeby wynik w Google mówił więcej niż trzy linijki — gwiazdki, FAQ, cena, ścieżka nawigacji. Zacznij od LocalBusiness, Article i ewentualnie FAQ, waliduj każdą zmianę i trzymaj dane zsynchronizowane z tym, co klient widzi po wejściu na stronę.
Mała firma nie potrzebuje dziesięciu typów schema — potrzebuje trzech poprawnych. Reszta to kolejne kroki, gdy sklep rośnie albo blog ma regularny ruch. A jeśli rich snippet się pojawi — to jak dodatkowy baner w wynikach wyszukiwania, za który nikt nie liczy CPC. 😉
Następny krok: otwórz stronę Kontakt i Rich Results Test — sprawdź, czy Google w ogóle widzi Twoją firmę jako firmę, czy tylko jako kolejną anonimową stronę HTML w morzu konkurencji.