Content Accessibility

Schema.org JSON-LD

Структурированная семантическая разметка контента в HTML через JSON-LD для поисковиков и AI-агентов.

Что такое Schema.org JSON-LD?

Schema.org JSON-LD — машиночитаемые метаданные, встраиваемые в страницу блоком <script type="application/ld+json">. Schema.org — совместный словарь типов данных от Google, Microsoft, Yahoo и Yandex. JSON-LD — синтаксис для записи этих данных.

Пример JSON-LD на главной странице:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Agent Ready Scanner",
  "applicationCategory": "DeveloperApplication",
  "url": "https://agentsready.io",
  "description": "Бесплатный сканер AI-готовности сайтов"
}
</script>

Разметка встраивается в <head> или <body> и не влияет на визуальное отображение — она видна только поисковикам и AI-агентам.

Зачем сайту Schema.org JSON-LD?

Schema.org решает фундаментальную проблему: HTML содержит контент, но не говорит, что он значит. Параграф текста — это отзыв? Расписание? Инструкция? Без разметки AI угадывает. С разметкой — знает точно.

Для GEO и AEO:

AI-помощники (ChatGPT, Perplexity, Google AI Overview) используют структурированные данные при формировании ответов. Страница с FAQPage цитируется как готовый ответ — это основной инструмент AEO. Страница с Product и aggregateRating попадает в rich snippets.

Для AI-агентов:

Агент извлекает данные из разметки быстрее и точнее, чем из свободного HTML.

Практические эффекты:

  • FAQPage → rich snippet «Вопрос-ответ», цитирование в AI-ответах
  • Рецепт/статья → rich snippet с изображением
  • Organization → Knowledge Panel
  • SoftwareApplication → оценка в поиске по приложениям

Как реализовать Schema.org JSON-LD?

Минимальный набор для большинства сайтов:

<!-- Главная страница: WebSite -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Название сайта",
  "url": "https://example.com"
}
</script>

<!-- О нас: Organization -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Компания",
  "url": "https://example.com",
  "logo": "https://example.com/logo.png",
  "contactPoint": {
    "@type": "ContactPoint",
    "email": "hello@example.com"
  }
}
</script>

FAQ страница:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Что такое agent-readiness?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Agent-readiness — это степень готовности сайта..."
      }
    }
  ]
}

Приоритетные типы для agent-readiness:

ТипКогда использовать
WebSiteГлавная страница
OrganizationСтраница «О нас»
SoftwareApplicationГлавная для SaaS/приложений
FAQPageСтраница FAQ
Article / TechArticleСтатьи, документация
DefinedTermСтраницы глоссария
ServiceСтраница услуг/тарифов

Для Astro (наш подход):

---
const schema = {
  '@context': 'https://schema.org',
  '@type': 'SoftwareApplication',
  name: 'Agent Ready Scanner',
  url: 'https://agentsready.io',
};
---
<script type="application/ld+json" set:html={JSON.stringify(schema)}></script>

Валидация: перед деплоем проверьте на validator.schema.org — должно быть 0 errors, желательно 0 warnings.

Как мы проверяем Schema.org?

Наш сканер делает GET / (главную страницу) и проверяет:

  1. Наличие блоков JSON-LD — ищем все <script type="application/ld+json"> в HTML
  2. Валидный JSON — каждый блок парсится без ошибок
  3. @type из приоритетного спискаOrganization, Product, SoftwareApplication, Article, FAQPage, BreadcrumbList, WebSite
  4. Обязательные поля по типу — для каждого типа проверяем наличие обязательных полей (например, WebSite требует name и url)

Статус pass — если хотя бы один блок валиден и содержит приоритетный тип с нужными полями. Статус fail — нет ни одного JSON-LD блока или все блоки невалидны. Статус neutral — найдены другие форматы разметки (Microdata, RDFa), но не JSON-LD.

Источники и спецификации