Долгое время головной болью вебмастеров было уведомление Google о том, что какие-то странички на их сайте появились или исчезли. Теперь тихо и без особых фанфар появилась такая фича, как Google Indexing API. Сам Google сообщает
Цитата:
На данный момент Google Indexing API может сканировать страницы с структурированными данными JobPosting или BroadcastEvent, которые встроены в VideoObject
Фактически же это хорошая замена канувшим уже в лету и плохо работающим пингерам, которые я все равно еще не отключал... Приходит бот и ладно...
Но, вернемся к Google Indexing API.
Во-первых, подчеркну, что работает API для всех страниц. По крайней мере, у меня никаких JobPosting нет, только Article, но странички заходят влет.
Во-вторых, не ожидайте напихать в индекс мусор. Бот придет, страничку подберет, а потом может и выкинуть. Все правила, распространяющиеся на запрос индексации в консоли, распространяются и на API.
Вот основная справка:
Да, от sitemap отказываться все равно не рекомендую. Не путайтесь, что вам там рассказывают по ссылке выше.
Необходимо создать проект и сервисную учетку. Она будет конских размеров и к вашему емейлу отношения иметь не будет. Да, на учетках GSuite все тоже замечательно работает. В смысле, что авторизоваться для настройки всего этого счастья можно и из под GSuite-учетки. Я когда упирался, собирался уже найти свою старую гугловую учетку, вот это делать не надо.
Создадите учетку, главное, что нужно сделать - получить JSON-файлик этой самой учетки и, 100 раз подчеркиваю, учетку добавить в Search Console, как владельца(!) не полную, а именно владельца. Иначе Google Indexing API будет выдавать вам ошибку 403, доводя до отчаяния и матов, как меня.
Все описания, которые сейчас есть в интернете, описывают, как добавить владельца в старой версии консоли. Я решил этот квест за вас. Заходите в , но не спешите жмакать в "Добавить пользователя". У вас есть владелец уже в списке, вот тыкайте в три точки справа от надписи "Владелец"
это как раз то, что вам нужно. Вот в том разделе и добавьте делегированного владельца, ту сервисную учетку, которую вы завели раньше.
Дальше все достаточно просто, кидаете себе на хост где-то файлик (я использую PHP, соответственно, файлик брал на этом языке)
Код:
require_once 'google-api-php-client/vendor/autoload.php';
$client = new Google_Client();
// service_account_file.json is the private key that you created for your service account.
$client->setAuthConfig('service_account_file.json');
$client->addScope('https://www.googleapis.com/auth/indexing');
// Get a Guzzle HTTP Client
$httpClient = $client->authorize();
$endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';
// Define contents here. The structure of the content is described in the next step.
$content = '{
"url": "https://olegon.ru",
"type": "URL_UPDATED"
}';
$response = $httpClient->post($endpoint, [ 'body' => $content ]);
$status_code = $response->getStatusCode();
Кто бы что ни придумывал, на HTTPS ресурсы работают замечательно. В setAuthConfig укажете путь к файлику, который вы получили раньше, при заведении сервисной учетки. Все, больше ничего не надо. Можете $status_code себе выводить на первое время. Никакие приседания и дополнительные авторизации не требуются, в т.ч. через Oauth2, как я сначала искал. В $status_code должно быть 200, если заявка на индексирование принята.
Некоторый геморрой я получил при попытке зацепить библиотечку на которой вышеуказанный пример работает. Дело в том, что на данный момент релизнулась версия 2.6, однако, к моему удивлению, ни git clone, ни прямое скачивание по линкам исходников версии не давали полный комплект файлов. Все время чего-то не хватало. Так вот, чтобы хватало, берите 2.5 и конкретно файл google-api-php-client-2.5.0.zip оттуда, а не исходники.
Необходимо упомянуть, что я еще включил API в консоли точно не могу сказать, что это обязательно. Однако, включил и с этим работает. Заодно и позволяет видеть, что оно работает.
Задавайте вопросы, если что-то не описал, поправляйте...