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