쿼리 가져오기: 여러 소스에서 검색 데이터 수집하기
이 문서에서는 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 병합 및 중복 제거
모든 소스의 쿼리가 결합됩니다:
- 모든 소스 쿼리 목록 로드
- 정규화된 쿼리 텍스트로 중복 제거
- 지표 병합 (클릭수, 노출수, 검색수 결합)
- 각 쿼리에 기여한 소스 추적
- 결합 참여 점수로 정렬
2.3 참여 신호에 따른 가중치
쿼리는 참여도에 따라 점수가 매겨집니다:
-
GSC 클릭수: 최고 가중치 (우리 콘텐츠와의 직접적인 참여)
-
Ads 클릭수: 최고 가중치 (유료 의도를 가진 사용자의 행동 전환)
-
참여도 있는 라이브 검색: 중간 가중치 (사이트 내 상호작용)
-
참여도 없는 라이브 검색: 낮은 가중치 (검색만)
-
Algolia 자동완성: 낮은 가중치 (불완전한 의도)
-
키워드 아이디어: 최저 가중치 (제안된, 관찰되지 않은 검색)
가중치 공식은 구성 가능하며, 참여도가 주요 순위 신호입니다.
2.4 저품질 쿼리 필터링
유효하지 않은 쿼리는 제거됩니다:
-
스팸: 숫자, 특수 문자만 있거나 주입 시도가 있는 쿼리
-
브랜드 전용: 우리 브랜드 이름만 있는 쿼리
-
낮은 점수: 최소 참여도 임계값 미만 쿼리
3단계: 기술적 구현
3.1 쿼리 가져오기 프로세스
각 소스에 대한 인증 및 데이터 가져오기:
- 자격 증명 획득 (서비스 계정, OAuth2 또는 API 키)
- 각각의 API에 연결
- 지정된 날짜 범위에 대한 데이터 요청
- 응답을 표준 JSON 형식으로 파싱
- 로컬 저장소에 저장
3.2 Google Search Console 클라이언트
프로세스:
- 서비스 계정 자격 증명으로 인증
- 지정된 사이트에 대해 Search Console API 쿼리
- 결과 페이지네이션 (각 페이지는 최대 25,000개 결과 반환)
- 쿼리, 클릭수, 노출수, CTR, 순위 추출
- 집계하여 JSON으로 저장
3.3 Google Ads 클라이언트
프로세스:
- OAuth2 자격 증명으로 인증
- 권한이 있는 모든 계정 열거
- 각 계정에 대해 검색어 쿼리
- 계정 간 지표 집계
- 노출수 기준으로 정렬 및 저장
3.4 라이브 쿼리 로그 파싱
프로세스:
- 내부 검색 로그 파일 읽기
- 각 로그 항목 파싱 (JSON 형식, 한 줄에 하나씩)
- 쿼리 텍스트 및 참여 신호 추출
- 쿼리 중복 제거 및 발생 횟수 계산
- 참여도에 따라 가중치 부여 및 저장
3.5 Algolia 애널리틱스 가져오기
프로세스:
- Algolia 자격 증명으로 인증
- 검색 데이터를 위해 Analytics API 호출
- 날짜 범위 필터가 적용된 상위 검색어 요청
- 검색 횟수 및 결과 지표 반환
- 표준 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 사용 불가: 지수 백오프로 재시도
-
데이터 누락: 건너뛰고 기록; 다른 소스로 계속 진행
-
유효하지 않은 항목: 필터링하고 처리 계속
-
부분적 실패: 성공한 데이터 저장 및 체크포인트 위치 기록
참고 항목
-
SEO 파이프라인 개요 — 전체 파이프라인 아키텍처
-
쿼리 클러스터링 — 유사한 쿼리가 그룹화되는 방법
-
제품 매칭 — 쿼리와 제품 매칭
-
임베딩 전략 — 쿼리 및 제품 임베딩
-
관련 검색어 생성 — 관련 링크 구축
참고 자료
API 및 서비스
-
Google Search Console API — 공식 문서
-
Google Ads API — 공식 문서
-
Algolia Analytics API — 공식 문서
관련 문서
-
SEO 파이프라인 개요 — 전체 파이프라인 아키텍처
-
쿼리 클러스터링 — 쿼리가 클러스터링되는 방법
-
제품 매칭 — 쿼리와 제품 매칭