Микроразметка Open Graph: управление превью ссылок в мессенджерах и соцсетях
1. Архитектура и принцип работы
Краулер мессенджера или соцсети при получении ссылки делает HTTP-запрос, читает
и вытаскивает . Приоритет у og-тегов выше, чем у2. Математическая механика и триггеры ранжирования
Парсер читает только первые ~1 МБ HTML и не ждёт JS. Ключевые параметры: og:image — рекомендуемый минимум 1200×630 px (соотношение 1.91:1), вес до 1–5 МБ в зависимости от площадки, форматы JPEG/PNG/WebP; Telegram тянет до 5 МБ, VK режет крупные файлы. og:title — до 60–70 символов до обрезки, og:description — 110–160 символов. Обязательный набор: og:title, og:type, og:image, og:url; для товаров — og:price:amount, og:price:currency, og:availability. Правило абсолютных URL: og:image и og:url задаются полным адресом с https, относительные пути часть парсеров игнорирует. og:url должен совпадать с canonical, иначе превью и индексация расходятся. Для языковых версий — og:locale (ru_RU) и og:locale:alternate. Twitter использует twitter:card=summary_large_image и twitter:image как отдельный слой поверх OG.
3. Специфика в Яндекс (YATI) vs Google
Google сам OG не использует для поисковой выдачи — там работают title, description и schema.org, но OG важен для Google Discover и карточек в Google-сервисах. Яндекс для сниппетов опирается на свои теги и schema.org, а OG учитывает в Турбо-страницах и при шаринге через Яндекс-сервисы. В соцсетях разница заметнее: ВКонтакте и Telegram читают OG напрямую, Facebook — OG с приоритетом, Twitter — свой twitter:*-слой. Для российского трафика критичны VK и Telegram: у VK свой отладчик сниппета и агрессивный кеш, у Telegram — бот @WebpageBot для сброса. Практический вывод: держим полный OG-набор плюс twitter:card, а schema.org добавляем параллельно — это закрывает и поиск, и соцсети.
4. Нормативы SLA и диагностическая матрица
| Параметр / Метрика | Эталон по SLA | Критическая ошибка |
|---|---|---|
| Наличие полного OG-набора на ключевых шаблонах | 100% шаблонов | <80% шаблонов |
| Размер og:image | 1200×630 px, до 1 МБ | меньше 600×315 или больше 5 МБ |
| HTTP-статус og:image | 200 без редиректов | 403/302/404 |
5. Пошаговый инженерный протокол внедрения
- Проверить текущий HTML: curl -s URL | grep -i 'og:' — убедиться, что теги в первичном ответе, а не в JS-рендере.
- Прописать обязательный набор og:title, og:description, og:image (1200×630, абсолютный https-URL), og:url, og:type и twitter:card.
- Прогнать ссылку через отладчики: Facebook Sharing Debugger, VK-редактор сниппета, Telegram @WebpageBot — зафиксировать, что превью собирается без ошибок.
- Настроить автогенерацию OG для динамических страниц (шаблоны title/description, дефолтная картинка при отсутствии своей) и мониторить 200-ответ og:image без редиректов на авторизацию.
<meta property="og:title" content="Купить кофемолку — каталог">
<meta property="og:description" content="Ручные и электрические кофемолки, доставка по РФ.">
<meta property="og:image" content="https://example.ru/img/og/coffee-1200x630.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:url" content="https://example.ru/catalog/kofemolki">
<meta property="og:type" content="website">
<meta property="og:locale" content="ru_RU">
<meta name="twitter:card" content="summary_large_image">
<link rel="canonical" href="https://example.ru/catalog/kofemolki">
6. Типичные ошибки при оптимизации
- OG-теги рендерятся только на клиенте (React/Vue без SSR) — краулер превью видит пустой и строит карточку из мусора.
- og:image отдаёт 403/302 на логин или весит 10 МБ — площадка молча подставляет дефолтную заглушку или не показывает картинку вовсе.
- Правят теги и ждут мгновенного результата, забывая про кеш соцсетей — нужно сбрасывать через отладчик или менять URL-параметр.
