쿼리 가져오기: 여러 소스에서 검색 데이터 수집하기

이 문서에서는 SEO 파이프라인을 위한 포괄적인 데이터셋을 구축하기 위해 5가지 다른 소스에서 검색 쿼리를 수집하는 방법을 설명합니다.

문제점: 불완전한 쿼리 데이터

단일 데이터 소스에 의존하면 불완전한 상황만 보입니다:

  • Google Search Console: 클릭으로 이어진 쿼리만 표시함 (높은 노출수, 낮은 CTR 쿼리는 누락)

  • Google Ads: 유료 검색어만 표시함 (자연 검색 트래픽 누락)

  • 라이브 검색 로그: 사이트 내 검색만 표시함 (외부 발견 경로 누락)

  • Algolia: 자동완성 쿼리만 표시함 (전체 검색 누락)

전체 검색 환경을 이해하려면 모든 소스의 쿼리를 집계해야 합니다.

개요: 다섯 가지 쿼리 소스

파이프라인은 다섯 가지 소스에서 데이터를 가져옵니다:

  • Google Search Console: 참여 지표가 포함된 자연 검색 쿼리

  • Google Ads: 전환 데이터가 포함된 유료 검색어

  • 라이브 검색 로그: 사이트 내 사용자 쿼리

  • Algolia 애널리틱스: 자동완성 검색 쿼리

  • 키워드 플래너: 관련 키워드 제안

각 소스는 다른 인사이트를 제공하며, 결합하면 포괄적인 쿼리 데이터셋이 생성됩니다.

1단계: 각 소스에서 쿼리 가져오기

1.1 Google Search Console (GSC)

목적: 클릭으로 이어진 자연 검색 쿼리를 수집합니다.

입력: Search Console에서 확인된 웹사이트 URL.

출력: 참여 지표(쿼리, 클릭수, 노출수, CTR, 순위)가 포함된 쿼리 목록.

데이터 사양:

  • 쿼리 텍스트

  • 클릭수 (우리 결과를 클릭한 사용자 수)

  • 노출수 (우리 결과가 표시된 횟수)

  • CTR (클릭률, 백분율)

  • 검색 결과 평균 순위

조회 기간: 90일 (상세 쿼리 데이터의 최대 기간)

필터링: 최소 1회 클릭 (노출만 있는 쿼리는 제외)

접근: 읽기 전용 범위의 서비스 계정을 통한 Google Search Console API

1.2 Google Ads 검색어

목적: 광고를 트리거한 유료 검색어를 수집합니다.

입력: 관리자 계정 접근 권한이 있는 Google Ads 계정.

출력: 성과 지표(검색어, 노출수, 클릭수, 비용)가 포함된 검색어 목록.

데이터 사양:

  • 검색어 텍스트

  • 노출수 (광고 조회수)

  • 클릭수 (광고 클릭수)

  • 마이크로 단위 비용 (100만 단위 = 1 통화)

조회 기간: 2년 (사용 가능한 모든 과거 데이터)

집계: 권한이 있는 모든 계정의 데이터를 결합

필터링: 최소 1회 노출

접근: OAuth2를 통한 Google Ads API

1.3 라이브 검색 쿼리

목적: 사이트 내 사용자 검색 쿼리를 수집합니다.

입력: 검색 서비스의 내부 검색 로그.

출력: 빈도 지표(쿼리, 횟수, 참여도)가 포함된 쿼리 목록.

데이터 사양:

  • 쿼리 텍스트

  • 빈도 (검색된 횟수)

  • 참여 데이터 (제품 상호작용으로 이어진 검색)

조회 기간: 다양함 (일반적으로 로그 보존 기간에 따라 30-90일)

가중치: 참여도에 따라 쿼리에 가중치 부여 (상호작용이 있는 검색이 더 높은 점수)

필터링: 중복 제거 및 발생 횟수 계산

1.4 Algolia 인기 검색어

목적: Algolia 애널리틱스의 자동완성 검색어를 수집합니다.

입력: Algolia 검색 애널리틱스 데이터.

출력: 빈도(인기 검색어, 횟수)가 포함된 상위 검색 쿼리 목록.

