o2o-infinith-demo/docs/AI_DISCOVERY_BUILD2_HANDOVER.md
Haewon Kam 13a8fca775 chore(reports): docs/reports를 고객·단계별 폴더로 분류
- viewclinic/01_readiness_report (진단 덱 v1.0·v2_표준캔버스·v1.1 + 빌더) / 02_poc_proposal (POC 정본·v3 + 빌더) / 03_question_bank (QB 120문항·실측·엑셀) / 04_supporters (GEO 계획·콘텐츠 기획·감사 엑셀)
- taeha/ (태하 리포트 + 빌더), ibk/ (기업은행 블로그 감사), landing/ (랜딩 시안·스크린샷·HTML 내보내기)
- README.md에 구조·정본/파생본·빌드 명령 안내
- 경로 참조 갱신: 핸드오버 문서 4개, QB 스크립트 3개, 빌더 docstring, discovery 페이지 주석
- 이전에 삭제된 POC v2_표준캔버스 2파일 삭제 반영

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 13:03:53 +09:00

134 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AI Discovery · Build 2 Handover (자동 채점 파이프라인)
2026-08-31 랜딩(/discovery) 프로덕션 배포까지 끝난 상태에서, 다음 세션이 이어받을 빌드 범위를 담는다.
직전 인수인계는 `docs/AI_DISCOVERY_FRONTEND_HANDOVER.md`(랜딩 구현, 완료됨).
---
## 0. 다음 세션 실행 프롬프트 (복붙용)
```
docs/AI_DISCOVERY_BUILD2_HANDOVER.md 를 읽고 AI Discovery 자동 채점기를 구현해줘.
- P0: scripts/audit_aeo_geo.py — 병원 URL 입력 → 기준표 auto 22항목(55점) 자동 채점
→ src/data/discovery_<id>.ts 초안 생성 (semi/manual은 'unverified' + 수집된 증거 메모)
- 참조 구현: ~/Claude/Agentic Marketing/ADO2/009. AEO-GEO/06_skill-snapshot/scripts/crawler_audit.py
- 검증: 뷰성형외과를 재채점해 auto 항목 판정이 discovery_viewclinic.ts 기존 실측과 일치해야 한다
- 완료 기준: 새 업체 URL 1개를 30분 안에 /discovery/:id 리포트로 올릴 수 있다
끝나면 git push + vercel --prod 까지.
```
---
## 1. 현재 상태 (2026-08-31)
| 항목 | 상태 |
|---|---|
| 랜딩 `/discovery` | 프로덕션 배포 완료 (https://infinith-demo.vercel.app/discovery) |
| 리포트 `/discovery/:id` | viewclinic 48점/C, taeha 68점/B |
| 데이터 파생 | 랜딩·리포트의 모든 수치는 `scoreDiscovery` 계산값. `nextGradeTarget`·`scorePctColor` 헬퍼 포함 |
| lint | `npm run lint`(tsc) 0 에러. 단, 실제 검사는 AEO-GEO-Audit 워크트리에서만 가능 (main 워크트리는 node_modules에 tsc 없음) |
| 영업 자료 | POC 제안서 `docs/reports/viewclinic/02_poc_proposal/Viewclinic_POC_Proposal.pptx/.pdf` (10장) |
## 2. 확정 결정 (2026-08-31 haewon)
1. **태하 케이스는 랜딩 샘플로 노출하지 않는다.** 랜딩 샘플은 뷰성형외과 단일 유지.
`/discovery/taeha` 라우트와 데이터는 삭제하지 않고 유지한다 (영업 시 직접 링크로만 사용).
2. 리포트 PDF는 항상 PPTX 덱을 만든 뒤 soffice 변환으로 뽑는다 (HTML 인쇄 방식 금지, 기존 결정 유지).
## 3. 빌드 우선순위
### P0 · 자동 채점기 `scripts/audit_aeo_geo.py`
지금 병목은 진단 1건당 수작업 실측이다. 기준표 36항목의 자동화 가능성은 이미 rubric에 태깅되어 있다:
| method | 항목 수 | 배점 합 | 처리 방식 |
|---|---|---|---|
| auto | 22 | 55점 | 스크립트가 판정까지 |
| semi | 5 | 17점 | 스크립트가 증거 수집, 판정은 사람 (C1 정의문·C4 수치·C7 E-E-A-T·D3 오픈웹·D5 플레이스) |
| manual | 9 | 28점 | 'unverified' 유지 (A6·C8·D1·D2·D4·E1~E4) |
- 입력: 메인 URL + 대표 시술/서비스 페이지 URL 1개 (뷰성형외과 실측과 동일 조건: JS 미실행 HTML 기준)
- 항목별 체크 로직은 `src/data/aeoGeoRubric.ts`의 `howToCheck` 필드에 이미 구현 스펙으로 적혀 있다
- 출력: `src/data/discovery_<id>.ts` 초안. `evidence`는 실측 문자열로 채운다 (판정 근거 없는 항목을 0점 처리하지 말 것, 분모 제외 규칙 유지)
- 운영 플로우: 스크립트 초안 → 사람이 semi/manual 보정 → `discoveryResults.ts`에 1줄 추가 → 리포트 페이지 자동 생성
- 형태는 로컬 Python 스크립트로 시작한다. Edge Function(`discover-aeo-geo`)化는 셀프서브 전환이 결정된 뒤에 한다.
- 업체 선정 방법(기존 확정): 분야 키워드로 네이버 검색 → 파워링크 1위 광고주. 광고 리다이렉트는 직접 못 따라가므로 상호로 재검색해 도메인 확인.
### P1 · 계약 후 미검증 해소 runbook
뷰성형외과(또는 첫 계약 업체) 계약 시 실행할 체크리스트를 문서화한다:
E1 서버로그 AI 봇 추출, E2 GA4 AI 채널그룹, E3 GSC, A6 Bing Webmaster, D6 Wikidata 조회.
미검증 5개가 해소되면 분모가 88 → 100으로 바뀌므로 총점이 변한다는 사실을 리포트에 명시한다.
### P1 · 덱 스크린샷 자동 갱신
랜딩 변경 → 캡처 → 크롭(히어로 0~1384px, 리포트 밴드는 #F4F6FB 행 범위 감지) → `build_viewclinic_poc_deck.py` 리빌드를 스크립트 하나로 묶는다.
### P2 · 기준선 스팟체크 러너 (E4)
질의 10개 × 5회 반복, 언급률 + 신뢰구간으로만 기록한다.
답변엔진 소비자 UI 자동 조회는 약관 위반이므로 금지 (API 또는 수동 기록).
## 4. 오너 결정 대기 (빌드 전 haewon 확인)
- 카테고리 가중치 확정 (현행 A20/B20/C25/D20/E10/F5)
- 랜딩 CTA 형태: 현행 mailto(o2oteam@o2o.kr) 유지 vs 신청 폼(Supabase 테이블) 전환.
계약 기반 영업 모델(PART III 피봇)과의 정합을 보고 결정한다.
- 다음 진단 대상 업종·키워드
## 5. P0 자동 채점기 — 구현 완료 (2026-08-31)
`scripts/audit_aeo_geo.py` 구현·검증 완료. 표준 라이브러리만 사용(의존성 없음), fetch는 curl 백엔드(macOS 인증서 문제 회피).
### 사용법
```bash
python3 scripts/audit_aeo_geo.py <메인URL> <대표시술페이지URL> \
--id <라우트id> --name <상호> --industry "<업종 (지역)>"
# 옵션: --out <경로> --json <경로> --skip-ts --force
```
→ `src/data/discovery_<id>.ts` 초안 생성. auto 22항목은 판정까지, semi 5항목(C1·C4·C7·D3·D5)은
`'unverified'` + 수집 증거 메모, manual 9항목은 `'unverified'` + 확인 방법 메모.
판정 근거를 못 얻은 auto 항목(예: meta generator 없음)은 0점이 아니라 unverified로 남긴다 (분모 제외 규칙 준수).
### 검증 결과 (뷰성형외과 재채점, 2026-08-31)
auto 22항목 중 **18항목 기존 실측(2026-08-28)과 일치**. 불일치 4건은 전부 스크립트가 아니라 기존 수작업의 한계였다:
| 항목 | 기존 | 스크립트 | 원인 |
|---|---|---|---|
| A5 | 2 | 3 | 기존 실측은 post-sitemap만 봄(lastmod 2024-05). page/portfolio-sitemap에는 진짜 per-page 갱신일(2026-08) 존재 |
| B4 | 2 | 1 | 시술 페이지에 세 번째 주소 표기("서울시 강남구 봉은사로 107, 뷰성형외과빌딩(논현동…") 실재 — 기존 실측 누락 |
| C6 | 1 | 3 | 시술 페이지에 article:modified_time·dateModified(2026-04-17) 실재 — 기존 실측은 메인만 확인 |
| D6 | unverified | 0 | Wikidata API 조회 자동화됨 (기존은 미실시) |
2026-08-31 haewon 결정으로 위 4건을 `discovery_viewclinic.ts`에 반영했다: 48점/C (42.1/88, 검증 31/36)
→ **49점/C (44.0/89, 검증 32/36)**. 등급·목표(C→B) 변화 없음. keyFindings의 "15개월간 갱신 신호 없음"은
"갱신 신호는 살아 있다(단 블로그는 2024-05 정지)"로 정정.
### 새 업체 30분 온보딩 플로우
1. 업체 선정(네이버 파워링크 1위 광고주 → 상호 재검색으로 도메인 확인) — 5분
2. `audit_aeo_geo.py` 실행 → 초안 생성 — 3분
3. semi 5항목 판정 확정(초안의 증거 메모 참고) + manual 중 공개 페이지 실측 가능한 D1·D2·D4 확인 — 15분
4. keyFindings 3~5개 + actions P0~P2 작성, `discoveryResults.ts`에 1줄 추가 — 5분
5. `npm run lint`(AEO-GEO-Audit 워크트리) → git push → `vercel --prod` — 2분
## 6. 하지 않을 것 (정직성 규약, 변경 없음)
- llms.txt 제작·판매
- "스키마 넣으면 인용된다" 약속, 순위·노출 보장 문구
- 단발 조회 보고
- 답변엔진 소비자 UI 자동 조회
- 네이버 블로그 증량 (AI 크롤러 차단 확인, 글로벌 AEO 기여 0)
## 추가 (2026-09-01) · Question Bank 120문항 2엔진 실측
- 산출물: `docs/reports/viewclinic/03_question_bank/Viewclinic_AI_Discovery_Question_Bank.md`(120문항+사전판정+검증), `Viewclinic_QB_Results_Combined.md`(질문별 상위 병원 통합표), `Viewclinic_QB_Results_TOP50.xlsx`(5시트), raw `scripts/out/qb_{openai,perplexity}_results.jsonl`
- 러너: `scripts/run_question_bank_openai.py` (OpenAI Responses API + web_search 서울 고정 / Perplexity sonar, JSONL 재개 가능, UI 자동조회 금지 원칙 준수). 통합표 `scripts/merge_qb_results.py`, 엑셀 `scripts/export_qb_excel.py`. POC 후 재측정 시 JSONL 삭제 후 동일 명령 재실행.
- 결과: 브랜드 질문 뷰 언급 GPT 97% · PPLX 100%, 논브랜드 GPT 11%(10/84) · PPLX 3%(3/84). 시술 정보 52문항은 두 엔진 모두 0건.
- 점수 정합성 교정: scoreDiscovery 계산값 50/C(44.1/89, 검증 32/36)로 덱 2종(진단 리포트·POC 제안서)과 문서를 일괄 교정. 재채점 커밋 메시지의 49는 반올림 착오였음. 랜딩 스크린샷(shots/land_hero·land_report)도 프로덕션 50점 화면으로 재캡처(구판은 *_48pt_backup.png).
- 기준표 v1.1 과제 5건: `docs/AEO_GEO_RUBRIC.md` 맨 아래 절 참조 (서브도메인 실측, D3 표면 범위 확대, 엔진별 판정, 브랜드/논브랜드 축, 점수 표기 정합성).