SEO Rocks

How Indexing Works

Як працює вкладка Indexing, чому наша картина може відрізнятись від GSC, що таке Sitemap у Site Settings і як вона впливає на покриття, чому великі сайти заповнюються днями, і як з цим жити.

Зміст

  1. Що показує вкладка Indexing
  2. Звідки беремо список URL для перевірки
  3. Чому числа можуть відрізнятись від GSC
  4. Sitemap — ключ до повної картини
  5. Daily quota 2000/site — чому йде поступово
  6. KPI-картки і що вони означають
  7. Sub-tabs: Coverage / Why / Sitemap gaps / URLs / Sections
  8. Розклад і коли запускається
  9. Часті питання

find_in_page Що показує вкладка Indexing

Indexing показує статус кожної відомої вам сторінки в Google index: проіндексована чи ні, з якої причини, коли востаннє Googlebot заходив, який канонікал обрав Google, є структуровані дані чи ні.

Дані тягнемо через URL Inspection API Google Search Console — той самий endpoint який живить кнопку "Inspect URL" у GSC. Кожен URL ми перевіряємо окремо, не bulk.

На відміну від метрик (clicks/impressions, які агреговано тягнуться одним запитом), URL Inspection робиться per-URL. Тобто для 5000 URL — 5000 окремих API-викликів.

list_alt Звідки беремо список URL для перевірки

Це найважливіше що треба зрозуміти про Indexing. Google не дає нам ніякого API endpoint виду "поверни всі URL які ти знаєш для цього сайту". Такого endpoint не існує.

URL Inspection працює так: "спитаєш про конкретний URL — отримаєш відповідь по ньому". Тобто щоб дізнатись статус, ми мусимо вже знати URL і явно його запитати.

Звідки ми беремо URLs для запитів:

ДжерелоЩо міститьОбмеження
site_pages
з GSC Search Analytics
URL які отримали хоч 1 impression у Google пошуку за останні ~488 днів ❌ URLs без impressions (наприклад "Discovered, not indexed") сюди не потрапляють — за визначенням
sitemap_urls
з декларованих юзером sitemaps
Всі URL з ваших sitemap-файлів (підтримуються gzipped і sitemap-index з рекурсією) ✅ Тільки якщо ви додали sitemap у Site Settings → Sitemaps

Підсумок: наш feed = site_pages ∪ sitemap_urls. Більше нічого. Якщо URL немає ні в одному з джерел — Google може його знати, але ми про нього не запитаємо, бо ми його не знаємо.

Чому так: URL Inspection — це pull-based API. Google свідомо не дає bulk-list endpoint (це багаторічна обмеженість, SEO-спільнота просить років 5+). Workarounds типу скрейпинга GSC UI ми не використовуємо, бо це ризик для вашого Google-акаунту і порушення Google ToS для SaaS.

balance Чому числа можуть відрізнятись від GSC

Якщо у Google Search Console написано "проіндексовано 4 270, не проіндексовано 1 950" (всього ~6 220), а у нас на вкладці Indexing видно тільки 683 URL — це не баг. Розгадка проста:

Якщо sitemap не додано — наш feed = тільки URL з impressions. А 1 950 "не проіндексованих" сторінок за визначенням мають 0 impressions (Google їх не показує в пошуку) → у наш feed ніколи не потрапляють. Звідси і різниця.

