Як створити систему масового відправлення URL у Google Index та перевірки індексації сайту
У цій статті ми докладно розповімо, як ми створили систему, які кроки виконували та покажемо робочі приклади коду.
Автоматизація індексації та моніторингу сторінок у Google
Вступ
Кожен власник сайту стикається з потребою моніторингу індексації сторінок і швидкого додавання нових URL до пошукової видачі Google. У конкурентному цифровому середовищі важливо, щоб новий контент або сторінки товарів з’являлися в пошуку якомога швидше, а не чекали тижні, поки їх виявить пошуковий робот Google.
Ручна перевірка індексації та відправлення посилань через Google Search Console швидко стає рутинною і витратною за часом задачею, особливо для інтернет-магазинів із сотнями товарів або блогів із регулярними публікаціями. Ми автоматизували цей процес за допомогою інструментів Google:
- Google Indexing API: Для масового надсилання URL до індексу Google.
- Google Custom Search API: Для перевірки наявності сторінок у пошуку.
Цей підхід дозволяє:
- Спростити масову індексацію нових сторінок.
- Миттєво перевіряти, які сторінки вже в пошуку, а які ще ні.
- Контролювати ефективність SEO-просування.
1. Налаштування проєкту та сервісного акаунта Google
Для роботи з API Google потрібно створити проєкт і сервісний акаунт. Ось як це зробити:
Крок 1: Створення проєкту в Google Cloud Console
- Перейдіть на console.cloud.google.com і створіть новий проєкт (наприклад,
example-index). Створити проєкт.


Крок 2: Створення сервісного акаунта
- У Google Cloud Console перейдіть до IAM та адміністрування > Сервісні акаунти.
- Створіть новий сервісний акаунт, наприклад,
vitaminator-com. - Призначте роль Власник (Owner).

- Після створення натисніть Готово (додаткові дані не потрібні).

Крок 3: Створення та завантаження JSON-ключа
- Після створення сервісного акаунта згенеруйте JSON-ключ, який містить:
client_email: Електронна адреса сервісного акаунта.private_key: Приватний ключ для автентифікації.- Додаткові дані для автентифікації.



Приклад JSON-ключа:
{
"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",
...
}
Крок 4: Увімкнення Google Indexing API
- У Google Cloud Console перейдіть до API та сервіси > Бібліотека.
- Знайдіть
Indexing APIі ввімкніть його для вашого проєкту. Увімкнути Indexing API.

2. Скрипт Node.js для надсилання URL до Google Index
Ми використали Node.js із бібліотекою googleapis для автентифікації через JWT. Ось скрипт для надсилання URL до Google Indexing API:
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('Помилка автентифікації:', err);
const items = batch.map(url => ({
'Content-Type': 'application/http',
'Content-ID': '',
body: `POST /v3/urlNotifications:publish HTTP/1.1\nContent-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('Помилка надсилання:', err);
console.log('✅ Відповідь Google Index API:\n', body);
});
});
Приклад відповіді:
{
"urlNotificationMetadata": {
"url": "https://vitaminator.com.ua/product/bluebonnet-nutrition-120"
}
}
3. Перевірка індексації через Custom Search API
Для перевірки, чи проіндексовані URL, налаштуйте Custom Search Engine (CSE):
Крок 1: Створення Custom Search Engine
- Перейдіть на programmablesearchengine.google.com.
- Додайте ваш сайт (наприклад,
example.com) і обмежте пошук лише цим доменом.


Крок 2: Отримання API-ключа
- Отримайте API-ключ у Google Cloud Console > API та сервіси > Облікові дані.


- Увімкніть Custom Search API для вашого проєкту: Увімкнути Custom Search API.
Необхідні облікові дані:
- API Key: наприклад,
AIzaSyAk3234234234d-gZAk8wmJE4IGFo_w8 - CX: наприклад,
e35e2de1234566c5
Крок 3: Скрипт для перевірки індексації
Використовуйте цей скрипт Node.js для перевірки статусу індексації:
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 секунда, щоб не перевищити ліміт API
await new Promise(r => setTimeout(r, 1000));
} catch (e) {
console.error('Помилка перевірки:', e.response?.data || e.message);
}
}
})();
4. Ліміти та квоти
- Google Indexing API: 200 запитів на день (за замовчуванням).
- Custom Search API: 100 запитів на день (безкоштовна квота).
- Поради, щоб не перевищити ліміти:
- Додавайте паузи між запитами.
- Розділяйте URL на менші пакети.
- За потреби зверніться за збільшенням квоти через Google Cloud Console.
5. Повністю автоматизований процес
Цей інструмент забезпечує повну автоматизацію:
- Надсилання URL до індексу Google.
- Перевірка статусу індексації кожної сторінки.
- Збереження результатів у файл.
- Можливість інтеграції з CMS, Telegram-ботами або Google Sheets для додаткових функцій.
Це прискорює SEO-процеси, економить час і робить моніторинг індексації прозорим.
Завантажте готовий архів: Вставте ваші API-ключі та почніть автоматизацію. Завантажити тут.
6. Інструкція з встановлення та використання
Вимоги
-
Node.js (версія 18+). Завантажте з nodejs.org. Перевірте встановлення:
node -v npm -v -
Обліковий запис Google Cloud Console із:
- Увімкненим Indexing API.
- Створеним сервісним акаунтом і завантаженим JSON-ключем.
- Увімкненим Custom Search API і налаштованою пошуковою системою (CSE) для вашого сайту.
Кроки встановлення
-
Розпакуйте архів у зручну папку (наприклад,
~/Desktop/example).cd ~/Desktop/example -
Встановіть залежності:
npm install
Налаштування ключів
-
Ключ сервісного акаунта (Indexing API):
- Помістіть ваш JSON-ключ у файл
service_account.json. Приклад:{ "type": "service_account", "project_id": "vitaminor-index", "private_key_id": "abc123", "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n", "client_email": "your-service-account@project-id.iam.gserviceaccount.com" } - Попередження: Цей файл не можна публікувати у відкритому доступі.
- Помістіть ваш JSON-ключ у файл
-
Ключі Custom Search API:
- Відкрийте файл
chekindex.jsі замініть:
на ваші значення API-ключа та CX із Google Cloud Console.const apiKey = "ВАШ_API_KEY"; // Google API Key const cx = "ВАШ_CX"; // Custom Search Engine ID
- Відкрийте файл
Файли в архіві
urls.txt: Список URL для надсилання або перевірки (по одному на рядок).index.js: Скрипт для надсилання URL до Google Indexing API.chekindex.js: Скрипт для перевірки індексації через Custom Search API.index-check-results.txt: Файл для збереження результатів перевірки.
Запуск скриптів
-
Надсилання URL до Google Index:
node index.jsПриклад відповіді:
✅ Відповідь Google Index API: { "urlNotificationMetadata": { "url": "https://vitaminator.com.ua/product/example" } } -
Перевірка статусу індексації:
node chekindex.jsПриклад результату:
https://vitaminator.com.ua/product/bluebonnet-nutrition-120 — ✅ Проіндексовано https://vitaminator.com.ua/product/1000-tart-cherry-extract-solgar-90 — ❌ Не проіндексованоРезультати зберігаються у файлі
index-check-results.txt.
Готово!
Тепер у вас є потужний автоматизований інструмент для:
- Надсилання сторінок до індексу Google.
- Перевірки їхнього статусу індексації.
- Збереження результатів для подальшого аналізу.
Особлива подяка Brander за натхнення та ресурси, які допомогли у створенні цього посібника.