IT기술· 6분 읽기
🔍
구글 서치 콘솔 API로 SEO 자동화 파이프라인 구축하기
GSC(Google Search Console) API 연동으로 SEO 자동화 파이프라인 구축. 서비스 계정 발급, 키워드/URL 성과 수집, 대시보드 연동, 알림 자동화.
구글 서치 콘솔 API로 SEO 자동화 파이프라인 구축하기
GSC API는 공식 제공 무료 데이터 소스 중 가장 가치 있는 SEO 데이터입니다. 매일 수동 확인 대신 파이프라인으로 자동 수집·분석하는 실전 구축법.
사전 준비
- 1Google Cloud Console 프로젝트
- 2Service Account 생성 + JSON 키 다운로드
- 3Google Search Console API 활성화
- 4GSC에서 서비스 계정 이메일을 속성 사용자로 추가
1단계: 서비스 계정 인증
ts
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단계: 성과 데이터 조회
ts
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)
ts
// 매일 새벽 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:
toml
[triggers]
crons = ["0 18 * * *"] # 매일 KST 03:004단계: 알림 자동화
ts
// 급락 키워드 감지
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색인 이슈 조기 감지: impressions 급감 시 알림
- 3기회 키워드 발굴: position 11~20 구간 (2페이지) 자동 추출 → 리라이팅 우선순위
- 4페이지 성과 랭킹: clicks 기준 Top 페이지 자동 보고
무료 할당량
- 기본 하루 5만 쿼리 (프로젝트당)
- 실사용 거의 무제한
마무리
GSC API 한 번 연동하면 "GSC 대시보드를 열지 않고도 모든 이슈 감지"가 가능합니다. CF Workers 무료 플랜으로 크론 + D1 + 알림까지 운영 비용 0원. SEO 진지하게 하는 사이트라면 1주일 투자 가치 확실.
🔧 이 글과 관련된 무료 도구
이 글과 관련된 상품 (GSC)[광고/제휴]
이 포스팅은 쿠팡 파트너스, 아마존 어소시에이트, 알리익스프레스 제휴 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다. 이는 상품 가격에 영향을 주지 않습니다.
As an Amazon Associate, Coupang Partner, and AliExpress affiliate, I earn from qualifying purchases at no extra cost to you.