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 호출 자체가 막혀 있지 않아 실행은 됩니다. 하지만 이것이 “안전하다”는 뜻은 아닙니다.
- 구글은 가이드라인에서 “지원되지 않는 페이지를 제출하는 등 API를 오용하면 액세스 권한이 취소될 수 있다”고 명시하고 있습니다.
- 구글의 수석 검색 분석가 존 뮬러(John Mueller)는 공식 지원 대상이 아닌 콘텐츠에 Indexing API를 쓰는 것을 API 오용 사례로 지목하며 중단을 공개적으로 권고한 바 있습니다.
- 실제로 일반 블로그나 기업 사이트에 이 API를 연동한 뒤, 일시적으로 색인은 빨라진 것처럼 보였지만 이후 노출·클릭이 급락하거나 검색 결과에서 페이지가 통째로 빠지는 사례가 SEO 업계에서 다수 보고되고 있습니다.
즉 “일반 정보성 블로그에 써도 페널티가 없다”는 식의 조언은 사실과 다르며, 그대로 따라 하면 오히려 사이트 전체의 검색 노출을 위험에 빠뜨릴 수 있습니다.
3. 그럼 일반 블로그는 어떻게 색인을 빠르게 할 수 있나
Indexing API를 쓸 수 없다면(=JobPosting·BroadcastEvent 콘텐츠가 아니라면) 아래 방법들이 구글 가이드라인 안에서 색인을 앞당기는 현실적인 수단입니다.
- XML 사이트맵을 항상 최신 상태로 유지하고 서치콘솔에 제출하기. 새 글이 추가될 때마다 사이트맵이 자동으로 갱신되도록 하면 구글이 새 URL을 더 빨리 발견합니다.
- 이미 색인된 페이지에서 새 글로 내부 링크를 걸기. 크롤러는 링크를 따라 이동하므로, 트래픽이 있는 기존 페이지에서 새 글로 링크를 연결하면 발견 속도가 빨라집니다.
- 서치콘솔의 ‘색인 생성 요청’ 기능을 계속 활용하기. 느리긴 해도 이것이 구글이 공식적으로 제공하는 수동 요청 경로입니다.
- 애초에 색인 지연의 근본 원인(사이트 권위, 크롤 예산, 콘텐츠 품질)을 개선하기. 신생 사이트일수록 색인이 늦는 것은 기술적 트릭보다 사이트 자체의 신뢰도 축적으로 해결되는 경우가 많습니다.
4. 실제로 JobPosting·BroadcastEvent 페이지를 운영한다면
채용 공고 사이트나 라이브 방송 페이지처럼 공식 지원 대상에 해당한다면, Indexing API는 정확히 이런 용도로 만들어진 기능이니 적극적으로 써도 됩니다.
1단계: Google Cloud API 프로젝트 생성 및 키(JSON) 발급
- Google Cloud Console에 접속하여 새 프로젝트를 생성합니다.
- 라이브러리 검색창에 **‘Web Search Indexing API’**를 검색한 뒤 [사용] 버튼을 클릭합니다.
- [API 및 서비스] > [사용자 인증 정보] 메뉴로 이동합니다.
- **[사용자 인증 정보 만들기] > [서비스 계정]**을 선택합니다.
- 서비스 계정 이름(예:
fast-indexer)을 입력하고 역할을 ‘소유자(Owner)’ 또는 **‘편집자’**로 지정한 뒤 완료합니다. - 생성된 서비스 계정 이메일 주소(예:
fast-indexer@your-project.iam.gserviceaccount.com)를 따로 메모해 둡니다. - 해당 서비스 계정 우측의 ‘키 관리’ 메뉴로 들어가 **[새 키 만들기] > [JSON]**을 선택해 다운로드합니다. 이 파일은 절대 외부에 노출되면 안 됩니다.
2단계: 구글 서치콘솔에 서비스 계정 등록 (매우 중요)
많은 이들이 이 단계를 누락하여 403 Permission Denied 에러를 겪습니다. API가 내 사이트의 소유권을 대행할 수 있도록 서치콘솔에 방금 만든 서비스 계정을 ’소유자’로 등록해야 합니다.
- 구글 서치콘솔에 로그인합니다.
- 연동할 사이트를 선택한 뒤 **[설정] > [사용자 및 권한]**으로 이동합니다.
- **[사용자 추가]**를 누르고, 1단계에서 메모해 둔 서비스 계정 이메일 주소를 입력합니다.
- 권한을 반드시 ’소유자(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 에러가 발생합니다.
- 원인: 구글 서치콘솔에 등록된 도메인의 소유자 이메일과 GCP 서비스 계정 이메일이 매칭되지 않았거나, 서치콘솔상 권한이 ’소유자’가 아닌 ’전체 권한’으로 설정되었을 때 발생합니다.
- 해결책: 서치콘솔 [사용자 및 권한]에서 서비스 계정의 권한 등급을 반드시 **‘소유자(Owner)’**로 변경하세요. 도메인 속성(Domain Property)이 아닌 URL 접두사 속성으로 등록되어 있다면 양쪽 모두에 권한을 부여해야 할 수도 있습니다.
Q. 429 Too Many Requests 에러가 뜹니다.
- 원인: 하루 허용량(Quota)을 초과한 것입니다. 구글이 제공하는 기본 일일 쿼터는 프로젝트당 200개입니다.
- 해결책: JobPosting·BroadcastEvent가 아닌 URL이 섞여 있지 않은지 먼저 확인하세요. 발행량이 많은 채용 사이트라면 Google Cloud Console의 ‘할당량’ 탭에서 한도 증액을 신청할 수 있습니다.
Q. API 전송 성공 메시지(200 OK)를 받았는데도 여전히 색인이 안 됩니다.
- 원인: Indexing API는 구글봇을 페이지로 ’데려오는 것’까지만 보장합니다. 구글봇이 접속한 뒤 기술적 결함을 발견하면 색인을 거부할 수 있습니다.
- 체크리스트:
- 페이지 소스코드에
<meta name="robots" content="noindex">태그가 들어가 있지 않은가? robots.txt파일이 크롤러의 접근을 차단하고 있지 않은가?- 페이지 로딩 속도가 너무 느려 구글봇이 타임아웃을 일으키지 않았는가?
- 다른 페이지의 내용을 그대로 긁어온 ‘중복 콘텐츠’ 혹은 ’내용이 거의 없는 빈 페이지’는 아닌가?
- 페이지 소스코드에
마치며
Google Indexing API는 분명 빠릅니다. 하지만 그 속도는 채용 공고와 실시간 방송이라는 특정 용도에 대한 대가이지, 모든 웹사이트에 공짜로 주어지는 치트키가 아닙니다. 일반 블로그나 쇼핑몰을 운영하고 있다면, 지원되지 않는 용도로 API를 우회해 쓰는 것보다 사이트맵 관리·내부 링크·콘텐츠 품질처럼 구글이 실제로 권장하는 방법에 시간을 쓰는 편이 장기적으로 훨씬 안전합니다.