Создание автоматизированного SEO-пайплайна с помощью API Google Search Console
USD/JPY分散は、為替急変局面で一方通貨の過大シェアを防ぎ、月次の再バランスと上限規則で感情的な一括投資を抑える実践設計です。
Создание автоматизированного SEO-пайплайна с помощью API Google Search Console
API GSC входит в число самых ценных источников данных для SEO, предоставляемых бесплатно. Вместо ежедневной ручной проверки, мы рассмотрим, как автоматизировать сбор и анализ данных с помощью пайплайна.
Предварительная подготовка
- 1Проект в Google Cloud Console
- 2Создание сервисного аккаунта + загрузка JSON-ключа
- 3Активация API Google Search Console
- 4Добавление электронной почты сервисного аккаунта в качестве пользователя свойства в GSC
Шаг 1: Аутентификация сервисного аккаунта
import { SignJWT } from "jose"
async function getAccessToken(saJson: string) {
const key = JSON.parse(saJson)
const now = Math.floor(Date.now() / 1000)
const jwt = await new SignJWT({
scope: "https://www.googleapis.com/auth/webmasters.readonly",
})
.setProtectedHeader({ alg: "RS256", typ: "JWT" })
.setIssuer(key.client_email)
.setAudience("https://oauth2.googleapis.com/token")
.setIssuedAt(now)
.setExpirationTime(now + 3600)
.sign(await importPrivateKey(key.private_key))
const res = await fetch("https://oauth2.googleapis.com/token", {
method: "POST",
body: new URLSearchParams({
grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
assertion: jwt,
}),
})
const { access_token } = await res.json()
return access_token
}Шаг 2: Запрос данных о производительности
async function queryGSC(token: string, siteUrl: string) {
const url = `https://searchconsole.googleapis.com/webmasters/v3/sites/${encodeURIComponent(siteUrl)}/searchAnalytics/query`
const body = {
startDate: "2026-03-25",
endDate: "2026-04-21",
dimensions: ["query", "page"],
rowLimit: 1000,
}
const res = await fetch(url, {
method: "POST",
headers: { Authorization: `Bearer ${token}` },
body: JSON.stringify(body),
})
return res.json()
}Шаг 3: Автоматизированный пайплайн (CF Workers + D1)
// Запуск каждый день в 3 часа ночи
export default {
async scheduled(event: ScheduledEvent, env: Env) {
const token = await getAccessToken(env.GSC_SA_JSON)
const data = await queryGSC(token, env.GSC_SITE_URL)
// Сохранение в D1
for (const row of data.rows) {
await env.DB.prepare(
"INSERT INTO gsc_daily (date, query, page, clicks, impressions, ctr, position) VALUES (?, ?, ?, ?, ?, ?, ?)"
).bind(new Date().toISOString().slice(0, 10), row.keys[0], row.keys[1], row.clicks, row.impressions, row.ctr, row.position).run()
}
},
}wrangler.toml:
[triggers]
crons = ["0 18 * * *"] # Каждый день в 03:00 по KSTШаг 4: Автоматизация уведомлений
// Обнаружение резкого падения по ключевым словам
const sql = `
SELECT query, SUM(clicks) as recent_clicks,
(SELECT SUM(clicks) FROM gsc_daily WHERE query=g.query AND date BETWEEN DATE(?, '-14 days') AND DATE(?, '-8 days')) as prev_clicks
FROM gsc_daily g
WHERE date >= DATE(?, '-7 days')
GROUP BY query
HAVING prev_clicks > 10 AND recent_clicks < prev_clicks * 0.5
`
const dropped = await env.DB.prepare(sql).bind(today, today, today).all()
if (dropped.results.length > 0) {
await fetch(telegramUrl, {
method: "POST",
body: JSON.stringify({
chat_id: env.CHAT_ID,
text: `Обнаружено ${dropped.results.length} ключевых слов с резким падением`,
}),
})
}Сценарии использования
- 1Автоматический сбор ежедневной производительности: Сохранение в D1 позволяет анализировать тренды
- 2Раннее обнаружение проблем с индексацией: Уведомления при резком падении показов
- 3Поиск ключевых слов с потенциалом: Автоматический вывод ключевых слов с позицией 11-20 (вторая страница) → приоритет переписывания
- 4Рейтинг производительности страниц: Автоматическая отчетность по топ-страницам на основе кликов
Бесплатная квота
- Базовые 50,000 запросов в день (на проект)
- Практически неограниченное использование
💡 Практические инсайты
Другие блоги часто ограничиваются общими утверждениями о том, что "интеграция API GSC полезна", но с точки зрения управления корейскими сайтами действительно критически важно автоматическое срабатывание действий, а не только сбор данных. На основании моего шестимесячного опыта работы, наибольшая отдача от инвестиций (ROI) API GSC не в первом и втором пунктах (сбор и обнаружение), а в третьем (автоматический вывод ключевых слов с потенциалом). Согласно официальной документации Google, ключевые слова в диапазоне позиций 11-20 имеют средний CTR менее 1.5%, но если улучшить мета-теги, H1 и внутренние ссылки, подняв их на 5-10 позиции, CTR возрастает до 7-12% — это означает, что можно получить более чем в 5 раз больше трафика. Поскольку трафик с Naver составляет около 60% для корейских сайтов (по данным исследования использования Интернета 2024 года), эффективно запускать RSS и отправку карты сайта Naver Search Advisor в том же пайплайне, что и GSC. Еще один совет по эксплуатации — поле position является средним значением, поэтому оно может быть шумным, и для определения тренда следует накапливать данные не менее 14 дней, так как при анализе за 7 дней не получится отличить "резкое падение" от "неделевых колебаний".
Заключение
После интеграции API GSC вы сможете "обнаруживать все проблемы без открытия дашборда GSC". С бесплатным планом CF Workers вы можете управлять кроном, D1 и уведомлениями без затрат. Если вы серьезно занимаетесь SEO, это определенно стоит инвестировать одну неделю.
🔧 Related Free Tools
Похожее
USD/JPY分散は、為替急変局面で一方通貨の過大シェアを防ぎ、月次の再バランスと上限規則で感情的な一括投資を抑える実践設計です。...
IT6 способов зарабатывать дополнительный доход с ChatGPT — практическое и проверенное руководство по монетизации на 2026 годUSD/JPY分散は、為替急変局面で一方通貨の過大シェアを防ぎ、月次の再バランスと上限規則で感情的な一括投資を抑える実践設計です。...
IT2026 ChatGPT vs Claude vs Gemini — Сравнение производительности, цен и способов использования AI-чат-ботовUSD/JPY分散は、為替急変局面で一方通貨の過大シェアを防ぎ、月次の再バランスと上限規則で感情的な一括投資を抑える実践設計です。...
ITОптимизация скорости сайта в 2026 году — как достичь Core Web Vitals 90+USD/JPY分散は、為替急変局面で一方通貨の過大シェアを防ぎ、月次の再バランスと上限規則で感情的な一括投資を抑える実践設計です。...