0% прочитано

Telegram показує Open Graph-зображення, а LinkedIn ні: як діагностувати кеш попереднього перегляду

Одна платформа може вже показувати нове Open Graph-зображення, а інша ще тримати старий попередній перегляд. Це не завжди означає помилку в meta tags. Перевіряти потрібно окремо HTML, SSR, доступність og:image, HTTP-відповідь і кеш конкретного робота.

29 жовтня 2026 р. 9 хв читанняФронтенд

Після зміни обкладинки або SEO-метаданих можна побачити дивну ситуацію: Telegram уже показує нове og:image, а LinkedIn продовжує відображати старе зображення або взагалі не показує його.

Перша реакція зазвичай проста: "Open Graph налаштований неправильно".

Але якщо одна платформа вже прочитала правильне зображення, це сильний сигнал, що проблема може бути не в самих тегах, а в тому, коли і як конкретна платформа востаннє сканувала сторінку.

Соціальний попередній перегляд має щонайменше два окремі шари: те, що зараз віддає сторінка, і те, що конкретна платформа вже зберегла у власному кеші.

Правильний Open Graph не гарантує миттєве оновлення на всіх платформах

Telegram, LinkedIn та інші сервіси не зобов’язані отримувати сторінку одночасно.

Кожен сервіс має власного робота, власні правила повторного сканування і власний кеш.

Тому одна й та сама URL-адреса в один момент може мати різні попередні перегляди на різних платформах.

Спочатку перевірте HTML, який реально отримує робот

Перевірка Open Graph у відповіді сервера
curl -s https://example.com/article \  | grep -iE \    'og:title|og:description|og:image|og:url'

Не починайте з кешу, доки не переконаєтеся, що поточна HTML-відповідь справді містить потрібні значення.

Особливо це важливо для застосунків із клієнтським рендерингом. Якщо meta tags змінюються лише після виконання JavaScript у браузері, робот соціальної мережі може їх взагалі не побачити.

Для такого сценарію SSR або серверно сформовані meta tags часто є критично важливими.

Перевірте базовий набір Open Graph-тегів

Мінімальний набір для сторінки статті
<meta property="og:title"      content="Article title"> <meta property="og:description"      content="Article description"> <meta property="og:image"      content="https://example.com/media/cover.jpg"> <meta property="og:url"      content="https://example.com/article"> <meta property="og:type"      content="article">

Якщо Telegram уже показує правильну картинку, og:image скоріше за все доступний хоча б для одного зовнішнього робота.

Але все одно потрібно перевірити повний набір тегів, абсолютні URL-адреси та відсутність суперечливих значень.

Перевірте саме URL з og:image, а не тільки сторінку

Перевірка HTTP-відповіді зображення
curl -I \  https://example.com/media/cover.jpg

Зображення повинно бути доступне без авторизації та без внутрішньої сесії користувача.

Перевірте HTTP-статус, Content-Type, перенаправлення та те, чи робот взагалі може отримати файл.

Якщо URL відкривається тільки у вашому браузері через cookie або приватний доступ, соціальна мережа може не отримати його.

Для social preview краще віддавати абсолютні URL-адреси

Абсолютний URL для og:image
<!-- Better --><meta property="og:image"      content="https://example.com/media/cover.jpg"> <!-- Avoid relying on --><meta property="og:image"      content="/media/cover.jpg">

Найпідступніший випадок - коли файл змінився, а URL залишився тим самим

Уявімо, що обкладинка /media/post-cover.jpg була замінена новим файлом, але URL залишився незмінним.

Для браузера це може виглядати нормально, особливо після очищення локального кешу.

А соціальна платформа могла вже зберегти старий файл під цим URL і не мати причини негайно завантажувати його повторно.

Якщо вміст зображення змінюється, новий URL або версійований шлях часто надійніший за перезапис файлу за старою адресою.

У попереднього перегляду може бути кілька незалежних кешів

Кеш може існувати на кількох рівнях
page HTML cache    ↓CDN / reverse proxy cache    ↓image cache    ↓platform crawler cache    ↓preview already attached to a post

Через це "я вже змінила тег" не завжди означає "LinkedIn уже бачить новий тег".

Спочатку потрібно зрозуміти, на якому саме рівні залишився старий стан.

Telegram і LinkedIn не є взаємною перевіркою кешу

Якщо Telegram показує нову обкладинку, це підтверджує, що Telegram зміг отримати її.

