Schema.org markup - jak oznaczyć treść dla wyszukiwarek?
Schema.org markup, czyli strukturalne dane, to sposób oznaczania treści na stronie internetowej w formacie zrozumiałym dla wyszukiwarek. Dzięki strukturalnym danym Google lepiej rozumie zawartość Twojej strony i może wyświetlać ją w wzbogaconych wynikach wyszukiwania (rich results), takich jak gwiazdki, ceny, daty wydarzeń czy fragmenty FAQ. W tym artykule dowiesz się, jak implementować Schema.org markup, aby poprawić widoczność swojej strony w wynikach wyszukiwania.
Czym są strukturalne dane Schema.org?
Strukturalne dane to sposób oznaczania treści na stronie w standardowym formacie, który wyszukiwarki mogą łatwo zrozumieć i wykorzystać. Schema.org to wspólna inicjatywa Google, Bing, Yahoo i Yandex, która definiuje standardowy słownik znaczników dla różnych typów treści.
Jak działają strukturalne dane?
Gdy wyszukiwarka indeksuje Twoją stronę, analizuje treść i próbuje zrozumieć, o czym jest strona. Strukturalne dane to "tłumacz", który mówi wyszukiwarce dokładnie, co znajduje się na stronie — czy to produkt, artykuł, firma, wydarzenie czy inny typ treści.
Przykład bez strukturalnych danych:
Google widzi tekst: "Cena: 299 zł" i może nie wiedzieć, czy to cena produktu, usługi czy czegoś innego.
Przykład ze strukturalnymi danymi:
Google widzi:
{
"@type": "Product",
"price": "299",
"priceCurrency": "PLN"
}
I dokładnie wie, że to cena produktu w złotych polskich.
Korzyści ze strukturalnych danych
Implementacja strukturalnych danych przynosi kilka kluczowych korzyści:
- Wzbogacone wyniki wyszukiwania (Rich Results) — Twoja strona może wyświetlać się z dodatkowymi elementami, takimi jak gwiazdki, ceny, daty
- Lepsze zrozumienie treści — Google lepiej rozumie, o czym jest Twoja strona
- Wyższy CTR — wzbogacone wyniki przyciągają więcej uwagi i kliknięć
- Featured Snippets — strukturalne dane mogą pomóc w uzyskaniu featured snippets
- Głosowe asystenty — strukturalne dane są wykorzystywane przez asystentów głosowych
Formaty strukturalnych danych
Strukturalne dane można implementować w trzech formatach: JSON-LD (zalecany), Microdata i RDFa. Google zaleca JSON-LD jako najłatwiejszy w implementacji i utrzymaniu. W tej sekcji omówimy wszystkie trzy formaty, ale skupimy się głównie na JSON-LD.
JSON-LD (JavaScript Object Notation for Linked Data)
JSON-LD to format zalecany przez Google, ponieważ jest łatwy w implementacji i nie wymaga modyfikacji HTML. Kod JSON-LD umieszcza się w tagu <script> w sekcji <head> lub na końcu <body>.
Przykład JSON-LD dla artykułu:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Tytuł artykułu",
"author": {
"@type": "Person",
"name": "Janusz Brodzik"
},
"datePublished": "2025-01-17",
"image": "https://example.com/obraz.jpg"
}
</script>
Zalety JSON-LD:
- Łatwy w implementacji — nie wymaga modyfikacji HTML
- Czytelny i łatwy w utrzymaniu
- Zalecany przez Google
- Można umieścić w jednym miejscu (head lub body)
Microdata
Microdata to atrybuty HTML, które dodaje się bezpośrednio do elementów HTML. Wymaga modyfikacji struktury HTML strony.
Przykład Microdata dla produktu:
<div itemscope itemtype="https://schema.org/Product">
<h1 itemprop="name">Nazwa produktu</h1>
<span itemprop="price">299</span>
<span itemprop="priceCurrency">PLN</span>
</div>
Wady Microdata:
- Wymaga modyfikacji HTML
- Może być trudny w utrzymaniu
- Mniej elastyczny niż JSON-LD
RDFa
RDFa to podobny do Microdata format, który również wymaga modyfikacji HTML. Jest mniej popularny niż Microdata i JSON-LD.
Zalecenie: Używaj JSON-LD, chyba że masz specyficzne powody, aby używać innego formatu.
Najważniejsze typy Schema.org
Schema.org definiuje setki typów strukturalnych danych dla różnych rodzajów treści. W tej sekcji omówimy najważniejsze typy, które są najczęściej używane i przynoszą największe korzyści SEO.
Article (Artykuł)
Schema Article jest używany do oznaczania artykułów, postów na blogu i innych treści publikowanych. Może wyświetlać się w wzbogaconych wynikach z datą publikacji, autorem i obrazem.
Przykład Schema Article:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Jak zoptymalizować szybkość strony dla SEO?",
"description": "Praktyczny przewodnik po optymalizacji Core Web Vitals...",
"image": "https://example.com/obraz.webp",
"author": {
"@type": "Person",
"name": "Janusz Brodzik",
"url": "https://example.com/autor/janusz-brodzik"
},
"publisher": {
"@type": "Organization",
"name": "GetPromo.pl",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"datePublished": "2025-01-17",
"dateModified": "2025-01-17"
}
</script>
Wymagane pola:
@type: "Article"headline: Tytuł artykułuauthor: Autor artykułudatePublished: Data publikacji
Opcjonalne, ale zalecane:
description: Opis artykułuimage: Obraz głównypublisher: WydawcadateModified: Data ostatniej modyfikacji
Product (Produkt)
Schema Product jest używany do oznaczania produktów w sklepach internetowych. Może wyświetlać się w wynikach z ceną, dostępnością, ocenami i obrazami.
Przykład Schema Product:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Nazwa produktu",
"description": "Opis produktu",
"image": "https://example.com/produkt.jpg",
"brand": {
"@type": "Brand",
"name": "Nazwa marki"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/produkt",
"priceCurrency": "PLN",
"price": "299.00",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "Nazwa sklepu"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "127"
}
}
</script>
Wymagane pola:
@type: "Product"name: Nazwa produktuoffers: Oferta (cena, dostępność)
Opcjonalne, ale zalecane:
description: Opis produktuimage: Obrazy produktubrand: MarkaaggregateRating: Oceny i recenzje
FAQPage (Strona FAQ)
Schema FAQPage jest używany do oznaczania sekcji z często zadawanymi pytaniami. Może wyświetlać się w wynikach jako rozwijane pytania i odpowiedzi.
Przykład Schema FAQPage:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "Jak długo trwa optymalizacja SEO?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Optymalizacja SEO to proces długoterminowy. Pierwsze efekty zwykle widać po 3-6 miesiącach regularnych działań."
}
}, {
"@type": "Question",
"name": "Czy SEO jest darmowe?",
"acceptedAnswer": {
"@type": "Answer",
"text": "SEO jest darmowe w sensie, że nie płacisz za kliknięcia, ale wymaga czasu i często narzędzi, które mogą być płatne."
}
}]
}
</script>
Wymagane pola:
@type: "FAQPage"mainEntity: Tablica pytań i odpowiedzi
LocalBusiness (Lokalna firma)
Schema LocalBusiness jest używany do oznaczania lokalnych firm. Może wyświetlać się w wynikach z adresem, telefonem, godzinami otwarcia i ocenami.
Przykład Schema LocalBusiness:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Nazwa firmy",
"image": "https://example.com/logo.jpg",
"@id": "https://example.com",
"url": "https://example.com",
"telephone": "+48123456789",
"address": {
"@type": "PostalAddress",
"streetAddress": "ul. Przykładowa 123",
"addressLocality": "Warszawa",
"postalCode": "00-001",
"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"
}
}
</script>
Wymagane pola:
@type: "LocalBusiness"name: Nazwa firmyaddress: Adres firmy
Opcjonalne, ale zalecane:
telephone: Numer telefonuopeningHoursSpecification: Godziny otwarciageo: Współrzędne geograficznepriceRange: Zakres cenowy
Organization (Organizacja)
Schema Organization jest używany do oznaczania organizacji, firm i marek. Może wyświetlać się w wynikach z logo, danymi kontaktowymi i linkami do social media.
Przykład Schema Organization:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "GetPromo.pl",
"url": "https://getpromo.pl",
"logo": "https://getpromo.pl/logo.png",
"sameAs": [
"https://www.facebook.com/getpromo",
"https://www.twitter.com/getpromo",
"https://www.linkedin.com/company/getpromo"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+48123456789",
"contactType": "customer service",
"email": "[email protected]"
}
}
</script>
BreadcrumbList (Breadcrumbs)
Schema BreadcrumbList jest używany do oznaczania breadcrumbs (ścieżki nawigacyjnej). Może wyświetlać się w wynikach jako ścieżka nawigacyjna pod tytułem strony.
Przykład Schema BreadcrumbList:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Strona główna",
"item": "https://example.com"
}, {
"@type": "ListItem",
"position": 2,
"name": "Kategoria",
"item": "https://example.com/kategoria"
}, {
"@type": "ListItem",
"position": 3,
"name": "Artykuł",
"item": "https://example.com/kategoria/artykul"
}]
}
</script>
Implementacja strukturalnych danych
Implementacja strukturalnych danych zależy od platformy, na której działa Twoja strona. W tej sekcji omówimy najpopularniejsze sposoby implementacji dla różnych platform i systemów CMS.
WordPress
Opcja 1: Wtyczki
Najłatwiejszym sposobem jest użycie wtyczki, która automatycznie dodaje strukturalne dane:
- Schema Pro — płatna, bardzo zaawansowana
- Schema & Structured Data for WP & AMP — darmowa, dobra funkcjonalność
- Yoast SEO — ma wbudowaną obsługę podstawowych typów schema
- Rank Math — darmowa, dobra alternatywa dla Yoast
Opcja 2: Ręczna implementacja
Możesz dodać JSON-LD ręcznie w edytorze motywu lub przez wtyczkę do wstawiania kodu:
- Zainstaluj wtyczkę "Insert Headers and Footers"
- Dodaj kod JSON-LD w sekcji "Scripts in Header"
- Dostosuj dane do każdej strony
Inne platformy CMS
Shopify:
- Automatycznie dodaje Schema Product dla produktów
- Możesz dodać dodatkowe schema przez edytor motywu
WooCommerce:
- Wtyczki jak "Schema App" automatycznie dodają schema
- Możesz dodać ręcznie przez functions.php
Własna strona HTML:
- Dodaj kod JSON-LD bezpośrednio w sekcji
<head>lub na końcu<body> - Użyj zmiennych, aby dynamicznie wypełniać dane
Przykład dla własnej strony:
<!DOCTYPE html>
<html>
<head>
<title>Tytuł strony</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Tytuł artykułu",
"author": {
"@type": "Person",
"name": "Janusz Brodzik"
},
"datePublished": "2025-01-17"
}
</script>
</head>
<body>
<!-- Treść strony -->
</body>
</html>
Testowanie strukturalnych danych
Po implementacji strukturalnych danych musisz je przetestować, aby upewnić się, że są poprawne i Google może je zrozumieć. W tej sekcji omówimy najważniejsze narzędzia do testowania strukturalnych danych.
Google Rich Results Test
Rich Results Test to oficjalne narzędzie Google do testowania strukturalnych danych. Pokazuje, czy Google może zrozumieć Twoje strukturalne dane i jak mogą wyglądać w wynikach wyszukiwania.
Jak używać:
- Wejdź na Rich Results Test
- Wklej URL strony lub kod HTML
- Kliknij "Test URL" lub "Test Code"
- Przeanalizuj wyniki — czy są błędy lub ostrzeżenia?
Co pokazuje Rich Results Test:
- Czy strukturalne dane są poprawne
- Czy wszystkie wymagane pola są wypełnione
- Jak strona może wyglądać w wzbogaconych wynikach
- Ostrzeżenia o brakujących opcjonalnych polach
Schema Markup Validator
Schema Markup Validator to narzędzie Schema.org do walidacji strukturalnych danych. Sprawdza, czy kod jest zgodny ze standardem Schema.org.
Jak używać:
- Wejdź na Schema Markup Validator
- Wklej URL strony lub kod
- Przeanalizuj wyniki
Google Search Console
Search Console pokazuje rzeczywiste użycie strukturalnych danych na Twojej stronie i czy Google znalazł jakieś problemy.
Gdzie sprawdzić:
- Wejdź do Google Search Console
- Przejdź do "Ulepszenia" → "Strukturalne dane"
- Sprawdź, czy są błędy lub ostrzeżenia
- Zobacz, które strony mają strukturalne dane
Najczęstsze błędy w implementacji
Podczas implementacji strukturalnych danych łatwo jest popełnić błędy, które mogą uniemożliwić Google poprawne zrozumienie danych. W tej sekcji omówimy najczęstsze błędy i jak ich unikać.
❌ Błędy do unikania:
- Błędna składnia JSON — brakujące przecinki, cudzysłowy, nawiasy
- Brakujące wymagane pola — Google może nie wyświetlić wzbogaconych wyników
- Nieprawidłowe typy danych — np. tekst zamiast liczby dla ceny
- Duplikaty — ta sama treść oznaczona wieloma typami schema
- Niezgodność z treścią — strukturalne dane nie odpowiadają rzeczywistej treści strony
✅ Najlepsze praktyki:
- Używaj JSON-LD — najłatwiejszy w implementacji i utrzymaniu
- Testuj przed publikacją — zawsze testuj w Rich Results Test
- Bądź precyzyjny — używaj dokładnych danych, nie przybliżeń
- Aktualizuj dane — upewnij się, że strukturalne dane są aktualne
- Unikaj duplikatów — nie oznaczaj tej samej treści wieloma typami schema
Przykład błędu — błędna składnia JSON:
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Tytuł artykułu" // Brak przecinka!
"author": {
"@type": "Person",
"name": "Janusz Brodzik"
}
}
Poprawna wersja:
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Tytuł artykułu", // Przecinek dodany
"author": {
"@type": "Person",
"name": "Janusz Brodzik"
}
}
Wzbogacone wyniki wyszukiwania (Rich Results)
Wzbogacone wyniki to wyniki wyszukiwania z dodatkowymi elementami wizualnymi, takimi jak gwiazdki, ceny, daty czy rozwijane sekcje. Strukturalne dane są wymagane, aby strona mogła wyświetlać się w wzbogaconych wynikach. W tej sekcji omówimy najpopularniejsze typy wzbogaconych wyników.
Typy wzbogaconych wyników
1. Artykuły z obrazem i datą
Artykuły z Schema Article mogą wyświetlać się z obrazem, datą publikacji i autorem.
2. Produkty z ceną i ocenami
Produkty z Schema Product mogą wyświetlać się z ceną, dostępnością, ocenami i obrazami.
3. FAQ z rozwijanymi pytaniami
FAQ z Schema FAQPage mogą wyświetlać się jako rozwijane pytania i odpowiedzi bezpośrednio w wynikach.
4. Breadcrumbs
Breadcrumbs z Schema BreadcrumbList mogą wyświetlać się jako ścieżka nawigacyjna pod tytułem strony.
5. Wydarzenia
Wydarzenia z Schema Event mogą wyświetlać się z datą, lokalizacją i ceną biletów.
6. Lokalne firmy
Lokalne firmy z Schema LocalBusiness mogą wyświetlać się z adresem, telefonem, godzinami otwarcia i ocenami.
Jak zwiększyć szanse na wzbogacone wyniki?
- Używaj odpowiednich typów schema — dopasuj typ do treści strony
- Wypełnij wszystkie wymagane pola — Google wymaga wszystkich wymaganych pól
- Dodaj opcjonalne pola — zwiększają szanse na wzbogacone wyniki
- Testuj regularnie — używaj Rich Results Test
- Monitoruj w Search Console — sprawdzaj, czy Google wyświetla wzbogacone wyniki
Podsumowanie
Kluczowe zasady implementacji:
- Używaj JSON-LD — najłatwiejszy i zalecany przez Google format
- Dopasuj typ schema do treści — używaj odpowiedniego typu dla każdej strony
- Wypełnij wymagane pola — Google potrzebuje wszystkich wymaganych danych
- Testuj przed publikacją — zawsze testuj w Rich Results Test
- Monitoruj w Search Console — sprawdzaj, czy Google poprawnie indeksuje dane
Najważniejsze typy schema:
- Article — dla artykułów i postów na blogu
- Product — dla produktów w sklepach internetowych
- FAQPage — dla sekcji z często zadawanymi pytaniami
- LocalBusiness — dla lokalnych firm
- Organization — dla organizacji i marek
- BreadcrumbList — dla breadcrumbs
Narzędzia do testowania:
- Google Rich Results Test — oficjalne narzędzie Google
- Schema Markup Validator — walidacja zgodności ze standardem
- Google Search Console — monitoring rzeczywistego użycia
Pamiętaj, że strukturalne dane to inwestycja w długoterminową widoczność. Chociaż implementacja może wymagać czasu, wzbogacone wyniki przyciągają więcej uwagi i kliknięć, co przekłada się na wyższy ruch organiczny i lepsze pozycje w wynikach wyszukiwania.