Как создать систему массовой отправки URL в Google Index и проверки индексации сайта
В этой статье мы подробно расскажем, как мы создали систему, какие шаги выполняли, и покажем рабочие примеры кода.
Введение
Каждый владелец сайта сталкивается с необходимостью мониторинга индексации страниц и ускоренного добавления новых URL в Google. В условиях высокой конкуренции важно, чтобы новые материалы или карточки товаров появлялись в поиске как можно быстрее, а не ждали неделями, пока их обнаружит поисковый бот.
Ручная проверка индексации и отправка ссылок через Google Search Console быстро превращается в рутинную и затратную по времени задачу. Особенно если у вас интернет-магазин с сотнями товаров или блог с регулярными публикациями.
Мы решили автоматизировать этот процесс с помощью инструментов Google. Для массовой отправки ссылок в индекс используется Google Indexing API, а для последующей проверки наличия страниц в поиске — Google Custom Search API. Такой подход позволяет:
-
упростить массовую индексацию новых страниц;
-
мгновенно проверять, какие страницы уже в поиске, а какие ещё нет;
-
контролировать эффективность SEO-работ.
1. Создание проекта и сервисного аккаунта Google
Первый шаг — подготовка аккаунта для работы с API:
-
Создаём проект в Google Cloud Console
-
Переходим на console.cloud.google.com и создаём новый проект (например,
example-index
). - ссылка .
-
2.Создаём Service Account
В разделе IAM & Admin → Service Accounts создаём новый сервисный аккаунт.
-
Даем имя (например,
vitaminator-com
), -
Выбираем роль
Owner
Дальше будет окно, в котором ничего не нужно указывать, просто нажать кнопку Готово.
Создаем и Скачиваем JSON с ключом
После создания сервисного аккаунта генерируем ключ в формате JSON. В нём содержатся:
-
client_email
— адрес сервисного аккаунта, -
private_key
— приватный ключ, -
остальные данные для аутентификации.
Пример ключа:
{
"type": "service_account",
"project_id": "example-index",
"private_key_id": "abc123",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "example@example-index.iam.gserviceaccount.com",
...
}
2.Включаем Google Indexing API
В разделе APIs & Services → Library находим Indexing API
и включаем его для проекта. тут
Скрипт Node.js для отправки URL в Google Index
Мы использовали Node.js и библиотеку googleapis
для аутентификации через JWT.
const fs = require('fs');
const { google } = require('googleapis');
const request = require('request');
const key = require('./service_account.json');
const jwtClient = new google.auth.JWT(
key.client_email,
null,
key.private_key,
['https://www.googleapis.com/auth/indexing']
);
const batch = fs.readFileSync('urls.txt').toString().split('\n');
jwtClient.authorize((err, tokens) => {
if (err) return console.error('Auth error:', err);
const items = batch.map(url => ({
'Content-Type': 'application/http',
'Content-ID': '',
body: 'POST /v3/urlNotifications:publish HTTP/1.1\n' +
'Content-Type: application/json\n\n' +
JSON.stringify({ url, type: 'URL_UPDATED' })
}));
const options = {
url: 'https://indexing.googleapis.com/batch',
method: 'POST',
headers: { 'Content-Type': 'multipart/mixed' },
auth: { bearer: tokens.access_token },
multipart: items
};
request(options, (err, resp, body) => {
if (err) return console.error('Error sending batch:', err);
console.log('✅ Ответ Google Index API:\n', body);
});
});
После запуска скрипта каждая ссылка отправляется в Google Index. Пример ответа:
{
"urlNotificationMetadata": {
"url": "https://vitaminator.com.ua/product/bluebonnet-nutrition-120"
}
}
Проверка индексации через Custom Search API
Для проверки, есть ли URL в индексе:
Создаём Custom Search Engine (CSE):
Создаем по ссылке - тут
-
Вводим сайт
exaple.com
, -
Ограничиваем поиск только этим доменом.
Получаем API Key (идентификатор поисковой системы).
https://console.cloud.google.com/apis/credentials
-
Перейди по ссылке из ошибки:
https://console.cloud.google.com/projectselector2/apis/api/customsearch.googleapis.com/overview?pli=1&inv=1&invt=Ab5_kg&supportedpurview=project -
Нажми Enable / Включить API для этого проекта.
В итоге у вас должен быть:
Api key = AIzaSyAk3234234234d-gZAk8wmJE4IGFo_w8
CX = e35e2de1234566c5
Скрипт для проверки индекса в Гугл :
const fs = require('fs');
const axios = require('axios');
const urls = fs.readFileSync('urls.txt').toString().split('\n');
const apiKey = 'ВАШ_API_KEY';
const cx = 'ВАШ_CX';
(async () => {
for (const url of urls) {
try {
const resp = await axios.get('https://www.googleapis.com/customsearch/v1', {
params: { key: apiKey, cx, q: `site:${url}` }
});
const status = resp.data.items && resp.data.items.length > 0 ? '✅ в индексе' : '❌ нет в индексе';
console.log(`${url} — ${status}`);
fs.appendFileSync('index-check-results.txt', `${url} — ${status}\n`);
// Пауза 1 секунда, чтобы не превышать лимит
await new Promise(r => setTimeout(r, 1000));
} catch (e) {
console.error('Ошибка проверки:', e.response?.data || e.message);
}
}
})();
Лимиты и квоты
-
Google Indexing API — 200 запросов в день по умолчанию.
-
Custom Search API — бесплатная квота 100 запросов в день.
-
Чтобы не превышать лимиты:
-
Используем паузы между запросами,
-
Разделяем URL на пакеты,
-
Можно запросить увеличение квоты через Google Cloud Console.
-
Мы создали полностью автоматизированный процесс:
-
Отправка URL в Google Index,
-
Проверка индексации каждой страницы,
-
Запись результатов в файл,
-
Возможность интеграции с другими системами (CMS, Telegram-бот, Google Sheets).
Это ускоряет SEO-процессы, экономит время и делает мониторинг индексации прозрачным.
После получения всех API и Ключей
Мы подготовили готовый архив где вам нужно просто вставить полученные ключи
Ссылка на скачивание - тут
Инструкция по установке и использованию скрипта проверки индексации и отправки URL в Google
Требования
-
Установленный Node.js (версии 18+).
Скачать можно тут: https://nodejs.org/.
После установки проверьте: -
Аккаунт в Google Cloud Console.
-
Включён Indexing API.
-
Создан Service Account и скачан JSON-ключ.
-
Включён Custom Search API и создана поисковая система (CSE) с вашим сайтом.
-
Установка
-
Распакуйте архив в удобную папку.
Например: