Часть 6 из 22

Структурированные данные: JSON-LD, который приносит rich results

Структурированные данные — это звёзды рейтинга, FAQ-раскрывашки, хлебные крошки и карточки статей в выдаче. А ещё это формат, который AI-движки парсят надёжнее всего. В App Router рендерите JSON-LD как script-тег из серверного компонента (с типами из schema-dts):

import type { WithContext, BlogPosting } from "schema-dts";

export default async function PostPage({ params }) {
  const post = await getPost(params.slug);

  const jsonLd: WithContext<BlogPosting> = {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    headline: post.title,
    description: post.excerpt,
    datePublished: post.publishedAt,
    dateModified: post.updatedAt,
    author: {
      "@type": "Person",
      name: "Vlad Sedenko",
      url: "https://example.com/about",
    },
    image: post.ogImage,
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
      />
      <article>{/* ... */}</article>
    </>
  );
}

Какие типы внедрять — по убыванию эффекта:

  1. Organization / Person — на весь сайт, в корневом layout. Питает панель знаний.
  2. BlogPosting / Article — каждый пост.
  3. BreadcrumbList — заменяет URL в выдаче на читаемый путь.
  4. FAQPage — для страниц с настоящими вопросами-ответами (их же активно цитируют AI-движки).
  5. Product + Offer + AggregateRating — e-commerce; отсюда берутся звёзды.
  6. Service + LocalBusiness — агентства и локальный бизнес.

Валидируйте через Rich Results Test от Google — валидатор schema.org проверяет синтаксис, но только инструмент Google скажет, подходите ли вы под rich results.

Чеклист:

  • JSON-LD рендерится на сервере (не инжектится на клиенте после загрузки)
  • Article/BlogPosting на всех постах с настоящими датами
  • BreadcrumbList по всему сайту
  • Данные в разметке совпадают с видимой страницей (за расхождение можно получить ручные санкции)

01—22

Все темы гайда

  1. 01Стратегия рендеринга: что на самом деле видит краулер?
  2. 02Metadata API: тайтлы, описания и паттерн с шаблоном
  3. 03Canonical и hreflang: одна страница — один адрес
  4. 04Open Graph и динамические OG-картинки
  5. 05sitemap.ts и robots.ts: файловые конвенции вместо рукописного XML
  6. 06Структурированные данные: JSON-LD, который приносит rich results
  7. 07Картинки, шрифты и скрипты: классическое трио производительности
  8. 08Core Web Vitals: три числа, которые измеряет Google
  9. 09Редиректы, 404 и коды ответов
  10. 10Кеширование и свежесть контента
  11. 11AEO/GEO: как попасть в ответы ChatGPT, Perplexity и Google AI Overviews
  12. 12Мониторинг: SEO — это цикл, а не задача на запуск
  13. 13Траст и E-E-A-T: как сделать сайт заслуживающим доверия
  14. 14Image SEO: как превратить картинки в трафик
  15. 15Внутренняя перелинковка и архитектура сайта
  16. 16Поисковые интенты: страницы под то, что люди реально ищут
  17. 17Programmatic SEO в Next.js: страницы в масштабе без спама
  18. 18SEO-миграция: переезд на Next.js без потери трафика
  19. 19Пагинация и фасетная навигация без раздувания индекса
  20. 20Доступность и SEO: одна работа — две награды
  21. 21Угасание контента: обновить, склеить или удалить
  22. 22Off-page для разработчиков: ссылки, которые не покупают

Нужно, чтобы это сделали за вас?

Я провожу аудит и чиню техническое SEO на сайтах Next.js — индексация, скорость, hreflang и видимость в AI.

Услуга «Техническое SEO»