Как проиндексировать сайт в Google через API

Google Indexing Api SEO
При создании сайтов с большим количеством страниц, Google очень неохотно индексирует страницы, даже при отправке карты сайта (sitemap) в аккаунте Google search console. Добавлять страницы в ручную индексацию через кнопку «Запросить индексацию», сопровождается лимитами (не более 10 страниц в день) и часто капчами.

Сегодня поговорим о том как расширить лимиты и отправлять пачками (массово, по 100 страниц за раз, 2 раза в сутки) URL страниц на индексацию при помощи Google Indexing API.

Настройка Google Indexing API

1. Авторизуемся в Google и переходим по ссылке: https://console.cloud.google.com/projectselector2/iam-admin/serviceaccounts?supportedpurview=project.

2. На открывшейся странице переходим в «Service Accounts» и создаем сервисный аккаунт Google нажав на «Create Project».

Создание сервисного аккаунта
Название проекта пишем любое.

Создание сервисного аккаунта - имя проекта

3. На следующей странице нажимайте кнопку «Создать сервисный аккаунт»:

Create service account

В поле имя можно вводить все что угодно, я ввожу название проекта.

Service account details

Далее, обязательно нужно выбрать роль нового аккаунта, это очень важно. Выбирайте «Владелец» либо если у вас так же на английском языке, как у меня — «Owner».

Grant this service account access to project

Далее жмем «CONTINUE» все пропускаем и нажав «Done».

done

4. На следующей странице копируем куда-нибудь созданную почту скопируйте, после чего справа нажимаем на кнопку с действиями и выберете пункт управления ключами «Manage keys».

Переходим в управление ключами

5. На открывшейся странице переходим во вкладку «KEYS» и создаем новый ключ щелкнув по «ADD KEY» — «Create new key».

Создаем новый ключ

в сплывающем окне выбираем формат JSON и жмем по кнопке «CREATE».

Создаем новый ключ в формате JSON

После чего ключ должна начаться скачка ключа на ПК, сохраняем его.

6. Далее идем в настройки Google Search Console и переходим во вкладку «Пользователи и разрешения».

настройки Google Search Console - добавляем нового владельца сайта

На открывшейся странице жмем по кнопке «ДОБАВИТЬ ПОЛЬЗОВАТЕЛЯ», в сплывающем окне, в поле «адрес электронной почты» вводим сохраненный в 4м пункте сервисный email, в поле разрешение ранее обязательно выберете статус «Владелец» (не как на скриншоте). И жмем по кнопке добавить.

Добавляем нового пользователя

Так мы добавили в search console наш ранее созданный сервисный аккаунт и дали ему полные права.

7. Последний шаг включение Indexing API для вашего проекта. Переходим по ссылке: https://console.developers.google.com/apis/api/indexing.googleapis.com/overview
и нажимаем Enable.

включение Indexing API

Все готово. Indexing API Google подключена к Вашему сайту.

Как получить список URL не проиндексированных в Google страниц

Чтобы получить список URL не проиндексированных страниц, зайдите в Search Console, перейдите во вкладку «Покрытие». На открывшейся странице в верху щелкните по вкладке исключено (на скрине серая где 2к страниц). Далее в сведениях ниже увидите в сведениях строки «исключено».

Покрытие - исключено

Нажимаем по одной из строки и проваливаемся на страницу со списком не проиндексированных страниц, где вы их можете экспортировать на ПК.

Экспорт списка исключенных страниц

И точно также скачиваете второй список (если он у вас есть). Потом будите брать из этих списков URL для отправки в индекс.

Отправка страниц в индекс

Для CMS WordPress

Если у вас WordPress, зайдите в его админку и установите маленький бесплатный плагин Instant Indexing for Google, автор Rank Math. В настройках плагина вставьте код из файлика json в поле (скачали этот файлик в 5 пункте, можно открыть блокнотом, а лучше редактором кода).

WP Instant Indexing for Google

После чего можно отправлять страницы в индекс.

WP Instant Indexing for Google - отправка страниц

Для любых сайтов при помощи скрипта

Качаем по ссылке https://github.com/swalker-888/google-indexing-api-bulk скрипт с github на ПК.

качаем скрипт с github

Разархивируем скачанный скрипт, после этого сохраняем в удобной для вас папке (я сохранил его на рабочий стол). Именно с ней мы будем работать.