데이터 사양:

  • 쿼리 텍스트

  • 검색 횟수 (검색된 횟수)

조회 기간: 90일

필터링: 최근 고빈도 검색어로 제한

접근: 애플리케이션 자격 증명을 통한 Algolia Analytics API

1.5 키워드 플래너 아이디어

목적: 관련 키워드 제안을 수집합니다.

입력: 시드 키워드 (제품 카테고리, 계열, 일반적인 검색어).

출력: 지표(키워드, 검색량, 경쟁도, 입찰 제안)가 포함된 키워드 목록.

데이터 사양:

  • 키워드 텍스트

  • 월평균 검색수

  • 경쟁 수준 (낮음, 중간, 높음)

  • 제안 입찰가

필터링: 관련 키워드만 (관련 없는 제안은 제외)

접근: OAuth2를 통한 Google Ads Keyword Planner API

2단계: 쿼리 정규화 및 집계

2.1 쿼리 텍스트 정규화

쿼리는 집계 전에 표준화됩니다:

  • 소문자로 변환

  • 공백 정규화 (여러 공백을 하나로 축소)

  • 앞뒤 공백 제거

  • 특수 문자 제거 (해당하는 경우)

2.2 병합 및 중복 제거

모든 소스의 쿼리가 결합됩니다:

  1. 모든 소스 쿼리 목록 로드
  2. 정규화된 쿼리 텍스트로 중복 제거
  3. 지표 병합 (클릭수, 노출수, 검색수 결합)
  4. 각 쿼리에 기여한 소스 추적
  5. 결합 참여 점수로 정렬

2.3 참여 신호에 따른 가중치

쿼리는 참여도에 따라 점수가 매겨집니다:

  • GSC 클릭수: 최고 가중치 (우리 콘텐츠와의 직접적인 참여)

  • Ads 클릭수: 최고 가중치 (유료 의도를 가진 사용자의 행동 전환)

  • 참여도 있는 라이브 검색: 중간 가중치 (사이트 내 상호작용)

  • 참여도 없는 라이브 검색: 낮은 가중치 (검색만)

  • Algolia 자동완성: 낮은 가중치 (불완전한 의도)

  • 키워드 아이디어: 최저 가중치 (제안된, 관찰되지 않은 검색)

가중치 공식은 구성 가능하며, 참여도가 주요 순위 신호입니다.

2.4 저품질 쿼리 필터링

유효하지 않은 쿼리는 제거됩니다:

  • 스팸: 숫자, 특수 문자만 있거나 주입 시도가 있는 쿼리

  • 브랜드 전용: 우리 브랜드 이름만 있는 쿼리

  • 낮은 점수: 최소 참여도 임계값 미만 쿼리

3단계: 기술적 구현

3.1 쿼리 가져오기 프로세스

각 소스에 대한 인증 및 데이터 가져오기:

  1. 자격 증명 획득 (서비스 계정, OAuth2 또는 API 키)
  2. 각각의 API에 연결
  3. 지정된 날짜 범위에 대한 데이터 요청
  4. 응답을 표준 JSON 형식으로 파싱
  5. 로컬 저장소에 저장

3.2 Google Search Console 클라이언트

프로세스:

  1. 서비스 계정 자격 증명으로 인증
  2. 지정된 사이트에 대해 Search Console API 쿼리
  3. 결과 페이지네이션 (각 페이지는 최대 25,000개 결과 반환)
  4. 쿼리, 클릭수, 노출수, CTR, 순위 추출
  5. 집계하여 JSON으로 저장

3.3 Google Ads 클라이언트

프로세스:

  1. OAuth2 자격 증명으로 인증
  2. 권한이 있는 모든 계정 열거
  3. 각 계정에 대해 검색어 쿼리
  4. 계정 간 지표 집계
  5. 노출수 기준으로 정렬 및 저장

3.4 라이브 쿼리 로그 파싱

프로세스:

  1. 내부 검색 로그 파일 읽기
  2. 각 로그 항목 파싱 (JSON 형식, 한 줄에 하나씩)
  3. 쿼리 텍스트 및 참여 신호 추출
  4. 쿼리 중복 제거 및 발생 횟수 계산
  5. 참여도에 따라 가중치 부여 및 저장

