Перейти к содержимому

12. Structured Data

Структурированные данные — это разметка для поисковых систем. Позволяет Google показывать богатые сниппеты (Rich Snippets): звёзды, цены, даты, FAQ прямо в поиске.

Обычный результат:
Название страницы
Описание текст...
Rich Snippet с разметкой:
Название товара ⭐⭐⭐⭐⭐ 4.8 (1234 отзыва)
Цена: 89 990₽ — В наличии

Рекомендуется JSON-LD — Google предпочитает его:

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
...
}
</script>
{
"@context": "https://schema.org",
"@type": "Product",
"name": "iPhone 15 Pro",
"image": "https://example.com/iphone.jpg",
"description": "Флагманский смартфон Apple с чипом A17 Pro",
"brand": {
"@type": "Brand",
"name": "Apple"
},
"offers": {
"@type": "Offer",
"price": "89990",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "МагазинТехники.ru"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "1234"
}
}
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Как оптимизировать производительность сайта",
"author": {
"@type": "Person",
"name": "Яша"
},
"publisher": {
"@type": "Organization",
"name": "YashaSchool",
"logo": {
"@type": "ImageObject",
"url": "https://yashaschool.ru/logo.png"
}
},
"datePublished": "2026-01-15T08:00:00+03:00",
"dateModified": "2026-01-20T10:00:00+03:00",
"image": "https://yashaschool.ru/article-cover.jpg",
"description": "Подробное руководство по оптимизации веб-сайтов"
}
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Как ускорить загрузку сайта?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Оптимизируйте изображения, включите сжатие, используйте CDN и кэширование."
}
},
{
"@type": "Question",
"name": "Что такое Core Web Vitals?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Метрики Google: LCP (загрузка), CLS (стабильность), INP (интерактивность)."
}
}
]
}
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Главная",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Каталог",
"item": "https://example.com/katalog/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Смартфоны",
"item": "https://example.com/katalog/smartfony/"
},
{
"@type": "ListItem",
"position": 4,
"name": "iPhone 15 Pro"
}
]
}
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "МагазинТехники.ru",
"image": "https://example.com/logo.jpg",
"url": "https://example.com",
"telephone": "+7-800-555-35-35",
"address": {
"@type": "PostalAddress",
"streetAddress": "Тверская, 1",
"addressLocality": "Москва",
"addressCountry": "RU"
},
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
}
}
app/products/[slug]/page.tsx
export default async function ProductPage({ params }) {
const product = await getProduct(params.slug);
const structuredData = {
"@context": "https://schema.org",
"@type": "Product",
name: product.name,
image: product.imageUrl,
offers: {
"@type": "Offer",
price: product.price,
priceCurrency: "RUB",
availability: product.inStock
? "https://schema.org/InStock"
: "https://schema.org/OutOfStock",
},
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(structuredData) }}
/>
<ProductDetails product={product} />
</>
);
}
1. Google Rich Results Test:
https://search.google.com/test/rich-results
2. Schema.org Validator:
https://validator.schema.org/
3. Chrome DevTools → Elements → Ctrl+F "ld+json"