본문으로 건너뛰기
유환호 연락하기

홈 / 한 일

실제로 만들고 운영하는 것

전부 지금 접속되는 프로덕션 사이트입니다. 아래 내용은 전부 실제 배포·측정 기록에서 가져왔고, 추측이나 계획이 아니라 이미 일어난 일입니다.

01AEO 전문기업 · 방법론 공개

나비랑

AI 답변엔진 최적화(AEO) 전문기업 사이트 — 기획부터 측정 방법론 설계까지

navirang-ai.com ↗

AEO(Answer Engine Optimization)를 파는 회사의 사이트를, 그 회사가 스스로 주장하는 기준으로 만들었다. "측정 조건을 공개하지 않은 인용률은 검증할 수 없다"는 문장을 다른 업체에 요구하려면, 우리부터 지켜야 했다.

나비랑 사이트 첫 화면(2026-10-01 캡처)
  1. 01

    측정 방법론을 공개하는 이유

    질문 40개 × 답변엔진 7개(ChatGPT·Gemini·Perplexity·Claude·네이버 AI 검색·Copilot·Google AI 개요) = 280셀을 관측 단위로 고정했다. 언급·인용·추천을 나눠서 기록하고, 분모는 측정 시작 시점에 고정해 이후 바꾸지 않는다. 실제로 2026-08-11에 SearchGPT를 대상 엔진 목록에서 뺐는데(ChatGPT Search로 흡수돼 폐기된 이름이라 별도로 세면 중복 계수가 된다), 그건 기준선 측정 착수 전이라 가능했던 정정이었다 — 첫 셀이 채워진 뒤에는 분모를 못 바꾼다는 규칙을 스스로 만든 뒤이기 때문이다.

  2. 02

    전국 340건을 직접 조사했다

    "지역 마케팅 대행사" 같은 질의에서 네이버가 블로그와 홈페이지를 어떤 비율로 보여주는지 궁금해서, 전국 17개 시도 × 질의 2종의 웹문서 상위 10건, 총 340건을 손으로 분류해 CSV로 공개했다. 측정 시점의 스냅샷이라 재측정해도 그 파일은 덮어쓰지 않는다 — 다시 재면 새 날짜의 새 파일로 낸다. 그래야 그 주소를 인용한 외부 문서가 어느 시점 값을 인용했는지 계속 알 수 있다.

  3. 03

    "AEO"라는 말 자체가 문제였다

    한국에서 AEO는 관세청의 수출입안전관리우수업체(Authorized Economic Operator)로도 강하게 쓰인다. 핵심 페이지 첫 등장에서 반드시 Answer Engine Optimization을 풀어 쓰고, 조직 스키마에도 중의성 해소 문장을 심었다. 동시에 "AI 상위노출"처럼 실제 사람들이 검색창에 치는 구어 표현이 사이트 어디에도 없다는 것도 찾아냈다 — 전문 용어(AEO)만 있고 사람들이 실제로 쓰는 말이 없으면, 그 말로 검색하는 사람에게는 이 사이트가 안 보인다. 홈 title·keywords·엔티티 knowsAbout·본문 진입 문구까지 그 층을 새로 연결했다.

  4. 04

    meta description 221장을 다시 잰 일

    빙 웹마스터 도구는 설명이 짧다고, Ahrefs는 같은 문서들을 길다고 지적했다. 둘 다 옳은 지적이라 두 기준을 모두 만족하는 110~158자 밴드를 정하고, 문장 경계에서만 자르는 규칙을 만들어 221장 전부를 그 밴드 안으로 넣었다. 자르는 과정에서 두 번 더 틀렸다 — 이 이야기는 기록에 자세히 적었다.

02SSR · 61개 플랫폼 수집 파이프라인

리뷰로거

체험단(블로그·인스타 리뷰어) 공고 통합검색 서비스 — 수집 시스템부터 데이터 정합성까지

reviewloger.com ↗

체험단 플랫폼 61곳에 흩어진 공고를 3시간 주기로 모아 지역·마감·경쟁률로 정렬해 보여주는 서비스다. 수집 시스템을 운영하다 보면, 화면에 나가는 숫자가 실제로 무엇을 의미하는지 계속 다시 확인하게 된다.

리뷰로거 사이트 첫 화면(2026-10-01 캡처)
  1. 01

    경쟁률 통계가 실제보다 낮게 나가고 있었다

    체험단 플랫폼 중 8곳은 신청자 수를 목록에 아예 싣지 않는데, DB 스키마가 그 값을 0으로 저장하고 있었다. "신청자 없음"과 "신청자 수 모름"이 같은 값이 되면서, 평균 경쟁률이 4.87:1로 실제(5.76:1)보다 낮게 나오고 있었다. 하필 이 통계는 "블로그·기사에 인용하셔도 됩니다"라고 공개까지 해 둔 페이지였다. 신청자 수 미공개 플랫폼 목록을 만들어 통계·정렬 로직 양쪽에서 제외했고, 그 목록이 실데이터와 계속 맞는지 대조하는 검사도 함께 만들었다.

  2. 02

    월간 리포트를 만들려다 발견한 삭제 정책

    운영 DB는 마감 30일 뒤 공고 행을 지운다. "지금 데이터가 많이 남아 있으니 지난달 리포트가 성립한다"고 판단했다가, 그게 완전성의 증거가 아니라는 걸 다시 확인했다 — 데이터가 많이 남아 있는 것과 그 달의 데이터가 전부 남아 있는 것은 다른 말이다. 삭제 영향이 없는 날들의 기간 분포로 역산해, 8월 1~2일 발견분 중 약 115건(0.66%)이 이미 지워졌을 것으로 추정했다. 리포트에 그 추정치를 한계로 그대로 실었고, 다음 달부터는 삭제되기 전에 영구 보존하는 별도 테이블을 새로 설계했다.

  3. 03

    수집 자동화가 며칠간 멈춰 있었다

    데이터로 역산해 보니 자동 수집이 특정 날짜를 마지막으로 멈춰 있었다. 문제는 멈춘 것 자체가 아니라 멈춘 줄 아무도 몰랐다는 것이었다. 새 모니터링 인프라를 붙이는 대신, 데이터 자체(마지막 수집 시각)를 심박으로 쓰는 검사를 만들었다 — 일정 시간 이상 새 수집이 없으면 실패로 보고한다.