IT기술· 6분 읽기
🔍

구글 서치 콘솔 API로 SEO 자동화 파이프라인 구축하기

GSC(Google Search Console) API 연동으로 SEO 자동화 파이프라인 구축. 서비스 계정 발급, 키워드/URL 성과 수집, 대시보드 연동, 알림 자동화.

구글 서치 콘솔 API로 SEO 자동화 파이프라인 구축하기

GSC API는 공식 제공 무료 데이터 소스 중 가장 가치 있는 SEO 데이터입니다. 매일 수동 확인 대신 파이프라인으로 자동 수집·분석하는 실전 구축법.

사전 준비

  1. 1Google Cloud Console 프로젝트
  2. 2Service Account 생성 + JSON 키 다운로드
  3. 3Google Search Console API 활성화
  4. 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:00

4단계: 알림 자동화

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. 1일일 성과 자동 수집: D1에 쌓으면 트렌드 분석 가능
  2. 2색인 이슈 조기 감지: impressions 급감 시 알림
  3. 3기회 키워드 발굴: position 11~20 구간 (2페이지) 자동 추출 → 리라이팅 우선순위
  4. 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.

관련 글