앱·서비스구축 중 MVP
한눈 애널리틱스
GA4 대신 문장으로 먼저 읽는 홈페이지 방문 분석
0개쿠키
- 누구를 위해
- 홈페이지는 있지만 GA4 설정과 해석이 어려운 사장님, 그리고 같은 숫자를 더 깊게 나눠 보려는 마케터
- 무엇이 문제였나
- GA4는 설정과 해석이 어려워 작은 사업장은 숫자를 봐도 무엇이 바뀌었는지, 문의로 이어졌는지 알기 어렵습니다.
- 무엇을 했나
- 스크립트 한 줄로 설치하고 쿠키 없이 방문을 세며, “이번 주에 무슨 일이 있었나”를 통계 검사를 거친 문장으로 먼저 보여 주는 여러 사이트용 애널리틱스 서비스
- 무엇이 달라지나
- 사장님은 보고서를 뒤지지 않고 이번 주의 변화와 문의를 읽고, 마케터는 같은 자리에서 근거를 나눠 봅니다.

어떻게 움직이나
한 건의 일이 처음부터 끝까지 어떻게 흘러가는지 순서대로 보여드립니다.
방문 한 번이 문장 한 줄이 되기까지
재생을 누르거나 단계를 눌러 순서대로 살펴보세요.
“방문이 늘었고, 늘어난 몫은 네이버 검색에서 왔습니다” 같은 한 문장
- 설치
- 한 줄
- 쿠키
- 0개
- 첫 화면 질문
- 5개
사장님은 보고서를 뒤지지 않고 이번 주의 변화와 문의를 읽고, 마케터는 같은 자리에서 근거를 나눠 봅니다.
직접 써보기
모든 숫자는 예시 데이터입니다. 가상 스튜디오 사이트의 방문을 실제 추적·수집·집계 코드에 이 브라우저 안에서 흘려 넣어 만들었고, 서버로 아무것도 보내지 않습니다.
이렇게 해보세요
- ‘직접 돌아다녀 보기’에서 들어오는 길을 고르고 예시 사이트를 둘러본 뒤 체험 신청을 제출해, 오른쪽 숫자와 문의 흐름이 바뀌는 것을 봅니다.
- 사이트를 떠났다가 30분을 건너뛰거나 다른 사람으로 바꿔 다시 들어가, 새 방문으로 세는 규칙과 검색 로봇을 걸러내는 것을 확인합니다.
- ‘예시 대시보드’에서 요약 문장 속 숫자를 눌러 근거 표를 열고, 표의 행을 눌러 대시보드 전체를 그 조건으로 다시 봅니다.
수집 창구가 한 일
사이트에 들어가면 스크립트가 보낸 요청과 서버 코드의 판정이 여기에 쌓입니다.
이 숫자들은 앱과 같은 대시보드 부품입니다. 지금 이 브라우저에서 한 방문만 셉니다 · 오늘 0회
예시 방문을 실제 수집 코드에 넣는 중
가상 스튜디오 사이트의 61일 치 요청을 이 브라우저에서 하나씩 처리합니다 — 봇 거르기, 방문자 해시, 방문 판정까지 운영과 같은 코드입니다.
원문을 불러오는 중…
만든 범위
GA4는 보고서를 쌓아 두는 창고라 무엇을 찾을지 사용자가 알아야 합니다. 한눈은 사장님이 실제로 묻는 다섯 질문 — 몇 명이 왔나, 어디서 왔나, 무엇을 봤나, 어디서 나갔나, 문의로 이어졌나 — 에 첫 화면에서 답하고, 마케터는 같은 자리에서 “자세히”를 열어 채널·캠페인·페이지별로 나눠 봅니다. 요약 문장은 AI가 아니라 규칙과 통계 검사로 만들어, 표본이 적거나 차이가 우연일 수 있으면 “늘었다”고 말하지 않습니다. 쿠키를 굽지 않고 날마다 바뀌는 비밀값으로 방문자를 구분해 동의 배너 없이 설치할 수 있습니다. 이 페이지의 모든 숫자는 가상 사이트의 예시 데이터입니다.
먼저 풀어야 했던 문제
- GA4는 무엇을 볼지 알아야 쓸 수 있다이벤트·전환·맞춤 측정기준을 설정하고 보고서를 찾아가야 해서, 작은 사업장은 숫자를 봐도 무엇이 바뀌었는지 모릅니다.
- 늘었다는 말이 우연일 수 있다방문이 적은 주에는 몇 명 차이로도 그래프가 크게 흔들려, 숫자만 보고 “효과가 있었다”고 잘못 판단하기 쉽습니다.
- 쿠키 동의 배너와 개인정보쿠키로 방문자를 쫓으면 동의 절차가 필요하고, IP·연락처가 섞이면 분석 도구가 개인정보 창고가 됩니다.
구현한 기능
- 문장 요약방문·원인·문의·속도·페이지를 최대 4문장으로 말하고, 문장 속 숫자를 누르면 그 숫자가 나온 표가 열립니다.
- 판정 근거문장마다 검사 이름·p값·기준을 함께 보여 줘, 왜 “비슷합니다”라고 했는지 확인할 수 있습니다.
- 다섯 질문 카드어디서 왔나·무엇을 봤나·어디서 나갔나·문의로 이어졌나·빠른가를 카드로 답하고, “자세히”로 마케터용 표를 엽니다.
- 한 번 눌러 거는 조건표의 행을 누르면 그 출처·기기·페이지로 대시보드 전체를 다시 계산하고, 조건과 기간은 주소에 남습니다.
- 설정 없는 문의 흐름전화·문자·메일·카카오 상담 링크와 폼 작성·제출을 따로 설정하지 않아도 셉니다. 입력값은 읽지 않습니다.
- 설치 확인설치 화면이 몇 초마다 첫 방문을 기다렸다가 들어오면 바로 알려 줍니다.
2개 더 보기
- 실시간최근 5분 안에 움직인 방문자와 최근 30분 페이지뷰, 지금 보는 페이지를 보여 줍니다.
- 여러 사이트조직마다 여러 사이트를 등록하고, 등록한 도메인에서 연 페이지의 요청만 받습니다(브라우저가 붙이는 출처 기준).
화면 뒤의 구조
- 01 · 추적 스크립트페이지뷰·참여 시간·스크롤·연락 버튼·폼·Web Vitals 를 모아 사전 확인 없는 요청으로 보냅니다. 추적 거부(DNT·GPC)면 보내지 않습니다.
- 02 · 수집 창구도메인·크기·속도를 확인하고 봇을 거른 뒤, 그날의 비밀 소금으로 방문자 해시를 만들어 30분 규칙으로 방문을 판정합니다.
- 03 · 방문 단위 표와 SQL 집계방문 한 건을 한 줄로 저장하고 기간·조건마다 SQL 로 셉니다. 같은 규칙의 메모리 구현이 같은 답을 내는지 계약 테스트로 묶었습니다.
- 04 · 보고서와 문장기간·비교 기간을 정하고, 조건부 이항 검정과 두 비율 z-검정을 통과한 변화만 문장으로 씁니다.
운영 안전장치
- IP 주소·User-Agent 원문·연락처·폼 입력값은 어느 표에도 저장하지 않음
- 방문자 해시의 비밀 소금은 이틀이 지나면 그날 첫 요청 때 지워, 해시를 사람으로 되돌릴 수 없게 함
- 다른 도메인에 붙은 설치 코드·자동화 브라우저·검색 로봇의 요청은 숫자에 넣지 않고, 꾸민 요청은 주소·사이트별 속도 제한으로 막음
- 표본이 적거나 비교 기간이 설치 전이면 “늘었다·줄었다”를 말하지 않음
알려진 제한
- 쿠키를 쓰지 않아 며칠 뒤 다시 온 사람은 알아보지 못합니다. 기간 방문자는 날마다 센 방문자의 합입니다.
- 공개 페이지의 모든 숫자는 가상 스튜디오 사이트의 예시 데이터입니다. 실제 고객 사이트의 수치는 싣지 않았습니다.
- 광고 차단기가 스크립트를 막는 방문은 셀 수 없습니다.
- 로딩 속도(Web Vitals)는 페이지를 새로 불러올 때만 잽니다. 앱형 화면 이동에서는 브라우저가 값을 주지 않습니다.
사용한 기술
Next.js 16 · TypeScript · PostgreSQL · Prisma · Web Crypto · PerformanceObserver · Vitest · Playwright
확인된 사실
- 설치
- 스크립트 한 줄 · 6KB
- 쿠키
- 쓰지 않음
- 요약 문장
- 규칙 + 통계 검사
- 공개 수치
- 전부 예시 데이터
- 설치 스크립트
- 6KB
- 첫 화면의 질문
- 5
- 두 저장소 계약 테스트
- 15
- 방문 기록 보관
- 400일
서비스는 로그인한 조직이 쓸 수 있게 만들었지만 아직 고객 사이트의 실제 수치는 싣지 않았습니다. 이 페이지의 숫자는 전부 예시 데이터입니다.