113 lines
13 KiB
TypeScript
113 lines
13 KiB
TypeScript
/**
|
||
* 원진성형외과 (www.k-wonjin.co.kr) AEO/GEO 진단. 자동 채점 초안
|
||
* 생성: audit_aeo_geo.py · 2026-09-08 · JS 미실행 HTML 기준
|
||
*
|
||
* ⚠️ 이 파일은 초안이다. 배포 전 사람이 해야 할 일:
|
||
* 1. [semi·사람 판정 필요] 항목 5개(C1·C4·C7·D3·D5)의 증거를 보고 level 확정
|
||
* 2. [manual] 항목 9개 중 실측 가능한 것(D1·D2·D4) 실측, 나머지는 unverified 유지
|
||
* 3. keyFindings(3~5개) · actions(P0~P2) 작성
|
||
* 4. discoveryResults.ts에 등록: wonjin: DISCOVERY_WONJIN,
|
||
*/
|
||
import type { DiscoveryResult } from '../types/discovery';
|
||
|
||
export const DISCOVERY_WONJIN: DiscoveryResult = {
|
||
id: 'wonjin',
|
||
clinicName: '원진성형외과',
|
||
url: 'https://www.k-wonjin.co.kr',
|
||
industry: '성형외과 (강남역)',
|
||
auditedAt: '2026-09-08',
|
||
rubricVersion: '2.0',
|
||
conditions: [
|
||
'실측 대상: 메인 페이지 + /contents/eye/cfs 2개 URL, JS 미실행 HTML 기준',
|
||
'크롤러 접근성: robots.txt 파싱 + 12개 AI 봇 UA 실제 GET 요청',
|
||
'semi/manual 항목은 자동 수집 증거만 첨부하고 미검증 처리, 분모 제외 (사람 보정 후 확정)',
|
||
'답변엔진 언급률은 측정하지 않았다 (단발 조회는 무효, 반복 측정은 별도 기준선 단계에서 수행)',
|
||
],
|
||
results: [
|
||
// A. 접근성
|
||
{ criterionId: 'A1', level: 3, evidence: '12개 AI 봇 전부 허용. OAI-SearchBot·PerplexityBot·GPTBot UA로 GET → 전부 200', source: 'robots.txt: User-agent: * / Disallow: /admin/' },
|
||
{ criterionId: 'A2', level: 3, evidence: 'Server: Microsoft-IIS/10.0 직접 응답, Cloudflare 헤더 없음, AI UA 챌린지 없음' },
|
||
{ criterionId: 'A3', level: 3, evidence: '서버 렌더링. JS 미실행 HTML에서 본문 텍스트 14,079자 추출' },
|
||
{ criterionId: 'A4', level: 1, evidence: '변형 간 최종 URL 불일치(중복 콘텐츠 위험): [\'https://k-wonjin.co.kr\', \'https://www.k-wonjin.co.kr\']' },
|
||
{ criterionId: 'A5', level: 1, evidence: '/sitemap.xml 200이나 robots.txt에 Sitemap 미선언. URL 132개' },
|
||
{ criterionId: 'A6', level: 'unverified', evidence: '[manual] Bing Webmaster Tools 등록 여부는 오너 계정 접근 필요 (또는 site: 검색 수동 확인)' },
|
||
{ criterionId: 'A7', level: 3, evidence: 'TTFB 0.094s / 초기 HTML 153KB. 시술 페이지 145KB. 모두 기준 이내' },
|
||
// B. 엔티티
|
||
{ criterionId: 'B1', level: 2, evidence: 'JSON-LD 4블록 전부 유효 (@graph 미사용)' },
|
||
{ criterionId: 'B2', level: 1, evidence: 'ItemList + Organization만 존재. MedicalClinic/LocalBusiness 없음 → 주소·전화·진료시간이 구조화되어 있지 않음' },
|
||
{ criterionId: 'B3', level: 0, evidence: 'Physician/Attorney 스키마 없음. 전문가 정보는 HTML 텍스트·이미지로만 존재' },
|
||
{ criterionId: 'B4', level: 3, evidence: '주소 단일 표기: "서울시 서초구 강남대로 419 파고다타워 12". 전화 6종: 02-3477-3300, 023480-3573, 02392-0330' },
|
||
{ criterionId: 'B5', level: 3, evidence: 'sameAs 10개 (SNS·버티컬·지도 연결)' },
|
||
{ criterionId: 'B6', level: 2, evidence: 'rel=canonical self-referencing 존재' },
|
||
{ criterionId: 'B7', level: 0, evidence: '다국어 페이지 흔적(https://www.wonjinbeauty.com/en/) 있으나 hreflang 없음. 미연결' },
|
||
// C. 콘텐츠
|
||
{ criterionId: 'C1', level: 0, evidence: "홈 본문 1,999자에 \"원진성형외과는 …에 있는 … 병원입니다\" 형태의 정의문 없음. 소개 문구(25년 헤리티지·강남역)는 메인 비주얼 이미지 alt 에만 있고, 소개 페이지(/hospitalinfo/about) 첫 단락도 슬로건형", source: "evidence/wonjin/pages/home.json · hospitalinfo-about.json (2026-09-07)" },
|
||
{ criterionId: 'C2', level: 0, evidence: 'FAQ·자주 묻는 질문·Q&A 섹션 탐지 안 됨 (메인·시술 페이지)' },
|
||
{ criterionId: 'C3', level: 0, evidence: '메인 H1 0개: 없음. 시술 페이지 H1 없음' },
|
||
{ criterionId: 'C4', level: 2, evidence: "눈매교정(CFS) 페이지에 수술 시간 2시간·단기 수면 또는 부분 마취·실밥 제거 7일·일상생활 3일 텍스트 존재. 트임(오픈아이) 40분·5~7일. 쌍꺼풀·눈매교정(글램아이·더블유착) 페이지는 수치 없음. 가격 표기 0회(비급여 안내 페이지는 별도)", source: "https://www.k-wonjin.co.kr/contents/eye/cfs 원본 HTML 파싱 (2026-09-07 근거 수집)" },
|
||
{ criterionId: 'C5', level: 0, evidence: 'HTML <table> 없음. 비교 정보는 이미지로 추정 (이미지 표 여부는 수동 확인)' },
|
||
{ criterionId: 'C6', level: 1, evidence: '최신 갱신 신호 2025-02-18 (sitemap lastmod 2025-02-18). 18개월 전. dateModified 마크업 없음' },
|
||
{ criterionId: 'C7', level: 2, evidence: "의료진 상세 페이지 17명의 직함·전문의 여부·경력(원장당 12~23줄)이 HTML 텍스트로 존재. 학술 활동 페이지 3,760자. 단 Physician 스키마·저자 표기는 없어 구조화되지 않음", source: "evidence/wonjin/doctors.json (2026-09-07)" },
|
||
{ criterionId: 'C8', level: 'unverified', evidence: '[manual] 핵심 페이지 단락 샘플 10개의 상호·시술명 포함 비율 수동 채점 필요' },
|
||
// D. 표면
|
||
{ criterionId: 'D1', level: 'unverified', evidence: "강남언니 프로필은 공개 페이지 수동 실측 필요 (후기 수·의료진·이벤트·갱신일). 홈페이지 sameAs 에 버티컬 링크 포함 여부는 확인됨(10개 중)" },
|
||
{ criterionId: 'D2', level: 'unverified', evidence: '[manual] Google Maps 검색으로 GBP 소유·리뷰·NAP 수동 실측 필요' },
|
||
{ criterionId: 'D3', level: 2, evidence: "자체 YouTube 채널 @wjwonjin 영상 736편·구독 1.5만·누적 조회 3,113만(2026-09-08 API 집계). 인스타그램 3계정·페이스북·네이버 블로그(popokpop) 존재. 채널 sameAs 10개로 홈페이지와 연결됨. 단 홈페이지 내 외부 링크는 JS 렌더라 HTML에서 미노출", source: "YouTube Data API v3 channels.list, clinic registry (2026-09-08)" },
|
||
{ criterionId: 'D4', level: 'unverified', evidence: '[manual] 홈페이지·버티컬·GBP·플레이스 NAP 대조표 수동 작성 필요' },
|
||
{ criterionId: 'D5', level: 'unverified', evidence: '[semi·사람 판정 필요] 사이트에 네이버 플레이스 링크 없음. 플레이스 존재·홈페이지 역연결·리뷰 수 수동 확인' },
|
||
{ criterionId: 'D6', level: 0, evidence: 'Wikidata에서 "원진성형외과" 검색 결과 없음' },
|
||
// E. 측정
|
||
{ criterionId: 'E1', level: 'unverified', evidence: '[manual] 서버 로그 접근 필요 (AI 크롤러 히트 + IP 검증)' },
|
||
{ criterionId: 'E2', level: 'unverified', evidence: '[manual] GA4 접근 필요 (AI 유입 커스텀 채널그룹 여부)' },
|
||
{ criterionId: 'E3', level: 'unverified', evidence: '[manual] GSC 접근 필요 (AI Overviews 노출)' },
|
||
{ criterionId: 'E4', level: 'unverified', evidence: '[manual] 기준선 스팟체크 미실시 (질의 10개 × 5회 반복은 별도 단계)' },
|
||
// F. 위생
|
||
{ criterionId: 'F1', level: 0, evidence: '메인 페이지 이미지 45개 중 28개(62%) alt 누락 또는 빈 값' },
|
||
{ criterionId: 'F2', level: 'unverified', evidence: "Server: Microsoft-IIS/10.0, ASP.NET 계열 자체 제작 추정(meta generator 없음). CMS 버전·보안 패치 여부 판정 불가" },
|
||
{ criterionId: 'F3', level: 3, evidence: '초기 HTML 153KB (300KB 미만)' },
|
||
{ criterionId: 'F4', level: 2, evidence: 'viewport meta 존재, 반응형. CWV 미측정' },
|
||
],
|
||
keyFindings: [
|
||
{
|
||
title: "크롤러 접근은 열려 있습니다. 서버 렌더링이라 AI가 본문을 읽습니다",
|
||
detail: "robots.txt가 AI 검색봇 12종을 모두 허용하고, IIS가 본문을 서버에서 렌더링해 JS 없이도 14,079자를 읽을 수 있습니다. TTFB 0.09초, 초기 HTML 153KB로 가볍습니다. 다만 www 유무에 따라 최종 URL이 갈라지고(정본 미수렴), sitemap이 robots.txt에 선언돼 있지 않습니다.",
|
||
severity: "good",
|
||
},
|
||
{
|
||
title: "연결은 됐지만 병원 자체가 스키마로 정의돼 있지 않습니다",
|
||
detail: "Organization.sameAs 10개로 SNS·지도·버티컬을 잘 묶었고 주소 표기도 한 가지입니다. 그러나 MedicalClinic·Physician 스키마가 없어 주소·전화·진료시간·의료진 17명이 구조화돼 있지 않고, 전화번호는 6종이 섞여 있습니다. 영문 사이트(wonjinbeauty.com)는 hreflang으로 연결되지 않았습니다.",
|
||
severity: "critical",
|
||
},
|
||
{
|
||
title: "인용할 문장이 부족합니다. H1도 표도 정의문도 없습니다",
|
||
detail: "메인·시술 페이지에 H1이 없고 HTML 표가 없으며 병원 정의문도 없습니다. 눈매교정(CFS)·트임 페이지에는 수술 시간·마취·실밥·일상 복귀 수치가 텍스트로 있어 인용 구조의 출발점이 될 수 있지만, 쌍꺼풀·눈매교정 나머지 페이지는 수치가 없습니다. 최신 갱신 신호가 2025-02-18(sitemap)로 18개월 전입니다.",
|
||
severity: "critical",
|
||
},
|
||
{
|
||
title: "유튜브는 강합니다. 736편·누적 3,113만 회",
|
||
detail: "설명형 롱폼(눈성형 관리법·중년 눈성형 비교·지방흡입 QnA 등)이 있어 글의 근거 영상으로 쓸 수 있습니다. 다만 상위 조회 영상의 다수가 브랜드 필름·연예인·전후 형식이라 인용용 정보형 영상은 10편 안팎입니다. 이 채널이 원진의 가장 큰 오픈웹 자산입니다.",
|
||
severity: "warning",
|
||
},
|
||
{
|
||
title: "이미지 alt 62% 누락, 의료진 경력은 텍스트지만 구조화는 안 됨",
|
||
detail: "메인 이미지 45개 중 28개가 alt 없이 실려 AI가 이미지 내용을 읽지 못합니다. 의료진 17명의 경력은 텍스트로 있어(원장당 12~23줄) Physician 스키마만 붙이면 바로 엔티티가 됩니다. 강남언니·GBP·네이버 플레이스는 이번 자동 채점 범위 밖이라 수동 실측이 남아 있습니다.",
|
||
severity: "warning",
|
||
},
|
||
],
|
||
actions: [
|
||
{ priority: "P0", title: "정본 URL 수렴 + sitemap 선언", detail: "k-wonjin.co.kr → www.k-wonjin.co.kr 로 301 통일, robots.txt 에 Sitemap: 선언, sitemap lastmod 갱신. 전화번호를 대표번호 1개로 통일.", criterionIds: ["A4", "A5", "B4"], effort: "1일" },
|
||
{ priority: "P0", title: "MedicalClinic + Physician 스키마", detail: "Organization 을 MedicalClinic 으로 승격(address·telephone·openingHoursSpecification·medicalSpecialty). 의료진 17명 Physician 스키마(이름·직함·전문의·프로필 URL). 영문 사이트와 hreflang 상호 연결.", criterionIds: ["B2", "B3", "B7"], effort: "1주" },
|
||
{ priority: "P1", title: "시술 페이지 인용 구조: H1·표·FAQ", detail: "시술 페이지마다 H1 1개, 수술 시간·마취·실밥·일상 복귀를 HTML 표로, FAQ 5문항 + FAQPage 스키마. CFS·트임 페이지의 수치 형식을 다른 눈·코·윤곽 페이지로 확산. 메인에 병원 정의문 한 단락.", criterionIds: ["C1", "C2", "C3", "C4", "C5"], effort: "2~4주" },
|
||
{ priority: "P1", title: "이미지 alt 일괄 정비 + 갱신 신호", detail: "메인 28개 이미지 alt 작성(무엇을 찍은 사진인지 사실만). 페이지에 dateModified 마크업, sitemap lastmod 를 실제 수정일로.", criterionIds: ["F1", "C6"], effort: "1주" },
|
||
{ priority: "P1", title: "서포터즈 사이트로 오픈웹 원문 공급", detail: "자동 빌드 미리보기(supporters-wonjin.vercel.app)의 글 6편을 병원이 검토·승인하면 색인 허용 도메인으로 발행. 유튜브 설명 영상 10편을 글에 연결. 이후 질문 뱅크 기준으로 편집 캘린더 운영.", criterionIds: ["C2", "C4", "C5", "D3"], effort: "2~4주" },
|
||
{ priority: "P2", title: "표면 실측과 측정 인프라", detail: "강남언니·GBP·네이버 플레이스 NAP 대조표 작성, GA4 AI 유입 채널그룹, GSC AI Overviews 확인, 서버 로그의 AI 크롤러 히트 계측. Bing Webmaster 등록.", criterionIds: ["D1", "D2", "D4", "D5", "E1", "E2", "E3", "A6"], effort: "지속" },
|
||
],
|
||
notDoing: [
|
||
{ item: 'llms.txt 제작', reason: 'Google 공식(2026-06) 효과 0, 채택률 0.13%, 서버 로그에 요청 자체가 없음. 위약이다.' },
|
||
{ item: '"스키마 넣으면 AI가 인용합니다" 약속', reason: '인과 증거 없음. 스키마는 엔티티 식별을 돕는 위생 조치로만 설명한다.' },
|
||
{ item: '단발 조회로 순위·노출 보고', reason: 'LLM 답변 분산 10~34%. 반복 측정 + 신뢰구간으로만 보고한다.' },
|
||
{ item: '답변엔진 UI 자동 조회', reason: 'OpenAI·Perplexity 약관 위반. 주력 측정은 오너가 소유한 신호(로그·GA4)로 한다.' },
|
||
{ item: '네이버 블로그 증량', reason: 'blog.naver.com robots.txt가 AI 크롤링을 전면 금지. 글로벌 AI 답변 기여도 0. 네이버 AI 브리핑은 별도 트랙.' },
|
||
],
|
||
};
|