Разметка сайта для автоимпорта
Ассистент обходит ваш сайт и сам собирает базу знаний и карточки: услуги, товары, выполненные работы. Чем лучше разметка, тем больше он берёт автоматически — и тем меньше вы заполняете руками.
Ярусы извлечения
От точного к приблизительному. Без разметки работает нижний ярус — эвристики: он даёт заголовки и фото, но не цены и не характеристики.
YML-фид Яндекс.Маркета
Для интернет-магазинов. Лучший источник: цены, наличие, фото, артикулы. Платформа магазина обновляет фид сама.
JSON-LD schema.org
Универсальный вариант, его мы рекомендуем большинству сайтов. Примеры ниже можно вставить как есть.
Микроданные и OpenGraph
Принимаем, но данных в них меньше: обычно только заголовок, описание и картинка.
Эвристики по картинкам и тексту
Картинки, их alt и окружающий текст. Работает всегда, но без чисел: ни цен, ни сроков, ни площадей.
Обязательный минимум для любого сайта
Контент в HTML, а не только в JavaScript
Краулер читает HTML ответа. Если блок рисуется скриптом из массива в .js-файле, для импорта его не существует. Отдавайте готовую разметку или дублируйте данные в JSON-LD.
Осмысленный alt у каждой значимой картинки
Текст alt становится заголовком карточки. «photo_1.jpg» заголовком быть не может.
Атрибуты width и height на <img>
По ним фотографии отделяются от иконок без скачивания файла.
Иконки отличимы от фотографий
Держите их в отдельной папке (/assets/icons/) или помечайте классом: иконки, логотипы, спрайты и паттерны в карточки не попадают.
sitemap.xml
Нужен, чтобы обход находил все страницы, а не только те, на которые есть ссылки внутри сайта.
Цены и характеристики — текстом
Текст внутри изображения не читается: цифры с баннера в базу знаний не попадут.
JSON-LD: рабочие примеры
Вставляются в <head> или в конец <body> как есть — подставьте свои значения. Блоков может быть несколько: организация, услуги, работы, вопросы.
Организация: кто вы, где работаете, как связаться
Блок о самой компании: название, телефон, регион, города обслуживания, часы работы. По «@id» на него ссылаются остальные блоки.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "GeneralContractor",
"@id": "https://example.ru/#org",
"name": "Строймонолит",
"legalName": "ООО «Строймонолит»",
"taxID": "3900000000",
"url": "https://example.ru/",
"telephone": "+7-900-000-00-00",
"address": {
"@type": "PostalAddress",
"addressRegion": "Калининградская область",
"addressCountry": "RU"
},
"areaServed": [
{ "@type": "City", "name": "Калининград" },
{ "@type": "City", "name": "Светлогорск" },
{ "@type": "City", "name": "Зеленоградск" }
],
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
"opens": "08:00",
"closes": "20:00"
}
}
</script>
Услуга с ценовым диапазоном
AggregateOffer с lowPrice и highPrice — правильный способ описать цену «от и до». Единица измерения задаётся через unitCode (MTK — квадратный метр по UN/CEFACT).
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Монолитная плита под ключ в металлической опалубке",
"serviceType": "Устройство фундаментной плиты",
"provider": { "@id": "https://example.ru/#org" },
"description": "Выемка и планировка грунта, песчано-щебёночная подушка с уплотнением, металлическая инвентарная опалубка, армирование, бетон, вибрирование и уход. Пирог пола не входит.",
"offers": {
"@type": "AggregateOffer",
"priceCurrency": "RUB",
"lowPrice": "11500",
"highPrice": "13500",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"priceCurrency": "RUB",
"minPrice": "11500",
"maxPrice": "13500",
"referenceQuantity": { "@type": "QuantitativeValue", "value": 1, "unitCode": "MTK" }
}
}
}
</script>
Выполненные работы
Данные о работах (площадь, толщина, срок, город, цена) обычно лежат в JS-массиве и для импорта невидимы. ItemList из ImageObject делает их машиночитаемыми: ассистент подтянет и фото, и подпись под карточку. Остальные объекты добавляются такими же элементами с position 3, 4, 5. В contentUrl — абсолютный адрес исходного файла, а не уменьшенной копии.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "Примеры наших работ",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "ImageObject",
"name": "Плита 9 × 11 м, 99 м²",
"contentUrl": "https://example.ru/photos/plita-99.jpg",
"description": "99 м² · 250 мм · 12 дней · Калининград · 1 230 000 ₽"
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "ImageObject",
"name": "Плита 10 × 12 м, 120 м²",
"contentUrl": "https://example.ru/photos/plita-120.jpg",
"description": "120 м² · 250 мм · 12 дней · Гурьевск · 1 390 000 ₽"
}
}
]
}
</script>
Частые вопросы
Если на сайте есть блок вопросов и ответов, FAQPage переносит его в базу знаний дословно — самый дешёвый способ научить ассистента отвечать вашими формулировками.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "Что входит в стоимость?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Выемка и планировка грунта, песчано-щебёночная подушка с уплотнением, монтаж металлической опалубки, армирование, бетон и заливка, вибрирование и уход, уборка после работ."
}
}]
}
</script>
Интернет-магазин
Для каталога товаров — разметка Product на карточке товара:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"sku": "PLT-250",
"name": "Название товара",
"image": ["https://example.ru/img/1.jpg"],
"description": "Короткое описание.",
"offers": {
"@type": "Offer",
"priceCurrency": "RUB",
"price": "12000",
"availability": "https://schema.org/InStock",
"url": "https://example.ru/tovar/plt-250"
}
}
</script>
Если у магазина уже есть YML-фид, достаточно его: он точнее и обновляется чаще, чем разметка на страницах. Цены из фида не устаревают между обходами.
Что скрыть от ассистента
Не всё на странице — знания. Человек понимает, что демо-чат и сравнение с рынком это витрина, а ассистент читает их как факты о вашей компании и пересказывает клиентам. Оберните такие блоки атрибутом — обход их пропустит:
<div data-nosnippet>
<!-- демо-переписка, сравнение с конкурентами, вымышленные примеры -->
</div>
data-nosnippet — стандартный атрибут Google, им же исключают текст из поисковой выдачи, поэтому отдельной разметки для нас заводить не нужно. Если он у вас уже занят под другое, есть синоним data-assiistent-skip — работает так же.
Демо-переписка
Демонстрационные диалоги и скриншоты переписки. Мы на этом обожглись сами: наш бот пересказал гостю цифры из демо-чата как свою сегодняшнюю статистику.
Сравнение с конкурентами
Таблицы сравнения с конкурентами и их цены. Иначе ассистент называет чужой тариф вашим — строка подошла по объёму, а чья она, из текста не видно.
Примеры и отзывы «для витрины»
Кейсы и отзывы, написанные как пример, а не как факт: ассистент сошлётся на них в разговоре как на вашу работу.
Логотипы и карточки клиентов
Блок «наши клиенты» с чужими профессиями. Без метки ассистент начинает считать чужое дело своим и предлагать чужие услуги.
Чего делать не нужно
Размечать то, чего нет на странице
Разметка обязана совпадать с видимым контентом страницы.
Ставить цену, которую вы не готовы обновлять
Лучше диапазон (AggregateOffer) или совсем без цены, чем устаревшее число: ассистент не должен называть клиенту цену, которой уже нет.
Прятать разметку от посетителей
Показывать данные только роботам — нарушение правил поисковых систем и риск для сайта.
Проверка
После правок запустите обход заново: «База знаний» → адрес сайта → «Сканировать». Найденные карточки приходят на подтверждение, а не публикуются сразу.
Остались вопросы?
Зарегистрируйтесь бесплатно — и посмотрите, как сотрудник отвечает вашим клиентам.