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 угадывает. С разметкой — знает точно.
AI-помощники (ChatGPT, Perplexity, Google AI Overview) используют структурированные данные при формировании ответов. Страница с FAQPage цитируется как готовый ответ — это основной инструмент AEO. Страница с Product и aggregateRating попадает в rich snippets.
Для AI-агентов:
Агент извлекает данные из разметки быстрее и точнее, чем из свободного HTML.
Практические эффекты:
FAQPage→ rich snippet «Вопрос-ответ», цитирование в AI-ответах- Рецепт/статья → rich snippet с изображением
Organization→ Knowledge PanelSoftwareApplication→ оценка в поиске по приложениям
Как реализовать 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 / (главную страницу) и проверяет:
- Наличие блоков JSON-LD — ищем все
<script type="application/ld+json">в HTML - Валидный JSON — каждый блок парсится без ошибок
@typeиз приоритетного списка —Organization,Product,SoftwareApplication,Article,FAQPage,BreadcrumbList,WebSite- Обязательные поля по типу — для каждого типа проверяем наличие обязательных полей (например,
WebSiteтребуетnameиurl)
Статус pass — если хотя бы один блок валиден и содержит приоритетный тип с нужными полями. Статус fail — нет ни одного JSON-LD блока или все блоки невалидны. Статус neutral — найдены другие форматы разметки (Microdata, RDFa), но не JSON-LD.