Google Indexing API, 일반 블로그에 써도 될까? — 빠른 게 아니라 위험한 이유

콘텐츠를 발행하고 구글 검색 결과에 노출되기까지 얼마나 기다리고 계시나요?

많은 블로거와 마케터들이 사이트맵을 제출하고 구글 서치콘솔(Google Search Console)에서 ‘색인 생성 요청’ 버튼을 누른 채 하염없이 기다립니다. 이 답답함 때문에 검색해 보면 “Google Indexing API를 연동하면 몇 분 만에 색인된다”는 글을 자주 만나게 됩니다.

결론부터 말씀드리면, 이 API를 일반 블로그나 쇼핑몰 상세 페이지에 쓰는 것은 구글이 공식적으로 지원하지 않는 용도이고, 실제로 페널티 사례까지 보고되고 있습니다. 왜 그런지, 그리고 일반 사이트라면 대신 무엇을 해야 하는지 정리합니다.


1. Google Indexing API가 빠른 이유

구글 서치콘솔의 ’색인 생성 요청’은 구글 크롤러에게 “시간 날 때 내 사이트 좀 방문해 줘”라고 요청하는 대기열 등록에 가깝습니다. 반면 Google Indexing API는 구글의 실시간 인덱싱 파이프라인에 URL을 직접 푸시(Push)하는 방식이라, 일반 크롤링 스케줄을 기다리지 않고 곧바로 처리됩니다. 기술적으로 훨씬 빠른 경로인 것은 사실입니다.

문제는 “빠르다”는 것과 “아무 페이지에나 써도 된다”는 것은 전혀 다른 이야기라는 점입니다.


2. 공식적으로는 채용·실시간 방송 페이지 전용입니다

Google Indexing API 공식 문서에는 다음과 같은 문구가 있습니다.

“현재 Indexing API는 JobPosting(구인/구직) 또는 BroadcastEvent(실시간 방송)가 포함된 페이지를 발표하는 데만 사용할 수 있습니다.”

인터넷에는 워드프레스 플러그인(Rank Math의 Instant Indexing 등)을 이용해 이 제한을 우회하고 일반 블로그 글까지 API로 밀어 넣는 방법을 소개하는 글이 많습니다. 기술적으로는 API 호출 자체가 막혀 있지 않아 실행은 됩니다. 하지만 이것이 “안전하다”는 뜻은 아닙니다.

즉 “일반 정보성 블로그에 써도 페널티가 없다”는 식의 조언은 사실과 다르며, 그대로 따라 하면 오히려 사이트 전체의 검색 노출을 위험에 빠뜨릴 수 있습니다.


3. 그럼 일반 블로그는 어떻게 색인을 빠르게 할 수 있나

Indexing API를 쓸 수 없다면(=JobPosting·BroadcastEvent 콘텐츠가 아니라면) 아래 방법들이 구글 가이드라인 안에서 색인을 앞당기는 현실적인 수단입니다.


4. 실제로 JobPosting·BroadcastEvent 페이지를 운영한다면

채용 공고 사이트나 라이브 방송 페이지처럼 공식 지원 대상에 해당한다면, Indexing API는 정확히 이런 용도로 만들어진 기능이니 적극적으로 써도 됩니다.

1단계: Google Cloud API 프로젝트 생성 및 키(JSON) 발급

  1. Google Cloud Console에 접속하여 새 프로젝트를 생성합니다.
  2. 라이브러리 검색창에 **‘Web Search Indexing API’**를 검색한 뒤 [사용] 버튼을 클릭합니다.
  3. [API 및 서비스] > [사용자 인증 정보] 메뉴로 이동합니다.
  4. **[사용자 인증 정보 만들기] > [서비스 계정]**을 선택합니다.
  5. 서비스 계정 이름(예: fast-indexer)을 입력하고 역할을 ‘소유자(Owner)’ 또는 **‘편집자’**로 지정한 뒤 완료합니다.
  6. 생성된 서비스 계정 이메일 주소(예: fast-indexer@your-project.iam.gserviceaccount.com)를 따로 메모해 둡니다.
  7. 해당 서비스 계정 우측의 ‘키 관리’ 메뉴로 들어가 **[새 키 만들기] > [JSON]**을 선택해 다운로드합니다. 이 파일은 절대 외부에 노출되면 안 됩니다.

2단계: 구글 서치콘솔에 서비스 계정 등록 (매우 중요)

많은 이들이 이 단계를 누락하여 403 Permission Denied 에러를 겪습니다. API가 내 사이트의 소유권을 대행할 수 있도록 서치콘솔에 방금 만든 서비스 계정을 ’소유자’로 등록해야 합니다.

  1. 구글 서치콘솔에 로그인합니다.
  2. 연동할 사이트를 선택한 뒤 **[설정] > [사용자 및 권한]**으로 이동합니다.
  3. **[사용자 추가]**를 누르고, 1단계에서 메모해 둔 서비스 계정 이메일 주소를 입력합니다.
  4. 권한을 반드시 ’소유자(Owner)’로 설정해야 합니다. (단순 ’권한 있음’이나 ’제한됨’으로는 API가 작동하지 않습니다.)

3단계: 자동화 스크립트 적용

공식 googleapis 라이브러리를 사용해 아래와 같은 방식으로 API 요청을 보냅니다.

const { google } = require('googleapis');
const key = require('./service-account-key.json'); // 다운로드한 JSON 키 파일

const jwtClient = new google.auth.JWT(
  key.client_email,
  null,
  key.private_key,
  ['https://www.googleapis.com/auth/indexing'],
  null
);

jwtClient.authorize((err, tokens) => {
  if (err) {
    console.error("인증 실패:", err);
    return;
  }

  const options = {
    url: 'https://indexing.googleapis.com/v3/urlNotifications:publish',
    method: 'POST',
    auth: jwtClient,
    json: {
      url: 'https://your-site.com/new-job-posting-url', // JobPosting 또는 BroadcastEvent 페이지 URL만 해당
      type: 'URL_UPDATED' // 등록/수정은 URL_UPDATED, 삭제는 URL_DELETED
    }
  };

  request(options, (error, response, body) => {
    console.log("결과:", body);
  });
});

5. 연동 후 트러블슈팅: 자주 발생하는 에러 코드와 해결법

Q. API 호출 후 403 Forbidden 에러가 발생합니다.

Q. 429 Too Many Requests 에러가 뜹니다.

Q. API 전송 성공 메시지(200 OK)를 받았는데도 여전히 색인이 안 됩니다.


마치며

Google Indexing API는 분명 빠릅니다. 하지만 그 속도는 채용 공고와 실시간 방송이라는 특정 용도에 대한 대가이지, 모든 웹사이트에 공짜로 주어지는 치트키가 아닙니다. 일반 블로그나 쇼핑몰을 운영하고 있다면, 지원되지 않는 용도로 API를 우회해 쓰는 것보다 사이트맵 관리·내부 링크·콘텐츠 품질처럼 구글이 실제로 권장하는 방법에 시간을 쓰는 편이 장기적으로 훨씬 안전합니다.