Як перевірити: зайдіть у Site Settings → Sitemaps. Якщо там пусто — додайте sitemap (зазвичай це https://yoursite.com/sitemap.xml). Через 1-3 ночі картина у нас стане повна.

map Sitemap — ключ до повної картини

Site Settings → Sitemaps дозволяє додати один або кілька sitemap-URL. Що далі:

Що ще робить додавання sitemap

Перший раз треба Reconnect Google-акаунт: ми нещодавно апгрейдили OAuth scope з webmasters.readonly на webmasters (write) щоб submit-API працював. Якщо ваш акаунт підключений давно — Settings → Accounts → Disconnect → Reconnect один раз. Після цього все працює.

hourglass_top Daily quota 2000/site — чому йде поступово

Google ставить жорсткий ліміт: 2 000 URL Inspections на день на сайт. Це окрема квота від Search Analytics (clicks/impressions, 1200/хв), і її не можна збільшити — це ліміт Google.

Що це означає для різних розмірів сайтів:

Розмір сайтуСкільки днів на повну індексацію
500 URL1 день
2 000 URL1 день
5 000 URL2-3 дні
10 000 URL5-6 днів
30 000 URL~15 днів
100 000+ URL2 місяці+

Стратегія: ми пріоритезуємо нові / un-inspected URL. Якщо ви вчора додали sitemap з 5 000 нових URL — сьогодні ми спробуємо взяти 2000 з них, завтра ще 2000, післязавтра решту.

Уже-inspected URL ми оновлюємо раз на 7 днів (TTL у нас), бо Google не часто змінює статус сторінки. Якщо потрібно швидше — натисніть Refresh у Site Settings.

Як прискорити: ніяк. 2000/день — це hard limit Google для URL Inspection API і він не залежить від вашого тарифу у GSC. Єдиний спосіб "обійти" — використовувати кілька різних Google-акаунтів які мають доступ до одного сайту (тоді квоти сумуються), але це нестабільно і ми такого не робимо.

grid_view KPI-картки і що вони означають

Зверху сторінки Indexing — 9 карток з ключовими цифрами:

КарткаЩо показує
% IndexedВідсоток з відомих нам URL які у Google index (verdict = PASS)
Total URLsСкільки URL у нашому feed (site_pages + sitemap_urls)
IndexedАбсолютна кількість проіндексованих URL
Got indexedСкільки URL отримали індекс за обраний період (transitions)
Lost indexingСкільки URL втратили індекс за обраний період
DiscoveredGoogle знайшов URL але ще не проіндексував. Найчастіша причина: thin content або crawl-budget issues
4xxURL які повертають 4xx error при crawl (404, 410 etc.)
5xxURL з серверними помилками. Це треба фіксити першочергово
Canonical mismatchesСторінки де Google обрав інший canonical ніж задеклароване вами. Часто сигнал дублів

tab Sub-tabs всередині Indexing

1. Coverage Overview

Stacked-bar чарт з динамікою indexed / not indexed / excluded / unknown по днях. Видно тренд і регресії після релізів.

2. Why pages aren't indexed

Групує проблемні сторінки по причинах від Google: Discovered, Crawled, noindex, robots, 4xx, soft 404, тощо. Кожна група клікабельна — розкривається список конкретних URL.

3. WoW Drift (Week-over-week)

Дві таблиці: by verdict (загальний tier indexed/not-indexed) + by coverage reason (по конкретних причинах GSC). Показує куди тренд рухається тиждень до тижня — типовий signal для регресій.

4. Sitemap gaps

URL які Google проіндексував але немає у задекларованих sitemap-ах. Сигнал що sitemap incomplete — наприклад, мовні версії /de/, /en/ не задекларовані.

5. Sections breakdown

Розбивка індексації по секціях сайту (/blog/, /tag/, /products/, ...) з відсотком indexed. Дозволяє побачити цілу секцію де системно не індексується.

6. All URLs (повна таблиця)

Всі URL з фільтрами та пошуком: All / Indexed / Not indexed / Excluded / Pending / Discovered, not indexed / Unknown to Google / 4xx / 5xx / No Rich Results. Можна exportувати not-indexed список у CSV.

schedule Розклад і коли запускається

ПодіяЩо відбувається
schedule 06:00 UTC Нічний sync — окремий indexing job для кожного сайту у фоні (не блокує метрик)
timer 24 год TTL URL який ми вже inspect-нули, не пере-inspect-имо раніше ніж за 24 години (заощаджуємо квоту)
manage_search Окремий voркер indexing-job-и виконує окремий gsc_indexing_worker, не блокує метрик і PSI
refresh Sitemap refresh Sitemap парсимо при додаванні + щодоби. URL з нового sitemap-у потрапляють у feed і inspect-ляться у межах квоти

help Часті питання

У GSC показано 4 270 indexed, у вас 683 — чому?

Тому що ви не додали sitemap. Без нього наш feed = тільки URL з impressions (683 — це ті що отримували покази в Google пошуку за останні ~488 днів). Додайте sitemap у Site Settings → через 1-3 ночі картина стане повна.

Я додав sitemap, але цифри не змінились

Чому "Discovered, not indexed" сторінок так багато?

Найчастіші причини:

Якщо у вас багато Discovered URL — це сигнал на serious work над якістю контенту. Натисніть "Submit all to Google" може допомогти, але не вирішує root cause.

"Last crawl" дата стара — Google не заходить?

URL Inspection повертає останній crawl Googlebot. Якщо там дата 3 місяці тому — Google свідомо не повертається до цього URL. Найчастіше це low-quality / low-traffic сторінки. Submit through sitemap може спровокувати re-crawl, але без поліпшення сторінки повторно її швидко знов "забудуть".

Canonical mismatches — це баг чи проблема?

Це сигнал. Google переписав ваш canonical (наприклад, ваш ?utm=...-URL знов написав на чистий URL) — це майже завжди правильно. Якщо Google переписав на конкурентний URL або на іншу мовну версію — тоді це проблема для виправлення (зазвичай hreflang setup або дублі контенту).

Що таке "Unknown to Google"?

URL відомий нам (з вашого sitemap), але Googlebot ще ніколи не заходив. Це нормально для нових URL. Якщо >7 днів і URL Discovered — Submit sitemap може допомогти.

Я бачу 5xx errors — це наша проблема?

Ні, це статус Googlebot crawl-ів. Якщо у вас 5xx — це означає ваш сервер віддав error code коли Googlebot заходив. Перевірте логи сервера за дату з "Last crawl".

Чи можна вручну запустити indexing scan?

Поки що ні — тільки нічний автомат. На roadmap є кнопка "Refresh indexing" — це наступний крок після Refresh для Performance. Поки що — Site Settings → Sitemaps → Refresh запускає sitemap re-parse + ping Google, що частково ефект "пришвидш" індексацію (через ping API), але не власний URL Inspection scan.

Як експортувати not-indexed URL для роботи?

У табі "All URLs" виберіть фільтр "Not indexed" (або конкретну причину) → натисніть Export CSV. Список можна далі вантажити у Indexing API (через бот або скрипт) для масової відправки на crawl.

Деталі по архітектурі — у файлі SYNC.md репозиторію. Технічні питання — через сторінку Changelog.