Открываем папку со скриптом, там есть файлики:

  • service_account.json — открываем его редактором кода (или блокнотом), заменяем все его содержимое на содержимое из скачанного JSON ключа (пункт 5).
  • urls.txt — сюда закидываем 100 url адресов которые хотите отправить в индекс гугла. В сутки можно отправить до 200 url (2 раза по 100 url или 4 раза по 50 url и т.д.).

Скрипт подготовлен к работе, но для его работы нужен node.js, скачиваем его по ссылке https://nodejs.org/en/download/ и устанавливаем.

установка node js

Запускаем скрипт (первый запуск)

После подготовки скрипта и установки node.js можно приступить к запуску скрипта. Для этого запускаем командную строку (обычный запуск, не нужно запускать с полными правами).

В командной строке нам нужно зайти в подготовленную папку со скриптом — у меня это папка «google-indexing-api-bulk-master» которая находится на рабочем столе.

Папка со скриптом - путь

Давайте подключаться, для этого по очереди набираем следующие команды и нажимаем «Enter»:

  1. Заходим на рабочий стол «cd Desktop» (жмем Enter).
  2. Заходим в папку со скриптом «cd google-indexing-api-bulk-master» (папка, в которой находятся наши файлы), нажимаем Enter.

Подключение к папке на рабочем столе

После того как мы зашли в папку, необходимо загрузить нужные файлы библиотеки туда же. Делается это при помощи следующих команд:

  • npm install requests
  • npm audit fix
  • npm audit fix --force

После каждой команды нужно немного подождать.

Загружаем библиотеки

Загружаем библиотеки

После того как все файлы библиотеки установлены (в папке со скриптом появиться еще одна папка с библиотеками «node_modules»), запускаем последнюю команду node index.js.
По итогу вы должны будете увидеть такую финальную картину.

Пример выполнение команды node index.js

Пример выполнение команды node index.js конец

после того как отправили первую партию URL, идем в файл urls.txt, закидываем туда вторую пачку URL и снова выполняем команду node index.js.

Если вместо этого скрина вы увидели что-то другое, значит вернитесь к началу статьи и внимательно проверьте каждый пункт.

Запускаем скрипт (повторные запуски)

Повторный запуск скрипта по факту тот же, что и первый, единственно нам не нужно устанавливать библиотеки:

Идем в скрипт, в файл urls.txt закидываем URL.

Запускаем командную строку и подключаемся к папке скрипта

  1. cd Desktop
  2. cd google-indexing-api-bulk-master

После чего выполняем команду node index.js.

Посмотрев данное видео вы узнаете, как использовать Google Search Console API и настроить бота через который можно будет индексировать ссылки с вашего сайта.

Ссылка на github: google_indexing_api_and_telegram_bot

Библиотеки: pip install httplib2 pip install telebot pip install oauth2client.service_account

Получение файла Credentials.json

Для создания файла Credentials.json нужно выполнить следующие шаги:

  1. Переходим сюда и авторизируемся.
  2. Создаем проект, называем как удобно, у меня testproject
  3. Пишем в поиске «Library» и переходим на ссылку вида https://console.cloud.google.com/apis/library?project=testproject-309209&supportedpurview=project&pli=1
  4. Ищем «Google Search Console API» и включаем его
  5. Переходим на вкладку «Credentials», это URL вида: https://console.cloud.google.com/apis/credentials?project=testproject-309209&pli=1
  6. Нажимаем кнопку «Create Credentials» и выбираем «OAuth Client ID»
  7. Далее нажимаем кнопку «Configure Consent Screen»
  8. Выбираем пункт «External» и нажимаем «Create»
  9. В Appname указываем что удобно, в моем случае будет «TestTest», в саппорт Email указываем ваш email
  10. Соглашаемся далее со всеми пунктами
  11. Далее снова переходим в раздел «Credentials»
  12. Снова нажимаем кнопку «Create Credentials» и выбираем «OAuth Client ID»
  13. Выбираем уже в выпадающем списке «Desktop Application»
  14. Нажимаем кнопку «Create»
  15. Скачиваем файл который появился в поле «OAuth 2.0 Client IDs»

Документация Google Search Console API.

Автор видео https://t.me/seo_scripts — вопросы писать туда.

Мои результаты использования API

Если зайти во вкладку покрытие в Google Search Console и посмотреть график, который показывает, какие страницы проиндексированы и находятся в поиске. То увидим следующую картину:

Покрытие

Видите довольно резкий скачок страниц — это время начала использования Google indexing API. Да и как вы видите 425 страниц Гугл все же не проиндексировал. Через пару недель я их снова отправлю и если они снова не про индексируются их скорее всего придется переделывать.

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 1 оценка, среднее 5 из 5 )
Web-Revenue.ru
Добавить комментарий

  1. Dramzzz

    У меня командная строка отвечает что нет такой команды npm и что с этим делать?

    Ответить
    1. Алексей автор

      А вы установили node.js?

      Ответить
  2. Дмитрий

    Я чуть переписал скрипт который в связке с ботом телеграмма, сделал его чуть лучше, по моему мнению.

    from oauth2client.service_account import ServiceAccountCredentials
    import time
    import httplib2
    import telebot
    import json
    from urllib.parse import urlparse

    bot_token = »
    bot = telebot.TeleBot(bot_token)

    JSON_KEY_FILE = «client_secrets.json»
    SCOPES = [«https://www.googleapis.com/auth/indexing»]

    # Replace with your actual Telegram ID
    MY_TELEGRAM_ID = ‘123’

    @bot.message_handler(commands=[‘start’])
    def send_welcome(message):
    if str(message.from_user.id) == MY_TELEGRAM_ID:
    bot.reply_to(message, «Привет! Я бот, который может индексировать URL-адреса с помощью Google Indexing API. Пожалуйста, отправьте мне URL-адреса через пробел. Например:\nhttp://example.com\nhttps://another-example.com»)
    else:
    bot.reply_to(message, «Извините, у вас нет прав для использования этого бота.»)

    @bot.message_handler(content_types=[«text»])
    def repeat_all_messages(message):
    if str(message.from_user.id) != MY_TELEGRAM_ID:
    return

    credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)
    http = credentials.authorize(httplib2.Http())

    ENDPOINT = «https://indexing.googleapis.com/v3/urlNotifications:publish»

    indexing_list = message.text.split()

    bot.send_message(message.chat.id, ‘Получил список ссылок: ‘ + message.text)

    for site_url in indexing_list:
    parsed = urlparse(site_url)
    if bool(parsed.netloc) and bool(parsed.scheme):
    bot.send_message(message.chat.id, ‘Пробую просканировать: ‘ + site_url)
    content = {}
    content[‘url’] = site_url
    content[‘type’] = «URL_UPDATED»
    json_ctn = json.dumps(content)

    response, content = http.request(ENDPOINT, method=»POST», body=json_ctn)

    result = json.loads(content.decode())

    if(«error» in result):
    print(«Error({} — {}): {}».format(result[«error»][«code»], result[«error»][«status»], result[«error»][«message»]))
    bot.send_message(message.chat.id, ‘Ошибка при индексации ссылки: ‘ + site_url)
    else:
    print(«urlNotificationMetadata.url: {}».format(result[«urlNotificationMetadata»][«url»]))
    print(«urlNotificationMetadata.latestUpdate.url: {}».format(result[«urlNotificationMetadata»][«latestUpdate»][«url»]))
    print(«urlNotificationMetadata.latestUpdate.type: {}».format(result[«urlNotificationMetadata»][«latestUpdate»][«type»]))
    print(«urlNotificationMetadata.latestUpdate.notifyTime: {}».format(result[«urlNotificationMetadata»][«latestUpdate»][«notifyTime»]))
    bot.send_message(message.chat.id, ‘Проиндексировал ссылку: ‘ + site_url)

    time.sleep(10)
    else:
    bot.send_message(message.chat.id, ‘Неправильный формат URL: ‘ + site_url)

    while True:
    try:
    if __name__ == ‘__main__’:
    bot.polling(none_stop=True)
    except Exception as e:
    print(«Exception occurred:», e)
    time.sleep(5)

    Ответить
    1. Алексей автор

      Вы бы лучше на гитхаб или еще куда-нибудь код закинули, а в комментарии ссылку на него дали.

      Ответить
  3. Аноним

    Спасибо! Всё очень понятно написано. Успехов вам!

    Ответить
    1. Голягин Алексей

      Пожалуйста)

      Ответить
  4. Аноним

    Спасибо за подробную инструкцию и скрипт )

    Ответить
    1. Голягин Алексей

      Пожалуйста)

      Ответить