3.5 Algolia 애널리틱스 가져오기

프로세스:

  1. Algolia 자격 증명으로 인증
  2. 검색 데이터를 위해 Analytics API 호출
  3. 날짜 범위 필터가 적용된 상위 검색어 요청
  4. 검색 횟수 및 결과 지표 반환
  5. 표준 JSON 형식으로 저장

4단계: 증분 업데이트

쿼리 가져오기는 더 빠른 처리를 위한 증분 업데이트를 지원합니다:

첫 실행:

  • 모든 과거 데이터 가져오기 (Ads는 2년, GSC는 90일)

  • 임베딩 계산 (초기 설정은 느림)

후속 실행:

  • 마지막 실행 이후의 새로운 데이터만 가져오기

  • 가능한 경우 캐시된 임베딩 재사용

  • 증분 업데이트는 빠르게 완료됨

최적화 로직:

  • 출력이 존재하고 최근인지 확인

  • 새로운 데이터가 없으면 건너뛰기

  • 실패 시 마지막 체크포인트에서 재개

5단계: 파이프라인과의 통합

가져온 쿼리는 후속 파이프라인 단계로 공급됩니다:

5.1 쿼리 클러스터링:

  • 입력: 참여 가중치가 포함된 결합 쿼리 목록

  • 프로세스: 임베딩을 사용하여 유사한 쿼리를 함께 그룹화

  • 출력: 페이지 생성을 위한 쿼리 클러스터

5.2 제품 매칭:

  • 입력: 쿼리 임베딩 및 클러스터

  • 프로세스: 각 클러스터를 관련 제품에 매칭

  • 출력: 쿼리-제품 매핑

5.3 쿼리 페이지:

  • 입력: 클러스터링 및 제품 매칭

  • 프로세스: 각 클러스터에 대한 페이지 콘텐츠 생성

  • 출력: HTML 페이지 및 라우팅 데이터

5.4 관련 검색어:

  • 입력: 쿼리 임베딩 및 페이지 데이터

  • 프로세스: 각 페이지에 대한 유사한 쿼리 찾기

  • 출력: 관련 검색 제안

참조: 전체 파이프라인 아키텍처는 SEO 파이프라인 개요 참조

데이터 품질 고려사항

중복 처리

쿼리가 약간의 변형으로 여러 소스에 나타날 수 있습니다. 예:

  • "mini pc" (GSC)

  • "Mini PC" (Ads)

  • "mini pc" (라이브, 추가 공백 포함)

해결책: 병합 전 정규화 (소문자, 트리밍, 공백 축소)

스팸 처리

일부 소스에는 유효하지 않은 쿼리가 포함됩니다:

  • 무작위 문자 문자열

  • SQL 주입 시도

  • 매우 긴 쿼리

해결책: 참여 신호, 문자 구성, 길이 규칙으로 필터링

계절성 처리

쿼리량은 계절에 따라 다릅니다:

  • 축제 기간 동안 더 높은 볼륨

  • 휴일 동안 더 낮은 볼륨

해결책: 계절적 변동을 완화하기 위해 90일 조회 기간 사용

성능 특성

  • 가져오기 시간: 소스에 따라 다양함; 병렬 가져오기로 전체 시간 단축

  • 쿼리 볼륨: 데이터 소스에 따라 수천에서 수백만

  • 집계 시간: 총 고유 쿼리 수에 따라 확장

  • 증분 업데이트: 전체 재가져오기보다 상당히 빠름

  • 리소스 사용량: 집계를 위한 중간 수준의 CPU, 중복 제거를 위한 메모리

오류 처리

파이프라인은 일반적인 실패를 처리합니다:

  • API 사용 불가: 지수 백오프로 재시도

  • 데이터 누락: 건너뛰고 기록; 다른 소스로 계속 진행

  • 유효하지 않은 항목: 필터링하고 처리 계속

  • 부분적 실패: 성공한 데이터 저장 및 체크포인트 위치 기록

참고 항목

참고 자료

API 및 서비스

관련 문서


← 문서 색인으로 돌아가기