o2o-infinith-demo/docs/INFINITH_GA4_AI_Traffic_Integration.md
Haewon Kam 8776a15183 feat(ga4): AI 유입 트래픽 연동 뼈대 + 리포트 "측정 가능 범위" 절
2026-09-08 작업분. GA4 에서 AI 답변엔진 유입을 채널로 갈라 보는 뼈대를 세웠다.

- data/ai_channels.json: AI 답변엔진 리퍼러 목록(채널 그룹 정의의 근거)
- scripts/ga4_ai_traffic.py: GA4 Data API 로 AI 유입을 뽑는 러너. --mock 으로 합성
  데이터 검증까지 마쳤다. 실제 속성 연결은 GCP 계정이 정해진 뒤다
- supporters/src/layouts/Base.astro + 템플릿 site.json 2곳: ga4MeasurementId 태그.
  쿠키 고지 배너 결정 전까지 미리보기에는 ID 를 넣지 않는다
- scripts/build_discovery_report.ts: Integrity 절에 "측정 가능 범위" 를 넣어
  무엇을 재고 무엇을 못 재는지 리포트가 스스로 밝히게 했다
- 원진 진단 리포트 v2.1(HTML·PDF) 재생성분

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 10:53:54 +09:00

3.3 KiB

GA4 AI 검색 유입 연동 안내 v0.1

작성 2026-09-08 · 스크립트 scripts/ga4_ai_traffic.py · 분류 기준 data/ai_channels.json · 태그 supporters/src/layouts/Base.astro

1. 구조

대상 누가 계측하는가 필요한 것
서포터즈 사이트 INFINITH가 직접. site.json의 ga4MeasurementId(G-XXXX)를 넣으면 빌드 시 태그가 들어간다 INFINITH GA4 속성 1개(병원별 데이터 스트림)
병원 공식 사이트 병원이 이미 쓰는 GA4 속성에 INFINITH 서비스 계정을 뷰어로 추가 병원 GA4 관리자 권한자 1명, 5분

코드 설치는 없다. 병원 사이트에 GA4가 없으면 태그 설치가 먼저이고 그건 병원 웹 담당자 일이다.

2. 연동 절차 (병원 사이트)

  1. INFINITH: Google Cloud 프로젝트에서 Google Analytics Data API 사용 설정, 서비스 계정 생성, 키(JSON) 발급. .env에 GA4_SERVICE_ACCOUNT_JSON=<경로>. 계정은 haewon이 지정한다(이전 GCP 재인증 이슈 있음).
  2. 병원: GA4 관리 → 속성 액세스 관리 → 사용자 추가 → 서비스 계정 이메일, 역할 뷰어.
  3. 병원: 속성 ID(숫자 9자리) 전달.
  4. INFINITH: python3 scripts/ga4_ai_traffic.py --property <ID> --days 90 --clinic <id> --out docs/reports/<id>/05_ai_traffic.
  5. 월간 실행 → 리포트 카드와 병원 확인 패널에 붙인다(다음 단계).

API 없이 받을 때: 병원이 GA4 탐색에서 날짜·세션 소스·세션 매체·방문 페이지·세션수·주요 이벤트를 CSV로 내보내면 --from-csv로 같은 리포트를 만든다.

3. AI 채널 분류 규칙

data/ai_channels.json 한 곳에서 관리한다. 세션 출처 호스트(경계 일치)와 utm_source로 묶는다.

채널 측정 이유
ChatGPT 가능 링크에 utm_source=chatgpt.com
Gemini, Claude 가능 고유 리퍼러
Perplexity, Copilot, 기타 AI 일부만 리퍼러를 자주 비움 → direct로 섞임
Google AI Overview · AI Mode 불가 google / organic과 구분되지 않음
네이버 AI 브리핑 불가 search.naver.com과 구분되지 않음

리포트마다 "측정 가능 범위" 절이 자동으로 들어간다. 불가 채널에는 숫자를 만들지 않는다.

4. 키 이벤트

서포터즈 사이트 태그가 보내는 이벤트. GA4에서 주요 이벤트로 표시해야 전환으로 집계된다.

이벤트 조건
click_tel tel: 링크
click_reservation 헤더 상담 예약 버튼(a.cta) 또는 data-ga="reservation"
click_clinic_site data-ga="clinic-site" (병원 홈페이지 이동)
click_map data-ga="map" (지도·길찾기)

5. 개인정보

GA4 태그는 쿠키를 쓴다. anonymize_ip는 켜 두었다. 쿠키 고지 배너를 넣을지, 쿠키 없는 대안(서버 로그, Vercel Web Analytics)으로 갈지는 haewon 결정 대기. 결정 전까지 서포터즈 미리보기(noindex)에는 측정 ID를 넣지 않는다.

6. 남은 일

  • 리포트 카드(build_discovery_report.ts)에 AI 유입 요약 카드와 실측 언급률 동일 시간축 그래프.
  • 병원 확인 패널(/supporters/:id)에 "GA4 뷰어 추가" 안내와 속성 ID 입력란.
  • 월간 실행을 워커 또는 cron에.