- 채점 기준표: 6 카테고리 36 항목 100점, 항목별 근거등급/통제/채점방식/howToCheck - 집계: 미검증 항목 분모 제외, llms.txt 항목 제외 - 뷰성형외과 실측 결과 + 핵심 발견 5 + 액션 7 + 하지 않을 것 5 - DiscoveryReportPage: INFINITH 디자인 토큰, 본문 +2pt, 판정 배지/우선순위 +4pt 볼드, keep-all - SeverityBadge className prop 추가 - Badge.tsx 복원 (PricingPage import 누락으로 빌드 깨져 있던 것) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
160 lines
13 KiB
TypeScript
160 lines
13 KiB
TypeScript
/**
|
||
* 뷰성형외과 (viewclinic.com) AEO/GEO 진단 결과
|
||
* 실측일: 2026-08-28 · 도구: crawler_audit.py + curl + HTML 파서
|
||
* 미검증 항목은 'unverified'. 오너 접근(GA4·GSC·Bing) 또는 수동 확인이 필요하다.
|
||
*/
|
||
import type { DiscoveryResult } from '../types/discovery';
|
||
|
||
export const DISCOVERY_VIEWCLINIC: DiscoveryResult = {
|
||
id: 'viewclinic',
|
||
clinicName: '뷰성형외과',
|
||
url: 'https://www.viewclinic.com',
|
||
industry: '성형외과 (강남 신논현)',
|
||
auditedAt: '2026-08-28',
|
||
rubricVersion: '1.0',
|
||
conditions: [
|
||
'실측 대상: 메인 페이지 + /breast/main/ (가슴성형) 2개 URL, JS 미실행 HTML 기준',
|
||
'크롤러 접근성: robots.txt 파싱 + 12개 AI 봇 UA 실제 GET 요청',
|
||
'외부 표면(강남언니·GBP·NAP 대조)과 측정 인프라(GA4·GSC)는 오너 접근 없이 확인 불가 → 미검증 처리, 분모 제외',
|
||
'답변엔진 언급률은 측정하지 않았다 (단발 조회는 무효, 반복 측정은 별도 기준선 단계에서 수행)',
|
||
],
|
||
results: [
|
||
// A. 접근성
|
||
{ criterionId: 'A1', level: 3, evidence: '12개 AI 봇 전부 허용. OAI-SearchBot·PerplexityBot·GPTBot UA로 GET → 전부 200', source: 'robots.txt: User-agent: * / Disallow: /wp-admin/' },
|
||
{ criterionId: 'A2', level: 3, evidence: 'Server: nginx 직접 응답, Cloudflare 헤더 없음, AI UA 챌린지 없음' },
|
||
{ criterionId: 'A3', level: 3, evidence: 'WordPress 서버 렌더링. JS 미실행 HTML에서 본문 텍스트 10,757자 추출' },
|
||
{ criterionId: 'A4', level: 3, evidence: 'http://viewclinic.com → 301 → https://www.viewclinic.com/ 정본 수렴' },
|
||
{ criterionId: 'A5', level: 2, evidence: 'robots.txt에 sitemap 선언, 200 응답, AIOSEO 3.7.1 동적 생성. 페이지 249개 + kboard 11개. 단 post lastmod 최신이 2024-05-31' },
|
||
{ criterionId: 'A6', level: 'unverified', evidence: 'Bing Webmaster Tools 등록 여부는 오너 계정 접근 필요' },
|
||
{ criterionId: 'A7', level: 2, evidence: 'TTFB 0.135s (양호) / 초기 HTML 838KB (비대). 시술 페이지 862KB' },
|
||
|
||
// B. 엔티티
|
||
{ criterionId: 'B1', level: 1, evidence: 'JSON-LD 2블록 중 ItemList 블록이 문법 오류(쉼표 누락, line 11)로 파싱 실패 → 시술 목록 구조화 데이터 전체 무효', source: 'Expecting \',\' delimiter: line 11 column 7' },
|
||
{ criterionId: 'B2', level: 1, evidence: 'Organization + WebSite + WebPage만 존재. MedicalClinic/LocalBusiness 없음 → 주소·전화·진료시간이 구조화되어 있지 않음' },
|
||
{ criterionId: 'B3', level: 0, evidence: 'Physician 스키마 없음. 의료진 정보는 HTML 텍스트·이미지로만 존재' },
|
||
{ criterionId: 'B4', level: 2, evidence: '주소 2가지 표기 혼재: "서울 강남구 봉은사로 107 뷰성형외과 빌딩" / "서울특별시 강남구 봉은사로 107, 뷰성형외과빌딩". 전화 02-539-1177 + 휴대폰 2개 혼재' },
|
||
{ criterionId: 'B5', level: 0, evidence: 'Organization.sameAs: [] (빈 배열). 푸터에 YouTube·Instagram·Facebook·네이버블로그 링크가 있으나 스키마에 미연결' },
|
||
{ criterionId: 'B6', level: 2, evidence: 'rel=canonical self-referencing 존재' },
|
||
{ criterionId: 'B7', level: 1, evidence: 'hreflang 없음, lang=ko-KR 단일 언어. 외국인 환자 대상 언어 페이지 미확인' },
|
||
|
||
// C. 콘텐츠
|
||
{ criterionId: 'C1', level: 0, evidence: '메인 첫 화면은 슬라이더·"VIEW SELFIE" 등 라벨. "뷰성형외과는 …에 있는 … 병원입니다" 형태의 정의문 없음. 시술 페이지 첫 텍스트는 오시는길·상담폼' },
|
||
{ criterionId: 'C2', level: 0, evidence: 'FAQ·자주 묻는 질문·Q&A 섹션 탐지 안 됨 (메인·가슴성형 페이지)' },
|
||
{ criterionId: 'C3', level: 0, evidence: 'H1 5개: "VIEW SELFIE / VIEW EVENT / VIEW SHORTS / VIEW FILM / VIEW SPECIALITY". 전부 영문 라벨. H2는 같은 문구가 2회씩 중복(모바일/PC 분기). 시술 페이지 H1 없음' },
|
||
{ criterionId: 'C4', level: 1, evidence: '메타 설명에 "가슴보형물사용량1위" 등 주장형 문구. 가슴성형 페이지에 가격/비용 단어 8회이나 표기된 가격대·수술시간·회복기간 표 없음' },
|
||
{ criterionId: 'C5', level: 0, evidence: 'HTML <table> 없음. 비교 정보는 이미지로 추정' },
|
||
{ criterionId: 'C6', level: 1, evidence: 'article:modified_time·dateModified 없음. post-sitemap 최신 lastmod 2024-05-31 (15개월 전). 단 H3 콘텐츠(유튜브 제목)는 최근 갱신 흔적' },
|
||
{ criterionId: 'C7', level: 2, evidence: '원장·전문의·의료진 언급 17회, 모티바 글로벌 KOL·보건복지부장관표창·갈더마 방문 등 권위 신호 존재. 단 구조화 안 됨' },
|
||
{ criterionId: 'C8', level: 1, evidence: 'H2 "철저한 정밀 검진 / ONE_STOP 시스템 / 1:1 전담 마취시스템". 단독으로 떼면 어느 병원의 무엇인지 알 수 없음' },
|
||
|
||
// D. 표면
|
||
{ criterionId: 'D1', level: 'unverified', evidence: '강남언니 프로필 존재·시술 수·후기 수는 수동 확인 필요 (P0 확인 항목)' },
|
||
{ criterionId: 'D2', level: 'unverified', evidence: 'Google 비즈니스 프로필 소유 여부 수동 확인 필요' },
|
||
{ criterionId: 'D3', level: 2, evidence: '자체 YouTube 채널 활발(VIEW SHORTS/FILM, 최신 영상 제목 다수). 티스토리·언론 언급은 미집계' },
|
||
{ criterionId: 'D4', level: 'unverified', evidence: '외부 표면 NAP 대조표 미작성' },
|
||
{ criterionId: 'D5', level: 2, evidence: '네이버 플레이스 존재(리뷰 776건, 2026-04 INFINITH 리포트 기준). 홈페이지 링크 연결 여부 미확인 → 보수적으로 2' },
|
||
{ criterionId: 'D6', level: 'unverified', evidence: 'Wikidata 조회 미실시' },
|
||
|
||
// E. 측정
|
||
{ criterionId: 'E1', level: 'unverified', evidence: '서버 로그 접근 필요 (nginx 직접 호스팅, Cloudflare AI Crawl Control 미사용)' },
|
||
{ criterionId: 'E2', level: 'unverified', evidence: 'GA4 접근 필요' },
|
||
{ criterionId: 'E3', level: 'unverified', evidence: 'GSC 접근 필요' },
|
||
{ criterionId: 'E4', level: 0, evidence: '기준선 스팟체크 미실시' },
|
||
|
||
// F. 위생
|
||
{ criterionId: 'F1', level: 1, evidence: '이미지 302개 중 111개(37%) alt 누락 또는 빈 값' },
|
||
{ criterionId: 'F2', level: 0, evidence: 'meta generator: WordPress 5.5.3 (2020-10 출시, 6년 전) + WPBakery. 보안 패치 미적용 위험' },
|
||
{ criterionId: 'F3', level: 1, evidence: '초기 HTML 838KB (기준 300KB의 2.8배)' },
|
||
{ criterionId: 'F4', level: 2, evidence: 'viewport meta 존재, 반응형. CWV 미측정' },
|
||
],
|
||
keyFindings: [
|
||
{
|
||
title: '크롤러 접근은 정상이다. AI가 사이트를 읽을 수 있다',
|
||
detail: 'robots.txt가 AI 검색봇 12종을 모두 허용하고, Cloudflare 차단도 없으며, WordPress가 본문을 서버에서 렌더링한다. 접근성 카테고리는 상위권. "AI에 안 나오는" 원인은 차단이 아니라 내용에 있다.',
|
||
severity: 'good',
|
||
},
|
||
{
|
||
title: '읽어도 "누구인지" 확정할 수 없다',
|
||
detail: 'MedicalClinic 스키마가 없고 Organization.sameAs가 비어 있으며, 시술 목록 JSON-LD는 쉼표 하나가 빠져 통째로 무효다. 주소 표기도 사이트 안에서 2가지. AI는 "뷰성형외과"라는 이름과 흩어진 사실을 하나의 엔티티로 묶을 근거를 얻지 못한다.',
|
||
severity: 'critical',
|
||
},
|
||
{
|
||
title: '인용할 문장이 없다',
|
||
detail: 'H1이 "VIEW SELFIE / VIEW EVENT / VIEW SHORTS…" 5개, FAQ 0개, HTML 표 0개, 정의문 0개. 가슴성형 페이지의 첫 텍스트는 상담 폼이다. 답변엔진이 패시지 단위로 잘라 가져갈 자기완결적 단락이 존재하지 않는다. 권위 신호(KOL·표창)는 있으나 이미지와 슬로건 안에만 있어 텍스트로 읽히지 않는다.',
|
||
severity: 'critical',
|
||
},
|
||
{
|
||
title: '15개월간 갱신 신호 없음',
|
||
detail: 'post-sitemap의 최신 lastmod가 2024-05-31이고 dateModified 마크업이 없다. 유튜브는 활발하지만 그 신선도가 사이트로 전달되지 않는다. 오래된 사이트는 brand 질의에서 "영업 중인가?" 오정보 위험을 만든다.',
|
||
severity: 'warning',
|
||
},
|
||
{
|
||
title: '병의원 AI 인용의 핵심 표면(강남언니·GBP)은 아직 미확인',
|
||
detail: '2026-08 실측에서 병의원 AI 인용은 강남언니·닥터나우 등 버티컬이 100% 장악했다. 이 표면의 상태가 실제 노출을 좌우하므로 수동 확인이 P0다. 확인 전까지 분모에서 제외해 점수를 부풀리지 않았다.',
|
||
severity: 'warning',
|
||
},
|
||
],
|
||
actions: [
|
||
{
|
||
priority: 'P0',
|
||
title: '깨진 JSON-LD 수정 + MedicalClinic 스키마 삽입',
|
||
detail: 'ItemList 블록 쉼표 누락 수정(1시간). Organization → MedicalClinic으로 승격하고 address·telephone·openingHoursSpecification·medicalSpecialty·geo 추가. sameAs에 YouTube·Instagram·Facebook·강남언니·네이버플레이스·GBP URL 연결.',
|
||
criterionIds: ['B1', 'B2', 'B5'],
|
||
effort: '1일',
|
||
},
|
||
{
|
||
priority: 'P0',
|
||
title: '강남언니·Google 비즈니스 프로필 실사',
|
||
detail: '프로필 존재·시술 등록 수·후기·가격 갱신일 확인. GBP 소유권 미확인이면 즉시 클레임. 홈페이지·강남언니·GBP·플레이스 4개 표면 NAP 대조표 작성 후 "서울특별시 강남구 봉은사로 107 뷰성형외과빌딩 / 02-539-1177"로 통일.',
|
||
criterionIds: ['D1', 'D2', 'D4', 'B4'],
|
||
effort: '1주',
|
||
},
|
||
{
|
||
priority: 'P0',
|
||
title: '측정 인프라 설치 (개선 증명의 전제)',
|
||
detail: 'GA4 커스텀 채널그룹(chatgpt.com·perplexity.ai·gemini.google.com·copilot·claude.ai) 생성. nginx access.log에서 AI 봇 히트 추출 + IP 검증 파이프라인. GSC·Bing Webmaster 등록 확인 + IndexNow. 질의 10개 × 5회 기준선 스팟체크.',
|
||
criterionIds: ['E1', 'E2', 'E3', 'E4', 'A6'],
|
||
effort: '1주',
|
||
},
|
||
{
|
||
priority: 'P1',
|
||
title: '메인·시술 페이지에 정의문 + FAQ 도입',
|
||
detail: '각 핵심 페이지 첫 단락에 "뷰성형외과는 서울 강남 신논현역 1분 거리의 가슴성형·안면윤곽 전문 성형외과로, 마취과 전문의가 상주한다"형 정의문. 시술별 FAQ 5~8개(가격대·수술시간·회복기간·보형물 종류·재수술)를 H3 질문형으로 작성 + FAQPage 스키마.',
|
||
criterionIds: ['C1', 'C2', 'C4', 'C8'],
|
||
effort: '2~4주',
|
||
},
|
||
{
|
||
priority: 'P1',
|
||
title: 'H1 재설계 + 이미지 속 정보의 텍스트화',
|
||
detail: '페이지당 H1 1개 서술형("뷰성형외과 UIU 가슴성형: 보형물 선택과 안전 시스템"). 모바일/PC 중복 H2 제거. 보형물 비교·시술 비교를 HTML <table>로. 의료진 페이지에 전문의 자격·경력·학회를 텍스트 + Physician 스키마로.',
|
||
criterionIds: ['C3', 'C5', 'C7', 'B3'],
|
||
effort: '2~4주',
|
||
},
|
||
{
|
||
priority: 'P1',
|
||
title: 'WordPress 5.5.3 → 최신 업그레이드',
|
||
detail: '6년 된 코어는 보안 위험이자 스팸 주입 시 AI 오인용 위험. 업그레이드 후 alt 누락 111개 보완, HTML 무게 절감(WPBakery 인라인 CSS 정리).',
|
||
criterionIds: ['F2', 'F1', 'F3'],
|
||
effort: '1주',
|
||
},
|
||
{
|
||
priority: 'P2',
|
||
title: '신선도 신호 + 오픈웹 시딩',
|
||
detail: 'dateModified 마크업 활성화, 유튜브 영상을 사이트 글로 전사(트랜스크립트 요약)해 매월 갱신. 티스토리·언론 기고로 naver.com 외 언급 도메인 확보. 네이버 블로그는 AI에 안 보이므로 글로벌 AEO 용도로는 쓰지 않는다.',
|
||
criterionIds: ['C6', 'D3'],
|
||
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 브리핑은 별도 트랙.' },
|
||
],
|
||
};
|
||
|
||
export const DISCOVERY_RESULTS: Record<string, DiscoveryResult> = {
|
||
viewclinic: DISCOVERY_VIEWCLINIC,
|
||
};
|