Чого я навчився під час аудиту даних JSON-LD у CI

Структуровані дані JSON-LD можуть зникнути з вашого сайту, не порушуючи роботи нічого видимого. Збірка проходить успішно. Розгортання завершується. Сторінки виглядають нормально у браузері.

Але Googlebot зчитує теги <script>, щоб визначити ваші розширені результати (rich results). Якщо дані відсутні або пошкоджені, ви не дізнаєтеся про це, доки Search Console не зафіксує проблему через кілька тижнів.

Я додав етап аудиту після розгортання (post-deploy) до свого CI-конвеєра (pipeline). Він знаходить такі помилки менш ніж за 60 секунд.

Як це працює:

Я запускаю три статичні сайти, побудовані на Astro та розгорнуті через Cloudflare Pages. Ці сайти використовують такі схеми, як SoftwareApplication, VideoGame та ItemList. Оскільки вони є статичними, зміна шаблону може призвести до зникнення схеми на тисячах сторінок, не викликаючи помилки під час збірки.

Скрипт аудиту робить наступне:

• Завантажує живу головну сторінку та зразкові сторінки з детальною інформацією. • Зчитує живу карту сайту (sitemap), щоб знайти реальні URL-адреси. • Витягує всі блоки JSON-LD за допомогою regex. • Перевіряє розпакування @graph для пошуку вкладених елементів. • Порівнює знайдені значення @type з моїм очікуваним списком.

Я запускаю це на живих розгорнутих сторінках, а не на артефактах збірки. Це дозволяє виявити проблеми з кешуванням CDN або edge-доставкою.

Під час першого запуску скрипт виявив три проблеми:

  • ossfind.com: Відсутність ItemList на певних сторінках. Це перетворило розмиту ідею на конкретне завдання.
  • findindiegame.com: Неправильний протокол http:// у WebSite @id. Це була помилка копіювання, яка виглядала нормально для людини, але була несумісною для Google.
  • aiappdex.com: Використання сирих ID бази даних замість зрозумілих для людини назв у схемі SoftwareApplication.

Це були справжні баги. Жоден із них не з'явився в логах збірки або під час перегляду в браузері.

Я налаштував етап CI як некритичний (non-fatal). Якщо аудит знаходить проблему, розгортання все одно завершується, але помилка з'являється в логах. Це дозволяє мені спостерігати за поведінкою в реальних умовах, перш ніж я зроблю цю перевірку блокуючою для конвеєра.

Це smoke-тест, а не повний набір інструментів валідації. Він перевіряє по два зразки для кожного сайту. Він не виявить кожен граничний випадок, але він впіймає великі помилки до того, як вони протримаються в продакшені місяць.

Джерело: