Аналіз та оптимізація індексації сторінок сайту (Index Coverage)

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Аналіз та оптимізація індексації сторінок сайту (Index Coverage)
Середня
~2-3 робочих дні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Аналіз та оптимізація індексації сторінок (Index Coverage)

Index Coverage — співвідношення між сторінками на вашому сайті та сторінками, які Google справді проіндексував. Багато SEO-проблем з трафіком пояснюються не якістю контенту, а тим, що сторінки просто не потрапили в індекс.

Google Search Console: Coverage звіт

GSC → Index → Pages ділить усі виявлені URL на категорії:

Indexed — сторінки в індексі (мета: 80–95% від загального числа URL).

Crawled - currently not indexed — Google бачив, але не індексував. Причини: thin content, низька якість, занадто багато подібного контенту.

Discovered - currently not indexed — Google знайшов URL, але ще не краулив. Звичайно через перевантаження crawl budget.

Not indexed — noindex — явна директива не індексувати.

Duplicate — дублюючи сторінки (Google вибрав canonical).

Excluded by robots.txt — заблоковані в robots.txt.

Вивезення всіх URL та їх статусів

# Google Search Console API
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

credentials = ServiceAccountCredentials.from_json_keyfile_name(
    'gsc-credentials.json',
    ['https://www.googleapis.com/auth/webmasters.readonly']
)
service = build('searchconsole', 'v1', credentials=credentials)

# URL Inspection API — перевірити конкретний URL
response = service.urlInspection().index().inspect(
    body={
        'inspectionUrl': 'https://company.com/products/iphone-15',
        'siteUrl': 'https://company.com/'
    }
).execute()

indexing_state = response['inspectionResult']['indexStatusResult']['indexingState']
# INDEXING_ALLOWED, NOT_INDEXED, etc.

Діагностика "Crawled - currently not indexed"

Найбільш складна категорія для виправлення — Google бачит сторінку, але не вважає її гідною індексації.

def diagnose_not_indexed_pages(urls):
    issues = []
    for url in urls:
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'html.parser')

        # Кількість слів
        text = ' '.join(soup.get_text().split())
        word_count = len(text.split())

        # Перевірка унікальності title
        title = soup.find('title').text if soup.find('title') else ''

        issues.append({
            'url': url,
            'word_count': word_count,
            'title': title,
            'has_canonical': bool(soup.find('link', rel='canonical')),
            'robots': soup.find('meta', attrs={'name': 'robots'}),
            'h1_count': len(soup.find_all('h1')),
        })

    # Thin content
    thin = [p for p in issues if p['word_count'] < 300]
    print(f"Thin content ({len(thin)} pages):")
    for p in thin[:10]:
        print(f"  {p['url']}: {p['word_count']} слів")

Виправлення поширених проблем

Thin content — менше 300 слів. Рішення: розширити або об'єднати подібні сторінки.

Дублюючийся контент без canonical: додати canonical до всіх варіантів URL.

Noindex по помилці: пошукати noindex у шаблонах та видалити з важливих сторінок.

Сторінки тільки за аутентифікацією: публічний контент повинен бути доступний без cookies.

Sitemap як інструмент індексації

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://company.com/products/iphone-15</loc>
    <lastmod>2024-03-15</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>
</urlset>

Ping Google про оновлення sitemap:

curl "https://www.google.com/ping?sitemap=https://company.com/sitemap.xml"

IndexNow API (Bing, Yandex):

curl -X POST https://api.indexnow.org/IndexNow \
  -H "Content-Type: application/json" \
  -d '{
    "host": "company.com",
    "key": "your-key",
    "urlList": ["https://company.com/new-page"]
  }'

Моніторинг динаміки індексації

def track_indexation_rate(history_db):
    """Відстежувати % проіндексованих сторінок у динаміці"""
    total_published = count_published_pages()
    indexed_count = get_gsc_indexed_count()
    rate = indexed_count / total_published * 100

    history_db.save({'date': datetime.now(), 'rate': rate})

    # Алерт при снідженні
    last_week = history_db.get_7days_ago()
    if rate < last_week.rate - 5:
        send_alert(f"Index coverage dropped from {last_week.rate:.1f}% to {rate:.1f}%")

Тривалість

Аудит Index Coverage + план устранення проблем — 2–3 робочих дні.