Це не доводить, що LinkedIn уже повторно просканував сторінку.

І навпаки: старий LinkedIn preview не доводить, що Open Graph зараз неправильний.

Редагування вже створеного допису може не перебудувати старий preview

Ще один окремий сценарій - коли посилання вже було вставлене в допис, а потім сторінку або обкладинку змінили.

Навіть після повторного сканування URL сама вже створена картка в дописі може поводитися інакше, ніж нова вставка того самого посилання.

Тому під час діагностики корисно окремо порівнювати: новий preview для URL і картку, яка вже була прикріплена до раніше створеного допису.

Діагностуйте в правильному порядку

Послідовність діагностики
1. Перевірити HTML без браузерного JavaScript.2. Перевірити og:title / og:description / og:image / og:url.3. Відкрити og:image напряму.4. Перевірити HTTP status і Content-Type.5. Перевірити redirects.6. Переконатися, що image URL абсолютний.7. Перевірити, чи не змінився файл під старим URL.8. Окремо перевірити кеш конкретної платформи.9. Перевірити нову вставку URL.10. Лише після цього міняти Open Graph-логіку.

Не виправляйте правильний код тільки через старий кеш

Це одна з найнеприємніших пасток.

Коли preview неправильний, легко почати міняти SSR, meta tags, canonical URL або генерацію медіа, хоча поточний HTML уже правильний.

Так можна створити нову помилку, намагаючись виправити старий кеш.

Для змінюваних обкладинок корисний стабільний спосіб версіювання URL

Новий ідентифікатор ресурсу після зміни вмісту
/media/article-cover-v1.jpg/media/article-cover-v2.jpg або /media/article-cover.jpg?v=2

Головна ідея тут не в конкретному форматі параметра, а в тому, щоб зміна зображення могла отримати новий ресурсний ідентифікатор.

Це зменшує залежність від того, коли зовнішній робот вирішить оновити кеш старої адреси.

У SPA важливо перевіряти саме серверний HTML

У Vue/Inertia-застосунку браузер може показувати правильний title і meta після гідрації, але робот соціальної мережі може працювати лише з початковою HTML-відповіддю.

Тому перевірка у DevTools після повного завантаження сторінки не завжди достатня.

Надійніша перевірка - подивитися сирий HTML через curl або інший клієнт без виконання JavaScript.

Переконайтеся, що різні User-Agent не отримують різний HTML випадково

Порівняння відповідей для різних User-Agent
curl -s \  -A "Mozilla/5.0" \  https://example.com/article \  | grep -i 'og:image' curl -s \  -A "SocialPreviewBot" \  https://example.com/article \  | grep -i 'og:image'

Зазвичай сторінка повинна віддавати однакові Open Graph-дані незалежно від робота.

Якщо reverse proxy, middleware або антибот-захист змінює відповідь для певного User-Agent, це вже окрема причина неправильного preview.

Для складних випадків допомагають серверні логи

Якщо незрозуміло, чи платформа взагалі повторно заходила на сторінку, корисно перевірити вебсерверні логи.

Вони можуть показати час запиту, User-Agent, HTTP-статус і те, чи робот звертався окремо до og:image.

Це значно надійніше за припущення "я натиснула refresh, значить платформа точно перечитала сторінку".

Корисно мати коротку матрицю перевірок

Мінімальна матриця перевірки
[ ] raw HTML contains current OG tags[ ] og:image returns 200[ ] og:image Content-Type is image/*[ ] image is public[ ] redirects are valid[ ] canonical and og:url point to expected page[ ] SSR output matches browser-visible metadata[ ] Telegram shows expected preview[ ] LinkedIn fresh preview shows expected data[ ] server logs confirm crawler request

Різний preview на різних платформах не означає автоматично різний HTML

Коли Telegram уже бачить нове Open Graph-зображення, а LinkedIn ще показує старе, це не привід одразу переписувати SEO-логіку.

Спочатку потрібно підтвердити поточний серверний HTML, доступність og:image, правильність HTTP-відповіді та SSR.

Якщо все це правильно, наступна підозра - окремий кеш платформи або вже збережена картка старого допису.

Попередній перегляд потрібно діагностувати як ланцюг: HTML -> URL зображення -> HTTP -> робот платформи -> кеш платформи -> конкретна картка допису.

Якщо одна платформа вже бачить правильне зображення, а інша ні, перевіряйте не тільки Open Graph - перевіряйте ще й момент останнього сканування та кеш конкретної платформи.