- Настройка Google Indexing API
- Как получить список URL не проиндексированных в Google страниц
- Отправка страниц в индекс
- Для CMS WordPress
- Для любых сайтов при помощи скрипта
- Запускаем скрипт (первый запуск)
- Запускаем скрипт (повторные запуски)
- Как подключить и настроить Google Indexing API для Telegram бота
- Мои результаты использования API
Сегодня поговорим о том как расширить лимиты и отправлять пачками (массово, по 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. На следующей странице нажимайте кнопку «Создать сервисный аккаунт»:
В поле имя можно вводить все что угодно, я ввожу название проекта.
Далее, обязательно нужно выбрать роль нового аккаунта, это очень важно. Выбирайте «Владелец» либо если у вас так же на английском языке, как у меня — «Owner».
Далее жмем «CONTINUE» все пропускаем и нажав «Done».
4. На следующей странице копируем куда-нибудь созданную почту скопируйте, после чего справа нажимаем на кнопку с действиями и выберете пункт управления ключами «Manage keys».
5. На открывшейся странице переходим во вкладку «KEYS» и создаем новый ключ щелкнув по «ADD KEY» — «Create new key».
в сплывающем окне выбираем формат JSON и жмем по кнопке «CREATE».
После чего ключ должна начаться скачка ключа на ПК, сохраняем его.
6. Далее идем в настройки Google Search Console и переходим во вкладку «Пользователи и разрешения».
На открывшейся странице жмем по кнопке «ДОБАВИТЬ ПОЛЬЗОВАТЕЛЯ», в сплывающем окне, в поле «адрес электронной почты» вводим сохраненный в 4м пункте сервисный email, в поле разрешение ранее обязательно выберете статус «Владелец» (не как на скриншоте). И жмем по кнопке добавить.
Так мы добавили в search console наш ранее созданный сервисный аккаунт и дали ему полные права.
7. Последний шаг включение Indexing API для вашего проекта. Переходим по ссылке: https://console.developers.google.com/apis/api/indexing.googleapis.com/overview
и нажимаем Enable.
Все готово. Indexing API Google подключена к Вашему сайту.
Как получить список URL не проиндексированных в Google страниц
Чтобы получить список URL не проиндексированных страниц, зайдите в Search Console, перейдите во вкладку «Покрытие». На открывшейся странице в верху щелкните по вкладке исключено (на скрине серая где 2к страниц). Далее в сведениях ниже увидите в сведениях строки «исключено».
Нажимаем по одной из строки и проваливаемся на страницу со списком не проиндексированных страниц, где вы их можете экспортировать на ПК.
И точно также скачиваете второй список (если он у вас есть). Потом будите брать из этих списков URL для отправки в индекс.
Отправка страниц в индекс
Для CMS WordPress
Если у вас WordPress, зайдите в его админку и установите маленький бесплатный плагин Instant Indexing for Google, автор Rank Math. В настройках плагина вставьте код из файлика json в поле (скачали этот файлик в 5 пункте, можно открыть блокнотом, а лучше редактором кода).
После чего можно отправлять страницы в индекс.
Для любых сайтов при помощи скрипта
Качаем по ссылке https://github.com/swalker-888/google-indexing-api-bulk скрипт с 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 можно приступить к запуску скрипта. Для этого запускаем командную строку (обычный запуск, не нужно запускать с полными правами).
В командной строке нам нужно зайти в подготовленную папку со скриптом — у меня это папка «google-indexing-api-bulk-master» которая находится на рабочем столе.
Давайте подключаться, для этого по очереди набираем следующие команды и нажимаем «Enter»:
- Заходим на рабочий стол «
cd Desktop
» (жмем Enter). - Заходим в папку со скриптом «
cd google-indexing-api-bulk-master
» (папка, в которой находятся наши файлы), нажимаем Enter.
После того как мы зашли в папку, необходимо загрузить нужные файлы библиотеки туда же. Делается это при помощи следующих команд:
npm install requests
npm audit fix
npm audit fix --force
После каждой команды нужно немного подождать.
После того как все файлы библиотеки установлены (в папке со скриптом появиться еще одна папка с библиотеками «node_modules»), запускаем последнюю команду node index.js
.
По итогу вы должны будете увидеть такую финальную картину.
после того как отправили первую партию URL, идем в файл urls.txt, закидываем туда вторую пачку URL и снова выполняем команду node index.js
.
Если вместо этого скрина вы увидели что-то другое, значит вернитесь к началу статьи и внимательно проверьте каждый пункт.
Запускаем скрипт (повторные запуски)
Повторный запуск скрипта по факту тот же, что и первый, единственно нам не нужно устанавливать библиотеки:
Идем в скрипт, в файл urls.txt закидываем URL.
Запускаем командную строку и подключаемся к папке скрипта
cd Desktop
cd google-indexing-api-bulk-master
После чего выполняем команду node index.js
.
Как подключить и настроить Google Indexing API для Telegram бота
Посмотрев данное видео вы узнаете, как использовать 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 нужно выполнить следующие шаги:
- Переходим сюда и авторизируемся.
- Создаем проект, называем как удобно, у меня testproject
- Пишем в поиске «Library» и переходим на ссылку вида https://console.cloud.google.com/apis/library?project=testproject-309209&supportedpurview=project&pli=1
- Ищем «Google Search Console API» и включаем его
- Переходим на вкладку «Credentials», это URL вида: https://console.cloud.google.com/apis/credentials?project=testproject-309209&pli=1
- Нажимаем кнопку «Create Credentials» и выбираем «OAuth Client ID»
- Далее нажимаем кнопку «Configure Consent Screen»
- Выбираем пункт «External» и нажимаем «Create»
- В Appname указываем что удобно, в моем случае будет «TestTest», в саппорт Email указываем ваш email
- Соглашаемся далее со всеми пунктами
- Далее снова переходим в раздел «Credentials»
- Снова нажимаем кнопку «Create Credentials» и выбираем «OAuth Client ID»
- Выбираем уже в выпадающем списке «Desktop Application»
- Нажимаем кнопку «Create»
- Скачиваем файл который появился в поле «OAuth 2.0 Client IDs»
Документация Google Search Console API.
Автор видео https://t.me/seo_scripts — вопросы писать туда.
Мои результаты использования API
Если зайти во вкладку покрытие в Google Search Console и посмотреть график, который показывает, какие страницы проиндексированы и находятся в поиске. То увидим следующую картину:
Видите довольно резкий скачок страниц — это время начала использования Google indexing API. Да и как вы видите 425 страниц Гугл все же не проиндексировал. Через пару недель я их снова отправлю и если они снова не про индексируются их скорее всего придется переделывать.
У меня командная строка отвечает что нет такой команды npm и что с этим делать?
А вы установили node.js?
Я чуть переписал скрипт который в связке с ботом телеграмма, сделал его чуть лучше, по моему мнению.
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)
Вы бы лучше на гитхаб или еще куда-нибудь код закинули, а в комментарии ссылку на него дали.
Спасибо! Всё очень понятно написано. Успехов вам!
Пожалуйста)
Спасибо за подробную инструкцию и скрипт )
Пожалуйста)