Compare commits

...

53 Commits

Author SHA1 Message Date
Haewon Kam
f6701c2788 docs(retro): v1.1 — haewon 기존 서비스 정의 반영, 기간 08-26부터, 타 프로젝트 사건 행 제거, 진단과 기존 리포트의 관계 한 줄
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 13:07:02 +09:00
Haewon Kam
9f5d073c5e docs(retro): 타 서비스 언급 제거 (프로젝트 격리 규칙)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 13:03:15 +09:00
Haewon Kam
7f79028415 docs(prd): 표현 수정 — 빈자리 → 공백·선점 기회 (haewon 피드백)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 12:02:13 +09:00
Haewon Kam
fa44771caa docs: Global Medical Hub PRD v0.1 (INFINITH 토큰 HTML) — 운영 구조·중립성/IP 비교, AIO2O 등록·신청 항목, 완료/부분/신규 기능 표, 로드맵·KPI·리스크. 회고 haewon 수정 반영
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 12:00:40 +09:00
Haewon Kam
c55a6ade12 docs: 핸드오버 v3(다음 세션 프롬프트·남은 일·결정 대기) + AI Discovery 회고 초안 2026-09-08
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 11:21:57 +09:00
Haewon Kam
d1b22b9872 feat(supporters): 병원별 고정값 clinic.json — 원진 유튜브 기준 채널 @wjwonjin 고정(haewon 결정), 워커 우선순위 고정값>인자>발견(영상 수)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 10:20:47 +09:00
Haewon Kam
995e1e7dfa feat(supporters): 채널 발견+엔티티 검증 — discover_channels.mjs(사이트 전수·웹검색·핸들 변형·레지스트리·플랫폼 검색, 근거 점수 3-state), 워커 discover 단계 → surfaces/sameAs, 패널·리포트 발견 채널 표, 원진 리포트 갱신
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 10:06:28 +09:00
Haewon Kam
388a4a5ea4 feat(discovery): 원진성형외과 AI Answer Readiness 리포트 v2.0 — 자동 채점+보정 결과(discovery_wonjin.ts, AEO 15/D·GEO 45/C), 독립 HTML 리포트 빌더 + Chrome PDF, docs/reports/wonjin/01_readiness_report
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 09:46:15 +09:00
Haewon Kam
dc0d233b58 feat(supporters): 홈페이지 이미지 단계 — 의료법 기준 이미지 규칙 문서, collect_images.mjs+img_process.py(법 조건부 이미지 자동 제외, 글자 이미지 검사), 워커 images 단계, 글별 히어로·갤러리 매칭. 원진 66장 반영 재배포
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 09:34:48 +09:00
Haewon Kam
eb873bc43a feat(supporters): 유튜브·로고 단계 — collect_youtube.mjs(API 집계·정보형 필터·쇼츠 판별), 워커 youtube 단계(로고·파비콘·homeVideos), 글↔영상 매칭, 카드 로고 대체, 기존 글 보존 재실행. 원진 재배포
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 09:09:00 +09:00
Haewon Kam
572978c316 docs: v2 §11-9 — haewon 결정 4건 반영, 원진성형외과 E2E 완주(6/6편, 게이트 0오류, supporters-wonjin.vercel.app)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 19:25:34 +09:00
Haewon Kam
ee8c06f53b feat(supporters): haewon 결정 반영 — 채널 인기 전체 탭 제거, 단가 상한 $10 기본, 큐 폴러(poll.mjs)+launchd, /supporters/:id 페이지, URL 신청→빌드 큐, 수집기 UA·슬래시 수정, 기획 목록 일반화(원진 6편)
WIP: 원진성형외과 회귀는 글 생성 단계에서 네트워크 끊김(fetch failed)으로 중단. 다음 세션에 --from generate 로 재실행.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 18:54:01 +09:00
Haewon Kam
190ffdf7ab docs: 서포터즈 자동 빌드 v2 §11-8 실행 기록 — 마이그레이션 적용, supporters-viewclinic 미리보기 배포, 랜딩 프로덕션 배포
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 17:13:01 +09:00
Haewon Kam
7e515b70ae feat(supporters): 승인 UI·입력 반영·워커 — §7-5 ClinicInputsPanel + supporter_builds/inputs 마이그레이션 + apply_inputs, §12-2 상단 고지·개설자 승인·색인 빌드 필터, §7-6 워커 E2E(뷰성형외과 URL → 5편 → 게이트 0오류)
- 게이트: DISCLOSURE_TOP_MISSING, APPROVED_*, UNAPPROVED_IN_INDEXABLE_BUILD, PRESS_VOICE 규칙화, 픽스처 추가 (16/16)
- 생성기: --site 옵션, 병원 확인 답변(clinicAnswers) 근거 [A]
- default_briefs.mjs 첫 배치 자동 기획, workers/supporters-build/run.mjs
- 랜딩: SAMPLE REPORT 라벨 "실제 사례"로 (haewon 지시)
- v2 §11-6·§11-7 기록, E2E 리포트

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 17:07:06 +09:00
Haewon Kam
64a3bce9a3 feat(supporters): 글 생성기 §7-4 — brief+근거 컨텍스트 → GPT-4.1 → 소스 게이트·수치 대조·근거 대조·수정 2회, 정답지 18편 회귀 18/18 통과
- scripts/generate_posts.mjs + gen/{evidence,prompt,serialize}.mjs, briefs/README.md, 새 문항 brief 예시
- 게이트 COMPARISON_CLAIM(타 병원·업계 평균 비교 수치) 신설 + 픽스처, 금칙어 부정문 예외, 직렬화 왕복 테스트
- 회귀 리포트·샘플 3편 docs/reports/viewclinic/04_supporters, v2 §11-5 기록

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 16:37:56 +09:00
Haewon Kam
76ec63bc1e feat(discovery): 기준표 v2.0 정식 채택 — 배지·헤더·랜딩 카피·비교 엑셀·덱 v2.0
- aeoGeoRubricV2 status active/2.0, 결과 rubricVersion 2.0. 리포트 헤더는 AEO·GEO 링 2개가 주, v1.0 종합은 보조 표기
- 랜딩: Hero 카피, ABMR 칩(AEO/GEO 목표), SampleReport(두 링 + 축별 8항목 바), Roadmap 제목, HowItWorks를 v2 계산값에서 파생. 발견 칩 수치 v1.1 스냅샷으로 정정
- 비교 엑셀 v2: scripts/build_supporters_v2_compare.ts(점수 계산 TS 단일 원본) → build_supporters_audit_v2_xlsx.py. 공식 AEO 42/GEO 56 · 서포터즈 noindex 상한 40(G1) · 색인 허용 AEO 94/GEO 77
- 덱 v2.0: build_viewclinic_deck_v2_0.py (17장, 표지 배지 v2.0, KPI AEO/GEO, 스코어카드 2장, Method v2.0) + 표준캔버스 + PDF. v1.0·v1.1 파일은 그대로
- docs/AEO_GEO_RUBRIC.md에 v2.0 채택 주석, AEO_GEO_RUBRIC_v2.md 재생성, 리포트 페이지 PDF 재출력

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 15:25:00 +09:00
Haewon Kam
c02de9ea51 feat(discovery): AEO/GEO 분리 채점 기준표 v2.0 초안 + 리포트 패널
- src/data/aeoGeoRubricV2.ts: AEO 답변 준비도 8항목·GEO 출처 준비도 8항목(각 100), 게이트 2종(크롤러 접근·본문 렌더링 → 상한 40), 부가 지표 11개
- v1.0 36항목을 v2 항목에 1:1 매핑(중복 0·미매핑 0, 스크립트 검사). 항목 점수 = v1 실측 레벨 가중 평균, 사람 판정(v2Results) 우선, 미검증은 분모 제외
- src/lib/discoveryScoreV2.ts 집계, src/components/discovery/AeoGeoV2Panel.tsx 리포트 패널(헤더 아래)
- 뷰성형외과 재채점: v1 54/C → AEO 42/C · GEO 56/C (사람 판정 4개는 수집기 원문 근거 초안). 태하: 게이트 G1(A2) 실패로 40 상한
- docs/AEO_GEO_RUBRIC_v2.md는 scripts/gen_rubric_v2_doc.ts로 코드에서 생성
- tsconfig exclude에 supporters·templates·evidence 추가 (Astro 하위 프로젝트가 루트 tsc에 잡히던 문제)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 15:12:35 +09:00
Haewon Kam
e52331a239 docs: 서포터즈 자동 빌드 v2 §11-4 근거 수집기 기록, §12 haewon 결정 반영 + 법적 책임 주체 제안 + 워커·배포 추천
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 14:28:40 +09:00
Haewon Kam
c92ecc83fb feat(supporters): 근거 수집기 scripts/collect_evidence.mjs + evidence/viewclinic (§7-3)
- 홈+page 사이트맵에서 원문 페이지 발견 → 경로 우선·단어 경계 분류(주의사항·애프터케어·검진·안전·의료진·오시는길·시설·소개·예약·시술)
- 본문 컨테이너 선택 + 페이지 간 반복 줄(메뉴·푸터) 제거, 헤딩·문단·목록·표·이미지·링크 구조화
- doctors.json: 이름·직함·약력. 약력이 이미지 글자면 textInImages, 2줄 미만이면 '확인 대기' (뷰성형외과 27명 전원 확인 대기)
- facts.draft.json: 전화·주소·사업자번호·대표·진료시간 정규식 후보 + 출처 URL
- home_text.txt: 전 페이지 본문(29만 자). check.mjs --home-text= 로 40자 중복 검사 기준 교체 가능 → 18편 0오류
- --posts 옵션: 글에 인용된 병원 URL 커버리지 리포트 (뷰성형외과 16/16, /face/main/은 301 추적)
- robots.txt Disallow 존중, UA 명시, 요청 간 400ms

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 14:26:15 +09:00
Haewon Kam
63756f5a5c docs: 서포터즈 자동 빌드 v2 §11 진행 기록 — 게이트 확장·템플릿화 완료, 남은 단계와 결정 의존 관계
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 14:07:53 +09:00
Haewon Kam
622441e6aa feat(supporters): 템플릿화 — 병원 고유값을 데이터로 분리하고 templates/supporters-astro 내보내기
- src/data/site.json 신설(매체 이름·로고·홈 큐레이션), factSheet에 kind·areaLabel·transitShort·transitNote·reservationUrl·doctorsUrl·youtube.title 추가
- lib.ts: PENDING('확인 대기')·v()·has()·surface()·editor() 도입, 스키마는 빈 값을 빼고 생성
- 페이지·컴포넌트 15개에서 뷰성형외과 하드코딩 제거, 빈 데이터 empty-state (글 0편·영상 0건·뉴스 0건·이미지 없음)
- 검증: 28페이지 표시 텍스트·구조 지문 이전 빌드와 동일(홈 title 마침표 1건만 정정), JSON-LD 차이는 빈 sameAs 제거뿐
- scripts/export_template.mjs + scripts/template/data(빈 데이터 세트) → templates/supporters-astro (빈 데이터로 10페이지 0오류 빌드, 게이트 통과)
- 게이트 픽스처를 자체 authors로 분리해 템플릿에서도 테스트 통과, 구조 기준선의 글 상세 페이지는 사전순 첫 글로 동적 선택

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 14:07:14 +09:00
Haewon Kam
49c5e46f23 feat(supporters): 발행 게이트 확장 — v2 §3 검사 11종을 규칙 모듈·픽스처 테스트로 분리
- scripts/gate/rules.mjs: 운영자 어휘·구조 지문·화법·근거 type·규제 원문·결론 문장·수치 한정·확인일 일관성·검토자/검토일·영상 제목·표/체크리스트 (순수 함수)
- scripts/check.mjs: dist + 소스 frontmatter + 데이터 검사 러너, --update-layout, error/warn 분리
- scripts/gate/test.mjs + fixtures 9개: 실패 재현 + 18편 정답지 회귀 + 부정문 통과
- corrections.json 「답변엔진」 표현 고객 화면에서 제거, 반말 문장 1건 수정
- audit_aeo_geo.py: 표본 URL 5개 미만 경고(§3-10)
- 미결: 「채널 인기 전체」 탭은 경고만 (haewon 결정 대기)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 13:57:31 +09:00
Haewon Kam
a441f8a4ad docs: 서포터즈 자동 빌드 핸드오버 v2 — 사람 판단 11건을 규칙/검사/사람 게이트로 분해, 근거 프로토콜, 신뢰 층 스펙, 병원 입력 항목
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 13:47:19 +09:00
Haewon Kam
f23c5a5113 chore: v1.1 표준캔버스 pptx 재생성분 반영
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 13:42:00 +09:00
Haewon Kam
fdb6aaf91b style(reports): v1.1 덱 제목·본문을 고객용 존댓말로 (판단 슬라이드 존댓말, 목차성 슬라이드 명사구)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 13:07:45 +09:00
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
Haewon Kam
90ad27ee73 fix: 뷰성형외과 AI Answer Readiness 리포트 v1.1 — 2026-09-07 재검증 정정 3건 + 병원 요청 슬라이드
정정 (원본 HTML 5개 URL 재파싱):
- 블로그 정지(2024-05) → 오판. www post-sitemap만 본 결과. blog.viewclinic.com은 09-07까지 발행, robots가 AI 봇 14종 명시 허용
- FAQ 0개 → 프리저베 페이지 FAQ 7문항 + 유효 FAQPage 스키마. C2 0→2
- 수술시간·회복 표기 없음 → 프리저베·코·윤곽 페이지에 텍스트 존재(가격대 없음). C4 1→2
- 총점 50 → 54 (C 유지), C 카테고리 28% → 44%. 그 외 판정(H1 5개, ItemList 파싱 실패, sameAs 빈 값, 표 0, 진료시간 이미지, WP 5.5.3)은 재확인

산출물:
- src/data/discovery_viewclinic.ts: 레벨·근거·keyFindings·actions 정정, auditedAt 2026-09-07 (/discovery/viewclinic 반영)
- 덱 v1.1 (16장): Corrections 슬라이드 + "뷰성형외과에 부탁드리는 것"(정보·확인·액션 3열) 추가. haewon 편집 원본 v1.0은 보존
- 20in 원본 + 표준캔버스 축소본, PDF 각 1부

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:45:29 +09:00
Haewon Kam
659f22b987 feat(supporters): 2단계 2차 원천 콘텐츠 5편 초안 + 1차 4편 검토 확정 + 의료진 6명 추가
- 2차 5편 (검토 대기): 트임 3종 비교(눈 조진우), 기능코성형·이비인후과 협진(고은석), 윤곽·양악 회복 일정표(오정석), 실리프팅 vs 안면거상(김소영), 타원 수술 재수술 상담·시점(정재현)
- 근거: 쇼츠 정리 답 6편, 주의사항 페이지 부위별 원문(눈·코·윤곽·양악·리프팅), 코성형·안면윤곽·가슴재수술 페이지, 원장 인터뷰·칼럼 5건. 자료에 없는 수치(지속 기간, 코·윤곽 재수술 시점, 신경 손상 확률, 타원 상담 정책)는 "자료에 없음 / 확인 대기"로 명시
- 1차 4편 검토 완료 2026-09-07: 상담 질문 최순우, 회복 정재현, 마취 최진화(마취통증의학과 전문의로 교체), 검진 오원석. 견적 글은 검토자 없음
- authors.json physicians에 조진우·고은석·오정석·김소영·윤창운·최진화 추가 (공식 프로필 경력·URL)
- 기획서에 1·2차 상태 반영. 게이트 28페이지 오류 0

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:28:06 +09:00
Haewon Kam
2735de7e2a feat(supporters): 2단계 1차 원천 콘텐츠 5편 초안 (검토 대기) + 작성자 sameAs 한경 인터뷰
- C 선택 기준: 가슴성형 상담 질문 10가지 체크리스트 (답 적는 칸, 병원 공개 답 병기)
- F 가격·이벤트: 견적 확인 항목 9가지 + 비용 확인 경로 (금액 미기재)
- D 시술 정보: 가슴성형 회복 일정표 (당일~1년, 주의사항·애프터케어 페이지 원문 기준, 출근 시점은 병원 확인 대기)
- E 안전·신뢰: 수면마취 vs 전신마취 (쇼츠 E-04 + 안전수술시스템 마취 프로세스)
- D 시술 정보: 보형물 교체 주기와 검진 (쇼츠 D1-11 + FDA 위험 안내 + 검진센터·애프터케어)
- 모두 reviewStatus pending, 확인 안 된 수치는 쓰지 않고 "상담 확인"으로 표기. 참고 자료 유형 태그·확인일 포함
- authors.json: 안성민 sameAs에 한국경제 CEO 인터뷰 추가
- 기획서에 1차 초안 발행 기록

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:19:06 +09:00
Haewon Kam
1b0fd6624a docs(supporters): 2단계 원천 콘텐츠 기획서(13편) + 작성자 역할을 'AI오투오 대표 · 편집 책임'으로
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:07:17 +09:00
Haewon Kam
f776c3813b feat(supporters): 의학 검토 완료 확정 — 6편 검토일 2026-09-07, reviewedAt 필드·lastReviewed 스키마
- reviewer가 있는 6편(촉감·표면·프리저베·재수술·안전·병원 소개) reviewStatus reviewed, reviewedAt 2026-09-07, 갱신 기록에 "담당 원장 의학 검토 완료"
- 스키마 reviewedAt 추가. Article JSON-LD에 reviewedBy(Physician @id) + lastReviewed
- 글 상단 "의학 검토 {원장} (검토일)", ReviewBox "검토 완료 {검토일}"
- 샘플 배너 "정식 공개 전입니다"로 축약, 소개의 검토 대기 문장 삭제
- GEO 계획 문서 1단계 G2 반영 표기

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:02:14 +09:00
Haewon Kam
ffbd1e66bd feat(supporters): GEO 0단계 반영 — 작성자 안성민, 근거 범위 표현, 참고 자료 유형, 갱신 기록, 정정 기록 페이지
- 작성자: 가명 2명 → 안성민(편집자·편집 책임) 1명. 소개·푸터·ReviewBox에 편집 책임과 정정 요청 이메일(o2oteam@o2o.kr) 명시
- 의학 검토: 영상 출연 원장을 감수자로 표기하던 방식을 중단. 상단 메타 "설명 {원장}" + "의학 검토 대기", ReviewBox는 검토 완료 시에만 원장명·날짜 표시
- 근거 범위(G4): 촉감 글 FDA 승인 범위 한정, 표면 글 나노텍스처를 원장 의견으로 한정, 프리저베 30분·다음 날 출근 영상 사례 한정, 재수술 글 제품 권유를 임상 의견으로 한정, 안전 글 결론 문장 교체
- 원자료(G3): sources에 type 태그(병원 제공/원장 설명/제품 정보/규제·연구/플랫폼 집계/2차 자료). FDA P230005, FDA 위험 안내, ISO 14607 원문 링크 추가
- 일관성(G6): 후기 글 요약·FAQ에 플랫폼별 확인일 병기, "해외 환자 비중" 삭제. 홈 통계에 확인일
- 갱신 추적(G5): 글 frontmatter history + History 컴포넌트. 팩트 시트 checkedAt/nextCheck 표시
- 정정 경로(G8): /corrections 정정 기록 페이지(정정 7건), 푸터·소개·ReviewBox에 정정 요청 링크. 사이트맵 반영
- GEO 계획 문서에 0단계 반영 내역 기록

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 10:53:01 +09:00
Haewon Kam
8198051632 fix(supporters): 의료진 영상·뉴스룸·병원 정보의 운영자 시점 설명을 고객 문장으로 교체
- 의료진 영상: 선별 기준 설명(60초 롱폼/쇼츠 분류, 임베드·복제 고지)을 "무엇을 볼 수 있는지"로. 탭명 설명 영상 Top 10 / 1분 답변 영상, 1위 통계는 설명 영상 기준으로
- 뉴스룸: "링크 트리", 수집 질의 수 등 제거. In The News, "제목을 누르면 원문으로". 제3자 보도 미포함 사실은 고객 문장으로 유지
- 병원 정보: "홈페이지에 텍스트가 없어 강남언니 표기 사용" 사정 설명 제거, 출처 표기만 유지
- 홈 칩: "영상 1,215편을 근거로" → "원장이 직접 설명한 영상을 근거로" (채널 전체 편수를 근거 수로 읽히지 않게)
- 글 상세 영상 메모 "이 글의 주 원천" → "이 글의 바탕이 된 영상"

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 09:37:42 +09:00
Haewon Kam
f683fca187 feat(supporters): 메뉴 '의료진 영상' + 영상 페이지 상단에 의료진 소개 링크 2개 (공식 홈페이지 의료진 소개 · 강남언니 등록 의료진)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 09:33:41 +09:00
Haewon Kam
81f1547ddd fix(supporters): 메뉴 '병원 소식' → '뉴스룸'
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 09:28:49 +09:00
Haewon Kam
c631b9cdd8 fix(supporters): 글 목록 카테고리 블록 반응형 그리드 + 태블릿 헤더 한 줄 유지
- /posts: 카테고리 섹션이 글 수만큼만 칸을 차지하는 그리드 (데스크톱 3열 → 1000px 이하 2열 → 660px 이하 1열).
  1편짜리 병원 소개·방문·예약·안전·신뢰·후기·평판이 데스크톱에서 나란히 배치되고 세로로 쌓이지 않음
- 헤더: 720~1040px 구간에 메뉴 간격·크기 축소, nowrap. 새 메뉴 이름 5개가 두 줄로 깨지던 문제 해결
- docs/v4-screenshots: posts 데스크톱·태블릿·좁은 폭·모바일 스크린샷 추가

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 09:27:25 +09:00
Haewon Kam
8e2dd63b00 feat(supporters): Astra 개선안 일부 수용 — 메뉴 재명명, 방문 안내 페이지 신설, 고객 상태별 진입 카드
- 메뉴: 상담 전 질문(/posts) · 의료진 설명(/videos) · 병원 소식(/newsroom) · 방문 안내(/visit, 신설) · 매체 소개(/about). 기존 페이지는 그대로, 병원 정보(/clinic)는 푸터와 방문 안내에서 연결
- /visit 신설: 예약 경로 3가지 → 진료시간 → 찾아가기(지하철·주차 약도) → 도착 후 동선 → 상담 전 읽어볼 글 → 상담 예약 CTA. 값은 factSheet.json에서만
- 홈 히어로 아래 "Start Here / Where Are You Now?" 섹션: 처음 알아볼 때 · 병원을 선택할 때 · 방문을 준비할 때 카드 3개 (기존 .card 룩, 영어 세리프 헤딩 유지)
- 통계 숫자 블록 유지, 1문항 1URL 원칙 유지. 사이트맵에 /visit 추가

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 09:22:22 +09:00
Haewon Kam
2b76de95e5 docs(supporters): v4 전체 페이지 풀 스크린샷 17장 (홈·글 목록·글 8편·영상·뉴스룸·병원 정보·소개·편집 기준·작성자 2명)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 09:08:20 +09:00
Haewon Kam
7239ae16c4 fix(supporters): 홈 원칙 카드 제목을 명사구로 (답하는 방식 / 싣지 않는 것 / 밝히는 것)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 09:05:39 +09:00
Haewon Kam
c87ee03d54 feat(supporters): 히어로 제목을 '뷰성형외과, 궁금한 것부터 답합니다'로 바꾸고 2pt 확대 (2.7rem→2.86rem)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 09:02:07 +09:00
Haewon Kam
32e050a501 fix(supporters): v3 룩앤필 복원, 텍스트만 고객용으로 유지
- 홈 구조·영어 세리프 헤딩·아이브로우·통계 블록을 v3 그대로 되돌림 (주제 카드 섹션 제거)
- 통계 3칸은 답한 질문 수 / 원장 설명 영상 / 강남언니 후기로 숫자 유지, 설명만 고객 문장
- about·editorial·posts·clinic 상단 제목을 v3 방식(영어 세리프 h1)으로 복원
- 글 상세 아이브로우 "D · 시술 정보" 복원 (QB 번호만 제외)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 09:00:53 +09:00
Haewon Kam
24b8be0f3d feat(supporters): 고객용 메시지와 운영자용 설명 분리 (v4)
- 홈: "답변엔진 인용", "질문 뱅크 120", "홈페이지 문장 복사 안 함", "의료법 56조" 등 제작 원칙 섹션 제거.
  주제별 찾기(카테고리 카드) · 최근 답한 질문 · 원장 영상 · 병원 둘러보기 · 신뢰 근거 3가지 · 병원 정보로 재구성. 영어 덱 스타일 헤딩을 한국어 고객 문장으로 교체
- /about: 방문자용 "이 사이트에 대해"로 다시 씀 (근거, 작성·감수, 싣지 않는 것, 병원과의 관계, 문의)
- /editorial 신설: 운영자용 편집 기준 (질문 뱅크, 글 구조, 원천 변환, 중복 회피, 스키마, 발행 게이트, 고객/운영자 경계). noindex, 푸터에서만 연결
- 내비 "운영 원칙" → "소개", 샘플 배너에서 noindex 언급 제거, 글 상세 QB 번호는 data-qb 속성으로만 유지
- 글 목록·병원 정보·영상·뉴스룸·작성자 페이지의 "단일 원본", "API 집계", "수집 기준", "팩트 시트" 문구 정리
- 후기 글·방문 안내 글의 법 조문·답변엔진 언급을 고객 문장으로 교체
- Base에 noindex prop 추가. docs/v4-screenshots 기록

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 08:57:56 +09:00
Haewon Kam
03ed725481 feat: 뷰성형외과 서포터즈 샘플 사이트 v3 + 설계 v0.1 + 공식 사이트 대비 AEO 감사
- supporters/: Astro 사이트 소스 (pages·components·posts·factSheet/authors/videos 데이터, 뉴스룸 916건 빌더, 발행 게이트 check.mjs, vercel.json)
- supporters/docs/: v1~v3 스크린샷 기록
- docs/INFINITH_Viewclinic_Supporters_Site_Design_v0.1.md: 서포터즈 사이트 설계 문서
- docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD.md: 다음 세션 자동 빌드 프롬프트
- docs/reports/Viewclinic_Supporters_vs_Official_AEO_Audit.xlsx + scripts/build_supporters_audit_xlsx.py: 서포터즈 vs 공식 사이트 AEO/GEO 감사 비교

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 08:40:10 +09:00
Haewon Kam
1dd1384fbf feat: POC 덱 v3 — haewon 10페이지 폰트 기준을 전 슬라이드 적용 (본문 20 / 리드·인용 24 / 카드 제목 28)
haewon 수정 원본(Viewclinic_POC_Proposal.pptx)은 보존, 10페이지는 원본 유지.
나머지 14장에 런 164개 in-place 매핑 후 v3 + v3_표준캔버스(13.33in)로 저장.
빌드 스크립트에 재생성 금지 경고와 새 폰트 상수 역반영.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155BJMHJyhqqAPGYjGKYhPS
2026-09-01 11:52:43 +09:00
Haewon Kam
bf4e1a5548 fix: INFINITH 덱 폰트 pt 표준화 — 20in 캔버스를 2/3 균등 축소한 v2_표준캔버스 버전 추가
원인: INFINITH 덱 캔버스가 20x11.25in(표준 1.5배)이라 폰트 pt가 1.5배 부풀려짐
(본문 18pt = 화면상 12pt). ADO2 정본(12.5in)과 달리 14pt 지정 시 9.3pt처럼 렌더.
scripts/rescale_deck.py로 좌표·폰트·선·여백 전부 2/3 축소 → 13.33x7.5in 표준,
화면 모습 동일, pt 숫자 표준화(본문 12pt·타이틀 42pt). haewon 수정 원본은 보존.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155BJMHJyhqqAPGYjGKYhPS
2026-09-01 11:44:41 +09:00
Haewon Kam
69b580c135 feat: POC 부록 맨 앞에 '두 점수 읽는 법' 슬라이드 추가 (14→15장, 부록 1/5~5/5 재번호)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155BJMHJyhqqAPGYjGKYhPS
2026-09-01 11:33:40 +09:00
Haewon Kam
34edb3bef8 fix: QB 엑셀 GPT상세·PPLX상세를 논브랜드 84문항으로 한정 (브랜드 원본은 JSONL 보존)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155BJMHJyhqqAPGYjGKYhPS
2026-09-01 11:25:31 +09:00
Haewon Kam
591791a262 chore: QB 엑셀 파일명에 TOP50 명시 (Viewclinic_QB_Results_TOP50.xlsx) + 참조 갱신
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155BJMHJyhqqAPGYjGKYhPS
2026-09-01 11:21:59 +09:00
Haewon Kam
c2a02ce514 feat: AI Discovery 랭킹 시트 TOP20 → TOP50 확장
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155BJMHJyhqqAPGYjGKYhPS
2026-09-01 11:19:09 +09:00
Haewon Kam
9a271cacb0 feat: QB 엑셀에 AI Discovery TOP20 시트 추가 (논브랜드 84문항 2엔진 합산, 순위 가중 점수)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155BJMHJyhqqAPGYjGKYhPS
2026-09-01 11:18:31 +09:00
Haewon Kam
d378ac56c9 chore: 48점 구판 중복 POC 덱 2개 삭제 (정본은 Viewclinic_POC_Proposal.pptx/pdf)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155BJMHJyhqqAPGYjGKYhPS
2026-09-01 11:06:13 +09:00
Haewon Kam
f8a254126c feat: 뷰성형외과 Question Bank 120문항 2엔진 실측 + 기준표 v1.1 과제 + 점수 정합성 교정(50/C)
- Question Bank 120문항(사전판정 ◯5/△35/✕80) + OpenAI·Perplexity API 실측: 브랜드 언급 97~100%, 논브랜드 GPT 11%/PPLX 3%, 시술 정보 52문항 0건
- 러너 run_question_bank_openai.py(재개 가능)·merge_qb_results.py·export_qb_excel.py, 결과 MD 3종 + xlsx 5시트 + raw JSONL
- AEO_GEO_RUBRIC.md v1.1 과제 5건: 서브도메인 실측, D3 표면 범위 확대, 엔진별 판정, 브랜드/논브랜드 축, 점수 표기 정합성
- 점수 교정: scoreDiscovery 계산값 50/C(44.1/89, 검증 32/36)로 진단 리포트 덱·POC 제안서 일괄 교정(구판 48, 커밋 메시지 49는 착오)
- 진단 리포트 덱 13→14장: Validation 슬라이드 추가, A5·B4·C6 재채점 반영, 연락처 o2oteam@o2o.kr 교정
- POC 제안서 10→14장: 부록 4장(QB 설계·실측 KPI·브랜드vs논브랜드·블로그 인용 증거), 랜딩 스크린샷 50점 화면 재캡처

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155BJMHJyhqqAPGYjGKYhPS
2026-09-01 11:03:15 +09:00
Haewon Kam
3ba8fc839d feat: /discovery CTA 'URL 입력으로 시작하기' — URL 입력 진단 신청 모달 + discovery_leads 저장
- 히어로·하단 CTA 버튼명 변경(무료 AEO/GEO 진단 받기 → URL 입력으로 시작하기), mailto 직행 제거
- DiscoveryLeadModal: URL(필수)·연락처(필수)·상호(선택) → Supabase discovery_leads insert
- RLS anon insert 전용(조회 불가), 저장 실패 시 o2oteam@o2o.kr mailto 폴백 (정직성 규약)
- 마이그레이션 20260831_discovery_leads.sql (적용은 supabase login 후 db push 필요)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WgWoJZAvvzMxTpWeenZSia
2026-08-31 16:58:38 +09:00
835 changed files with 155663 additions and 175 deletions

View File

@ -0,0 +1,882 @@
{
"바노바기성형외과": {
"facebook": [
"https://facebook.com/BanobagiPlasticSurgery?_rdr",
"https://www.facebook.com/BanobagiPlasticSurgery"
],
"blog": [
"https://blog.naver.com/banobagips",
"https://blog.naver.com/banobagiprs"
],
"youtube": [
"https://www.youtube.com/c/banobagips"
],
"instagram": [
"https://www.instagram.com/banobagi15886508",
"https://www.instagram.com/banobagi_ps/"
]
},
"뷰성형외과": {
"facebook": [
"https://www.facebook.com/viewps1/"
],
"blog": [
"https://blog.naver.com/viewclinicps"
],
"youtube": [
"https://www.youtube.com/channel/UCQqqH3Klj2HQSHNNSVug-CQ",
"https://www.youtube.com/@ViewclinicKR/shorts"
],
"instagram": [
"https://www.instagram.com/viewplastic/"
],
"cafe": [
"https://cafe.naver.com/bluectcom2"
]
},
"아이디병원": {
"facebook": [
"https://www.facebook.com/idhospital0050"
],
"youtube": [
"https://www.youtube.com/player_api?enablejsapi=1",
"https://www.youtube.com/user/IDhospital/featured"
],
"instagram": [
"https://www.instagram.com/idhospital"
]
},
"그랜드성형외과": {
"facebook": [
"https://www.facebook.com/grandps.korea",
"https://facebook.com/grandps.korea"
],
"blog": [
"https://blog.naver.com/grandprs"
],
"youtube": [
"https://www.youtube.com/channel/UCU2o_aHqsNFuqwtdzVM3xbQ"
],
"instagram": [
"https://www.instagram.com/grand_korea",
"https://www.instagram.com/grand_korea/"
]
},
"원진성형외과": {
"facebook": [
"https://www.facebook.com/KwonjinPS"
],
"blog": [
"https://blog.naver.com/popokpop"
],
"youtube": [
"https://www.youtube.com/channel/UCNBaQBCok5xIViCnrGdisoQ",
"https://www.youtube.com/@wjwonjin",
"https://www.youtube.com/channel/UC-EBM4e0VST1W_PQ0NzFMQg"
],
"instagram": [
"https://www.instagram.com/wonjin_official/",
"https://www.instagram.com/wonjin_ps/",
"https://www.instagram.com/wj_cosmetic/"
]
},
"마인드성형외과": {
"youtube": [
"https://www.youtube.com/channel/UCzM5tIgkC8Es10YmLI55R_w"
]
},
"브라운성형외과": {
"facebook": [
"https://www.facebook.com/braunps"
],
"youtube": [
"https://youtu.be/rtDaps_Ztlo?si=21DTQ2g8IkgRo4AW",
"https://youtu.be/P7t_Q1s6FKw?si=zotjNYKOgxEPIv6k",
"https://youtu.be/1TzG7l3vJH0?si=nyxUQhNle_xEh3nP",
"https://www.youtube.com/@10ricebone_braun",
"https://youtu.be/kZP1TxOSszQ?si=QYzJ-o7f9djliZ-8",
"https://youtu.be/nUeyQVTkA-A?si=dgbOKXBCJo7fhD2T",
"https://youtu.be/gRb-Pj0K4Nk?si=zcblxytyL7vLBxKL",
"https://youtu.be/JAlQhrvfd6E?si=ALygwB4qmWLpYFKp",
"https://youtu.be/9TGup2iLGXo?si=-ORV8WN0QpWERwO3",
"https://youtu.be/gA-ZEWoZQQk?si=y7icwpFlaFadEp_R",
"https://youtu.be/Z--rM9HhOcg?si=kad21Sd0KDgkLj10",
"https://www.youtube.com/@braunps_kr"
],
"instagram": [
"https://www.instagram.com/braunps_official/"
]
},
"오메가성형외과": {
"facebook": [
"https://www.facebook.com/%EC%98%A4%EB%A9%94%EA%B0%80%EC%84%B1%ED%98%95%EC%99%B8%EA%B3%BC-1682577712065719/"
]
},
"나나성형외과": {
"facebook": [
"https://www.facebook.com/nanaprs2",
"https://www.facebook.com/profile.php?id=100083037025459"
],
"blog": [
"https://blog.naver.com/nanaprs1"
],
"youtube": [
"https://youtube.com/@Nanaprstv?si=fLyqXsfJcLEhTmcH",
"https://www.youtube.com/나나성형외과",
"https://youtu.be/:id",
"https://www.youtube.com/@Nanaprstv"
],
"instagram": [
"https://www.instagram.com/nana_afters/",
"https://www.instagram.com/nanaprs",
"https://www.instagram.com/nanaprs/"
],
"cafe": [
"http://cafe.naver.com/bestcarbon"
]
},
"노트성형외과": {
"facebook": [
"https://www.facebook.com/noteprs2/?eid=ARChdUaMnfPx5Xok2tDTXWr5IbgeQIlbLHKhDP2AfBXBPvRAY8mwZlVG4JdxderLMdBNRcVqXVVbaM4P"
],
"youtube": [
"https://youtu.be/I06kpsK0IZI",
"https://youtu.be/a7tU62mZvGE",
"https://youtu.be/-Y_UT3G5WoA",
"https://youtu.be/mAgui9wOowA",
"https://youtu.be/o-PBXufp9oA",
"https://youtu.be/9b4MWwxhVgE",
"https://youtu.be/Mev2OvcDvO4",
"https://youtu.be/HZjQJ-rcjoM",
"https://youtu.be/avQXLEoR7Gg",
"https://youtu.be/7wB3nCoxd-E",
"https://youtu.be/WpiKrNE68ns",
"https://youtu.be/ggCQD3eD_pc",
"https://youtu.be/lRHge9NFxWE",
"https://youtu.be/cZF4BRyIABM",
"https://youtu.be/Z0_lrBarjWA"
],
"instagram": [
"https://www.instagram.com/note.prs/?hl=ko"
]
},
"디에이성형외과": {
"youtube": [
"https://www.youtube.com/channel/UC0wlA-w5JIt0G0EeWQf65AQ"
],
"instagram": [
"https://www.instagram.com/da_plastic_surgery"
]
},
"에이비성형외과": {},
"비아이오성형외과": {
"facebook": [
"https://www.facebook.com/biopskorea"
],
"blog": [
"https://blog.naver.com/bioplastics20"
],
"instagram": [
"https://www.instagram.com/bio_dr.hongsungpyo"
]
},
"제이준성형외과": {
"facebook": [
"https://www.facebook.com/jayjunps"
],
"blog": [
"https://blog.naver.com/gusrlf00"
],
"youtube": [
"https://www.youtube.com/channel/UC1p4msJnetDKeOW-B4nlwZA/videos"
],
"instagram": [
"https://www.instagram.com/jayjunps/"
]
},
"마블성형외과": {
"facebook": [
"https://www.facebook.com/hashtag/",
"https://www.facebook.com/marbleps/"
],
"blog": [
"https://blog.naver.com/marbleplastic"
],
"youtube": [
"https://www.youtube.com/@marbleps"
],
"instagram": [
"https://www.instagram.com/marble__ps/"
]
},
"쥬얼리성형외과": {
"facebook": [
"https://www.facebook.com/juelyps"
],
"blog": [
"https://blog.naver.com/prsshin2"
],
"youtube": [
"http://www.youtube.com/jewelrypsKr1",
"https://www.youtube.com/JewelrypsKr1/videos"
],
"instagram": [
"https://instagram.com/jewelryps_kr"
]
},
"티에스성형외과": {
"facebook": [
"https://www.facebook.com/tsprs"
],
"blog": [
"https://blog.naver.com/tsprs"
],
"youtube": [
"https://www.youtube.com/channel/UCgnizu8p7lbCnfIs76O8J-A"
],
"instagram": [
"https://www.instagram.com/tsprs_official/"
],
"cafe": [
"https://cafe.naver.com/yeuntalk"
]
},
"유노성형외과": {
"facebook": [
"https://www.facebook.com/doctor.yuno/"
],
"blog": [
"https://blog.naver.com/yuno_blog"
],
"youtube": [
"https://www.youtube.com/@yunotube_yunoprs",
"https://www.youtube.com/channel/UCrEe-LfBLXA1-bTGS4bWmtg/featured"
],
"instagram": [
"https://www.instagram.com/doctor.yuno/"
]
},
"리팅성형외과": {
"blog": [
"https://blog.naver.com/night140160"
],
"youtube": [
"https://www.youtube.com/channel/UC1xWD4jMLNtRjrXPtr468mA"
],
"instagram": [
"https://www.instagram.com/liting_psps/"
]
},
"앤써성형외과": {
"facebook": [
"https://www.facebook.com/answerps4881",
"https://www.facebook.com/answerps4881/?ref=bookmarks"
],
"blog": [
"https://blog.naver.com/answerps"
],
"youtube": [
"https://www.youtube.com/channel/UCo7efud2JIGvGjKSkMpdQbA",
"https://www.youtube.com/@TV-gf8ms/featured"
],
"instagram": [
"https://www.instagram.com/answerps",
"https://www.instagram.com/answerps/"
],
"cafe": [
"https://cafe.naver.com/answerps"
]
},
"더픽스성형외과": {
"youtube": [
"https://youtu.be/1xSyeNHkBRg?si=BXdIg5YLP0_5rSAx"
],
"instagram": [
"https://www.instagram.com/thefixps/"
],
"cafe": [
"https://cafe.naver.com/bluegrayewefn"
]
},
"기린성형외과": {
"blog": [
"https://blog.naver.com/girinlife"
],
"youtube": [
"https://www.youtube.com/@girin_official",
"https://www.youtube.com/@girin_official/videos",
"https://www.youtube.com/@girin_official/shorts"
],
"instagram": [
"https://www.instagram.com/girin_ps_official/"
]
},
"압구정서울성형외과": {
"youtube": [
"https://www.youtube.com/player_api",
"https://www.youtube.com/channel/UCqNtVCL2u5Xvx74ymboxDyg",
"https://www.youtube.com/@aspsno1",
"https://youtu.be/WENjXjsyBTY?t=738",
"https://youtu.be/9Z0anr2o0SI"
]
},
"리젠메디컬그룹": {
"blog": [
"https://blog.naver.com/shinygn1",
"https://blog.naver.com/shinygn1/221607462891"
],
"instagram": [
"http://instagram.com/regenskin"
]
},
"코코성형외과": {
"facebook": [
"https://www.facebook.com/kokodoctor/"
],
"blog": [
"https://blog.naver.com/koko_plastic_surgery"
],
"youtube": [
"https://www.youtube.com/channel/UCc19LE6Elp0OTNo9gDizJMw",
"https://www.youtube.com/channel/UCtoEbWkvprRpGfTtgLf-cIQ",
"https://www.youtube.com/channel/UCvGhy-kpyXlXR4SwtLh1q5w"
],
"instagram": [
"https://www.instagram.com/koko_ps_official/"
]
},
"오브제성형외과": {
"blog": [
"https://blog.naver.com/objetps"
],
"youtube": [
"https://www.youtube.com/channel/UC2QrFhj-S8oUrbfOp1NXKZA?view_as=subscriber"
]
},
"리상성형외과": {
"blog": [
"https://blog.naver.com/theps_kor"
],
"youtube": [
"https://www.youtube.com/@theregen_ps"
],
"instagram": [
"https://www.instagram.com/theregen_ps"
]
},
"에이트성형외과": {
"blog": [
"https://blog.naver.com/eightplasticsurgery"
],
"youtube": [
"https://www.youtube.com/@eighteffect",
"https://www.youtube.com/channel/UCpTmm84yJLgIBwBcBhjie4Q"
],
"instagram": [
"https://www.instagram.com/eightps8",
"https://www.instagram.com/eightps8/"
]
},
"오페라성형외과": {
"facebook": [
"https://www.facebook.com/operasurgery/"
],
"blog": [
"https://blog.naver.com/fasolt2"
],
"youtube": [
"http://youtu.be/DujfpXOKUp8?t=13m8s",
"https://www.youtube.com/channel/UC2R_jfmmn0zE-dkButFS_ZA"
],
"instagram": [
"https://www.instagram.com/opera_ps/"
]
},
"리엔장성형외과": {
"youtube": [
"https://www.youtube.com/channel/UCxyiPTH9xHqhPVfwyyosXMQ"
],
"instagram": [
"https://www.instagram.com/lienjang_official/"
]
},
"루호성형외과": {
"instagram": [
"https://www.instagram.com/dr.park1.luho/"
]
},
"쏘울성형외과": {},
"에이탑성형외과": {
"blog": [
"http://blog.naver.com/josoblue",
"https://blog.naver.com/aspect11706/"
],
"youtube": [
"https://www.youtube.com/channel/UCPBCTxCX1hyRnXejA8QfFEQ"
],
"instagram": [
"https://www.instagram.com/atop_instalog/"
]
},
"유캔비성형외과": {
"facebook": [
"https://www.facebook.com/ucanbps"
],
"blog": [
"https://blog.naver.com/ucanb2338"
],
"youtube": [
"https://www.youtube.com/channel/UCegLA3CpLkDOe5h_DnhUpFA"
],
"instagram": [
"https://www.instagram.com/ucanb_plastic_surgery/"
]
},
"스타성형외과": {
"cafe": [
"https://cafe.naver.com/starclinic",
"http://cafe.naver.com/starclinic"
]
},
"아이템성형외과": {
"facebook": [
"https://www.facebook.com/%EC%9E%87%ED%85%9C%EC%84%B1%ED%98%95%EC%99%B8%EA%B3%BC-101634361973942"
],
"blog": [
"https://blog.naver.com/ittem_ps"
],
"youtube": [
"https://www.youtube.com/channel/UCXmZn2rvsl3S-tB901MjZxA"
],
"instagram": [
"https://www.instagram.com/ittem_ps"
],
"cafe": [
"https://cafe.naver.com/gkrry652",
"http://cafe.daum.net/plasticsurg"
]
},
"리코성형외과": {
"facebook": [
"https://www.facebook.com/licotop"
],
"blog": [
"https://blog.naver.com/licops"
],
"youtube": [
"https://www.youtube.com/channel/UC3T_EiEpQr1xE16o69XCqjQ"
]
},
"플레저성형외과": {
"blog": [
"https://blog.naver.com/2amsomething"
],
"youtube": [
"https://www.youtube.com/channel/UCAkB7Oj9cIG4gJNPsnFedRg",
"https://www.youtube.com/c/PSPS_korea"
],
"instagram": [
"https://www.instagram.com/pleasure_ps/"
]
},
"아이웰성형외과": {},
"글로비성형외과": {
"facebook": [
"https://www.facebook.com/glovips"
],
"blog": [
"https://blog.naver.com/glovips",
"https://blog.naver.com/tla92435"
],
"youtube": [
"https://youtu.be/wIZE-fQCFCs",
"https://www.youtube.com/channel/UCH4Orbmc3cFqajWx1I6Xs2w"
],
"instagram": [
"https://www.instagram.com/glovips/"
]
},
"엘르성형외과": {},
"원픽성형외과": {},
"탑페이스성형외과": {
"facebook": [
"https://www.facebook.com/topfaceps",
"https://www.facebook.com/topfaceplasticsurgery",
"https://www.facebook.com/topfacepsthai"
],
"blog": [
"https://blog.naver.com/topfaceps"
],
"youtube": [
"https://www.youtube.com/@topfaceps"
],
"instagram": [
"https://www.instagram.com/topfaceps/",
"https://www.instagram.com/topfacepscn/",
"https://www.instagram.com/topfacejp/"
],
"cafe": [
"https://cafe.naver.com/gematsal"
]
},
"세민성형외과": {},
"에이치성형외과": {
"facebook": [
"https://www.facebook.com/3DFIT100"
],
"blog": [
"http://blog.naver.com/ys100ps"
],
"youtube": [
"https://www.youtube.com/channel/UC6d8i9WwIkm161ueFyVU2PA"
]
},
"리노보성형외과": {},
"디엘성형외과": {
"facebook": [
"https://www.facebook.com/dreamline.en",
"https://www.facebook.com/dl.plastic.en",
"https://www.facebook.com/DLplastic",
"https://www.facebook.com/DL.Plastic.TH",
"https://www.facebook.com/profile.php?id=61553776546703",
"https://www.facebook.com/DL.Plastic.VN"
],
"blog": [
"https://blog.naver.com/aesthetics182"
],
"youtube": [
"https://www.youtube.com/@LINEKING_DL",
"https://www.youtube.com/channel/UCpR9Qd_jBsouxinuJ5m-fvg"
],
"instagram": [
"https://www.instagram.com/dl_dreamline",
"https://www.instagram.com/dl_plastic_official",
"https://www.instagram.com/dl_dreamline.en",
"https://www.instagram.com/dl_plastic_int/",
"https://www.instagram.com/dl.plastic.jp?igsh=MXQ2ZW15ZWppY3BvaQ%3D%3D",
"https://www.instagram.com/dlplasty",
"https://www.instagram.com/dl_plastic_th",
"https://www.instagram.com/dl.plastic.surgery_vietnam?igsh=bGFmYWQ2MnJleXdy&utm_source=qr",
"https://www.instagram.com/dl_plastic_vn"
]
},
"피알성형외과": {
"facebook": [
"https://www.facebook.com/PRPRS.official"
],
"youtube": [
"https://www.youtube.com/channel/UCFeYqxaNozoRaTbYOrR16lg"
],
"instagram": [
"https://api.instagram.com/v1/users/self/media/recent?client_id=",
"https://www.instagram.com/prprs_official/"
]
},
"라프린성형외과": {},
"도도성형외과": {
"blog": [
"http://blog.naver.com/mmscjh"
]
},
"엠제이성형외과": {
"facebook": [
"https://www.facebook.com/people/MJ%ED%94%BC%EB%B6%80%EA%B3%BC/100063928095304/"
],
"blog": [
"https://blog.naver.com/mjskinclinic"
],
"youtube": [
"https://www.youtube.com/channel/UCFjkFyYDu4HpLjc9axlh6YQ"
],
"cafe": [
"https://cafe.naver.com/beauteparadis"
]
},
"아우라성형외과": {
"blog": [
"https://blog.naver.com/pristor"
]
},
"하이봄성형외과": {
"facebook": [
"https://www.facebook.com/highvom1"
],
"blog": [
"https://blog.naver.com/hivom"
],
"youtube": [
"https://www.youtube.com/channel/UCuuH9oWh9h29hVRmH2sHAuA"
],
"instagram": [
"https://www.instagram.com/highvom",
"https://www.instagram.com/highvom/"
]
},
"유앤아이성형외과": {
"facebook": [
"https://www.facebook.com/uni114"
],
"youtube": [
"https://www.youtube.com/channel/UCHgZnNk3JIDxnoYcWSWtAJw"
],
"instagram": [
"https://www.instagram.com/skinuni114/"
]
},
"리본성형외과": {
"facebook": [
"https://www.facebook.com/reborn3355"
],
"blog": [
"https://blog.naver.com/reborn1999"
],
"youtube": [
"https://www.youtube.com/channel/UCyFdX9zxfu2e2JVTwPjki5A"
],
"instagram": [
"https://www.instagram.com/rebornps"
]
},
"라이크성형외과": {
"facebook": [
"https://www.facebook.com/%EB%9D%BC%EC%9D%B4%ED%81%AC%EC%84%B1%ED%98%95%EC%99%B8%EA%B3%BC-101498222230862",
"https://www.facebook.com/likeps1"
],
"blog": [
"https://blog.naver.com/likeps0012"
],
"youtube": [
"https://www.youtube.com/channel/UCZ1kKCfEYUxCj78VPEC_wow"
],
"instagram": [
"https://www.instagram.com/likeps12",
"https://www.instagram.com/like_likeps",
"https://www.instagram.com/likeps_kr"
],
"cafe": [
"https://cafe.naver.com/plasticsurg",
"http://cafe.daum.net/plasticsurg"
]
},
"케이플러스성형외과": {
"facebook": [
"https://www.facebook.com/kclinics"
],
"blog": [
"https://blog.naver.com/kclinics-osh"
],
"youtube": [
"https://www.youtube.com/@k-plasticsurgery"
],
"instagram": [
"https://www.instagram.com/k_plasticsurgery/"
]
},
"케이아트성형외과": {
"facebook": [
"https://www.facebook.com/kartpsseoul"
],
"blog": [
"https://blog.naver.com/kartps"
],
"youtube": [
"https://www.youtube.com/channel/UCHs9LOYtauBIklXhPPZBAgA",
"https://www.youtube.com/channel/UCHs9LOYtauBIklXhPPZBAgA/videos?disable_polymer=1%3F%3F"
],
"instagram": [
"https://www.instagram.com/kartps/"
]
},
"이룸성형외과": {
"facebook": [
"https://www.facebook.com/서울아이성형외과-105199207892670/"
],
"blog": [
"https://blog.naver.com/seoulips"
],
"youtube": [
"https://www.youtube.com/@seouliplasticsurgery",
"https://www.youtube.com/channel/UCYcssdFunRLmD8b376Y6ykg"
],
"instagram": [
"https://www.instagram.com/seoulips/?hl=ko",
"https://www.instagram.com/seouli_ps_th/",
"https://www.instagram.com/seouli_jp/"
],
"cafe": [
"https://cafe.naver.com/seoulips"
]
},
"서초서울성형외과": {
"facebook": [
"https://www.facebook.com/user128"
]
},
"서초연세성형외과": {
"blog": [
"https://blog.naver.com/chaminst"
],
"youtube": [
"https://www.youtube.com/channel/UCMxBfZivKz5jjhRiy0mzOXQ"
],
"instagram": [
"https://www.instagram.com/chamin_ps"
]
},
"리모성형외과": {
"blog": [
"https://blog.naver.com/shpsclinic",
"https://blog.naver.com/rraa0406"
],
"youtube": [
"https://www.youtube.com/channel/UCCiH9OffJgZTMnkxatK8-5A"
],
"instagram": [
"https://www.instagram.com/sh___ps/"
]
},
"화이트성형외과": {
"youtube": [
"https://youtu.be/xxFDhNk2Scc",
"https://www.youtube.com/channel/UCd2CJ_TVHTV5qE0TXcscF3g"
]
},
"미호성형외과": {
"facebook": [
"https://www.facebook.com/mihops5503"
],
"blog": [
"https://blog.naver.com/mihops5955503",
"https://blog.naver.com/miho3925ps",
"https://blog.naver.com/qalfuqbjtmnf"
],
"youtube": [
"https://www.youtube.com/channel/UC8kyWAnMM7f_xguyPxR_gtA",
"https://www.youtube.com/channel/UC8kyWAnMM7f_xguyPxR_gtA/featured",
"https://www.youtube.com/channel/UCefpyLZgvqZ4bqDofEcE45A"
],
"instagram": [
"https://www.instagram.com/mihops5503/",
"https://www.instagram.com/mihops_kr/",
"https://www.instagram.com/mihops5503",
"https://www.instagram.com/miho_realpic",
"https://www.instagram.com/premier__official/"
],
"cafe": [
"https://cafe.naver.com/thefoxstyle",
"https://cafe.naver.com/mihopsps"
]
},
"에비뉴성형외과": {},
"비온성형외과": {
"blog": [
"https://blog.naver.com/miz2199"
],
"youtube": [
"https://www.youtube.com/channel/UClCjGIfEb3b1N-Q5tCNSU5w"
],
"instagram": [
"https://api.instagram.com/v1"
]
},
"아크성형외과": {
"facebook": [
"https://www.facebook.com/arcplasticsurgery",
"https://www.facebook.com/arcps.thai/"
],
"blog": [
"https://blog.naver.com/arcps"
],
"youtube": [
"https://www.youtube.com/channel/UC4Zc0k59qdbrzmNG1aDNmHQ/featured"
],
"instagram": [
"https://instagram.com/p/",
"https://www.instagram.com/arc_plastic_surgery/"
]
},
"에버성형외과": {
"facebook": [
"https://www.facebook.com/everplasticsurgery/?ref=bookmarks",
"https://www.facebook.com/everplasticsurgery/",
"https://www.facebook.com/everplasticsurgery"
],
"blog": [
"http://blog.naver.com/drblue007",
"http://blog.naver.com/everclinic",
"https://blog.naver.com/drblue007"
],
"youtube": [
"https://www.youtube.com/channel/UCwSusNRTM2B_mvdRd0yNVcw"
],
"instagram": [
"https://www.instagram.com/everclinic0088/"
]
},
"유앤미성형외과": {
"youtube": [
"https://www.youtube.com/channel/UCAROD-B1ZBinpyzql7o_IlA"
],
"instagram": [
"https://www.instagram.com/knyounmeclinic",
"https://www.instagram.com/knyounmeclinic/"
]
},
"마노성형외과": {
"blog": [
"https://blog.naver.com/tkhr4747"
],
"youtube": [
"https://www.youtube.com/@mano_ps"
],
"instagram": [
"https://www.instagram.com/manops_official"
]
},
"에스엠성형외과": {
"facebook": [
"https://www.facebook.com/thammySM3707?mibextid=LQQJ4d"
],
"blog": [
"https://blog.naver.com/smps1004",
"https://blog.naver.com/smps1004/223225872355",
"https://blog.naver.com/smps1004/223222618079",
"https://blog.naver.com/smps1004/223220646900",
"https://blog.naver.com/smps1004/223219865154",
"https://blog.naver.com/smps1004/223219923186",
"https://blog.naver.com/smps1004/223242618343"
],
"youtube": [
"https://www.youtube.com/@smpsclinic"
],
"instagram": [
"https://www.instagram.com/smps_plastic_surgery/?igshid=MzRlODBiNWFlZA%3D%3D",
"https://www.instagram.com/smps_id/?igsh=MW5seTU0ZzVnZ3Fndg%3D%3D"
]
},
"서울미작성형외과": {
"facebook": [
"https://www.facebook.com/mijaknose"
],
"blog": [
"https://blog.naver.com/mijak3444"
],
"instagram": [
"https://www.instagram.com/mijak2444/"
]
},
"더원성형외과": {
"blog": [
"https://blog.naver.com/brs0714"
],
"youtube": [
"https://youtu.be/awcUKK31Kis",
"https://youtu.be/jKY3iF3pc3Q",
"https://youtu.be/WhUSe5fiUWA",
"https://youtu.be/4QK2W0Md_HM"
],
"instagram": [
"https://www.instagram.com/theone_plastic_surgery/"
]
}
}

View File

@ -1,5 +1,7 @@
# INFINITH AI Discovery AEO/GEO 채점 기준표 v1.0
> **2026-09-07 갱신:** 제품 점수는 v2.0(AEO 답변 준비도 100 · GEO 출처 준비도 100, `docs/AEO_GEO_RUBRIC_v2.md`)으로 바뀌었다. 이 문서의 36항목은 v2.0의 **실측 신호**로 그대로 쓰이며, v1.0 종합 100점은 리포트에 보조 표기로만 남는다.
> 코드 원본: `src/data/aeoGeoRubric.ts` · 타입: `src/types/discovery.ts` · 집계: `src/lib/discoveryScore.ts`
> 리포트 페이지: `/discovery/:id` (`src/pages/DiscoveryReportPage.tsx`)
> 근거 기반: ado2-aeo-geo 스킬 (2026-08-26 한국 실측 · Princeton GEO KDD 2024 · C-SEO Bench NeurIPS 2025)
@ -89,3 +91,21 @@
## 하지 않을 것 (리포트에 항상 명시)
- llms.txt 납품 · "스키마 넣으면 인용됩니다" · 단발 조회 순위 보고 · 답변엔진 UI 자동 조회(약관 위반) · 네이버 블로그 증량(글로벌 AI 기여도 0)
## v1.1 개선 과제 (2026-09-01 · Question Bank 120문항 실측 검증에서 도출)
뷰성형외과 잠재 환자 질문 120개를 OpenAI 웹검색 API(gpt-4o + web_search, 서울 고정)와 Perplexity API(sonar)로 실측해 기준표 기반 사전판정을 채점했다. 데이터: `docs/reports/viewclinic/03_question_bank/Viewclinic_QB_Results_Combined.md`, raw `scripts/out/qb_{openai,perplexity}_results.jsonl`, 러너 `scripts/run_question_bank_openai.py`.
**검증 요약**
- 논브랜드(병원명 미포함) ✕ 판정 73문항: Perplexity 언급 0건, ChatGPT 5건. 시술 정보 질문 52문항은 두 엔진 모두 0건. 핵심 인과(콘텐츠 부재 → 논브랜드 미인용) 적중.
- 브랜드 ✕ 판정 7문항: 전부 오판. 뉴스 기사·채용공고·바비톡·네이버 예약 정보를 근거로 두 엔진 다 정답(개원연도·주차·휴진·렛미인).
- ChatGPT 추천 질문 5건: 갱신이 멈춘 blog.viewclinic.com과 순위 집계 사이트를 근거로 뷰를 2~5위에 배치. Perplexity는 0건으로 엔진별 근거 표면이 다름.
**과제**
1. **실측 대상에 서브도메인 포함.** 현재 진단은 메인 + 시술 2개 URL 기준. 실제 인용은 blog.viewclinic.com에서 나왔다. C군 콘텐츠·C6 신선도 판정에 블로그 서브도메인을 넣는다.
2. **D3 오픈웹 언급의 실측 범위 확대.** 강남언니·GBP 중심에서 바비톡, 뉴스 도메인(보건뉴스·머니투데이 등), 순위 집계 사이트, 채용공고까지. AI가 실제로 인용한 도메인 목록을 판정 근거로 쓴다.
3. **엔진별 표면 차이 명시.** ChatGPT는 블로그·집계 사이트를, Perplexity는 다른 소스 프로필을 인용한다. 판정을 엔진 공통 단일값이 아니라 엔진별로 나눌지 검토.
4. **사전판정에 브랜드/논브랜드 축 추가.** 브랜드 질문은 제3자 표면만으로 언급이 성립하므로 "인용 불가" 판정은 논브랜드 전용으로 좁힌다.
5. **점수 표기 정합성.** scoreDiscovery 계산값은 50/C(44.1/89, 검증 32/36)인데 재채점 커밋 메시지가 49로 기록됐다. 산출물 숫자는 항상 계산값을 따른다 (2026-09-01 덱·문서 일괄 교정 완료).

143
docs/AEO_GEO_RUBRIC_v2.md Normal file
View File

@ -0,0 +1,143 @@
# INFINITH AI Discovery 채점 기준표 v2.0 · AEO / GEO 분리 지표
> 코드 원본: `src/data/aeoGeoRubricV2.ts` · 집계: `src/lib/discoveryScoreV2.ts` · 타입: `src/types/discovery.ts` (v2 블록)
> 상태: **active** (2026-09-07). v1.0(36항목 종합 100점)은 유지하며 두 점수를 나란히 표시한다. 이 문서는 코드에서 생성한다(`npx tsx scripts/gen_rubric_v2_doc.ts`).
## 설계
- AEO 답변 준비도(100): 고객의 질문에 얼마나 명확하고 충분하게 답하는가.
- GEO 출처 준비도(100): 그 답을 얼마나 검증하고 신뢰할 수 있는 출처로 사용할 수 있는가.
- 같은 평가 항목을 두 점수에 중복 배정하지 않는다. v1.0 실측 항목 36개도 한 곳에만 매핑한다(아래 매핑표, 중복 0·미매핑 0을 스크립트로 검사).
- 이 배점은 INFINITH 제품용 진단 기준이며, 검색엔진의 공식 점수나 인용 확률이 아니다.
- 항목 점수 = 파생 신호(v1.0 실측 레벨 0~3)의 가중 평균. 사람 판정(`v2Results`)이 있으면 우선. 미검증은 분모 제외.
- 게이트는 점수가 아니라 상한이다. 크롤러 차단·본문 미렌더면 두 축 모두 40 이하로 표시한다.
- v1.0의 측정 인프라(E)·기술 위생 일부(F)·속도·hreflang·오픈웹 언급은 점수 밖 부가 지표로 남긴다.
- 등급 경계는 v1.0과 같다: A(81+) · B(61–80) · C(41–60) · D(≤40).
## AEO · 답변 준비도 (Answer Readiness) · 100
고객의 질문에 얼마나 명확하고 충분하게 답하는가?
| ID | 항목 | 배점 | 채점 | v1.0 파생 신호(비중) | 확인 방법 | 3점 기준 |
|---|---|---|---|---|---|---|
| AEO1 | 질문 수요 충족 | 20 | 반자동 | C2 FAQ 섹션(1) | 질문 뱅크(업종별 7카테고리) 대비 답이 있는 문항 비율. 자동 신호는 FAQ 섹션·FAQPage 스키마(C2). 사람 판정은 QB 실측 결과로 덮어쓴다 | 카테고리 전반에 답, 문항 60% 이상 |
| AEO2 | 답변의 직접성 | 20 | 반자동 | C1 정의문형 첫 문단(1) | 핵심 페이지 첫 200자에 [상호+지역+전문분야] 정의문 또는 질문에 대한 직접 답 존재(C1) | 전 핵심 페이지가 답으로 시작 |
| AEO3 | 답변 단위의 자기완결성 | 15 | 사람 | C8 패시지 자기완결성(1) | 핵심 페이지 단락 샘플 10개 중 상호·시술명이 포함된 비율(C8) | 80% 이상 |
| AEO4 | 의사결정에 필요한 정보 | 15 | 반자동 | C4 구체 수치 (가격·시간·회복)(0.6), C5 표·비교 구조(0.4) | 시술 페이지의 수치 밀도(C4)와 HTML 표·비교 구조(C5) | 시술별 수치 + 비교표 |
| AEO5 | 정보 구조와 가독성 | 10 | 자동 | C3 제목 계층 의미성(1) | H1 1개·서술형, H2 논리 계층, 중복 H2 비율(C3) | H1 1개 서술형, H2 논리 계층 |
| AEO6 | 다음 행동의 명확성 | 10 | 사람 | 없음 (사람 판정) | 핵심 페이지에서 예약 경로·전화·위치가 본문 텍스트로 연결되는지. 팝업·이미지 버튼만 있으면 감점. v1.0에 대응 항목이 없어 사람 판정 | 전화·예약·방문 3경로가 텍스트로 |
| AEO7 | 핵심 답변의 텍스트 추출 | 5 | 자동 | A3 서버 렌더링 본문(0.6), F1 이미지 대체텍스트(0.4) | JS 미실행 HTML 본문 비율(A3) + 이미지 alt 누락률(F1) | 80% 이상 + alt 정비 |
| AEO8 | 사이트 내 답변 발견 | 5 | 자동 | A5 sitemap.xml 제공(0.6), B6 canonical·중복 제거(0.4) | sitemap 선언·lastmod(A5) + canonical 정합(B6) | + lastmod 최신·파라미터 정리 |
## GEO · 출처 준비도 (Source Readiness) · 100
그 답을 얼마나 검증하고 신뢰할 수 있는 출처로 사용할 수 있는가?
| ID | 항목 | 배점 | 채점 | v1.0 파생 신호(비중) | 확인 방법 | 3점 기준 |
|---|---|---|---|---|---|---|
| GEO1 | 주장과 근거의 일치 | 20 | 사람 | 없음 (사람 판정) | 핵심 페이지의 주장 문장 샘플 10개 중 출처·조건·시점이 붙은 비율. "1위·최다·안전" 류 주장에 기준 시점·집계 주체가 있는지. v1.0에 대응 항목이 없어 사람 판정 | 전부 원문 링크·시점·조건 명시 |
| GEO2 | 출처의 적합성과 추적성 | 15 | 자동 | A4 HTTPS·리다이렉트 정합(1) | http/www 변형의 301 정본 수렴(A4). 사람 판정으로 페이지 URL 안정성·작성자·발행일 표기 추가 | 전부 301 정본 수렴 |
| GEO3 | 전문성과 책임 주체 | 15 | 반자동 | C7 전문가 E-E-A-T (의료진 / 변호사)(0.6), B3 전문가 스키마 (Physician / Attorney)(0.4) | 전문가 자격·경력 텍스트(C7) + Physician/Attorney 스키마(B3) | + 스키마·sameAs·검토 표기 |
| GEO4 | 병원 엔티티와 사실의 정합성 | 15 | 반자동 | B2 업종 엔티티 스키마 (MedicalClinic / LegalService / LocalBusiness)(0.2), B4 NAP 사이트 내 일관성(0.15), B5 sameAs 연결(0.1), D1 업종 버티컬 프로필 (병의원: 강남언니 / 법률: 로톡)(0.2), D2 Google 비즈니스 프로필(0.1), D4 표면 간 NAP 완전 일치(0.15), D5 네이버 플레이스 (AI 브리핑 전용)(0.05), D6 위키데이터/위키백과 엔티티(0.05) | 업종 스키마(B2)·사이트 내 NAP(B4)·sameAs(B5)·버티컬 프로필(D1)·GBP(D2)·표면 간 NAP(D4)·플레이스(D5)·Wikidata(D6) | 전 표면 NAP 완전 일치 + 스키마 연결 |
| GEO5 | 사실의 최신성과 정정 | 10 | 자동 | C6 신선도 신호(1) | dateModified·sitemap lastmod·본문 갱신일(C6). 사람 판정으로 확인일 병기·정정 기록 페이지 유무 추가 | 3개월 이내 + 확인일·정정 기록 |
| GEO6 | 원천 대비 추가 가치 | 10 | 사람 | 없음 (사람 판정) | 홈페이지·타 사이트 문장과의 40자 연속 일치율, 원천 콘텐츠 5유형(체크리스트·조건 표·협진 동선·발언 인용·실측) 유무. 공식 홈페이지 자체를 진단할 때는 "제조사·학회 자료를 옮기지 않고 병원 고유 정보를 썼는가"로 본다 | 체크리스트·표·실측 등 원천 유형 3개 이상 |
| GEO7 | 발행 관계와 투명성 | 10 | 사람 | 없음 (사람 판정) | 운영 주체·연락처·사업자 정보, 경제적 이해관계 고지(첫 부분), 후기·이벤트가 정보와 구분되는지. 공정위 추천·보증 심사지침 기준 | 고지가 첫 부분에, 정보·광고 구분 명확 |
| GEO8 | 인용 식별자와 메타데이터 정합성 | 5 | 자동 | B1 JSON-LD 문법 유효성(1) | ld+json 전 블록 파싱 성공(B1). 사람 판정으로 headline·dateModified·author가 화면과 일치하는지 추가 | 전부 유효 + 화면과 일치 |
## 게이트 (상한)
| ID | 이름 | v1.0 항목 | 실패 조건 | 상한 | 적용 축 | 이유 |
|---|---|---|---|---|---|---|
| G1 | AI 크롤러 접근 | A1, A2 | level ≤ 1 | 40 | AEO·GEO | 검색용 AI 봇이 차단되거나 CDN이 챌린지를 걸면 답도 출처도 될 수 없다. 점수 대신 상한 40으로 표시한다. |
| G2 | 본문 렌더링 | A3 | level ≤ 0 | 40 | AEO·GEO | JS 미실행 HTML에 본문이 없으면 크롤러에게 빈 페이지다. |
## 점수 밖 부가 지표
| v1.0 항목 | 그룹 |
|---|---|
| A6 Bing 색인 (ChatGPT 검색 경로) | 색인·발견 |
| A7 응답 속도·크롤 예산 | 속도·크롤 예산 |
| B7 다국어 hreflang | 다국어 |
| D3 오픈웹 언급 (티스토리·유튜브·언론) | 오픈웹 언급 |
| E1 AI 크롤러 로그 (IP 검증) | 측정 인프라 |
| E2 GA4 AI 유입 채널 | 측정 인프라 |
| E3 GSC AI Overviews 노출 | 측정 인프라 |
| E4 기준선 스팟체크 | 측정 인프라 |
| F2 CMS 보안·최신성 | 기술 위생 |
| F3 페이지 무게 | 기술 위생 |
| F4 모바일 대응 | 기술 위생 |
## v1.0 → v2.0 매핑표 (36항목 전수)
| v1.0 | 항목 | 배점 | v2.0 위치 |
|---|---|---|---|
| A1 | 검색용 AI 봇 허용 | 5 | G1 |
| A2 | CDN/WAF AI 차단 없음 | 3 | G1 |
| A3 | 서버 렌더링 본문 | 3 | AEO7, G2 |
| A4 | HTTPS·리다이렉트 정합 | 2 | GEO2 |
| A5 | sitemap.xml 제공 | 3 | AEO8 |
| A6 | Bing 색인 (ChatGPT 검색 경로) | 3 | aux:색인·발견 |
| A7 | 응답 속도·크롤 예산 | 1 | aux:속도·크롤 예산 |
| B1 | JSON-LD 문법 유효성 | 3 | GEO8 |
| B2 | 업종 엔티티 스키마 (MedicalClinic / LegalService / LocalBusiness) | 5 | GEO4 |
| B3 | 전문가 스키마 (Physician / Attorney) | 3 | GEO3 |
| B4 | NAP 사이트 내 일관성 | 3 | GEO4 |
| B5 | sameAs 연결 | 2 | GEO4 |
| B6 | canonical·중복 제거 | 2 | AEO8 |
| B7 | 다국어 hreflang | 2 | aux:다국어 |
| C1 | 정의문형 첫 문단 | 4 | AEO2 |
| C2 | FAQ 섹션 | 4 | AEO1 |
| C3 | 제목 계층 의미성 | 3 | AEO5 |
| C4 | 구체 수치 (가격·시간·회복) | 4 | AEO4 |
| C5 | 표·비교 구조 | 2 | AEO4 |
| C6 | 신선도 신호 | 3 | GEO5 |
| C7 | 전문가 E-E-A-T (의료진 / 변호사) | 3 | GEO3 |
| C8 | 패시지 자기완결성 | 2 | AEO3 |
| D1 | 업종 버티컬 프로필 (병의원: 강남언니 / 법률: 로톡) | 6 | GEO4 |
| D2 | Google 비즈니스 프로필 | 4 | GEO4 |
| D3 | 오픈웹 언급 (티스토리·유튜브·언론) | 4 | aux:오픈웹 언급 |
| D4 | 표면 간 NAP 완전 일치 | 3 | GEO4 |
| D5 | 네이버 플레이스 (AI 브리핑 전용) | 2 | GEO4 |
| D6 | 위키데이터/위키백과 엔티티 | 1 | GEO4 |
| E1 | AI 크롤러 로그 (IP 검증) | 3 | aux:측정 인프라 |
| E2 | GA4 AI 유입 채널 | 3 | aux:측정 인프라 |
| E3 | GSC AI Overviews 노출 | 2 | aux:측정 인프라 |
| E4 | 기준선 스팟체크 | 2 | aux:측정 인프라 |
| F1 | 이미지 대체텍스트 | 2 | AEO7 |
| F2 | CMS 보안·최신성 | 1 | aux:기술 위생 |
| F3 | 페이지 무게 | 1 | aux:기술 위생 |
| F4 | 모바일 대응 | 1 | aux:기술 위생 |
## 재채점 결과 (2026-09-07)
| 업체 | v1.0 종합 | v2.0 AEO | v2.0 GEO | 게이트 | 비고 |
|---|---|---|---|---|---|
| 뷰성형외과 (viewclinic) | 54/C | 42/C (검증 8/8) | 56/C (검증 8/8) | G1 통과 · G2 통과 | 사람 판정 4개 |
| 법무법인 태하 (taeha) | 68/B | 40/D (검증 7/8, 상한 적용) | 40/D (검증 5/8, 상한 적용) | G1 실패(A2) · G2 통과 | 사람 판정 0개 |
### 뷰성형외과 항목별
| 항목 | 배점 | 점수 | 근거 | 신호 |
|---|---|---|---|---|
| AEO1 질문 수요 충족 | 20 | 13.3 (67%) | v1 파생 | C2=2 |
| AEO2 답변의 직접성 | 20 | 0 (0%) | v1 파생 | C1=0 |
| AEO3 답변 단위의 자기완결성 | 15 | 5 (33%) | v1 파생 | C8=1 |
| AEO4 의사결정에 필요한 정보 | 15 | 6 (40%) | v1 파생 | C4=2, C5=0 |
| AEO5 정보 구조와 가독성 | 10 | 0 (0%) | v1 파생 | C3=0 |
| AEO6 다음 행동의 명확성 | 10 | 10 (100%) | 사람 판정 | 모든 페이지 하단에 전화 02-539-1177·주소·온라인 상담 폼이 텍스트로 반복되고(수집기 반복 줄), /counsel/reservation/ 예약 페이지와 카카오톡 채널 링크가 있다. 전화·예약·방문 3경로가 텍스트로 연결됨 |
| AEO7 핵심 답변의 텍스트 추출 | 5 | 3.7 (73%) | v1 파생 | A3=3, F1=1 |
| AEO8 사이트 내 답변 발견 | 5 | 4.3 (87%) | v1 파생 | A5=3, B6=2 |
| GEO1 주장과 근거의 일치 | 20 | 6.7 (33%) | 사람 판정 | "모티바 보형물 국내 사용량 1위(2023, 모티바코리아 전체 수술량 기준)"처럼 집계 주체·시점이 붙은 주장이 일부 있으나, 모티바 그랜드 어워드·KOL·렛미인 등 대부분의 권위 신호는 이미지·슬로건 안에 있고 원문 링크가 없다. "마취과 전문의 상주 43% vs 23.1%" 비교는 출처·기준 시점 없음 |
| GEO2 출처의 적합성과 추적성 | 15 | 15 (100%) | v1 파생 | A4=3 |
| GEO3 전문성과 책임 주체 | 15 | 6 (40%) | v1 파생 | C7=2, B3=0 |
| GEO4 병원 엔티티와 사실의 정합성 | 15 | 7 (47%) | v1 파생 | B2=1, B4=1, B5=0, D1=3, D2=2, D4=1, D5=2, D6=0 |
| GEO5 사실의 최신성과 정정 | 10 | 10 (100%) | v1 파생 | C6=3 |
| GEO6 원천 대비 추가 가치 | 10 | 6.7 (67%) | 사람 판정 | 수술 전·후 주의사항(부위별 8탭, 9,585자)·애프터케어 프로그램(4,572자)·검진센터 항목·안전수술시스템 절차는 병원 고유 정보다. 다만 표·체크리스트 형태가 없고(C5=0) 회복 일정은 문단에 흩어져 있다 |
| GEO7 발행 관계와 투명성 | 10 | 3.3 (33%) | 사람 판정 | 푸터에 대표·사업자등록번호·주소가 있어 운영 주체는 분명하다. 그러나 홈페이지에 게시한 후기 광고가 수술비 할인 대가를 표시하지 않아 2026-07-12 공정위 시정명령·공표명령을 받았고, 이벤트·전후·후기 섹션이 정보 페이지와 구분 없이 섞여 있다 |
| GEO8 인용 식별자와 메타데이터 정합성 | 5 | 1.7 (33%) | v1 파생 | B1=1 |
## 해석 주의
- v1.0 54/C(뷰성형외과)는 접근성·엔티티·콘텐츠·표면·측정을 한 점수로 합친 값이고, v2.0은 "답을 하는가"와 "출처가 되는가"를 나눈 값이라 서로 비교하지 않는다.
- 사람 판정 항목(AEO6·GEO1·GEO6·GEO7)은 2026-09-07 수집기 원문을 근거로 한 초안이며 병원 확인 전이다.
- 서포터즈 사이트를 같은 기준으로 채점하면 GEO 항목(근거 유형·검토자·확인일·정정 기록·지원 고지)이 설계 그대로 반영된다. 공식 홈페이지 vs 서포터즈 비교표는 이 기준으로 다시 만든다.

View File

@ -28,7 +28,7 @@ docs/AI_DISCOVERY_BUILD2_HANDOVER.md 를 읽고 AI 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_POC_Proposal.pptx/.pdf` (10장) |
| 영업 자료 | POC 제안서 `docs/reports/viewclinic/02_poc_proposal/Viewclinic_POC_Proposal.pptx/.pdf` (10장) |
## 2. 확정 결정 (2026-08-31 haewon)
@ -123,3 +123,11 @@ auto 22항목 중 **18항목 기존 실측(2026-08-28)과 일치**. 불일치 4
- 단발 조회 보고
- 답변엔진 소비자 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 표면 범위 확대, 엔진별 판정, 브랜드/논브랜드 축, 점수 표기 정합성).

View File

@ -10,7 +10,7 @@
```
docs/AI_DISCOVERY_FRONTEND_HANDOVER.md 를 읽고 AI Discovery 랜딩 페이지를 프로덕트에 구현해줘.
- 시안: docs/reports/ai_discovery_landing.html (픽셀 기준, 이 파일이 정답)
- 시안: docs/reports/landing/ai_discovery_landing.html (픽셀 기준, 이 파일이 정답)
- 라우트: /discovery (index) 신규, 기존 /discovery/:id 리포트 페이지와 공존
- 재사용: Navbar/Footer(BI 워드마크), ScoreRing, Solution.tsx의 루프 다이어그램 구조(AGDP → ABMR 워딩)
- 데이터: src/data/discovery_viewclinic.ts + src/lib/discoveryScore.ts 실측값만 사용, 수치 하드코딩 금지
@ -25,10 +25,10 @@ docs/AI_DISCOVERY_FRONTEND_HANDOVER.md 를 읽고 AI Discovery 랜딩 페이지
| 산출물 | 경로 | 상태 |
|---|---|---|
| 랜딩 시안 (단일 HTML, 픽셀 정답) | `docs/reports/ai_discovery_landing.html` | 확정 |
| 랜딩 스크린샷 (덱 삽입용) | `docs/reports/shots/land_hero.png`, `land_report.png` | 확정 |
| POC 제안서 덱 (10장) | `docs/reports/Viewclinic_POC_Proposal.pptx` / `.pdf` | 확정 |
| 덱 빌드 스크립트 | `docs/reports/build_viewclinic_poc_deck.py` | 재실행 가능 |
| 랜딩 시안 (단일 HTML, 픽셀 정답) | `docs/reports/landing/ai_discovery_landing.html` | 확정 |
| 랜딩 스크린샷 (덱 삽입용) | `docs/reports/landing/shots/land_hero.png`, `land_report.png` | 확정 |
| POC 제안서 덱 (10장) | `docs/reports/viewclinic/02_poc_proposal/Viewclinic_POC_Proposal.pptx` / `.pdf` | 확정 |
| 덱 빌드 스크립트 | `docs/reports/viewclinic/02_poc_proposal/build_viewclinic_poc_deck.py` | 재실행 가능 |
시안 HTML은 외부 의존성이 Google Fonts(Playfair Display, Noto Sans KR) 하나뿐인
단일 파일이다. 랜딩을 수정하면 스크린샷 재캡처 → 덱 리빌드 순서로 갱신한다
@ -83,7 +83,7 @@ docs/AI_DISCOVERY_FRONTEND_HANDOVER.md 를 읽고 AI Discovery 랜딩 페이지
## 7. 완료 기준·배포
- `npm run lint` (tsc --noEmit) 통과.
- 1440px에서 `/discovery`가 `docs/reports/ai_discovery_landing.html`과 시각적으로 일치.
- 1440px에서 `/discovery`가 `docs/reports/landing/ai_discovery_landing.html`과 시각적으로 일치.
- 390px에서 2열 그리드가 1열로 접히고 헤드라인이 줄바꿈 깨짐 없이 표시.
- 배포: `git push` 후 `vercel --prod` 수동 실행 (Gitea 자동 트리거 없음).

View File

@ -0,0 +1,159 @@
# INFINITH AI Discovery 회고 · 2026-08-26 ~ 2026-09-08
작성 2026-09-08 · 작성자 Claude (haewon 세션 기록 기준) · 상태: v1.1 (haewon 2026-09-08 §2 기존 서비스 정의 수정 반영). 확정 전.
범위: INFINITH 의 사업 확장·피봇 결정부터 AI Discovery 진단, 뷰성형외과·원진성형외과 분석·설계, 서포터즈 사이트 수작업 빌드, 자동 빌드 파이프라인 구현과 두 병원 검증까지. 사실은 저장소 커밋·문서·메모리에 남은 것만 쓴다. 추정은 추정이라고 적는다.
---
## 1. 한 줄 요약
"병원이 AI 답변에 안 나온다"는 문제를, 병원 홈페이지를 고치는 대신 **병원이 지원하는 별도 매체(서포터즈 사이트)를 원문 출처로 세우는 방식**으로 풀기로 했고, 그 매체를 병원 이름 하나로 자동 빌드하는 파이프라인을 만들어 두 병원에서 사람 개입 없이 완주시켰다. 자동화가 못 하는 것은 셋으로 좁혀졌다. 병원만 아는 사실의 입력, 원장의 의학 검토와 개설자의 게시 승인, 실존 개인 서포터즈.
---
## 2. 배경과 동기
INFINITH 는 성형외과의 종합적인 Online Presence, SNS·검색 채널을 분석해 전략마케팅 리포트를 내는 서비스였다. 2026년 8월 말, 두 가지 사실이 방향을 바꿨다.
1. **네이버 자산은 글로벌 AI 답변에 기여하지 않는다.** 2026-08-26 실측에서 네이버 블로그·플레이스·카페가 robots.txt 로 AI 크롤러를 전면 차단하고 있음을 확인했다. 병원들이 예산을 쏟는 네이버 마케팅이 ChatGPT·Perplexity·Gemini 답변에는 닿지 않는다. 네이버 AI 브리핑만 별도 트랙이다.
2. **병원 홈페이지는 읽을 수는 있어도 인용할 근거가 없다.** 2026-08-28 뷰성형외과 진단에서 크롤러 접근은 열려 있었지만, 정의문·FAQ·표·의료진 스키마가 없고 주소 표기가 3종이었다. "차단"이 아니라 "내용"이 문제였다.
여기서 사업 방향이 "온라인 프리젠스 종합 분석 및 마케팅 채널 분석 리포트와 전략 기획"에서 **"AI 답변엔진에 인용될 원문을 만들어 주는 것(AEO/GEO)"** 으로 확장됐다. 진단(AI Discovery)은 입구이고, 서포터즈 사이트가 처방이다.
왜 홈페이지를 고치지 않고 별도 매체인가. 홈페이지 수정은 병원 개발사·의사결정에 막혀 느리고, 슬라이더·이미지 글자 구조를 바꾸기 어렵다. 별도 도메인은 병원 사이트를 건드리지 않고, MedicalClinic·Person 스키마와 sameAs 로 같은 엔티티에 묶이며, 원문 텍스트를 계속 공급할 수 있다. 다만 병원 지원을 받는 매체라 의료광고로 본다는 전제에서 설계해야 했다(§7).
---
## 3. 타임라인
| 날짜 | 일 | 근거 |
| --- | --- | --- |
| 08-26 | 네이버 robots 가 AI 크롤러 차단 확인. 오픈웹 자산 필요성 확정 | 메모리 |
| 08-28 | 뷰성형외과 1차 진단(기준표 v1.0, 36항목) 50/C | `discovery_viewclinic.ts` |
| 08-31 ~ 09-01 | 자동 채점기 `audit_aeo_geo.py`, 질문 뱅크 120문항 2엔진 실측(논브랜드 언급률 ChatGPT 11%, Perplexity 3%) | `docs/reports/viewclinic/03_question_bank` |
| 09-04 | 서포터즈 샘플 v1→v3 수작업 빌드(글 8편, 이미지 92장, 뉴스룸 1,137건, 영상 집계). 첫 룩앤필 거부 → INFINITH 토큰. 공정위 뒷광고 사건 발견 | 메모리, `supporters/` |
| 09-07 | v4(글 18편, 고객용 화법 분리, 신뢰 층). 기준표 v2.0 AEO/GEO 분리 채택. 핸드오버 v2. 게이트 확장·템플릿화·근거 수집기·글 생성기·승인 UI·워커 | 커밋 49c5e46~7e515b7 |
| 09-07 밤 | 결정 4건(탭 제거·$10·원진·워커 위치). 원진 회귀 3회 실패 후 인터넷 끊김 | 커밋 ee8c06f |
| 09-08 | 원진 완주·배포, 유튜브·로고, 이미지(법 기준), 원진 진단 리포트 HTML/PDF, 채널 발견·엔티티 검증, 기준 채널 고정 | 커밋 572978c~d1b22b9 |
세션 수는 대략 6번, 저장소 커밋은 08-25 이후 69건이다.
---
## 4. 무엇을 만들었나
### 4-1. 진단 (AI Discovery)
기존 INFINITH 리포트(온라인 프리젠스·마케팅 채널 분석과 전략 기획)의 앞단에 붙는 진단이다. 채널 분석이 "어디에 얼마나 있는가"를 봤다면, AI Discovery 는 "AI 가 그것을 읽고 인용할 수 있는가"를 본다. 같은 병원 데이터(채널·수치)를 쓰되 판정 기준이 다르다.
- 기준표 v1.0: 36항목(A 접근성·B 엔티티·C 콘텐츠·D 표면·E 측정·F 위생), 0~3 레벨, 미검증은 분모 제외.
- 기준표 v2.0: 같은 실측을 **AEO 답변 준비도 8항목 / GEO 출처 준비도 8항목** 두 축 100점으로 재집계. 치명 게이트(크롤러 차단 등)에 상한.
- 자동 채점기(auto 21~22항목) + 사람 보정(semi·manual) → `/discovery/:id` 리포트 페이지, 독립 HTML/PDF 리포트 빌더.
- 질문 뱅크 120문항(7카테고리)과 2엔진 실측 러너.
### 4-2. 서포터즈 사이트 (수작업 정답지)
- Astro 정적, INFINITH 디자인 토큰, 글 18편(세 줄 요약 → 본문 → 영상 → 갤러리 → FAQ → 검토 박스 → 참고 자료 → 갱신 기록 → 병원 정보 → 고지), 팩트 시트 단일 원본, Person·Physician·MedicalClinic·Article·FAQPage 스키마, noindex 기본.
- 발행 게이트: JSON-LD·alt·H1·금칙어·홈페이지 40자 연속 일치 → v2 §3 의 검사 11종(운영자 어휘·근거 유형·결론 단정·확인일 일관성·검토자·영상 제목·비교 수치·승인·고지 위치).
### 4-3. 자동 빌드 파이프라인 (워커)
이름 또는 URL → 채널 발견·엔티티 검증 → 근거 수집(223p) → 팩트 시트·의료진 초안 → 유튜브 집계·로고·파비콘 → 이미지(법 기준 필터) → 첫 배치 기획 → GPT-4.1 생성(수치 대조·근거 대조·수정 2회) → 빌드·게이트 → Vercel 미리보기 → 병원 입력 폼 → 입력 반영 재빌드.
---
## 5. 문제, AI 의 첫 대응, haewon 의 피드백, 달라진 것
| # | 문제 | AI 가 처음 한 것 | haewon 피드백 | 달라진 것 |
| --- | --- | --- | --- | --- |
| 1 | 산출물 형식 | 티켓 문의서를 Artifact 로 발행 | "워드 문서를 기대했다", 전량 재작업 | 전역 규칙: 지시 없으면 로컬 파일. 이번 회고도 md 로컬 파일 |
| 2 | 1차 진단 오판 3건(블로그 정지·FAQ 0·수치 없음) | 요약 도구(WebFetch)와 URL 2개 표본으로 판정 | 09-07 재검증 요청 | 실측 규칙: 원본 HTML 파서로만, 표본 5개 URL 이상. 50→54 정정 |
| 3 | 서포터즈 첫 룩앤필(녹색 에디토리얼) | 매체다운 별도 디자인 | 거부, INFINITH 토큰으로 | 서포터즈도 INFINITH 토큰. 텍스트 많은 블록은 그라디언트 금지 |
| 4 | "내용이 부실하다" | 텍스트 위주 글 8편 | 이미지·유튜브 임베드 기본, 병원 자산은 파트너십 전제 | 홈페이지 이미지 92장, 글마다 영상·갤러리 |
| 5 | "사이트가 제안서처럼 읽힌다" | 홈에 "답변엔진 인용", "질문 뱅크 120문항" 노출 | 고객은 그 논리를 볼 이유가 없다 | 고객/운영자 화면 분리. 운영자 어휘는 게이트 오류 |
| 6 | 화법 수정 중 룩앤필까지 바뀜 | 섹션 구조·영어 헤딩·통계 블록 재설계 | "돌려놓고 텍스트만" | 확정 디자인은 텍스트만. 구조 지문 검사 |
| 7 | 카드 제목 "합니다/밝힙니다", 덱 제목 반말 | 영어 직역 화법 | 명사구, 고객용은 존댓말 | 규칙 + 게이트 경고(HEADING_VERB·PLAIN_ENDING) |
| 8 | 근거 없는 수치(출근 시점·지속 기간·재수술 시점) | 홈페이지 없으면 일반 지식으로 채움 | 없는 것은 없다고 | 근거 프로토콜 §4, "자료에 없음/병원 확인 대기". 생성기 수치 대조 + 근거 대조 |
| 9 | 영상 출연 원장을 감수자로 자동 표기 | 영상에 나왔으니 감수로 | 검토는 사람이 확정 | 검토자·검토일은 병원 입력. reviewedBy 스키마는 reviewed 일 때만 |
| 10 | 외부 개선안(Astra 44건, Codex 평가) | 전부 반영 시도 | 사실 지적만 수용, 기획 취향은 반려 | 수용 기준 3갈래(사실/구조/취향) |
| 11 | 공정위 뒷광고 사건(2026-07-12, 뷰 포함 3곳) 발견 | 뉴스룸에 넣을지 판단 | 보고 후 제외 | 후기 인용 금지·대가 고지의 근거가 됨. 경제적 이해관계 고지를 글 첫 부분으로(제안) |
| 12 | 자동 빌드 미리보기 카드에 검은 도형 | 자산 없으면 프레임워크 파비콘으로 대체 | "이런 이미지는 뭐지, 원진은 사진 없어?" | 유튜브·이미지 단계 추가, 카드 대체는 병원 로고 |
| 13 | 전후 사진 거르는 규칙 | 전후 사진 전부 제외 | 법 기준으로, 파트너라 자산은 쓰되 법에 걸리지 않게 | 의료법 56조 2항·심의 기준·초상권을 이미지 규칙표로. 조건을 자동 확인 못 하는 것만 제외 |
| 14 | 원진 유튜브 공식 채널 2개 | 구독자 많은 쪽 자동 선택 | 설명 영상 736편 채널로 고정 | 병원별 고정값 파일, 자동 선택 기준을 영상 수로 |
| 15 | 워커 위치 | 선택지 4개 제시 | "난 비개발자야, 네가 추천" | Mac 폴러(파일럿) → Trigger.dev(정착), haewon 은 가입·키만 |
AI 쪽에서 스스로 잡은 문제도 있었다. 생성기 근거 대조기가 "근거에 명시되어 있음"이라고 적으면서 플래그를 세우는 오탐(항목별 supported 판정으로 해결), 안전 페이지의 "병원급 평균 23.1% vs 43%" 비교 수치를 모델이 그대로 옮긴 것(COMPARISON_CLAIM 게이트 신설), 영상 제목 "부작용은 없을까?"가 게이트에 걸려 배포가 막힌 것(수집 단계에서 같은 규칙 적용), 채널 탐색에서 홈페이지 역링크를 부분 문자열로 인정해 변형 핸들이 전부 확인됨으로 잡힌 것(경로 경계 정규식으로 해결), 투명 PNG 글자 이미지 검사 순서.
---
## 6. ChatGPT 의견으로 AEO 와 GEO 를 분리한 뒤 달라진 것
v1.0 은 36항목을 하나의 점수로 합쳤다. 뷰성형외과 54/C 는 "중간쯤"으로 읽혀 무엇을 먼저 고칠지 말해 주지 않았다. ChatGPT 의견을 받아 **답변 준비도(AEO: 질문에 얼마나 명확하게 답하는가)** 와 **출처 준비도(GEO: 그 답을 얼마나 믿을 수 있는 출처로 쓸 수 있는가)** 를 각 100점으로 나눴다(기준표 v2.0, 2026-09-07 채택).
| 병원 | v1.0 종합 | AEO | GEO | 읽히는 처방 |
| --- | --- | --- | --- | --- |
| 뷰성형외과 | 54 / C | 42 / C | 56 / C | "답은 부족하고 출처로는 절반쯤". 프리저베 페이지의 FAQ·수치 구조를 다른 시술 페이지로 확산 |
| 원진성형외과 | 49 / C | 15 / D | 45 / C | 종합은 뷰와 비슷하지만 답변 준비도가 D. H1·표·FAQ·정의문이 전부 없다. 엔티티(sameAs 10개)는 오히려 낫다 |
같은 C 등급 두 병원이 분리하면 다른 병원이 된다. 원진은 콘텐츠 구조부터, 뷰는 엔티티·표면 정합부터다. 서포터즈 사이트의 역할도 달라진다. 원진은 사이트가 첫 "답"이 되고, 뷰는 "출처"를 보강한다. 리포트와 덱의 제목("답은 부족하고, 출처로는 절반쯤 됩니다")이 이 분리에서 나왔다.
외부 AI 는 셋을 썼다. ChatGPT(기준 설계 의견), Codex(공식 70.5 vs 서포터즈 76.5 비교 평가, GEO 67.5 열세 지적), Astra(개선안 44건). 셋 다 "무엇을 고칠지"에는 쓰고 "효과가 얼마인지"의 근거로는 쓰지 않았다(v2 §3-9).
---
## 7. 확인된 명제와 조건
**확인된 것**
1. 원래 홈페이지를 그대로 둔 채, 엔티티 충돌 없이 서포터즈 사이트를 세울 수 있다. MedicalClinic `@id` 를 홈페이지 URL 로 두고, sameAs 를 확인된 채널로 채우며, 주소·전화를 팩트 시트 한 곳에서만 쓰고, Person(작성자)·Physician(검토 원장)을 분리하면 된다. 원진 라이브 sameAs 4개 확인.
2. 지속적인 콘텐츠 업데이트는 자동화된다. 이름 하나로 6편, 병원당 $0.3~0.6, 10~30분, 사람 개입 0. 정답지 18편 회귀 18/18, 원진 6/6 게이트 통과. 근거 없는 수치는 수치 대조와 근거 대조로 0건을 목표로 검사한다(사람 확인용 플래그는 남는다).
3. 병원 입력이 비어 있어도 "확인 대기"로 발행되고, 입력하면 코드 수정 없이 검토 완료·스키마가 켜진다.
**조건 (없으면 안 되는 것)**
1. **의료법·의료광고 규정 준수.** 의료법 56조 2항(치료경험담 2호, 비교 4호, 수술 장면 6호, 부작용 누락 7호, 과장 8호, 기사·전문가 형태 10호, 인증·보증 14호)을 게이트와 이미지 규칙으로 막는다. 의료광고 주체는 의료기관 개설자이고 AI오투오는 제작·운영 대행이다. 자체 도메인은 57조 사전심의 대상이 아니지만 네이버 재작성본은 게시물별 심의 대상이다. 경제적 이해관계는 글 첫 부분에 표시한다(추천·보증 심사지침). 공정위가 2026-07 뷰성형외과 포함 3곳에 후기 뒷광고 시정명령을 내렸으므로 같은 유형은 가중된다. 이 문서의 법 해석은 자문이 아니며 계약 전 변호사 확인이 필요하다.
2. **서포터즈는 실존 개인이어야 유리하다.** Person 스키마의 sameAs(인터뷰·프로필), 편집 책임·정정 경로, 갱신 기록이 GEO 출처 신호의 절반이다. 가명 2명(v3)에서 실명 1명(안성민 대표, v4)으로 바꾼 것이 Codex 평가에서 GEO 열세를 줄인 항목이었다. 자동 빌드는 작성자를 "확인 대기"로 두고 병원·운영자 입력으로 채운다.
3. **원장·의사 검수 파이프라인이 있어야 한다.** 검토자·검토일·개설자 승인은 사람 게이트다. 폼 → supporter_inputs → apply_inputs → 재빌드 → 색인 허용 빌드에는 승인 글만 나가는 경로까지 만들었다. 병원 쪽에 담당자와 주기가 정해져야 실제로 돈다. 검토 병목이 곧 발행 속도의 상한이다.
---
## 8. haewon 이 적지 않았지만 회고에 넣어야 할 것
1. **측정 인프라가 0 이다.** E 카테고리(서버 로그 AI 크롤러 히트, GA4 AI 유입, GSC AI Overviews, 기준선 스팟체크)는 두 병원 모두 0/4 미검증이다. 답변엔진 UI 자동 조회는 약관 위반이라 주력 측정은 오너가 소유한 신호여야 하는데, 그 접근권을 아직 받지 못했다. "효과가 났다"를 말할 근거가 지금은 없다.
2. **네이버는 별도 트랙이다.** 글로벌 AI 에 기여 0 이지만 국내 환자의 실제 검색은 네이버다. 허브(자체 도메인 원문) 선발행 후 네이버 블로그 60% 이하 재작성 2트랙 설계는 문서로만 있고 구현하지 않았다. 네이버 트랙은 게시물별 심의 대상이다.
3. **자막이 없다.** youtube_transcript_api 가 25편 후 IP 차단됐다. 자동 빌드 글이 뷰 정답지보다 얇은 첫째 이유다. 영상 발언은 사람이 정리한 쇼츠 답만 쓴다.
4. **이미지는 육안 확인이 남는다.** 파일명·alt·흰 배경 휴리스틱으로 거르고 얼굴·신체 검출은 없다. 병원 송부 전 갤러리를 한 번 훑어야 한다.
5. **사이트 편차는 병원마다 새로 나온다.** 원진에서 UA 403, 슬래시 404, 페이지 구성 차이 세 가지가 나왔고, 세 번째 병원에서도 새 편차가 나온다고 봐야 한다. 회귀(뷰 223페이지 동일)를 매번 같이 돌렸다.
6. **비용과 시간의 실측.** 글 편당 $0.05~0.19(평균 $0.09), 근거 대조 포함. 병원당 첫 배치 $0.3~0.6. 워커 10~30분. 상한은 실행당 $10.
7. **운영 주체가 비개발자다.** 워커는 지금 Mac 에서 손으로 돌린다. 랜딩 신청이 자동 빌드로 이어지려면 폴러 설치 또는 Trigger.dev 가입이 필요하다. 코드보다 이 결정이 병목이다.
8. **경영진 미결.** 도메인(별도 vs 서브도메인), 서포터즈 모집, 법무 확인 주체, POC 8주 범위, 가격 노출. 기술은 이 결정과 무관하게 진행했지만 발행 시점은 여기에 걸려 있다.
9. **리스크.** 병원 입력 의존(입력 없으면 "확인 대기"투성이 사이트), 검토 병목, Apify 미납(인스타 수집 불가), 유튜브 API 쿼터, 모델 근거 대조의 오탐·누락(사람 확인 플래그로 보완), 원진의 후기·이벤트 중심 채널 운영과 서포터즈 원칙의 긴장.
---
## 9. 숫자 정리
| 항목 | 값 |
| --- | --- |
| 뷰성형외과 진단 | v1 54/C · AEO 42/C · GEO 56/C · 실측 32/36 |
| 원진성형외과 진단 | v1 49/C · AEO 15/D · GEO 45/C · 실측 25/36 |
| 질문 뱅크 실측 | 120문항, 논브랜드 언급률 ChatGPT 11% · Perplexity 3%, ◯ 5 · △ 35 · ✕ 80 |
| 수작업 샘플(뷰) | 글 18편(검토 완료 10), 이미지 92장, 뉴스 1,137건, 영상 1,215편 집계. 감사 78/B(noindex)·86/A(색인 허용) |
| 게이트 | error 11종 + warn 6종 → 추가 후 테스트 16/16 |
| 생성기 회귀 | 정답지 18/18, 편당 $0.09 · 22초. 1차 출력 근거 없는 수치 19건 → 수정 후 0 |
| 원진 자동 빌드 | 216페이지, 의료진 17, 채널 8플랫폼 확정, 유튜브 736편, 이미지 66장, 글 6편, $0.58 |
| 저장소 | 08-25 이후 커밋 69건, 워크트리 `orca/workspaces/INFINITH/Productize`, 브랜치 `feature/supporters-autobuild` |
---
## 10. 배운 것 (다음 프로젝트에도 적용할 원칙)
1. 사람 판단은 규칙·검사·사람 셋 중 하나로 분류해 둔다. 규칙은 프롬프트와 템플릿에, 검사는 게이트에, 사람은 승인 UI 에. 자동화하려 들지 말 것은 사람 칸에 그대로 둔다.
2. 없는 사실은 없다고 쓴다. 생성기는 근거 컨텍스트 순서를 입력 구조로 강제하고, 출력의 수치를 근거 텍스트와 대조하고, 모델 대조기의 오탐을 다시 거른다.
3. 고객 화면과 운영자 설명은 다른 페이지다. 기획 문서의 논리가 고객 화면에 새면 제안서가 된다.
4. 확정된 디자인은 텍스트만 바꾼다. 구조 지문으로 지킨다.
5. 부재는 증명해야 한다. 스크래퍼 하나의 실패는 근거가 아니다.
6. 한 병원에서 되는 코드는 두 번째 병원 회귀 전까지 코드가 아니다. 회귀는 정답지(뷰) 와 새 병원(원진) 둘 다 돌린다.
7. 법은 "금지"보다 "조건"이 많다. 조건을 자동으로 확인할 수 없으면 자동 단계에서 빼고 사람이 넣는 경로를 남긴다.
8. 외부 AI 의견은 방향 결정에 쓰고 효과 증명에는 쓰지 않는다. 효과는 소유 신호로만 잰다.
9. 산출물은 지시된 형식으로, 로컬에. 열어서 보여 준다.

View File

@ -0,0 +1,40 @@
# 서포터즈 사이트 이미지 사용 규칙 v1.0
작성 2026-09-08 · 근거 조문은 원문 기준으로 정리했으나 법률 자문이 아니며, 계약 전 변호사 확인을 권한다. 병원(원진성형외과·뷰성형외과)은 파트너·고객이므로 홈페이지 자산의 사용 허락은 전제로 본다. 따라서 이 규칙이 다루는 것은 "써도 되는가"가 아니라 **"법이 조건을 붙이는 이미지가 무엇이고, 자동 수집 단계에서 그 조건을 확인할 수 있는가"** 다. 확인할 수 없으면 자동 단계에서 빼고, 병원이 서면으로 조건을 확인해 주면 사람이 넣는다.
## 1. 법적 근거와 이미지 규칙의 대응
| 근거 | 내용 | 이미지 규칙 |
|---|---|---|
| 의료법 제56조 제2항 제2호 | 환자의 치료경험담 광고 금지 | 환자 후기·사례(case·review·사례·후기) 이미지 제외. 전후 사진도 환자 사례이므로 같은 취급 |
| 의료법 제56조 제2항 제4호 | 다른 의료인·의료기관과의 비교 광고 금지 | 비교 표·그래프 이미지(vs·비교·타원) 제외 |
| 의료법 제56조 제2항 제6호 | 수술 장면 등 직접적인 시술 행위 노출 금지 | 수술 장면 사진(수술 중·절개·기구 삽입) 제외. 수술실 "공간" 사진은 시설로 허용 |
| 의료법 제56조 제2항 제7호 | 부작용 등 중요 정보 누락 금지 | 이미지와 무관하게 모든 글 하단에 부작용 고지(factSheet.sideEffectNotice) 유지 |
| 의료법 제56조 제2항 제8호 | 객관적 사실 과장·소비자 오인 금지 | 캡션은 사실(무엇을 찍은 사진인지, 출처, 캡처일)만. 효과·결과 서술 금지(발행 게이트가 본문과 캡션 텍스트 검사) |
| 의료법 제56조 제2항 제14호 | 인증·보증·추천 표현 금지(법령상 인증 제외) | 수상·인증 마크·상장 이미지(award·수상·인증·certif) 자동 제외. 법령상 인증(식약처 허가 등)은 병원 확인 후 사람이 넣는다 |
| 의료광고 심의 기준(대한의사협회 의료광고심의위원회) 전후 사진 조건 | 동일 조건 촬영, 보정 없음, 부작용 병기, 환자 동의 | 자동 수집으로는 네 조건을 확인할 수 없다 → **전후 사진(before·after·bna·전후·비포·애프터) 자동 제외**. 병원이 동의서·촬영 조건을 서면 확인하면 수동 반영 |
| 개인정보보호법(민감정보)·초상권 | 환자·모델 얼굴·신체 사진은 동의 필요 | 환자·모델(model·모델·환자) 사진 제외. 신체 부위(가슴·힙·바디) 실사 사진은 일러스트가 아니면 제외 |
| 표시·광고법·추천보증 심사지침 | 경제적 이해관계 표시 | 이미지 규칙이 아니라 사이트 고지(Disclosure·site.sponsorNotice)로 처리 |
## 2. 자동 수집 단계에서 허용하는 이미지 (파트너 자산)
| 유형 | 판정 근거(alt·파일명·페이지) | 용도 |
|---|---|---|
| 의료진 프로필 | 의료진 상세 페이지의 원장 사진(alt에 "원장") | authors.json physicians[].image, 글 검토자 스트립 |
| 시설·건물·공간 | 소개 페이지 커버, 시설·층·로비·상담실·수술실(공간)·입원실·검진센터 | site.heroImage·buildingImage·insideGallery·clinicGallery |
| 시술 설명 일러스트·단계 도해 | illu·step·단계·도해·diagram·방법·원리·system, 시술 페이지 | 글 히어로·갤러리 (캡션: "출처: 홈페이지 {페이지 제목}") |
| 장비 | 장비·equipment·laser·레이저·machine (제품명은 페이지 텍스트에 있는 이름만) | 글 갤러리 |
| 로고 | 병원 제공 로고 파일 | 헤더·푸터·파비콘·카드 대체 이미지 |
기술 조건: 폭 600px 이상(의료진은 300px), 가로세로비 0.4~2.6, GIF·아이콘·버튼·배경·배너·팝업·SNS 아이콘 제외, 최대 1600px 로 리사이즈, JPEG 저장, 원본 URL·페이지·캡처일을 images.json 에 기록.
## 3. 사람이 확인해야 넣는 이미지
- 전후 사진: 병원이 환자 동의서·동일 조건 촬영·무보정을 확인하고, 글에 부작용·개인차 문구가 붙은 경우에만. 자동 빌드 미리보기에는 넣지 않는다.
- 법령상 인증(식약처 허가·ISO 등): 원문 링크(§3-4 regulation 소스)와 함께.
- 환자·모델 얼굴이 있는 사진: 동의 확인 후.
## 4. 게이트와의 연결
- 모든 이미지는 alt 필수(check.mjs IMG_ALT). 캡션·alt 텍스트는 본문과 같은 금칙어·비교·결론 검사를 받는다.
- 이미지 파일명·alt 에 전후·후기·비교·수상 어휘가 있으면 빌드 경고(추가 예정 IMAGE_RULE).

View File

@ -0,0 +1,243 @@
# 뷰성형외과 서포터즈 웹 설계 제안 v0.1
**작성:** 2026-09-04 · INFINITH AI Discovery 후속 · **상태:** 초안(haewon 검토 전)
**전제 진단:** /discovery/viewclinic 50점/C (A98 · B25 · C28 · D68 · E0 · F33%), QB 120문항 논브랜드 언급률 GPT 11% · PPLX 3%
---
## 0. 한 줄 요약
병원 홈페이지·유튜브·인스타 자산을 **복제하지 않고 "환자 질문에 대한 답"으로 변환해 발행하는 별도 매체**를 만듭니다. 기업은행 티스토리와 같은 개념이되, 우리가 통제하는 도메인에 두어 AI 크롤러 방문과 유입을 직접 계측합니다. 편집 캘린더는 이미 만들어 둔 QB 120문항입니다.
---
## 1. 오늘 확정한 것과 미결 사항
| 항목 | 결정 | 설계에 미치는 영향 |
|---|---|---|
| 사이트 주소 | **미결.** 별도 도메인 vs 병원 서브도메인 2안(§3). 남의 플랫폼은 제외 확정 | 중복 판정 거리, 초기 신뢰도, 계측 가능 여부 |
| 사용 가능 자산 | 유튜브 전사+임베드 / 홈페이지·인스타 이미지 캡처 / 환자 후기·경험담 | 전후사진은 제외. 후기는 §7 규칙으로 제한 |
| 작성자 표기 | 실명 서포터즈 + 원장 감수 | Person 스키마 + reviewedBy Physician 구조 |
| 목표 표면 | AI 답변엔진과 네이버 동등 | 허브(자체 도메인 원문) + 네이버 블로그 재작성 2트랙 |
---
## 2. 목적과 성공 지표
이 사이트는 브랜딩 매체가 아니라 **AI 인용 표면 + 계측 장치**입니다. 성과는 기존 QB 120문항을 같은 방식으로 재측정해 증명합니다.
| 지표 | 현재 | 8주 목표 | 측정 방법 |
|---|---|---|---|
| 논브랜드 84문항 뷰 언급률 (GPT) | 11% | 20% 이상 | `scripts/run_question_bank_openai.py` 재실행 |
| 논브랜드 84문항 뷰 언급률 (PPLX) | 3% | 10% 이상 | 동일 러너, sonar |
| 뷰 인용 시 출처 도메인 | blog.viewclinic.com(정지 블로그)·강남언니 | 서포터즈 도메인 등장 | JSONL 인용 URL 집계 |
| AI 크롤러 방문 | 계측 불가(E 0%) | GPTBot·OAI-SearchBot·PerplexityBot·ClaudeBot·Google-Extended 일별 히트 | 서버 로그 UA + IP 대역 검증 |
| AI 유입 세션 | 계측 불가 | 주간 집계 | GA4 AI 채널그룹(chatgpt.com·perplexity.ai·gemini 리퍼러) |
| 네이버 유입 | 없음 | 서치어드바이저 노출·클릭 | 서치어드바이저 + 블로그 통계 |
언급률은 신뢰구간과 함께만 보고합니다. "스키마를 넣으면 인용된다"고 약속하지 않습니다(INFINITH 정직성 규약 유지).
---
## 3. 사이트 주소 2안 비교표
남의 플랫폼(티스토리 등)은 robots·스키마·서버로그를 통제할 수 없어 AI 크롤러 계측이 불가능하므로 후보에서 제외했습니다(2026-09-04 haewon 결정).
| 기준 | A. 별도 도메인 (예: viewsupporters.kr) | B. 병원 서브도메인 (supporters.viewclinic.com) |
|---|---|---|
| 검색엔진이 보는 정체 | 병원을 다루는 제3의 사이트 | 병원과 같은 사이트 |
| 중복·클론 판정 거리 | 가장 멂 | 가까움. 내용 유사 시 canonical 통합으로 한쪽만 노출 |
| AI가 보는 "언급 도메인 수" 효과 | +1 도메인 | 없음(같은 도메인) |
| 초기 검색 신뢰도 | 0에서 시작 | 홈페이지 권위 상속 |
| robots·스키마·서버로그 통제 | 전부 가능 | 전부 가능(병원 DNS 협조 필요) |
| AI 크롤러 접근 | 우리가 전면 허용 | 우리가 전면 허용 |
| 의료광고 판정 관점 | 운영 주체·비용 부담에 따라 판단 | 병원 광고로 명확 |
| 홈페이지 문제의 전염 | 없음. 독립 채점 | WordPress 5.5.3 등 본 사이트 감점 요인이 같은 도메인 평가에 섞임 |
| 개설 속도 | 1~2주 | 1~2주 + 병원 IT 협의(DNS 위임) |
| 비용 | 도메인 + Vercel(월 2만원 내외) | 동일. 도메인 비용 없음 |
| INFINITH 권고 | **1순위** | 2순위 |
**권고 근거:** 이 프로젝트가 증명할 것은 "AI가 뷰성형외과를 인용하는가"이고, AI는 자사 사이트보다 다른 도메인의 언급을 더 신뢰합니다. 별도 도메인은 중복 위험도 구조적으로 제거합니다. 초기 권위 0 문제는 병원 홈페이지·유튜브·강남언니·GBP에서 서포터즈 사이트로 sameAs와 링크를 걸어 보완합니다.
**B안이 맞는 경우:** 병원이 "공식 채널"로 운영하길 원하고 의료광고 심의를 어차피 받기로 했다면, 권위 상속 이점이 있는 B안이 낫습니다. 이 경우 §4.2 규칙 1·2(문장 재사용 금지, 정보 유형 분리)를 더 엄격히 적용해야 홈페이지와의 canonical 충돌을 피할 수 있습니다.
---
## 4. 중복·클론 판정을 피하는 원칙
### 4.1 검색엔진별로 위험의 성격이 다릅니다
| 엔진 | 실제 동작 | 우리에게 생기는 위험 |
|---|---|---|
| 구글 | 중복 자체에 페널티는 없음. 같은 내용은 canonical로 하나만 남기고 통합 | (1) 스크랩 사이트로 분류돼 색인 제외 (2) 홈페이지와 서포터즈가 같은 키워드로 경쟁해 서로 순위를 깎음 |
| 네이버 | 유사문서 판독 시스템이 뒤에 발행된 유사 글을 검색에서 제외. 출처 신뢰(C-Rank) 반영 | 홈페이지·네이버 블로그·서포터즈 중 원본 판정을 못 받은 쪽이 사라짐 |
| AI 답변엔진 | 크롤링 가능한 텍스트를 근거로 인용. 여러 도메인이 일관되게 말하면 신뢰 상승 | 위험보다 기회. 단, 사실이 도메인마다 다르면(NAP 혼재) 오답 |
### 4.2 운영 규칙 6가지
1. **원문 재사용률 상한.** 홈페이지 문장을 그대로 옮기지 않습니다. 사실(의료진 수, 개원 연도, 진료시간)은 가져오되 문장은 새로 씁니다. 발행 전 원문 대비 연속 일치 문자열을 검사합니다(§9 파이프라인의 자동 게이트).
2. **매체 정체성을 다르게 둡니다.** 홈페이지는 "병원이 병원을 소개"하고, 서포터즈는 "환자 관점의 질문과 답"입니다. 같은 시술을 다뤄도 홈페이지에 없는 정보 유형(준비 체크리스트, 회복 일정표, 비교표, FAQ)을 중심에 둡니다.
3. **유튜브는 매체 변환이라 중복이 아닙니다.** 영상 발화를 글로 재구성하고 원본 영상을 임베드합니다. 영상 설명란 텍스트는 복사하지 않습니다.
4. **이미지 캡처는 재문맥화합니다.** 원본 alt·캡션을 쓰지 않고 글 문맥에 맞는 alt와 캡션을 새로 씁니다. 출처(뷰성형외과 인스타그램 @계정, 게시일)를 캡션에 표기합니다.
5. **발행 순서로 원본을 확정합니다.** 허브(자체 도메인)에 먼저 발행하고, 네이버 블로그는 24시간 이후 요약 재작성본을 올리며 허브 링크를 답니다. 네이버 글은 허브 글의 60% 이하 분량으로 다른 문장을 씁니다.
6. **사실은 한 곳에서 관리합니다.** 주소·전화·진료시간·의료진 수는 팩트 시트 하나에서 불러와 홈페이지 표기와 한 글자까지 맞춥니다(진단 B4 NAP 혼재 문제를 서포터즈에서 재생산하지 않습니다).
---
## 5. 콘텐츠 엔진: QB 120문항이 편집 캘린더입니다
### 5.1 카테고리별 글 포맷
| QB 카테고리 | 문항 수 | 현재 ✕/△ | 글 포맷 | 주 원천 |
|---|---|---|---|---|
| A 브랜드 직접 | 12 | 대부분 △·✕ | "뷰성형외과는 어떤 곳인가" 정의문 시리즈(연혁·규모·의료진·방송 이력) | 홈페이지 사실 + 유튜브 채널 소개 영상 |
| B 위치·운영 | 10 | 절반 ✕ | 방문 가이드(주차·층별 안내·예약 경로·공휴일) | 인스타 시설 사진 + 홈페이지 |
| C 지역 추천·비교 | 15 | 거의 ✕ | 시술별 "선택 기준" 가이드 + 병원 특성 비교표 | 유튜브 원장 설명 영상 |
| D 시술별 정보탐색 | 58 | 대부분 ✕ | 시술 FAQ 페이지(정의·적응증·시간·회복·주의) 1시술 1페이지 | 유튜브 시술 설명 영상 전사 |
| E 신뢰·안전 | 9 | ✕ | 마취과 상주·CCTV·응급 체계 등 안전 설명 | 홈페이지 시설 + 강남언니 병원정보 |
| F 가격·이벤트 | 8 | ✕ | 가격 구성 요소 설명(범위 표기는 병원 승인 후) | 홈페이지 이벤트 페이지 |
| G 후기·평판 | 8 | △ | 강남언니·GBP 집계 수치 요약 + 링크. 경험담 인용 없음(§7) | 강남언니 hospitals/189, GBP |
### 5.2 세 가지 원천의 변환 파이프라인
```
[유튜브 1,064편] → 자막/전사 → 질문 단위로 분할 → Q&A 글 초안 → 영상 타임스탬프 임베드
[홈페이지·인스타 캡처] → 사용 허락 목록 → 캡처 → 새 alt·캡션 → 글의 삽화로 배치
[홈페이지 사실] → 팩트 시트(JSON 1개) → 모든 글의 병원 정보 블록에 주입
```
QB 120문항 하나가 글 하나의 H1이 됩니다. D 카테고리 58문항은 시술별로 묶어 1시술 1페이지 안의 FAQ 항목으로 배치합니다.
### 5.3 물량과 순서
| 주차 | 발행 | 내용 |
|---|---|---|
| W1~2 | 사이트 개설 + 팩트 시트 + 정의문 3편 | A 카테고리. 사이트 자체 소개 페이지(서포터즈 운영 주체·감수 체계 명시) |
| W3~4 | 시술 페이지 6편 | D 카테고리 중 논브랜드 실측에서 뷰가 0회였던 시술 우선 |
| W5~6 | 방문 가이드 3편 + 안전 3편 + 비교 가이드 3편 | B·E·C |
| W7~8 | 평판 요약 1편 + 보강 | G. 재측정 |
8주간 약 20편입니다. 주 2~3편이면 서포터즈 2~3명과 원장 감수 주 1회로 운영 가능합니다.
---
## 6. 페이지 템플릿 (AEO 구조)
모든 글이 같은 뼈대를 가집니다. 진단 C 카테고리(28%)에서 지적된 항목을 그대로 뒤집은 구조입니다.
```
H1: 질문형 한 문장 (예: "뷰성형외과 가슴성형은 어떤 방식으로 진행되나요?")
[직접 답변 블록] 40~60단어. 첫 단락에서 질문에 바로 답함
[정의문] "뷰성형외과는 2005년 개원한 신논현역 인근 성형외과로 ..." (팩트 시트 주입)
[본문] H2 3~5개. 표는 HTML table. 수치는 단위 포함
[영상] 원본 유튜브 임베드 + 해당 발화 타임스탬프
[FAQ] 5~8개. QB 문항 그대로 질문으로 사용
[감수 표기] "이 글은 서포터즈 OOO이 작성하고 최순우 원장이 의학적 내용을 감수했습니다. 감수일 2026-xx-xx"
[출처] 참고한 영상·페이지 링크
[병원 정보 블록] NAP·진료시간. 팩트 시트에서 자동 생성
[대가 관계 고지] "서포터즈 활동은 뷰성형외과의 지원을 받습니다" (§7)
```
**스키마(JSON-LD):**
| 타입 | 용도 | 진단 항목 대응 |
|---|---|---|
| `MedicalWebPage` + `Article` | 글 본체. `dateModified` 필수 | C4, P2 신선도 |
| `FAQPage` | FAQ 블록 | C2 FAQ 0개 |
| `Person` (author) | 서포터즈 실명. `sameAs`로 본인 SNS 연결 | E-E-A-T |
| `Physician` (reviewedBy) | 최순우 원장. 강남언니 프로필 `sameAs` | B3 |
| `MedicalClinic` (about) | 뷰성형외과. 홈페이지·GBP·강남언니·유튜브 `sameAs` | B2 스키마 없음 |
| `VideoObject` | 임베드 영상 | 유튜브 자산 연결 |
주의: 홈페이지의 ItemList JSON-LD가 문법 오류로 무효였습니다. 서포터즈는 빌드 단계에서 스키마 유효성 검사를 통과하지 못하면 배포가 실패하도록 합니다.
---
## 7. 법무·컴플라이언스 게이트 (발행 전 필수 확인)
이 섹션은 법률 자문이 아니라 **법무 확인이 필요한 항목의 목록**입니다. 착수 전 병원 측 법무 또는 자문 변호사 확인을 권합니다.
| 항목 | 근거 | 설계 반영 |
|---|---|---|
| 치료경험담 광고 금지 | 의료법 제56조 제2항 | 환자 후기는 **인용하지 않습니다.** 강남언니 후기 수·평점, GBP 평점 같은 집계 수치와 링크만 표기 |
| 비교·비방 광고 금지 | 의료법 제56조 제2항 | C 카테고리 비교표는 "시술 방식 간 비교"로 한정. 타 병원명 비교 금지 |
| 치료 효과 보장·과장 금지 | 의료법 제56조 제2항 | 직접 답변 블록에 "개인차" 문구 표준화. 원장 감수 게이트 |
| 전후사진 | 의료법 시행령 요건 | 이번 범위에서 **제외** |
| 사전심의 대상 여부 | 의료법 제57조. 매체 이용자 규모 기준 | 신규 사이트는 초기 기준 미달 가능성이 높으나 확인 필요. 네이버 블로그 트랙은 별도 확인 |
| 경제적 대가 관계 표시 | 공정위 추천·보증 심사지침 | 서포터즈 글 하단에 지원 관계 고지 문구 고정 |
| 저작권 | 병원 콘텐츠 사용 | 유튜브·홈페이지·인스타 자산 사용 허락서 1장(범위·기간·매체 명시) |
| 초상권 | 의료진·직원 사진 | 캡처 대상 사진의 인물 동의 확인 목록 |
| 서포터즈 개인정보 | 실명·사진 공개 | 서포터즈 동의서 |
---
## 8. 네이버 트랙 (동등 목표 반영)
네이버 블로그·플레이스·카페는 robots.txt로 AI 크롤러를 차단합니다. 그래서 네이버용 자산은 따로 두되, 허브의 파생물로만 운영합니다.
| 단계 | 내용 |
|---|---|
| 원본 확정 | 허브에 먼저 발행. 서치어드바이저에 허브 도메인 등록·사이트맵 제출 |
| 재작성 | 24시간 후 네이버 블로그에 요약본(허브 분량의 60% 이하, 다른 문장) + 허브 링크 |
| 유사문서 회피 | 이미지도 크롭·순서를 바꾸고, 표는 네이버 에디터 표로 다시 작성 |
| 플레이스 연동 | 네이버 플레이스 소식에 허브 글 링크 게시(병원 계정 필요) |
| 측정 | 서치어드바이저 노출·클릭, 블로그 유입 경로 |
네이버 블로그를 병원 명의로 할지 서포터즈 명의로 할지는 §7 사전심의 확인 결과에 따라 정합니다.
---
## 9. 기술 아키텍처
기존 INFINITH 인프라(Supabase·Vercel)를 그대로 씁니다.
```
[콘텐츠 DB: Supabase]
supporter_posts (초안/검수/발행 상태, QB 문항 ID, 원천 영상 ID)
fact_sheet (NAP·의료진·진료시간 단일 원본)
media_assets (캡처 이미지, 출처, 허락 여부, alt)
│
[생성 파이프라인: Edge Function]
1. 유튜브 자막 수집 (YouTube Data API captions / 없으면 Whisper)
2. QB 문항 매칭 → Q&A 초안 생성 (기존 Perplexity/Claude 프롬프트 체계 재사용)
3. 중복 검사 게이트: 홈페이지 원문 대비 연속 일치 문자열, 금칙어(효과 보장·경험담 표현)
4. 서포터즈 편집 → 원장 감수(상태 전이) → 발행
│
[사이트: Astro 정적 빌드 → Vercel]
robots.txt 전면 허용(GPTBot·OAI-SearchBot·PerplexityBot·ClaudeBot·Google-Extended 명시)
sitemap.xml 자동, JSON-LD 빌드 시 검증, dateModified 자동
│
[계측]
Vercel 로그 드레인 → Supabase crawler_hits (UA + 공개 IP 대역 검증)
GA4 AI 채널그룹 + GSC + Bing 웹마스터 + 네이버 서치어드바이저
QB 120 재측정 러너(기존 스크립트)로 4주·8주 스팟체크
```
정적 빌드를 고르는 이유는 세 가지입니다. HTML 무게가 가벼워 크롤러가 전문을 읽고, WordPress 같은 취약 버전 문제가 없고, 스키마 검증을 빌드 단계에 걸 수 있습니다.
---
## 10. 리스크와 대응
| 리스크 | 대응 |
|---|---|
| 병원이 시술 정보 문장을 홈페이지와 똑같이 쓰길 원함 | 4.2 규칙 1을 계약서에 명시. 팩트만 공유하고 문장은 서포터즈가 씀 |
| 원장 감수 병목 | 주 1회 감수 슬롯 고정. 감수 없이 발행 불가하되 사실 확인형 글(방문 가이드)은 실무자 감수로 대체 |
| 8주 안에 언급률이 안 움직임 | 색인·크롤러 방문·인용 URL 등 선행 지표를 먼저 보고. 언급률은 신뢰구간으로 보고 |
| 후기 사용 요구 | §7 규칙 고정. 집계 수치와 링크로만 |
| 네이버 유사문서로 허브가 밀림 | 발행 순서 규칙(허브 우선)과 재작성 분량 상한 |
---
## 11. haewon 결정 필요 항목
1. 사이트 주소 2안 중 선택 (§3)
2. 서포터즈 인원과 모집 방식(병원 내부 직원인지, 외부 모집인지)
3. 법무 확인 주체(병원 자문 변호사인지, INFINITH가 별도 자문을 붙일지)
4. 이 사이트를 POC 8주 범위 안(W3~6 콘텐츠 구조 항목)에 넣을지, 별도 계약으로 뗄지
5. 가격 정보(F 카테고리) 노출 범위: 구성 요소 설명만 vs 범위 금액 표기
## 12. 다음 산출물
- 이 문서 승인 후: 도메인 2안 비교와 콘텐츠 계획을 POC 덱 부록 또는 별도 제안 덱(infinith-deck 규격)으로 제작
- 기술 착수 시: `fact_sheet` 스키마, 페이지 템플릿 1개, 중복 검사 게이트 스크립트를 먼저 만들어 정의문 1편으로 파일럿

View File

@ -0,0 +1,161 @@
# 다음 세션 프롬프트 · "병원 URL 하나로 서포터즈 사이트까지 자동 빌드"
작성 2026-09-04 · 작성자 Claude (haewon 세션 핸드오버) · 상태: 착수 전
> **2026-09-07 갱신:** 이 문서의 §0 프롬프트와 §5 작업 순서는 `docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD_v2.md`가 대체한다. §1 자산 위치·§3 파이프라인·§4 이식 코드·§6 함정은 그대로 유효하다. 서포터즈 샘플은 v3(글 8편)에서 v4(글 18편, 고객용 화법, 신뢰 층)로 바뀌었다.
---
## 0. 세션 시작 시 그대로 붙여 넣을 프롬프트
```
INFINITH 저장소(브랜치 feature/discovery-url-cta)에서 "AI Discovery 자동 빌드" 기능을 개발한다.
목표: /discovery 랜딩의 URL 입력 CTA에 병원 홈페이지 URL을 넣으면, 진단 리포트(/discovery/:id)까지 만들던 기존 파이프라인을 확장해
서포터즈 사이트(supporters/ Astro 프로젝트와 같은 구조)까지 자동 생성·미리보기 배포하는 것이다.
먼저 docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD.md 를 읽고, 그 문서의 §5 단계 순서대로 진행한다.
핵심 제약: 뷰성형외과 수작업 빌드에서 확정된 원칙(전후사진·후기 인용 금지, 홈페이지 문장 복사 금지, 감수 예정 표기, noindex 기본, 발행 게이트 통과 필수)을 코드로 강제한다.
결정이 필요한 것은 문서 §7을 보고 haewon에게 묻는다. 존댓말, 엠대시 금지.
```
---
## 1. 지금까지 만든 것 (위치)
| 자산 | 위치 | 상태 |
|---|---|---|
| AI Discovery 랜딩 (뷰성형외과 제안용) | `src/pages/DiscoveryLandingPage.tsx` + `src/components/discovery/` 9종 (Hero·WhyNow·AbmrLoop·HowItWorks·SampleReport·HonestyStrip·Roadmap·DiscoveryCta·DiscoveryLeadModal) | 프로덕션 https://infinith-demo.vercel.app/discovery (main). 단일 HTML 시안 `docs/reports/landing/ai_discovery_landing.html` |
| URL 입력 CTA | `DiscoveryLeadModal.tsx` → Supabase `discovery_leads` insert (URL·연락처 필수, 상호 선택). 실패 시 o2oteam@o2o.kr mailto 폴백 | 브랜치 `feature/discovery-url-cta`, 프로덕션 미배포. 마이그레이션 `supabase/migrations/20260831_discovery_leads.sql` **미적용** (supabase login 후 db push 필요) |
| 진단 리포트 페이지 | `src/pages/DiscoveryReportPage.tsx`, 결과 레지스트리 `src/data/discoveryResults.ts`, 뷰성형외과 결과 `src/data/discovery_viewclinic.ts` (50/C) | 새 병원 = 결과 파일 + 레지스트리 1줄 |
| 기준표 | `src/data/aeoGeoRubric.ts` (36항목, A20/B20/C25/D20/E10/F5), 문서 `docs/AEO_GEO_RUBRIC.md`, 채점 `src/lib/discoveryScore.ts` | v1.0. 미검증은 분모 제외 |
| 자동 채점기 | `scripts/audit_aeo_geo.py <main_url> <service_url> --id --name --skip-ts --json` (auto 21~22항목) | stdlib+curl. 노드 순회가 역순(stack.pop)이라 sameAs는 Organization 타입 노드가 먼저 잡힘 → 서포터즈 스키마는 `@type: ['MedicalClinic','Organization']` |
| 기존 백엔드 파이프라인 | `supabase/functions/` discover-channels → collect-channel-data → generate-report → generate-content-plan, scrape-website, enrich-channels, `_shared/` (extractSocialLinks·verifyHandles·dataQuality·retry) | 실제 연동: YouTube Data API, Apify, Naver Search API, Firecrawl, Perplexity. 문서 `docs/AI_DISCOVERY_BUILD2_HANDOVER.md`, `docs/PIPELINE_IMPROVEMENT_PLAN.md` |
| 질문 뱅크 | `docs/reports/viewclinic/03_question_bank/Viewclinic_AI_Discovery_Question_Bank.md` (120문항, 7카테고리), 러너 `scripts/run_question_bank_openai.py`, 통합 `scripts/merge_qb_results.py`, 엑셀 `scripts/export_qb_excel.py` | 뷰성형외과 2엔진 실측 완료 |
| **서포터즈 샘플 사이트 (수작업 v3)** | `supporters/` (Astro 7 정적, 별도 Vercel 프로젝트 `view-supporters-sample`, https://view-supporters-sample.vercel.app, noindex) | 이 세션의 산출물. 자동화의 정답지(golden sample) |
| 감사 비교 엑셀 | `docs/reports/viewclinic/04_supporters/Viewclinic_Supporters_vs_Official_AEO_Audit.xlsx`, 빌더 `scripts/build_supporters_audit_xlsx.py` | 공식 50/C · 샘플 78/B · 색인 허용 86/A. 시트 4 "E 측정 인프라 연결 가이드" |
| 설계 문서 | `docs/INFINITH_Viewclinic_Supporters_Site_Design_v0.1.md` | 중복 회피 6규칙, 법무 게이트, 네이버 2트랙 |
| 기업은행 블로그 감사 | `docs/reports/ibk/IBK_Blog_AEO_GEO_Audit_2026-09-04.md` | 54/C, Perplexity 3/3 인용. 글 구조(세 줄 요약·질문형 H3·표·FAQ)의 근거 |
### supporters/ 구조 (자동 생성기가 만들어야 할 결과물)
```
supporters/
astro.config.mjs site = SITE_URL env, build.format 'file', trailingSlash never
vercel.json cleanUrls, X-Robots-Tag noindex, build env PUBLIC_INDEXABLE=false
scripts/check.mjs 발행 게이트: JSON-LD 파싱·Article/FAQPage 존재·img alt·H1=1·금칙어·홈페이지 문장 40자 연속 일치
scripts/home_text.txt 홈페이지 본문(공백 제거) — 중복 검사 기준
scripts/build_news.py 뉴스룸 데이터 빌더 (게시판 크롤 + 네이버 뉴스 API → src/data/news.json, 부정 기사 제외 키워드)
src/data/factSheet.json 병원 사실 단일 원본 (NAP·진료시간·층·진료과·안전·이력·표면 집계)
src/data/authors.json 서포터즈(가명·샘플) + 감수 원장(실제 약력·사진·sameAs)
src/data/videos.json 채널 전체 조회수 집계 → 롱폼 Top10(정보형, 쇼츠 판별은 /shorts/{id} 200 응답)·정보형 쇼츠+서포터즈 답·전체
src/data/news.json 1,137건 (보도자료/기고·인터뷰/언급, 주제 13종)
src/content/posts/*.md 글 8편. frontmatter: title(질문형)·category·qbIds·summary[3]·author·reviewer·reviewStatus·videos[]·gallery[]·faq[]·sources[]·thumbnail
src/lib.ts clinicSchema/personSchema/physicianSchema, INDEXABLE 플래그
src/layouts/Base.astro 헤더(병원 로고+서포터즈)·이전 페이지 버튼(홈 제외)·플로팅 위로·푸터·JSON-LD·canonical(index.html 제거)
src/components/ Summary(세 줄 요약, 연하늘 #F2F6FF 단색)·VideoLite(썸네일+클릭 iframe)·Gallery·RelatedVideos·Faq·ReviewBox·Sources·Disclosure·FactBlock·PostCard
src/pages/ index(라이트 파스텔 히어로·다크 글래스 KPI·Doctors Explain·시설 갤러리)·posts/[id]·posts/index·videos·newsroom·clinic·about·authors/[id]·robots.txt.ts·sitemap.xml.ts
public/img/{clinic,doctors,safety,exam,breast,care}/ 홈페이지에서 내려받은 92장 + hero-collage.jpg + view-logo.png
```
---
## 2. 이 세션에서 확정된 결정 (자동화가 지켜야 할 규칙)
1. 디자인은 INFINITH 토큰(`infinith-frontend-design` 스킬): 네이비 #0A1128, 퍼플 #6C5CE7, 그라디언트 #4F1DA1→#021341, Playfair(영문 제목·숫자)+Pretendard, 다크/라이트 리듬, 다크 위 흰 카드, 대각선 그림자, 파스텔 상태색. **텍스트 많은 블록은 그라디언트 금지, 연하늘 단색.**
2. 글 구조 = 기업은행 블로그 검증 구조: 세 줄 요약 → 본문(질문형 H2, HTML 표) → 원본 영상 → 갤러리 → 이어서 볼 영상 → FAQ → 작성·감수 박스 → 참고 자료 → 병원 정보 블록 → 대가 고지.
3. 넣지 않는 것: 전후 사진, 환자 후기·경험담 인용(**공정위 2026-07-12 뒷광고 제재 병원**), 타 병원 비교, 효과 보장, 가격(경영진 결정 전), 후기·리뷰·토크·변신 성격 영상, 비교 광고 소지 이미지(마취과 상주 43% vs 23.1%).
4. 리뷰 페이지는 만들지 않는다(haewon 결정 2026-09-04). Google Places 키 불필요.
5. 영상: 롱폼 Top10 기본 탭, 정보형만. 쇼츠는 정보형만 + 서포터즈 한 문단 답. 채널 전체 순위는 참고 탭.
6. 뉴스룸: 병원 배포 기사 링크 트리. 제3자 규제·사건 보도 제외(키워드 목록은 build_news.py NEG). 본문 인용 없음.
7. 서포터즈 실명·원장 감수는 확정 전 → 가명·"감수 예정" 표기, reviewedBy 스키마는 감수 완료 글에만.
8. 기본 noindex + robots Disallow. 발행은 `PUBLIC_INDEXABLE=true` 환경변수 하나로 전환(robots 전면 허용 + AI 봇 명시 + sitemap 선언).
9. 병원 자산 사용은 파트너십 전제(허락 받은 것으로 간주). 단 이미지는 재문맥화(새 alt·캡션·출처·캡처일).
10. 경영진 미결: 도메인(별도 vs 서브도메인), 서포터즈 모집, 법무 확인 주체, POC 8주 범위 포함 여부, 가격 노출.
---
## 3. 목표 기능의 파이프라인 (제안)
```
[입력] 병원 홈페이지 URL (+ 상호 선택) ← /discovery 랜딩 CTA (DiscoveryLeadModal)
│
Phase 0 discover-channels (기존) → 유튜브·인스타·페북·블로그·강남언니·GBP 핸들
Phase 1 audit_aeo_geo (기존 py → Edge Function 이식 또는 워커) → discovery_<id> 결과 (50/C 등)
Phase 2 자산 수집 (신규 collect-supporter-assets)
├ 홈페이지: Firecrawl 페이지 텍스트(병원소개·의료진·오시는길·안전·시술 메인) + 이미지 URL 목록(필터: logo/icon/btn/popup/전후/before-after 제외) + 로고
├ 유튜브: uploads 전량 videos.list(statistics·contentDetails·status) → 조회수 순위, 쇼츠 판별(/shorts/{id} 200), 자막(youtube_transcript_api, IP 차단 대비 프록시/캐시/큐)
├ 강남언니: 병원 페이지 공개 집계(평점·후기수·의료진수·진료시간)
├ 뉴스: 홈페이지 언론보도 게시판(있으면) + 네이버 뉴스 API 6질의 → 분류·부정 제외
└ 의료진: 홈페이지 의료진 페이지 → 이름·직함·약력·사진 → authors.json physicians
Phase 3 팩트 시트 생성 (factSheet.json) ← 사실 추출 + 표기 단일화(주소 1형태, 전화, 진료시간 출처 표기)
Phase 4 질문 선정 ← QB 템플릿(카테고리 7종)을 업종·시술로 인스턴스화 → 첫 배치 8~10문항 (A1·B1·D4·E1·G1 비율)
Phase 5 글 생성 (Claude) ← 문항 + 관련 영상 자막 + 홈페이지 사실 → frontmatter 규격 md
프롬프트 규칙: 세 줄 요약, 질문형 H2, 표 1개 이상, FAQ 5~8, 출처 accessed 날짜, 금칙어, 개인차 문장, 홈페이지 문장 복사 금지
Phase 6 사이트 조립 ← supporters/ 템플릿 복제 + 데이터 주입 + 이미지 다운로드·리사이즈 + 로고
Phase 7 발행 게이트 (check.mjs) 통과 못 하면 중단 → 실패 항목을 리포트에 표시
Phase 8 미리보기 배포 ← Vercel 프로젝트 `supporters-<clinicId>` 생성·배포(noindex) → URL을 discovery 리포트와 discovery_leads 행에 기록
Phase 9 감사 재실행 (색인 허용 빌드 로컬) → 공식 vs 서포터즈 비교표 (build_supporters_audit_xlsx.py 로직 재사용) → 리포트 페이지에 표시
[출력] /discovery/<id> 에 "서포터즈 미리보기" 카드 + 비교 점수 + 남은 과제
```
권장 실행 형태: 오래 걸리는 Phase 2·5·8은 Edge Function 시간 제한(150초)을 넘기므로, **Supabase 큐(테이블 + cron) + 별도 워커(Node, Vercel 서버리스 아님)** 또는 GitHub Actions 워커로 돌리고 진행 상태를 `supporter_builds` 테이블에 기록해 랜딩이 폴링한다.
---
## 4. 재사용할 코드 (이식 대상)
| 기능 | 지금 있는 곳 | 이식 방향 |
|---|---|---|
| 채널 발견·검증 | `supabase/functions/discover-channels`, `_shared/extractSocialLinks.ts`, `verifyHandles.ts` | 그대로 사용 |
| 자동 채점 | `scripts/audit_aeo_geo.py` | Node/TS 이식(`supabase/functions/discover-aeo-geo`) 또는 워커에서 python 호출 |
| 유튜브 통계·쇼츠 판별 | 이 세션 스크래치 스니펫 (uploads.json → videos.list 50개 배치 → /shorts/{id} 200 판별) | 워커 모듈 `collect-youtube-ranking.ts` |
| 뉴스 수집·분류 | `supporters/scripts/build_news.py` (OUTLET 맵, NEG, TOPICS, REL/Q1/Q2 정규식, 게시판 파서) | 워커 모듈 |
| 이미지 필터·리사이즈·컨택트시트 | 이 세션 스니펫 (PIL, 1600px, 제외 정규식 `icon|logo|btn|popup|floating|banner|before|after`) | 워커 모듈 |
| 발행 게이트 | `supporters/scripts/check.mjs` | 그대로. home_text.txt는 Phase 2 텍스트로 생성 |
| 비교 엑셀 | `scripts/build_supporters_audit_xlsx.py` | 점수 비교 로직만 TS로 옮겨 리포트 카드에 표시 |
| 글 템플릿·스키마 | `supporters/src/pages/posts/[id].astro`, `src/lib.ts` | 템플릿 저장소로 분리(`templates/supporters/`) |
---
## 5. 작업 순서 (권장)
1. **템플릿화**: `supporters/`에서 뷰성형외과 고유값을 전부 `factSheet.json`·`authors.json`·`videos.json`·`news.json`·`posts/`·`public/img/`로 몰아넣고, 나머지를 `templates/supporters-astro/`로 복제. 빈 데이터로도 빌드되게 empty-state 처리.
2. **워커 뼈대**: `workers/supporters-build/` (Node 22). 입력 `{clinicId, url}` → 단계별 함수, 각 단계 결과를 `supporter_builds` 테이블(단계·상태·로그·산출 경로)에 기록.
3. **Phase 2 수집기** 3종(홈페이지·유튜브·뉴스)을 뷰성형외과로 회귀 테스트: 결과가 수작업 v3와 같은 팩트 시트·Top10·뉴스 건수(±5%)가 나오면 통과.
4. **Phase 5 글 생성 프롬프트**: 뷰성형외과 글 8편을 정답지로 두고, 같은 문항·자막으로 생성한 결과가 게이트를 통과하고 세 줄 요약·표·FAQ 규격을 지키는지 확인. 금칙어·경험담 표현은 게이트에서 막는다.
5. **Phase 8 배포기**: Vercel API로 프로젝트 생성·환경변수·배포. 도메인은 `supporters-<id>.vercel.app`.
6. **랜딩 연결**: DiscoveryLeadModal 제출 → `supporter_builds` 행 생성 → 진행 상태 UI(단계 9개) → 완료 시 리포트 페이지에 미리보기 카드. `discovery_leads` 마이그레이션 먼저 적용.
7. **두 번째 병원으로 검증**: `data/plastic surgery clinics url.json`에서 한 곳 골라 끝까지 돌린다. 수작업 개입 없이 게이트 통과가 목표.
---
## 6. 이번 세션에서 밟은 함정 (반드시 회피)
- youtube_transcript_api는 25편 후 `IpBlocked`. 자막은 큐 + 지연 + 프록시 또는 YouTube Data API captions(OAuth 필요) 대안 설계. 자막 없는 영상은 제목·설명만으로 글을 쓰지 말고 "근거 부족"으로 건너뛴다.
- Apify 계정 미납(`Too many outstanding invoices`) → 인스타 수집 불가. 인스타는 선택 단계로.
- YouTube search API `order=viewCount`는 3건만 반환 → uploads 전량 + videos.list로 집계.
- 쇼츠는 3분까지 가능 → 길이 60초 기준만으로 판별 금지, `/shorts/{id}` 200 응답으로 판별.
- Firecrawl 결과에 팝업·상담폼 텍스트가 섞임 → NOISE 필터 필요. 홈페이지 게시판 썸네일 alt가 비어 있으면 문서 페이지에서 제목 재수집.
- 채점기 canonical 검사: Astro `Astro.url.pathname`이 `/index.html`로 잡힘 → 정규화 필수. 주소는 지번 병기 시 2종으로 잡힘 → 팩트 블록은 도로명 1형태만.
- zsh에서 `[id].astro` 경로는 따옴표 필수(glob).
- Vercel `build.format: 'file'`은 `cleanUrls: true` 없으면 /posts/x 404.
- `npm run build | grep`은 파이프라인 때문에 게이트 실패를 삼킨다 → `if npm run build > log; then deploy; fi`.
- Google Places 키 없음. 필요 없음(리뷰 페이지 폐기).
- `.env`의 GOOGLE_PLACES_API_KEY는 비어 있음. YOUTUBE·NAVER·FIRECRAWL·PERPLEXITY·OPENAI 키는 있음.
---
## 7. haewon에게 물어볼 것 (착수 전)
1. 워커 실행 위치: Supabase 큐 + Node 워커(서버 필요) vs GitHub Actions vs Vercel 백그라운드 함수 중 어디로 할지.
2. 첫 배치 글 수(8편 유지?)와 생성 모델(Claude API, 회사 키 유무).
3. 자동 생성 글의 감수 워크플로: 병원에 초안 링크를 보내는 이메일/노션 연동을 넣을지.
4. 두 번째 검증 병원 선정(`data/plastic surgery clinics url.json`).
5. 미리보기 배포를 Vercel 프로젝트 자동 생성으로 할지, 하나의 프로젝트에 `/<id>/` 경로로 묶을지.
---
## 8. 완료 기준
- 랜딩에서 URL 제출 → 사람 개입 없이 9단계 완주 → 미리보기 URL이 리포트에 표시된다.
- 뷰성형외과 URL로 돌렸을 때 팩트 시트·Top10·뉴스룸이 수작업 v3와 일치(±5%)하고, 게이트 0오류, 색인 허용 빌드 감사 80점 이상.
- 두 번째 병원에서도 게이트 0오류로 완주.
- 금칙 사항(전후·후기 인용·비교·효과 보장)이 게이트에서 실제로 차단되는 테스트 케이스가 있다.

View File

@ -0,0 +1,374 @@
# 다음 세션 프롬프트 v2 · "병원 URL 하나로 서포터즈 사이트까지 자동 빌드"
작성 2026-09-07 · 작성자 Claude (haewon 세션 핸드오버) · v1(2026-09-04)을 대체한다. v1의 §1 자산 위치·§3 파이프라인·§4 이식 코드·§6 함정은 여전히 유효하므로 그 부분은 v1을 참조하고, 이 문서는 **v1 이후 사람 판단이 들어간 지점을 규칙으로 바꾼 기록**이다.
왜 이 문서가 중요한가: 뷰성형외과 샘플은 URL 하나로 시작했지만, 실제로는 기획·설계·편집의 상당 부분을 사람이 판단했다. 자동 빌드가 같은 품질을 내려면 그 판단을 (1) 코드로 강제할 규칙, (2) 자동 검사, (3) 사람 승인 게이트 세 가지로 분해해 둬야 한다. 이 문서의 §3이 그 분해표다.
---
## 0. 세션 시작 시 그대로 붙여 넣을 프롬프트
```
INFINITH 저장소(브랜치 feature/discovery-url-cta)에서 "AI Discovery 자동 빌드" 기능을 개발한다.
목표: /discovery 랜딩의 URL 입력 CTA에 병원 홈페이지 URL을 넣으면, 진단 리포트(/discovery/:id)에 이어
서포터즈 사이트(supporters/ Astro 프로젝트와 같은 구조)까지 자동 생성·미리보기 배포하는 것이다.
먼저 다음 순서로 읽는다.
1. docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD_v2.md (이 문서. §3 판단 분해표와 §4 근거 프로토콜이 핵심)
2. docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD.md (v1. 자산 위치·파이프라인·이식 코드·함정)
3. supporters/ (정답지. 글 18편, 팩트 시트, 발행 게이트, 편집 기준 /editorial)
4. docs/reports/viewclinic/04_supporters/ (GEO 계획, 2단계 콘텐츠 기획)
원칙: 이 문서 §3에서 "규칙"으로 분류된 항목은 코드로 강제하고, "검사"는 발행 게이트에 넣고, "사람"은 승인 UI로 남긴다.
사람 게이트를 자동화하려고 하지 않는다. 근거가 없는 사실은 생성하지 않고 "확인 대기"로 표기한다(§4).
작업 순서는 §7. 결정이 필요한 것은 §9를 보고 haewon에게 묻는다. 존댓말, 엠대시 금지, 은유 금지.
```
---
## 1. v1 이후 달라진 것 (2026-09-04 → 09-07)
| 항목 | v1 (09-04) | 지금 (09-07) |
|---|---|---|
| 글 | 8편, 가명 작성자 2명, 감수 예정 | 18편. 작성자 안성민(AI오투오 대표·편집 책임) 1명. 검토 완료 10편(reviewedAt 2026-09-07), 검토 대기 5편 |
| 메뉴 | 글 / 영상 / 뉴스룸 / 병원 정보 / 운영 원칙 | 상담 전 질문 / 의료진 영상 / 뉴스룸 / 방문 안내(/visit 신설) / 매체 소개. 병원 정보(/clinic)는 푸터 |
| 화법 | 제작 원칙이 홈·소개에 노출 | 고객 화면에서 운영자 설명 전부 제거. 운영자용은 /editorial(noindex) |
| 신뢰 층 | 감수 예정 배지, 참고 자료 링크 | 참고 자료 유형 태그, 규제 원문 링크, 글별 갱신 기록, 팩트 시트 확인일·다음 확인일, /corrections 정정 기록, 정정 요청 이메일 |
| 의료진 데이터 | 원장 4명 | 10명(성형외과 8, 이비인후과 1, 마취통증의학과 1) |
| 스키마 | Article·FAQPage·Person·Physician·MedicalClinic | + reviewedBy·lastReviewed(검토 완료 글만), Person sameAs(한경 인터뷰) |
| 외부 평가 | 자체 감사 엑셀 | Astra 개선안(AS IS/TO BE), Codex 비교평가(공식 70.5 vs 서포터즈 76.5, GEO 67.5) 반영 |
| 진단 리포트 | 50/C | 54/C (v1.1 정정: 블로그 활발, 프리저베 FAQ 존재, 시술 상세 수치 존재) |
---
## 2. 이번 세션에서 사람 판단이 필요했던 순간 (시간순)
자동화 설계자가 알아야 할 "왜 그때 사람이 개입했는가"의 기록이다.
1. **"사이트가 제안서처럼 읽힌다"** (haewon). 홈에 "답변엔진이 인용하는 단락", "질문 뱅크 120문항", "홈페이지 문장을 복사하지 않는다"가 있었다. 기획 문서의 논리가 고객 화면에 그대로 새어 나온 것. → 고객/운영자 화면 분리 규칙(§3-1).
2. **"룩앤필이 바뀌었다, 돌려놓고 텍스트만"**. 화법을 고치면서 섹션 구조·영어 헤딩·통계 블록까지 바꿨더니 거부됨. → 확정 디자인은 텍스트 교체만(§3-2).
3. **"합니다/하지 않습니다/밝힙니다는 영어 직역"**. 카드 제목은 명사구로. → §3-3.
4. **외부 개선안 2건의 선별 수용**. Astra 문서 44개 제안 중 소스 대조로 사실 지적(FDA 승인 일반화, 30분·다음날 출근, 특정 제품 권유, 후기 확인일 불일치, 영상 탭에 전후·후기 제목)은 수용, 기획 취향(영어 헤딩 제거, 숫자 제거, 120문항 묶기)은 haewon 결정으로 반려. → 제안 분류 기준(§3-9).
5. **작성자 실명 확정**(안성민 대표, sameAs 한경 인터뷰). 자동화가 정할 수 없는 값. → 사람 입력(§6).
6. **의학 검토자 지정과 검토일**. 영상 출연 원장을 감수자로 자동 표기하던 것을 중단했다가, haewon 지시로 검토일을 확정. 검토자 배정은 기사·프로필 근거로 제안하고 사람이 확정. → 사람 게이트(§3-7).
7. **근거 없는 수치 처리**. 출근 기준, 견적 포함 항목, 리프팅 지속 기간, 코·윤곽 재수술 시점, 타원 재수술 정책은 어떤 소스에도 없었다. 지어내지 않고 "자료에 없음 / 상담 확인 / 병원 확인 대기"로 표기. → 근거 프로토콜(§4).
8. **보고서 오판 3건 발견**. 08-28 진단이 2개 URL 샘플과 요약 도구에 의존해 블로그 정지·FAQ 0개·수치 없음으로 오판. 원본 HTML 파싱으로 정정. → 실측 규칙(§3-10).
9. **고객용 덱 제목의 반말**. "~다" 헤드라인이 병원에 단정적으로 읽힘. → 존댓말 규칙(§3-3).
---
## 3. 판단 분해표: 규칙 / 검사 / 사람
분류 기준. **규칙** = 템플릿·프롬프트·코드에 고정. **검사** = 발행 게이트(check.mjs 확장)에서 자동 판정. **사람** = 승인 UI에서 사람이 확정해야 다음 단계로 감.
### 3-1. 고객 화면과 운영자 설명의 분리
- 규칙: 고객 화면(홈·글·영상·뉴스룸·방문·병원 정보·소개)에는 "무엇을 볼 수 있는가"와 "어떻게 쓰는가"만 쓴다. 제작 방식·선별 기준·수집 방법·기술 처리·법 조문 번호·내부 분류 코드(QB 번호)는 /editorial에만.
- 검사: 고객 화면 빌드 결과에서 금칙 어휘 검출 → `답변엔진|AI 인용|AEO|GEO|질문 뱅크|QB [A-G]|실측|단일 원본|수집 기준|API 집계|임베드|복제|의료법 제\d+조|롱폼|쇼츠 분류`. /editorial은 검사 제외.
- 사람: 없음.
### 3-2. 확정 디자인의 보존
- 규칙: 디자인이 확정된 뒤의 카피 수정은 텍스트 노드만 바꾼다. 섹션 순서·헤딩 언어(영어 세리프)·통계 블록·카드 규격은 유지. 영어 헤딩은 디자인 요소다.
- 검사: 스크린샷 회귀(홈·글 목록·글 상세 3장, 1360px)를 이전 버전과 픽셀 차이로 비교해 텍스트 외 변화가 임계 초과면 경고.
- 사람: 룩앤필 변경은 haewon 승인.
### 3-3. 한국어 화법
- 규칙: 카드·섹션 제목은 명사구(답하는 방식 / 싣지 않는 것). 고객용 덱·문서의 판단 제목은 "~합니다/~입니다", 목차성 제목은 명사구. 본문 개조식("~없음")은 허용, 반말 서술("채운다")은 금지. 엠대시·은유 금지.
- 검사: 제목 텍스트가 `(합니다|하지 않습니다|밝힙니다)$`처럼 동사 종결이면 경고. 본문에서 `[가-힣]다\.` 문장 검출(개조식 명사 종결은 제외 어렵기 때문에 경고 수준).
- 사람: 최종 문안 확인.
### 3-4. 근거 유형과 원문 링크
- 규칙: 참고 자료마다 유형(clinic 병원 제공 / doctor 원장 설명 / product 제품 정보 / regulation 규제·연구 / platform 플랫폼 집계 / secondary 2차 자료)을 붙인다. 규제·연구 주장은 영상 재진술이 아니라 원문 URL(FDA, ISO, 법령)까지 연결한다. 원장 발언은 "영상에서 설명한다"로 화자를 밝힌다.
- 검사: sources에 type 없는 항목 실패. 본문에 `FDA|ISO|승인|연구`가 있는데 regulation 타입 소스가 없으면 실패.
- 사람: 없음.
### 3-5. 근거 범위 표현
- 규칙: 제품 승인은 "특정 제품·해당 국가 적응증"으로 한정하고 "위험이 없다는 뜻이 아니다"를 붙인다. 원장의 제품 선호·비교우위는 "임상 의견"으로 표기. 수술 시간·회복·복귀 시점은 "영상 사례"로 한정하고 개인차 조건을 답 옆에 둔다. "~하면 안전하다고 볼 수 있다"류 결론 금지. 특정 제품 권유는 "진료에서 정한다"로 닫는다.
- 검사: 금칙 패턴 확장 → `안정성이 확인|안전이 보장|비교우위|장점을 합친|돌아가고 있다고 볼 수|다음 날 출근할 수 있을 정도` 등. 수치(`\d+분|\d+일|\d+주`) 문장에 `개인차|상담|영상 기준|사례` 중 하나가 같은 문단에 없으면 경고.
- 사람: 담당 원장 검토.
### 3-6. 수치·확인일 일관성
- 규칙: 플랫폼 집계(강남언니·구글·네이버)는 값마다 확인일을 붙이고, 요약·FAQ·표에서 같은 값은 같은 확인일로. 팩트 시트에 checkedAt·nextCheck.
- 검사: 같은 수치 문자열(예 19,373)이 글 안에서 서로 다른 날짜와 붙어 있으면 실패. nextCheck가 지났으면 빌드 경고.
- 사람: 없음.
### 3-7. 작성자·검토자·검토일
- 규칙: 영상 출연 원장을 검토자로 자동 배정하지 않는다. 검토자 미확정이면 "설명 {원장}" + "의학 검토 대기". reviewedBy·lastReviewed 스키마는 reviewStatus=reviewed일 때만. 검토일은 reviewedAt 필드(갱신일과 분리).
- 검사: reviewStatus=reviewed인데 reviewedAt 없으면 실패. reviewer가 physicians에 없으면 실패.
- 사람: 검토자 확정과 검토일은 병원 또는 haewon이 입력. 자동화는 후보(기사·프로필 근거)만 제안한다.
### 3-8. 싣지 않는 것
- 규칙(v1 유지): 전후 사진, 환자 경험담, 타 병원 비교, 효과 보장, 가격 금액, 후기·전후·변신 제목 영상. 이유는 고객 화면에서 한 문장으로만("병원 지원을 받는 곳이 경험담으로 설득하면 광고가 된다"), 조문은 /editorial.
- 검사: 기존 BANNED + 영상 제목 필터(`전후|리뷰|성공|번호따|변신|역대급`)를 영상 목록 빌드에 적용. **미결: "채널 인기 전체" 탭 제거 여부(haewon 결정 대기)**.
- 사람: 탭 제거 결정.
### 3-9. 외부 개선안·평가의 수용 기준
- 규칙: 제안을 세 갈래로 나눈다. (a) 사실 지적(소스 대조로 확인되면 수용), (b) 구조 제안(기존 페이지 보존 + 없는 것만 추가), (c) 기획 취향(haewon 결정). 점수 평가는 "무엇을 고칠지"에는 쓰고 "효과가 얼마인지"의 근거로는 쓰지 않는다.
- 검사: 없음.
- 사람: (c) 전부.
### 3-10. 실측 규칙
- 규칙: 사이트 판정은 원본 HTML을 받아 파서로 확인한다(JSON-LD json.loads, H1 정규식, table 카운트, robots 원문, sitemap lastmod). 요약 도구(WebFetch 등 소형 모델)는 JSON-LD 타입을 틀리게 답한 전례가 있어 판정 근거로 쓰지 않는다. 표본 2개 URL의 결과를 사이트 전체로 일반화하지 않는다(최소: 홈 + 시술 상세 3개 + 오시는길 + 블로그 서브도메인).
- 검사: 자동 채점기 입력 URL 수 5개 미만이면 경고 표기.
- 사람: 없음.
### 3-11. 원천 콘텐츠의 정의 (G7)
- 규칙: "홈페이지를 다시 쓰는 글"은 만들지 않는다. 원천으로 치는 5유형만 기획한다. 체크리스트(상담 질문·견적 항목), 조건 표(회복 일정·마취 선택·검진 주기), 협진·동선 설명, 발언 대본 인용(타임스탬프), 실측 기록(방문). 주제 선정 근거 = 질문 뱅크 ✕ 문항 × 유튜브 조회수 × 뉴스 주제 × 홈페이지에 없는 정보 유형.
- 검사: 글 본문의 홈페이지 40자 연속 일치(기존). 표 또는 체크리스트가 하나도 없는 D·E 카테고리 글은 경고.
- 사람: 기획 목록 승인.
---
## 4. 근거 프로토콜 (글 생성기가 지켜야 할 것)
이번 세션 10편은 아래 순서로만 사실을 가져왔다. 자동 생성기는 이 순서를 프롬프트 컨텍스트로 강제한다.
1. **병원 공식 페이지 원문**: 수술 전·후 주의사항(부위별 문장 전부), 애프터케어(부위별 프로그램·기간), 검진센터(항목·담당), 안전수술시스템(마취 프로세스·장비), 시술 상세(수술시간·마취·실밥·일상 복귀), 의료진 프로필(직함·경력). 문장은 옮기되 40자 연속 복사 금지.
2. **쇼츠 정리 답**: `videos.json.shortsInfo[].answer`처럼 이미 사람이 정리한 한 문단. 영상 발언의 근거는 이것만 쓴다(자막이 없으면 발언을 새로 만들지 않는다).
3. **원장 기고·인터뷰 기사**: 원장 이름과 매체·날짜를 밝히고 인용. 이름이 불확실하면(예: "정진우"로 읽힌 코재수술 칼럼) 이름 없이 "원장 칼럼"으로.
4. **규제·연구 원문**: FDA, ISO, 법령. 요약 도구가 수치를 확인하지 못하면 수치를 쓰지 않는다(예: FDA 검진 주기).
5. **플랫폼 집계**: 확인일 병기.
없는 것은 없다고 쓴다. 실제로 이번에 "자료에 없음"으로 남긴 것: 가슴성형 후 출근 기준, 견적 기본 포함 항목·결제 방식, 리프팅 효과 지속 기간, 코·윤곽 재수술 대기 기간, 윤곽 신경 손상 확률, 타원 수술 재수술 상담 정책. 페이지 간 표기가 다르면 둘 다 쓴다(코 실밥 제거 7일 vs 3일).
---
## 5. 신뢰 층 스펙 (템플릿이 기본으로 갖춰야 할 것)
| 요소 | 데이터 | 화면 | 스키마 |
|---|---|---|---|
| 작성자 | authors.supporters[id]: name·role·bio·email·sameAs | 글 상단 "작성", 하단 ReviewBox, /authors/:id | Person + sameAs |
| 편집 책임·정정 경로 | corrections.json: owner·contact·items | 소개, 푸터, ReviewBox, /corrections 표 | WebPage dateModified |
| 검토 | reviewer·reviewStatus·reviewedAt | 상단 "의학 검토 {원장} ({일})" 또는 "설명 {원장} · 의학 검토 대기", ReviewBox 배지 | reviewedBy(Physician @id) + lastReviewed, reviewed일 때만 |
| 근거 | sources[].type·accessed | "참고한 자료" 유형 태그 + 확인일 + 한 줄 해설 | (없음) |
| 갱신 | history[] | "갱신 기록" 역순 목록 | dateModified |
| 팩트 | factSheet.checkedAt·nextCheck | FactBlock 각주 | MedicalClinic |
| 지원 관계 | Disclosure 문구 | 모든 글 하단 | (없음) |
---
## 6. 병원(고객)이 입력해야 하는 것 (자동화가 만들 수 없는 값)
입력 폼으로 받는다. 받기 전까지 해당 표기는 "확인 대기"로 발행된다.
1. 작성자 실명·직함·공개 프로필 URL(sameAs), 편집 책임자, 정정 요청 이메일
2. 글별 의학 검토 원장과 검토일 (후보는 자동 제안)
3. 지원 관계 문구(금전·자료·기타)
4. 견적 기본 포함 항목과 결제 방식 (금액은 받지 않는다)
5. 회복 일정표의 병원 확정값 (출근 기준 등)
6. 재수술 정책 (타원 수술 상담 가능 여부, 부위별 대기 기간)
7. 페이지 간 표기 불일치의 정답 (예: 코 실밥 제거일)
8. 진료 분야별 담당 원장 (눈·코·윤곽·리프팅·마취)
9. 정식 도메인, 색인 허용 시점, 홈페이지에서의 링크 위치
이 목록은 진단 리포트 v1.1의 마지막 "부탁드리는 것" 슬라이드와 같다. 리포트와 폼이 같은 항목을 가리키게 유지한다.
---
## 7. 작업 순서 (v1 §5를 이 순서로 대체)
1. **게이트 확장** (`supporters/scripts/check.mjs`): §3-1·3-4·3-5·3-6·3-7의 "검사"를 추가하고, 현재 18편이 통과하는지 확인. 실패 케이스 픽스처 6개(운영자 어휘, type 없는 source, reviewed인데 reviewedAt 없음, 확인일 불일치, 영상 제목 금칙, 결론 문장)를 만든다.
2. **템플릿화**: `supporters/`에서 뷰성형외과 고유값을 데이터 파일로 몰고 `templates/supporters-astro/`로 복제. 신뢰 층(§5)이 빈 데이터로도 "확인 대기"로 렌더되게 한다.
3. **근거 수집기**: 병원 페이지 원문(주의사항·애프터케어·검진·안전·시술 상세·의료진)을 구조화해 `evidence/<clinic>/*.json`으로 저장. 40자 중복 검사용 home_text도 여기서.
4. **글 생성 프롬프트**: §4 순서의 컨텍스트만 주고, 출력은 frontmatter 규격 + sources type + history. 뷰성형외과 18편을 정답지로 회귀(같은 문항·같은 근거로 생성 → 게이트 통과 + 세 줄 요약·표·FAQ 규격).
5. **승인 UI**: §6 입력 폼 + 글별 검토 승인(검토자·검토일 입력 → reviewedAt 기록). 승인 전 글은 "검토 대기" 배지로 미리보기에만.
6. **워커·배포·랜딩 연결**: v1 §3·§5-2·5-5·5-6 그대로.
7. **두 번째 병원 회귀**: `data/plastic surgery clinics url.json`에서 한 곳. 사람 개입은 §6 입력과 §3 "사람" 항목만.
---
## 8. 이번 세션의 함정 (v1 §6에 추가)
- Astro `getCollection` 스키마에 필드를 추가하면 기존 md 전부에 기본값이 필요하다. `history`·`sources[].type`은 `.default([])`·`.optional()`로.
- YAML frontmatter 안에 큰따옴표 문자열 속 큰따옴표(`"근거 없는 "해외 환자 비중" 표현"`)는 파싱 실패. 생성기는 따옴표를 「」로 바꾸거나 이스케이프.
- `sed -n` 결과를 근거로 파일 상태를 추정하지 말 것. 이전 python 스크립트가 이미 적용된 상태에서 재실행하면 assert가 깨진다. 멱등 처리 또는 사전 검사.
- WebFetch 소형 모델은 JSON-LD 타입(LocalBusiness·MedicalBusiness가 있다고 답함)과 H1 목록을 틀리게 요약했다. 판정은 curl + 파서로만.
- 뉴스 데이터에 병원과 무관한 기사(AI오투오 출시 기사 등)가 섞인다. 본문 관련성 필터 필요(Astra 지적, 미반영).
- 헤더 메뉴 이름이 길어지면 720~1040px에서 두 줄로 깨진다. nowrap + 구간별 축소 규칙 추가함.
- 글 목록은 카테고리별 글 수가 1편이면 세로로 쌓인다. 글 수만큼 span하는 그리드로 해결(`.cat-grid`, 3→2→1열).
- 덱 빌더(ifd)는 폰트 확정 기준(본문 20)에서 카피 분량 검사를 강제한다. 3열 카드 불릿은 약 30자, 2열 rows 본문은 약 55자, 리드는 약 60자, 제목은 약 20자. 폰트를 줄이지 말고 카피를 줄인다.
- LibreOffice PDF 변환은 pptx 재빌드 실패 시에도 이전 파일로 조용히 성공한다. 빌드 → 축소 → PDF를 `&&`로 묶는다.
---
## 9. haewon에게 물어볼 것
1. 영상 페이지 "채널 인기 전체" 탭(전후·후기 제목 포함) 제거 여부.
2. §6 입력 폼을 어디에 둘지: 서포터즈 사이트 내 관리자 페이지 / INFINITH 랜딩 / 노션·이메일.
3. 검토 승인의 법적 책임 주체(병원 원장 서명 형태가 필요한지).
4. 두 번째 검증 병원.
5. 생성 모델과 키(Claude API 회사 키 유무), 글 생성 단가 상한.
6. v1 §7의 워커 위치·배포 방식.
---
## 10. 완료 기준 (v1 §8에 추가)
- §3의 "검사" 11개가 게이트에 있고, 픽스처로 각각 실패를 재현한다.
- 뷰성형외과 18편이 확장된 게이트를 0오류로 통과한다.
- 자동 생성 글이 §4 순서 밖의 사실을 포함하지 않는다(근거 없는 수치 = 0건, 수동 대조 10편).
- §6 입력이 비어 있어도 사이트가 "확인 대기" 표기로 빌드·배포된다.
- 병원이 §6을 채우면 코드 수정 없이 데이터만으로 검토 완료·스키마가 켜진다.
---
## 11. 진행 기록 (2026-09-07 세션 2 · 브랜치 `feature/supporters-autobuild`, 워크트리 `orca/workspaces/INFINITH/Productize`)
§7의 1·2단계를 마쳤다. 3단계부터는 §9의 답이 필요한 항목이 섞여 있어 아래 "남은 결정"을 먼저 본다.
### 11-1. 게이트 확장 (§7-1) · 커밋 49c5e46
- `supporters/scripts/gate/rules.mjs`: §3의 "검사"를 순수 함수로. error(배포 차단) 11종 + warn 6종.
- error: OPERATOR_VOCAB(3-1) · SOURCE_TYPE_MISSING/UNKNOWN(3-4) · REGULATION_SOURCE_MISSING(3-4) · CONCLUSION_PHRASE(3-5) · NUMBER_DATE_MISMATCH(3-6) · REVIEWED_WITHOUT_DATE/REVIEWER · REVIEWER_UNKNOWN · AUTHOR_UNKNOWN(3-7) · BANNED_VIDEO_TITLE(3-8) · BANNED_PHRASE · HOME_DUPLICATE(기존)
- warn: LAYOUT_CHANGED(3-2, 픽셀 대신 텍스트를 뺀 tag.class 구조 지문 비교) · HEADING_VERB · PLAIN_ENDING(3-3) · NUMERIC_NO_QUALIFIER(3-5) · FACT_NEXTCHECK_PASSED(3-6) · NO_TABLE_OR_CHECKLIST(3-11)
- 결론 문장 검사는 문장 단위이고 부정문("보장되는 것은 아닙니다")과 임상 의견 표기("원장의 임상 판단")는 통과시킨다. 정답지 18편이 이 예외 없이는 걸린다.
- `scripts/check.mjs`: dist + 소스 frontmatter + 데이터 JSON 검사. `--update-layout`은 haewon이 룩앤필 변경을 승인한 뒤에만.
- `scripts/gate/test.mjs` + `fixtures/` 9개: 실패 재현 7건(운영자 어휘·type 없는 source·reviewed인데 reviewedAt 없음·검토자 미등록·확인일 불일치·영상 제목 금칙·결론 문장·규제 원문 없음) + 18편 회귀 + 부정문 통과. `npm run gate:test`.
- 18편 결과: 오류 0, 경고 10(수치 한정 없음 5, 「채널 인기 전체」 탭 영상 제목 5). corrections.json의 「답변엔진」과 반말 문장 1건은 고쳤다.
- `scripts/audit_aeo_geo.py`: 표본 URL 5개 미만 경고(§3-10). 채점기 자체는 아직 2개 URL만 읽는다.
### 11-2. 템플릿화 (§7-2) · 커밋 622441e
- 병원 고유값은 `factSheet.json`(사실) · `authors.json`(사람) · `site.json`(매체 이름·로고·홈 큐레이션·방문 약도·추천 글) 세 파일로만 들어간다. 페이지 15개에서 하드코딩을 뺐다.
- `lib.ts`: `PENDING = '확인 대기'`, `v()`(표시), `has()`(스키마·링크), `surface()`. 빈 값은 화면에 "확인 대기", 스키마에서는 필드 제거.
- 검증: 28페이지의 표시 텍스트와 구조 지문이 리팩터 전 빌드와 동일. JSON-LD 차이는 빈 `sameAs: []` 제거뿐.
- `scripts/export_template.mjs` → `templates/supporters-astro/`. 글·데이터·이미지·home_text·구조 기준선을 빼고 `scripts/template/data/`의 빈 세트를 넣는다. 병원 문자열이 남으면 실패. 빈 데이터로 10페이지 0오류 빌드, 게이트 통과.
- 템플릿 사용: `templates/supporters-astro`를 복사 → 데이터 6개 + posts + public/img + home_text 채움 → `__CLINIC_ID__` 치환 → `npm ci && npm run build`.
### 11-3. 남은 단계와 의존 관계
| 단계 | 상태 | 막는 것 |
|---|---|---|
| 3 근거 수집기 (`evidence/<clinic>/`) | **완료** (커밋 c92ecc8, §11-4) | 없음 |
| 4 글 생성기 | **완료** (§11-5) | 편당 약 $0.09 실측. 단가 상한은 --max-cost-usd 로 걸 수 있고 값은 미정 |
| 5 승인 UI (§6 입력 폼) | **완료·프로덕션 배포** (§11-6, §11-8) | 상단 고지 문구(site.sponsorNotice)는 병원 입력 후 켜진다 |
| 6 워커·배포·랜딩 연결 | **완료** (§11-7, §11-8 미리보기 배포됨) | 워커 실행 위치(§12-3)·자동 트리거는 미결. 지금은 로컬에서 수동 실행 |
| 7 두 번째 병원 회귀 | **완료** (§11-9, 원진성형외과 6/6편, 게이트 0오류) | 없음 |
| 「채널 인기 전체」 탭 | **제거됨** (§11-9) | 없음 |
### 11-4. 근거 수집기 (§7-3) · 커밋 c92ecc8
- `supporters/scripts/collect_evidence.mjs --clinic <id> --url <홈> [--posts src/content/posts]`. Node 22 + node-html-parser, Firecrawl·요약 도구 없이 curl+파서만(§3-10).
- 발견: 홈 전체 앵커(메뉴 제거 전) + `page` 사이트맵만(글·영상 post 사이트맵 제외). robots.txt Disallow 존중, 요청 간 400ms.
- 분류: 경로 세그먼트 우선, 단어 경계(`relocation`이 `location`에, `contour`가 `tour`에 걸리던 오분류 수정). 후보는 `수술 시간|마취|회복|실밥…` 힌트로 procedure/other.
- 본문: 컨테이너 후보(`main`, `#ajax-content-wrap`, `#content`…) 중 200자 넘는 첫 것 → 페이지 30% 이상에 반복되는 줄(메뉴·푸터) 제거 → 헤딩·문단·목록·표·이미지·링크.
- 산출: `index.json`(유형·글자·표·이미지·플래그), `pages/<slug>.json`, `doctors.json`, `facts.draft.json`(전화·주소·사업자번호·대표·진료시간 후보 + 출처 URL), `home_text.txt`(전 페이지 본문 공백 제거).
- 뷰성형외과 결과: 222 링크 → 223 페이지(정보형 유형 18 + 의료진 상세 27 + 시술 108 + 기타 70). 글에 인용된 병원 URL 16/16 커버(`/face/main/`은 301 → `/facial-contour/main/`). 의료진 27명 이름·직함 확인, **약력은 27명 전원 이미지 글자라 "확인 대기"** (authors.json의 약력은 사람이 이미지를 읽어 넣은 값이다. 자동화는 이 값을 만들 수 없다 → §6 입력 항목).
- 게이트 연결: `node scripts/check.mjs --home-text=../evidence/viewclinic/home_text.txt` → 18편이 전체 사이트 29만 자 기준 40자 연속 일치 0건.
- 한계: 홈 본문은 이미지·슬라이더라 0자(사실 후보는 전체 body에서 뽑아 정상). 주의사항 페이지는 탭 구조라 표가 0개이고 부위별 문장은 문단으로만 들어온다. 표 형태로 재구성하는 것은 글 생성기의 일.
### 11-5. 글 생성기 (§7-4) · 2026-09-07 세션 3
- `supporters/scripts/generate_posts.mjs` + `scripts/gen/evidence.mjs`(§4 순서 컨텍스트) · `gen/prompt.mjs`(규칙·스키마·근거 대조 프롬프트) · `gen/serialize.mjs`(js-yaml 직렬화 + 빌드 없는 소스 게이트). 입력 형식은 `supporters/briefs/README.md`.
- 흐름: brief → 컨텍스트(병원 페이지 → 쇼츠 정리 답/자막 → 기사 제목 → 규제 원문 → 팩트 시트 → 의료진 목록) → GPT-4.1 구조화 출력(요약 3·본문·FAQ·태그·pending·usedRefs) → 후처리(근거 태그·본문 FAQ 제거) → 검사 3종 → 수정 최대 2회 → md + report.
- 검사 3종: (1) 소스 게이트 = rules.mjs 전부 + 금칙어 + 홈페이지 40자 중복 + **COMPARISON_CLAIM 신설**(타 병원·업계 평균 비교 수치. 안전 페이지의 "병원급 평균 23.1% vs 43%"를 모델이 실제로 옮겨 써서 추가) (2) 수치 대조 = 글의 숫자+단위 토큰이 근거 텍스트에 그대로 있어야 함(NUMBER_NOT_IN_EVIDENCE, 1차 출력에서 18편 중 19건 검출) (3) 모델 근거 대조 = unsupported/distorted 목록, 항목별 supported 판정으로 오탐("근거에 명시되어 있음"이라며 올리는 것) 제거.
- sources·videos·검토자 후보는 brief에서 결정론적으로 조립한다. 모델은 사실의 출처를 고르지 않는다. reviewStatus 는 항상 pending, reviewedAt 은 쓰지 않는다(§3-7).
- 정답지 18편 회귀(같은 문항·같은 근거 URL): **18/18 게이트 오류 0**(1차 실행 12편 통과 + 검사 오탐 수정 후 6편 재실행 통과). 편당 약 $0.09(호출 2~6회, 목록가 기준), 22초. 리포트 `docs/reports/viewclinic/04_supporters/Viewclinic_Supporters_Generator_Regression_2026-09-07_run1.md` · `…_run2_retry6.md`, 샘플 3편 `generated_samples/`.
- 새 문항 검증: `briefs/viewclinic/eye-double-eyelid-methods.json`(쌍꺼풀 자연유착·절개·콤비매몰 비교, D2-02/03/06) → 수정 호출 없이 통과, $0.10.
- 정답지와의 판단 차이(사람 확인 항목): 모델은 애프터케어의 "5~7일 후 일상생활 가능"을 출근 시점으로 읽고, 사람 편집자는 "출근 기준은 공개 자료에 없음"으로 썼다. 근거에는 있으므로 게이트는 통과한다. 이런 해석 차이는 검토 원장 게이트에서 잡는다.
- 한계: 본문이 이미지 글자인 페이지(코 메인·가슴재수술·진료분야)는 근거 0자로 들어가 pending 에 쌓인다. 자막 없는 롱폼은 인용하지 않으므로 그 글은 정답지보다 얇다(보형물 표면 글 650~900자). 자막 파이프라인(v1 §6)이 붙으면 `evidence.transcripts` 로 넣는다.
- 미결: 단가 상한값(§9-5). 실측 편당 $0.05~0.19, 첫 배치 10편이면 약 $1.
### 11-6. 승인 UI · 입력 반영 (§7-5, §12-2 코드 반영) · 2026-09-07 세션 3
- 테이블: `supabase/migrations/20260907_supporter_builds.sql` — `supporter_builds`(빌드 실행 기록·단계·글 목록·미리보기 URL, 워커가 service_role 로 갱신) · `supporter_inputs`(§6 9항목 + 글별 post_review/post_approval, 익명 insert/select). **미적용** (discovery_leads 와 함께 `supabase db push`).
- 폼: `src/components/discovery/ClinicInputsPanel.tsx` → `/discovery/:id` 5절과 6절 사이. 빌드 상태·미리보기 링크, 9항목 입력(입력자 기록), 의료진 ID 표, 글별 검토(검토자 ID·검토일)와 게시 승인(개설자 이름·직함·승인일). 검토 전 승인 버튼은 비활성. tsc 통과.
- 반영: `supporters/scripts/apply_inputs.mjs --inputs file | --from-supabase`. 같은 (key, post_id) 최신 행만. author/editor → authors·corrections, sponsorship → site.sponsorNotice, specialty_doctors → physicians.specialty, domain → site, 자유 답변 4종 → `src/data/clinicAnswers.json`(생성기 근거 [A], `--site` 옵션으로 워커 작업 폴더에서도 동작), post_review → reviewer·reviewStatus=reviewed·reviewedAt·history, post_approval → approvedBy·approvedAt(검토 전이면 보류). 샘플 `supporters/briefs/viewclinic/inputs.sample.json` dry-run 9건 반영 확인.
- §12-2 코드 반영: (1) `DisclosureTop.astro` + 게이트 `DISCLOSURE_TOP_MISSING`(site.sponsorNotice 비면 warn, 채우면 error). 지금은 비어 있어 룩앤필 변화 없음. (2) frontmatter `approvedBy/approvedAt`, `lib.isPublishable`: PUBLIC_INDEXABLE=true 빌드는 승인 글만 낸다(글·목록·사이트맵·작성자 페이지). 검증: 색인 허용 빌드 → 승인 0편이라 글 0개, 게이트 오류 0. 게이트 `APPROVED_WITHOUT_BY/DATE`·`APPROVED_BEFORE_REVIEW`·`UNAPPROVED_IN_INDEXABLE_BUILD`. (3) `PRESS_VOICE` 경고를 rules.mjs 로. 규제 주장 검사에서 「게시 승인」은 제외.
- 랜딩 카피: SampleReport 의 "SAMPLE REPORT · 뷰성형외과 실측" → "SAMPLE REPORT · 실제 사례"(haewon 지시). 두 워크트리(이 브랜치, feature/discovery-url-cta)에 적용, 프로덕션 배포 완료(§11-8).
### 11-7. 워커 (§7-6) · 2026-09-07 세션 3
- `workers/supporters-build/run.mjs --clinic <id> --url <홈> [--inputs|--from-supabase] [--brief] [--max-posts] [--max-cost-usd] [--deploy] [--build-id]`. 실행 환경 독립(로컬·GitHub Actions·Trigger.dev 태스크 어디서든 같은 명령). 단계 evidence → data → inputs → briefs → generate → build → deploy → done, 단계마다 `<work>/status.json` + (build-id 있으면) supporter_builds PATCH.
- data 단계: 템플릿 복제 + `__CLINIC_ID__` 치환 + facts.draft 첫 후보로 팩트 시트(상호·전화·주소·사업자번호·대표, checkedAt/nextCheck) + doctors.json 으로 physicians(이름·직함·URL, 약력은 빈 배열) + 작성자 "확인 대기".
- briefs 단계: `supporters/scripts/default_briefs.mjs` 가 근거 유형(about·direction·safety·precautions·aftercare·checkup)이 실제로 있는 문항만 골라 첫 배치 최대 6편(A 병원 소개, B 방문, E 안전, D 주의사항, C 상담 질문, D 애프터케어). 비교 수치·가격·전후·경험담은 avoid 에 고정.
- **뷰성형외과 E2E 실측**: URL 하나 → 223페이지 수집 → 의료진 27명 → brief 5편(병원 소개는 about 페이지 본문 0자라 제외) → 5/5편 게이트 통과(수정 호출 0, $0.29, 편당 15초) → npm ci·astro build·check.mjs 오류 0(경고 2) → dist 생성. 사람 개입 0. 배포는 `--deploy` 를 주지 않아 건너뜀. 리포트 `docs/reports/viewclinic/04_supporters/Viewclinic_Supporters_Worker_E2E_2026-09-07.md`, brief `generated_samples/default_briefs_viewclinic.json`.
- deploy 단계(미실행): `vercel link --yes --project supporters-<id>` + `vercel deploy --prod --yes`. 첫 실행은 Vercel 프로젝트를 새로 만드는 외부 행위라 haewon 확인 후. 트리거(discovery_leads insert → Database Webhook → 워커)와 Trigger.dev 래핑은 §12-3 확인 후.
- 남은 것: discover-channels(유튜브·인스타 핸들)·유튜브 집계·뉴스룸(build_news.py)·감사 재실행(Phase 9)은 워커에 아직 안 붙었다. 이 세 개는 뷰성형외과 샘플에서 사람이 돌린 스크립트가 있으므로 다음 세션에 단계로 추가한다.
### 11-8. 실행 (haewon "다 실행해줘") · 2026-09-07 세션 3
- Supabase: `supporter_builds`·`supporter_inputs` 마이그레이션 적용(Management API `/database/query`, CLI 키체인 토큰 사용. `discovery_leads` 는 이미 적용돼 있었음). 테이블 3개 확인.
- 서포터즈 미리보기: 워커 deploy 단계 실행 → Vercel 프로젝트 `supporters-viewclinic` 생성, **https://supporters-viewclinic.vercel.app** (X-Robots-Tag noindex, robots Disallow 확인). supporter_builds 행 05ae08e3… status=preview, preview_url 기록.
- 랜딩 앱: 브랜치 `feature/supporters-autobuild` 를 origin 에 푸시하고 `vercel --prod` 로 infinith-demo 프로덕션 배포. 번들에 "SAMPLE REPORT · 실제 사례", "병원 확인 항목" 확인. /discovery/viewclinic 하단에 병원 확인 항목 패널이 미리보기 링크와 함께 뜬다.
- 아직 자동이 아닌 것: discovery_leads insert → 워커 실행 트리거. 지금은 `node workers/supporters-build/run.mjs --clinic <id> --url <홈> --deploy --build-id <id>` 를 사람이 돌린다. 병원 입력 후 재빌드도 `--from data --from-supabase` 로 수동.
### 11-9. haewon 결정 반영과 두 번째 병원 완주 (§7-7) · 2026-09-07 세션 4
- 결정(§9): 9-1 「채널 인기 전체」 탭 **제거**(videos.astro, check.mjs 경고 삭제). 9-4 두 번째 병원 **원진성형외과**(https://www.k-wonjin.co.kr). 9-5 단가 상한 **실행당 $10**(generate_posts·run.mjs 기본값). 9-6 워커 위치는 Claude 추천 → `workers/supporters-build/README.md`: 파일럿은 haewon Mac 의 launchd 폴러(`launchd/com.infinith.supporters-poll.plist`, 미설치), 정착은 Trigger.dev(가입·API 키만 haewon).
- 큐 연결: DiscoveryLeadModal 이 `discovery_leads` 와 함께 `supporter_builds`(queued, clinic_id 는 호스트 첫 세그먼트) 행을 만든다. 마이그레이션 `20260907_supporter_builds_queue.sql`(clinic_name 열, anon queued insert 정책) 적용됨. `workers/supporters-build/poll.mjs` 가 queued 행을 조건부 갱신으로 집어 `run.mjs` 실행. 리포트 없는 병원용 `/supporters/:id` 페이지(ClinicInputsPanel 단독). 랜딩 프로덕션 재배포 완료.
- **원진성형외과 E2E**: 3번 실패하고 4번째에 완주. 실패 원인과 수정 (1) 비브라우저 UA 403 → 브라우저 UA + 식별 문자열 (2) 경로 끝 슬래시 강제 → 404. 슬래시 미강제 + 404 시 반대 형태 재시도(뷰성형외과 회귀 223페이지 동일) (3) 기획 목록이 뷰 전용 페이지 유형에만 의존 → `default_briefs.mjs` 2층 구조(전용 페이지 문항 + 시술 영역·소개·예약 기반 문항, 조사 은/는 처리) (4) 인터넷 끊김(fetch failed) → `--from generate` 재개.
- 결과: 216페이지 · 의료진 17명 · 브리프 6편(병원 소개, 방문, 윤곽, 눈성형, 레이저안티에이징, 상담 질문) → **6/6편 게이트 통과**(수정 호출 3, 근거 플래그 2건은 사람 확인용) · $0.58(편당 $0.10) · 빌드·게이트 오류 0 · **https://supporters-wonjin.vercel.app**(noindex). 사람 개입 0. v1 §8 "두 번째 병원에서도 게이트 0오류로 완주" 충족.
- 원진 글의 특징: 시술 페이지에 없는 칸은 표에 "확인"으로 남고(눈성형 표의 쌍꺼풀·눈매교정 행 전부 확인), 근거가 있는 행(CFS 2시간·7일·3일, 오픈아이 40분·5~7일)만 값이 있다. 이것이 의도한 동작이다. 리포트 `docs/reports/viewclinic/04_supporters/Wonjin_Supporters_Worker_E2E_2026-09-07.md`.
- 남은 것: 유튜브 핸들 발견·조회수 집계·뉴스룸·감사 재실행을 워커 단계로 추가. 원진은 유튜브 채널 3개가 registry 에 있으므로 첫 후보. launchd 폴러 설치는 haewon 확인 후.
### 11-10. 유튜브·로고 단계 (v1 §3 Phase 2 일부) · 2026-09-08
- haewon 지적: 원진 글 카드에 검은 도형(Astro 기본 파비콘)이 보임. 원인은 워커가 이미지·영상 자산을 아직 안 붙이고 카드가 파비콘으로 대체하던 것.
- `supporters/scripts/collect_youtube.mjs --channel <UC…|@handle|URL>`: YouTube Data API 로 uploads 전량 → videos.list 배치 → 쇼츠 판별(/shorts/{id} HEAD 200, 상위 120편, 제목 #shorts 포함 시 쇼츠) → viewclinic 과 같은 videos.json(channel·top·topLong·topShorts·shortsInfo·all). 정보형 판정 = NOT_INFO(후기·전후·토크·브이로그·브랜드 필름·연예인·트렌드·변화 등) + 게이트 BANNED_VIDEO_TITLE + checkBannedBody(제목). 설명형 롱폼은 90초 이상. `all[].info` 로 판정을 남긴다. shortsInfo.answer 는 비워 둔다(사람이 채움).
- 워커 `youtube` 단계(data 다음): `--logo <svg|png>` → public/img/logo.*, site.logo/logoFoot, 파비콘(SVG 는 64×64 흰 배경에 중앙 배치한 favicon.svg). `--youtube <채널>` 없으면 근거 링크에서 자동 발견. site.homeVideos(topLong 3편), factSheet.surfaces.youtube 채움. 오늘 집계본이 있으면 재사용.
- 글↔영상: `default_briefs.mjs` 가 정보형 롱폼 중 제목이 글 주제 키워드(시술 영역 라벨·안전·상담 등)와 겹치는 것 최대 3편을 brief.videos 로. 병원 소개·방문 안내는 영상을 붙이지 않는다. 워커 generate 단계는 기존 글이 있으면 재생성하지 않고 brief 의 영상만 frontmatter 에 덮어쓴다(`--regenerate` 로 재생성). data 단계 재실행 시 글·videos.json 보존.
- 카드 대체: PostCard 는 썸네일 → 히어로 → 첫 영상 → 건물 사진 → 병원 로고(`.thumb-logo`, contain) 순. 프레임워크 파비콘은 쓰지 않는다.
- 게이트가 잡은 것: 설명 영상 제목 "부작용은 없을까?" 가 BANNED_PHRASE 로 홈·영상 페이지에서 차단 → 수집 단계에서 같은 규칙으로 거르게 수정.
- 원진 결과: 채널 736편 · 설명형 롱폼 10 · 쇼츠 10 · 글 2편에 영상 3편씩(눈성형, 상담 질문), 나머지 4편은 로고 카드 · 헤더 로고·파비콘 = 원진 로고(`supporters/briefs/wonjin/logo-horizontal.svg`). https://supporters-wonjin.vercel.app 재배포. 뷰성형외과 회귀: 게이트 16/16, 빌드 오류 0.
- 남은 것: 홈페이지 이미지(전후 제외) 히어로·갤러리, 뉴스룸, 감사 재실행. 쇼츠 정리 답은 사람 입력.
### 11-11. 홈페이지 이미지 단계 (법 기준) · 2026-09-08
- haewon 지시: 전후 사진을 거르는 규칙은 의료법 등 관련 법규를 기준으로, 병원은 파트너·고객이므로 법에 걸리지 않는 범위에서 진행.
- 규칙 문서 `docs/INFINITH_Supporters_Image_Rules.md`: 의료법 56조 2항(2호 치료경험담, 4호 비교, 6호 수술 장면 노출, 7호 부작용 누락, 8호 과장, 14호 인증·보증), 의료광고 심의 기준의 전후 사진 조건(동일 조건·무보정·부작용 병기·환자 동의), 개인정보보호법·초상권을 이미지 유형별 규칙으로 대응. 자동 수집으로 조건을 확인할 수 없는 것(전후·사례·후기·모델·환자·비교·수상·인증·수술 장면·신체 실사)은 제외, 병원 서면 확인 후 사람이 넣는다. 법률 자문 아님, 변호사 확인 권고.
- `supporters/scripts/collect_images.mjs` + `img_process.py`(PIL): 근거 페이지 이미지 → 규칙 분류(의료진·시설·시술 도해·장비) → 다운로드 → 폭·비율·애니메이션·**글자 이미지 검사(흰 배경 평탄화 후 흰 픽셀 80% 이상 제외)** → 1600px JPEG → `public/img/{doctors,clinic,procedure,equipment}` + `src/data/images.json`(alt·캡션 "출처: 홈페이지 {페이지} ({캡처일})"·원본 URL). 신체 부위(가슴·힙·바디·지방) 페이지 실사는 파일명에 illu·step·diagram·circle 이 있을 때만.
- 워커 `images` 단계(youtube 다음): site.heroImage(가로 시설 사진)·buildingImage·insideGallery·clinicGallery·imageCredit, physicians[].image. `default_briefs.mjs` 가 글별 히어로 1 + 갤러리 최대 3(근거 페이지에서 나온 도해·장비, 병원 소개는 시설 사진). generate 단계의 기존 글 갱신이 hero·gallery·thumbnail 도 brief 기준으로 덮어쓴다.
- 원진 결과: 후보 427 → 저장 66장(의료진 17, 시설 9, 시술 40). 6편 전부 히어로 있음, 눈성형·상담 질문 글 영상 3편, 원장 17명 사진. 눈으로 확인한 것: 상담 장면·수술실 모니터링·코 수술 도해는 적합, 흰 배경 마케팅 문구 이미지(힙업 카피)는 1차에서 통과했다가 평탄화 순서 수정 후 제외. https://supporters-wonjin.vercel.app 재배포.
- 한계: 이미지 내용을 사람이 전수 확인하지는 않았다(파일명·alt·흰 배경 휴리스틱). 얼굴·신체 검출은 없으므로 병원 송부 전 사람이 갤러리를 한 번 훑는다. 뉴스룸·감사 재실행은 아직.
### 11-12. 채널 발견 + 엔티티 검증 (v1 §3 Phase 0 대체) · 2026-09-08
- haewon 요청: 병원 이름이나 URL만 들어오면 웹 검색으로 유튜브·소셜을 찾고, 맞는지 엔티티를 확인하고, 내용을 끌어와 사이트에 반영.
- `supporters/scripts/discover_channels.mjs --clinic <id> (--name | --url) [--evidence] [--out]`. datacrawling 스킬 §1~§2 를 코드로 옮겼다. 다섯 갈래: ① 사이트 전수(홈·법무·소개·연락처 HTML, JSON-LD sameAs, og/twitter 메타, 근거 수집 링크 전체) ② 웹검색(Firecrawl search 9쿼리 + 네이버 webkr·blog + YouTube API 채널 검색) ③ 핸들 변형(도메인 base × 구분자 × 접미사, 존재 확인만) ④ 레지스트리(`data/clinic_social_registry.json`, 73곳) ⑤ 플랫폼 검색(YouTube API). 이름만 주면 "공식 홈페이지" 검색으로 URL 을 먼저 찾는다.
- 판정(3-state 이상): 홈페이지 역링크(경로 경계까지 일치, +3) · 프로필 제목에 상호(+2, 강남언니·바비톡·플레이스는 +3) · 프로필 설명에 홈페이지 도메인/전화(+2) · 레지스트리(+2) · 검색 스니펫(+1). 3 이상 CONFIRMED, 1~2 CANDIDATE(사람 확인), 404 HANDLE_DEAD, 차단 BLOCKED, 후보 0 은 다섯 갈래 전부 돌았을 때만 NOT_FOUND 아니면 UNVERIFIED. 유튜브는 채널 id 로 병합.
- 함정: 역링크를 부분 문자열로 보면 `instagram.com/wonjin` 이 `wonjin_official` 안에서 잡혀 변형 핸들이 전부 CONFIRMED 된다 → 경로 경계 정규식. 전화는 하이픈 형식만(사업자번호 오탐).
- 워커 `discover` 단계(data 다음): channels.json → 사이트 데이터, CONFIRMED 1순위를 factSheet.surfaces(유튜브·인스타·페북·블로그·틱톡·카카오·강남언니·플레이스·바비톡)에 넣어 MedicalClinic sameAs·푸터·방문 페이지에 반영. youtube 단계는 CONFIRMED 유튜브 중 구독자 최대를 자동 선택(`--youtube` 우선). status.report.channels 에 인벤토리·확정·후보 저장 → `/discovery/:id`·`/supporters/:id` 패널 "발견한 채널"(확인됨/확인 필요 배지)과 리포트 표.
- 원진(이름만 입력) 결과: 홈페이지 k-wonjin.co.kr 추정 → 유튜브 2(WJ원진성형외과 28,300 · @wjwonjin 14,700), 인스타 3(wonjin_official·wonjin_ps·wj_cosmetic), 페북 KwonjinPS, 블로그 popokpop, 틱톡 wonjin_official, 카카오, 강남언니 2500, 바비톡 3143 CONFIRMED · 네이버 플레이스 NOT_FOUND(사이트·검색에 링크 없음, 플레이스 내부 검색은 미실행이라 실제로는 UNVERIFIED 에 가깝다) · 후보 12(영문 채널·유세윤 광고 채널·wj_plasticsurgery 등). 라이브 sameAs 4개 확인. 뷰성형외과 회귀: 유튜브 2·인스타 4·페북·블로그·카카오 CONFIRMED.
- 결정(haewon 2026-09-08): 유튜브 기준 채널은 **@wjwonjin (UC-EBM4e0VST1W_PQ0NzFMQg, 736편)**. `supporters/briefs/wonjin/clinic.json` 에 고정(youtube·logo). 워커 우선순위 = clinic.json 고정값 > --youtube > 발견 단계 CONFIRMED 중 영상 수 최대. @wj2541(62편, 브랜드 필름)은 쓰지 않는다.
---
## 12. haewon 결정 반영과 제안 (2026-09-07 세션 2)
### 12-1. 결정된 것
| §9 항목 | 결정 |
|---|---|
| 9-2 입력 폼 위치 | **INFINITH 랜딩**. `/discovery/:id` 리포트 안에 "병원 확인 항목" 폼 |
| 검토 흐름 | **빌드를 다 한 뒤 클라이언트(병원)에 송부**. 자동 빌드는 승인 없이 끝까지 돌고, 미리보기(noindex)를 보낸 뒤 병원이 검토·승인 입력 |
| 9-5 생성 모델 | **GPT-4 계열** (`OPENAI_API_KEY` 있음). 단가 상한은 첫 배치 실측 후 정함 |
| 9-3 법적 주체 | 리서치 후 제안 → §12-2 |
| 9-6 워커·배포 | 추천 → §12-3 |
| 9-1 탭 제거 · 9-4 원진성형외과 · 9-5 $10 · 9-6 워커 위치(README 추천) | **결정됨 2026-09-07** (§11-9) |
### 12-2. 검토 승인의 법적 책임 주체 · 제안
근거 조문을 원문으로 확인한 결과다(법률 자문이 아니며, 계약 전 변호사 확인을 권한다).
**사실 1. 의료광고는 의료인등만 할 수 있다.** 의료법 제56조 제1항: "의료기관 개설자, 의료기관의 장 또는 의료인(의료인등)이 아닌 자는 의료에 관한 광고를 하지 못한다." 서포터즈 사이트는 병원의 지원(경제적 이해관계)을 받아 의료행위·의료기관 정보를 알리므로 의료광고로 볼 가능성이 높다. 따라서 **광고의 주체(법적 책임 주체)는 의료기관 개설자(뷰성형외과 대표원장)이고, AI오투오는 제작·운영 대행**이다. AI오투오가 자기 명의로 의료광고 주체가 되는 구조는 성립하지 않는다.
**사실 2. 금지 유형이 사이트 규칙과 일치한다.** 제56조 제2항: 2호 치료경험담, 4호 다른 의료인과의 비교, 7호 심각한 부작용 등 중요 정보 누락, 8호 객관적 사실 과장, 14호 인증·추천 표현. 이미 §3-8 규칙과 게이트가 막고 있다. 새로 볼 것은 **10호 "기사 또는 전문가의 의견 형태로 표현되는 광고"**다. 서포터즈 글이 기사형·전문가 의견형으로 읽히면 이 호에 걸릴 수 있으므로, 광고(병원 지원)임을 숨기지 않는 표시가 방어선이다.
**사실 3. 사전심의는 매체 기준이다.** 제57조 제1항: 신문·인터넷신문, 옥외광고물, 전광판, 대통령령이 정하는 인터넷 매체(앱 포함), 그 밖의 광고매체. 시행령 기준은 전년도 말 직전 3개월 일일 평균 이용자 10만 명 이상인 인터넷 매체·SNS. **자체 도메인의 신규 서포터즈 사이트는 이 기준에 들지 않아 법정 사전심의 의무는 없다.** 그러나 2트랙의 **네이버 블로그 재작성본은 10만 명 이상 매체라 게시물별 사전심의 대상**이다. 심의 신청은 의료기관 명의로 한다.
**사실 4. 경제적 이해관계 표시.** 추천·보증 심사지침(2024-12-01 시행 개정): 금전 지원·할인·협찬을 소비자가 쉽게 알아볼 수 있게, 게시물 제목 또는 첫 부분에, 같은 언어로, 조건부 표현 없이 표시. 뷰성형외과는 2026-07-12 공정위로부터 수술비 할인 대가를 숨긴 후기 광고로 시정명령·공표명령을 받았다. 같은 유형의 위반이 재발하면 가중된다.
**제안: 3층 책임 구조**
| 층 | 책임 주체 | 화면·기록 |
|---|---|---|
| 의료 내용 | 의료기관 개설자(대표원장). 글별 의학 검토는 담당 원장 | 글 하단 "의학 검토 {원장} ({일}) · 게시 승인 {개설자} ({일})". 승인 기록(승인자·직함·일시·글 버전 해시)을 DB에 남긴다. **자필 서명은 불필요**하고 승인 기록이 근거가 된다. 계약서에 "의료광고 주체는 의료기관 개설자, AI오투오는 제작·운영 대행, 법령·심의 준수 확인은 병원" 조항 |
| 편집·사실 확인·정정 | AI오투오 편집 책임자(안성민) | 현행 ReviewBox·/corrections 유지 |
| 경제적 이해관계 표시 | 병원(광고주)과 AI오투오(매체 운영) 공동 | **글 첫 부분에 고지 추가**(현행은 하단만). 문구 예: "이 글은 뷰성형외과의 지원(광고비)을 받아 뷰 서포터즈가 작성했습니다." 홈·소개에도 같은 문장 |
**검토 흐름(haewon 결정 반영)**: 자동 빌드 완주 → noindex 미리보기 링크 송부 → 병원이 §6 입력 + 글별 검토자·검토일 + 개설자 게시 승인 → 승인된 글만 색인 허용 빌드(`PUBLIC_INDEXABLE=true`). 승인 전 글은 미리보기에서 "검토 대기"로만 보인다. 네이버 트랙은 여기에 의료광고심의위원회 심의를 한 단계 더 둔다.
**코드로 옮길 것**: (1) 고지 상단 배치를 §3-8 규칙에 추가하고 게이트에 "글 첫 화면에 지원 고지 문장 존재" 검사 추가. (2) frontmatter에 `approvedBy`·`approvedAt`(개설자 승인) 필드 추가, 승인 없으면 색인 허용 빌드에서 제외. (3) 56조 2항 10호 대응으로 "기자·전문가 화법" 금칙(「본지」「기자」「전문가에 따르면」) 추가.
### 12-3. 워커 위치·배포 방식 · 추천
**부하**: 근거 수집 3분(220페이지) + 유튜브 집계 2분 + 뉴스 1분 + GPT-4 글 10~20편 5~20분 + astro build·게이트 30초 + Vercel 배포 1분 = **10~30분/병원**. Supabase Edge Function(150초)은 불가. Vercel Functions는 Hobby 300초 상한, Pro 800초(1,800초 베타).
| 안 | 장점 | 단점 |
|---|---|---|
| A. Vercel Functions(Pro) + 단계 분할 + Vercel Cron 폴링 | 인프라 추가 없음 | 단계마다 800초 안에 끝내야 하고 상태 머신·재시도를 직접 만든다. 함수 안에서 `astro build`·의존성 설치가 부적합 |
| B. Inngest (무료 5만 run/월, 스텝 기반) | 재시도·관측 내장, Vercel 연동 | 각 스텝이 Vercel 함수로 실행되므로 A와 같은 시간·환경 제약 |
| **C. Trigger.dev v3 (추천)** | 전용 컴퓨트라 타임아웃 없음, Node 22에서 `npm ci`·`astro build`·Vercel API 호출을 한 태스크에서 순차 실행, 로컬 개발 도구 좋음, 오픈소스 셀프호스트 가능. 무료 1,500 run/월(월 빌드 수십 건이면 충분), 유료 $10/월~ | 서비스 하나 추가. 태스크 안에서 템플릿 의존성 설치가 되는지 첫 구현에서 확인 |
| D. 자체 Node 워커(VPS) + Supabase 큐 폴링 | 완전 통제 | 서버 운영·모니터링 부담. 빌드 수가 적은 지금 단계엔 과함 |
**추천 구조**: Trigger.dev 태스크 `build-supporters(clinicId, url)` 하나가 9단계를 순서대로 실행하고, 단계마다 Supabase `supporter_builds`(id·단계·상태·로그·산출 경로·미리보기 URL)를 갱신한다. INFINITH 랜딩은 이 테이블을 폴링(또는 Supabase Realtime)해 진행 상태를 보여준다. 트리거는 `discovery_leads` insert → Supabase Database Webhook → Trigger.dev 이벤트.
**배포**: 병원당 Vercel 프로젝트 `supporters-<clinicId>` (Vercel Multi-Project Platforms 패턴). 워커가 `astro build` + 게이트를 통과한 `dist/`를 Vercel Deployments API로 **prebuilt 업로드**한다(Vercel 쪽 빌드 없음, 빠르고 실패 지점이 적다). 환경변수 `SITE_URL`·`PUBLIC_INDEXABLE=false`, `X-Robots-Tag: noindex`는 vercel.json에 이미 있다. 도메인 확정 시 alias만 추가. 단일 프로젝트에 `/<id>/` 경로로 묶는 방식은 canonical·robots·sitemap이 병원별로 분리되지 않아 비추천.
**입력 폼(INFINITH 랜딩)**: `/discovery/:id` 안 "병원 확인 항목" 탭 = §6 9항목 + 글별 검토자·검토일·개설자 승인. 저장 테이블 `supporter_inputs`(clinicId·항목·값·입력자·일시). 저장 시 데이터 파일(factSheet·authors·site·글 frontmatter)을 재생성하고 같은 태스크로 재빌드·재배포한다. 코드 수정 없이 데이터만으로 검토 완료·스키마가 켜지는 §10 완료 기준과 맞는다.
**GPT-4 단가**: 글 1편 = 근거 컨텍스트 입력 약 6~10K 토큰 + 출력 약 3K 토큰. 모델은 `gpt-4.1` 또는 `gpt-4o` 중 고르며, 첫 배치 10편을 돌려 편당 비용을 실측한 뒤 상한(예: 병원당 첫 배치 총액)을 정한다. 회귀 기준은 뷰성형외과 18편(같은 문항·같은 근거로 생성 → 게이트 통과 + 세 줄 요약·표·FAQ 규격).

View File

@ -0,0 +1,88 @@
# 다음 세션 프롬프트 v3 · "병원 이름 하나로 진단 리포트와 서포터즈 사이트까지"
작성 2026-09-08 · 작성자 Claude (haewon 세션 핸드오버) · v2(09-07)를 대체한다. v2 §3 판단 분해표·§4 근거 프로토콜·§5 신뢰 층·§6 병원 입력·§11 진행 기록·§12 결정은 그대로 유효하므로 그 부분은 v2를 참조한다. v1(09-04)은 자산 위치·함정 참조용.
---
## 0. 세션 시작 시 그대로 붙여 넣을 프롬프트
```
INFINITH 저장소, 브랜치 feature/supporters-autobuild, 워크트리 ~/orca/workspaces/INFINITH/Productize 에서 "AI Discovery 자동 빌드"를 이어서 개발한다.
지금 상태: 병원 이름 또는 URL 하나로 채널 발견·엔티티 검증 → 근거 수집 → 팩트 시트 → 유튜브·로고 → 이미지(의료법 기준) → 첫 배치 기획 → GPT-4.1 글 생성(게이트·수치 대조·근거 대조) → Astro 빌드·발행 게이트 → Vercel 미리보기(noindex)까지 워커 한 번으로 돈다.
뷰성형외과(정답지 18편 회귀 18/18)와 원진성형외과(이름만 입력, 6/6편, https://supporters-wonjin.vercel.app)에서 사람 개입 0으로 완주했다. 진단 리포트는 /discovery/:id 와 docs/reports/<clinic>/01_readiness_report/*.html·pdf.
먼저 읽는다.
1. docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD_v3.md (이 문서. §2 남은 일과 §3 결정 대기)
2. docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD_v2.md §3·§4·§6·§11-5~§11-12 (규칙·근거 프로토콜·병원 입력·진행 기록)
3. workers/supporters-build/README.md, supporters/briefs/README.md, docs/INFINITH_Supporters_Image_Rules.md
4. docs/INFINITH_AI_Discovery_Retrospective_2026-09-08.md (회고. 왜 이렇게 만들었는지)
원칙: 근거 없는 사실은 생성하지 않는다("확인 대기"). 사람 게이트(의학 검토·게시 승인·채널 확인 필요·이미지 육안 확인)는 자동화하지 않는다. 고객 화면에 운영자 설명을 쓰지 않는다. 확정된 룩앤필은 텍스트만 바꾼다. 존댓말, 엠대시 금지, 은유 금지.
결정이 필요한 것은 §3을 보고 haewon 에게 묻는다.
```
---
## 1. 지금 되는 것 (한 줄씩)
| 단계 | 명령·파일 | 상태 |
|---|---|---|
| 채널 발견·엔티티 검증 | `supporters/scripts/discover_channels.mjs` (이름만으로 홈페이지도 찾음) | 원진 9플랫폼 중 8 CONFIRMED |
| 근거 수집 | `supporters/scripts/collect_evidence.mjs` (브라우저 UA, 슬래시 미강제, 404 재시도) | 뷰 223p · 원진 216p |
| 자동 채점·리포트 | `scripts/audit_aeo_geo.py` → `src/data/discovery_<id>.ts` → `/discovery/:id` · `scripts/build_discovery_report.ts` → HTML/PDF | 뷰 AEO 42/GEO 56 · 원진 AEO 15/GEO 45 |
| 유튜브·로고 | `collect_youtube.mjs`, 워커 youtube 단계, 고정값 `supporters/briefs/<id>/clinic.json` | 원진 736편 집계, @wjwonjin 고정 |
| 이미지 | `collect_images.mjs` + `img_process.py`, 규칙 `docs/INFINITH_Supporters_Image_Rules.md` | 원진 66장 |
| 기획·생성·게이트 | `default_briefs.mjs` → `generate_posts.mjs`(gen/) → `gate/rules.mjs`·`check.mjs`(테스트 16/16) | 편당 약 $0.09 |
| 워커·큐·승인 UI | `workers/supporters-build/run.mjs`·`poll.mjs`, `supporter_builds`·`supporter_inputs`, `ClinicInputsPanel`(/discovery/:id·/supporters/:id) | 라이브. 폴러는 미설치 |
| 입력 반영 | `apply_inputs.mjs` (검토·승인 → frontmatter, 자유 답변 → clinicAnswers 근거 [A]) | dry-run 검증 |
| 미리보기 | supporters-viewclinic.vercel.app · supporters-wonjin.vercel.app (noindex) | 배포됨 |
## 2. 남은 일 (권장 순서)
1. **뉴스룸 단계**: `supporters/scripts/build_news.py`(홈페이지 언론 게시판 + 네이버 뉴스 API, 부정 기사 제외)를 워커 단계로. 원진은 게시판 위치부터 확인. 병원 무관 기사 본문 관련성 필터(v2 §8 미반영) 포함.
2. **감사 재실행 단계(Phase 9)**: 색인 허용 빌드를 로컬에서 `audit_aeo_geo.py`로 다시 채점해 공식 vs 서포터즈 비교표를 리포트 카드에. `scripts/build_supporters_audit_xlsx.py` 로직 재사용.
3. **수동 실측 항목 채우기(원진)**: 강남언니 2500·바비톡 3143·GBP·네이버 플레이스 NAP 대조(D1·D2·D4·D5). 실측하면 GEO 점수가 바뀐다. 리포트 재생성은 `npx esbuild scripts/build_discovery_report.ts ... && node report.mjs --id wonjin ...` + Chrome PDF (v2 §11 명령 참조).
4. **워커 상시 실행**: Mac launchd 폴러 설치(`workers/supporters-build/launchd/`) 또는 Trigger.dev 이관(가입·키만 haewon). 랜딩 URL 신청 → 큐 → 자동 빌드가 이어지려면 이게 필요하다.
5. **병원 송부 전 사람 확인**: 원진 이미지 갤러리 육안 확인(얼굴·신체 검출 없음), "확인 필요" 채널 12건 판정, 쇼츠 정리 답(사람이 영상 보고 한 문단).
6. **검토 파이프라인**: 병원이 `/supporters/wonjin` 폼에 입력 → `run.mjs --from data --from-supabase --deploy --build-id 87cb75a2-2037-4cbb-ae27-c06e39f022e8` 재빌드. 이 재빌드도 폴러가 자동으로 집게 하려면 supporter_inputs insert 트리거를 큐에 연결.
7. **뷰성형외과 자동 빌드 미리보기**(supporters-viewclinic)를 수작업 샘플(view-supporters-sample) 수준으로: 뷰는 자막·쇼츠 답이 사람 작업이라 격차가 있다. 자막 파이프라인(v1 §6, IP 차단 대비)이 붙어야 좁혀진다.
8. 세 번째 병원 회귀(`data/clinic_social_registry.json` 73곳 중 선택). 사이트마다 새 편차가 나온다는 전제로.
## 3. haewon 결정 대기
1. 원진 "확인 필요" 채널 12건 중 병원 것(영문 채널 Wonjin Plastic Surgery Korea, WONJIN_OFFICIAL 등)을 사이트에 연결할지.
2. 지원 관계 고지 문구(site.sponsorNotice)를 켤지와 문안. 켜면 글 첫 부분에 노출되고 게이트가 필수 검사로 바뀐다(v2 §12-2).
3. 워커 상시 실행 위치(Mac 폴러 설치 vs Trigger.dev 가입).
4. 원진에 미리보기·리포트 송부 시점과 병원 입력 담당자.
5. 경영진 미결 그대로: 도메인(별도 vs 서브도메인), POC 범위·가격, 서포터즈 실존 개인 모집.
## 4. 이번 세션들(09-07 세션 3 ~ 09-08)에서 확정한 것
- 채널 인기 전체 탭 제거 · 단가 상한 실행당 $10 · 두 번째 병원 원진 · 유튜브 기준 채널 @wjwonjin · 이미지는 의료법 기준 조건부 제외(전후·사례·모델·비교·수상·수술 장면·신체 실사) · 병원별 고정값 파일 `supporters/briefs/<id>/clinic.json`.
- 랜딩 SampleReport 라벨 "SAMPLE REPORT · 실제 사례". URL 신청 → `supporter_builds` 큐. `/supporters/:id` 페이지.
## 5. 함정 (v1 §6·v2 §8에 추가)
- 사이트 편차 3종(원진): 비브라우저 UA 403, 경로 끝 슬래시 404, 주의사항·안전 페이지 없음. "한 병원에서 되는 코드"는 회귀 전까지 코드가 아니다.
- 역링크 판정은 경로 경계까지. 부분 문자열이면 변형 핸들이 전부 확인됨으로 잡힌다.
- 투명 PNG는 흰 배경으로 평탄화한 뒤에 글자 이미지 검사. 순서가 바뀌면 장식 오브젝트가 통과한다.
- 모델 근거 대조기는 "근거에 있다"고 적으면서 플래그를 세운다. 항목별 supported 판정으로 거른다.
- 게이트는 영상 제목도 본다. "부작용은 없을까?" 제목이 홈·영상 페이지에서 배포를 막았다. 수집 단계에서 같은 규칙으로 거른다.
- 인터넷이 끊기면 생성 단계가 fetch failed 로 멈춘다. `--from generate` 로 재개.
- `node --experimental-strip-types` 는 확장자 없는 import 를 못 푼다. TS 스크립트는 esbuild 번들로 돌린다.
## 6. 자주 쓰는 명령
```
# 새 병원 전체 (이름·URL·로고)
node workers/supporters-build/run.mjs --clinic <id> --url <홈> --name <상호> --logo <svg> --deploy --build-id <supporter_builds.id>
# 특정 단계부터 (evidence data discover youtube images inputs briefs generate build deploy)
node workers/supporters-build/run.mjs --clinic <id> --url <홈> --work ~/supporters-builds/<id> --from <단계> --deploy --build-id <id>
# 큐 비우기 / 상주
node workers/supporters-build/poll.mjs [--loop 300]
# 게이트 테스트 · 뷰 정답지 회귀 · 템플릿 내보내기 (supporters/)
npm run gate:test · npm run generate:regress · npm run export:template
# 진단 리포트 HTML/PDF
npx esbuild scripts/build_discovery_report.ts --bundle --platform=node --format=esm --outfile=/tmp/report.mjs && node /tmp/report.mjs --id <id> --out <html> --status ~/supporters-builds/<id>/status.json --site ~/supporters-builds/<id>/site --briefs ~/supporters-builds/<id>/briefs.json
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --headless=new --no-pdf-header-footer --virtual-time-budget=8000 --print-to-pdf=<pdf> file://<html>
```

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,143 @@
"""GEO/AEO 최적화 웹사이트에 워드프레스를 쓰는 것의 장단점 — INFINITH 덱."""
import sys; sys.path.insert(0, "/Users/haewonkam/.claude/skills/infinith-deck/scripts")
from ifd import Deck
d = Deck()
# 01 표지
d.cover(eyebrow="GEO / AEO · PLATFORM DECISION",
title_lines=["WordPress for", "AI Search."],
subtitle="GEO·AEO 최적화 웹사이트에 워드프레스를 쓰는 것의 장단점 · 2026. 08. 28",
meta_right="INFINITH Strategy Memo · 2026")
# 02 요약
s = d.slide(eyebrow="Executive Summary",
title="콘텐츠를 계속 쌓는다면 ", title_accent="워드프레스",
lede=["GEO·AEO의 핵심은 AI 크롤러가 읽는 정적 HTML에 구조화된 사실을 꾸준히 쌓는 것입니다.",
"워드프레스는 이것을 기본으로 해주지만, 플러그인과 테마를 통제하지 못하면 장점이 전부 단점으로 뒤집힙니다."],
section="Summary")
a, b, c = s.cards3(y=s.band_y)
a.chip("결론", "good").title("병원 납품 사이트").text("비개발자가 FAQ 페이지를 직접 늘려야 합니다. 워드프레스 + 경량 테마 + 단일 스키마 플러그인 + 관리형 호스팅.").divider().foot("운영 편의 우선")
b.chip("결론", "info").title("자체 제품 랜딩").text("Astro 또는 프리렌더링된 React. 코드로 스키마와 헤더를 완전히 제어하고, 성능을 최고 수준으로 유지합니다.").divider().foot("제어·성능 우선")
c.chip("결론", "violet").title("확장 단계").text("워드프레스를 헤드리스 CMS로 두고 Astro가 빌드 시 가져와 정적 배포. 운영 편의와 제어를 둘 다 확보합니다.").divider().foot("프로덕트화 대비")
# 03 실측 (다크)
s = d.slide(eyebrow="Why It Matters · INFINITH 실측 2026. 08. 28",
title="JS만 있는 사이트는 ", title_accent="AI에게 안 보인다",
lede="INFINITH 랜딩을 GPTBot, ClaudeBot, PerplexityBot, Googlebot, Yeti로 직접 요청해 받은 본문 단어 수입니다.",
dark=True, section="Evidence")
s.stats3([("4 → 810", "프리렌더 전후 크롤러가 읽는 본문 단어 수. 전에는 title 4단어가 전부였습니다."),
("1.5 MB", "본문을 만들기 위해 실행해야 했던 JS 번들. GPTBot, ClaudeBot은 JS를 실행하지 않습니다."),
("0 → 3", "JSON-LD 스키마 수. Organization, SoftwareApplication, WebSite를 추가했습니다.")])
# 04 요구조건
s = d.slide(eyebrow="What GEO / AEO Requires",
title="플랫폼을 고르기 전에 ", title_accent="세 가지 조건",
lede="어떤 도구를 쓰든 이 세 조건을 통과해야 AI 답변에 인용됩니다. 플랫폼 비교는 이 기준으로만 합니다.",
section="Requirements")
a, b, c = s.cards3(y=s.band_y)
a.icon_square().title("크롤러 가독성").text("서버가 완성된 HTML을 내려줘야 합니다. 본문, 제목 구조, 링크가 JS 실행 없이 응답에 포함되어야 합니다.").divider().foot("SSR 또는 SSG")
b.icon_square().title("구조화 데이터").text("MedicalClinic, Physician, FAQPage, Article JSON-LD가 페이지마다 정확히 하나씩. 중복과 충돌이 없어야 합니다.").divider().foot("Schema.org 단일 소스")
c.icon_square().title("콘텐츠 생산량").text("질문과 답변 쌍을 수십에서 수백 페이지 쌓아야 합니다. 비개발자가 매주 추가할 수 있는 구조여야 합니다.").divider().foot("운영 지속성")
# 05 장점 1
s = d.slide(eyebrow="Advantages · 1 / 2",
title="크롤러 가독성은 ", title_accent="기본으로 통과",
lede="PHP가 완성된 HTML을 내려주므로 별도 작업 없이 본문이 크롤러에 노출됩니다.",
section="Advantages")
a, b, c = s.cards3(y=s.band_y)
a.chip("장점", "good").title("서버 렌더링 기본").text("GPTBot, ClaudeBot, PerplexityBot은 JS를 실행하지 않습니다. 워드프레스 응답에는 본문이 그대로 들어 있습니다. SPA는 빈 div만 보입니다.").divider().foot("추가 작업 0")
b.chip("장점", "good").title("스키마 생태계").text("Rank Math, Yoast, Schema Pro가 MedicalClinic, FAQPage, LocalBusiness JSON-LD를 UI로 생성합니다. robots.txt와 llms.txt도 파일 편집으로 즉시 반영됩니다.").divider().foot("비개발자 운영 가능")
c.chip("장점", "good").title("콘텐츠 생산 속도").text("코 재수술 비용, 눈매교정 회복 기간 같은 질문 페이지를 마케팅 담당자가 에디터에서 직접 추가합니다. ACF로 구조화 필드도 관리됩니다.").divider().foot("주 단위 발행")
# 06 장점 2
s = d.slide(eyebrow="Advantages · 2 / 2",
title="락인 없이 ", title_accent="오픈웹에 남는다",
lede="지금 워드프레스를 골라도 나중에 프론트를 바꿀 수 있고, 네이버와 달리 AI 크롤러가 접근할 수 있는 소유 자산이 됩니다.",
section="Advantages")
L, R = s.cards2(y=s.band_y)
L.chip("장점", "good").title("헤드리스 전환 경로").rows([
("REST API / WPGraphQL", "콘텐츠를 그대로 꺼내 Astro, Next.js 프론트에 연결할 수 있습니다."),
("빌드 시 정적화", "프론트를 바꾸면 성능과 스키마 제어를 코드 수준으로 가져옵니다."),
("이전 비용 낮음", "글, 이미지, 카테고리 구조가 DB에 남아 마이그레이션이 단순합니다."),
])
R.chip("장점", "good").title("오픈웹 소유 자산").rows([
("네이버 자산은 차단됨", "네이버 블로그, 플레이스, 카페는 robots.txt로 AI 크롤러를 전면 차단합니다."),
("자체 도메인은 열림", "워드프레스 사이트는 GPTBot, ClaudeBot이 읽고 인용할 수 있는 유일한 소유 표면입니다."),
("브랜드 신호 축적", "인용될수록 브랜드 언급이 쌓여 다음 답변에도 다시 인용됩니다."),
])
# 07 단점 1
s = d.slide(eyebrow="Disadvantages · 1 / 2",
title="통제 못하면 ", title_accent="성능과 HTML이 무너진다",
lede="테마, 페이지빌더, 플러그인이 쌓이면 크롤러가 읽는 HTML이 지저분해지고 로딩이 느려집니다.",
section="Disadvantages")
a, b, c = s.cards3(y=s.band_y)
a.chip("단점", "critical").title("성능 저하가 기본값").text("페이지빌더와 플러그인 20개면 LCP 4초를 넘기기 쉽습니다. AI Overview는 검색 순위 기반이라 간접 영향이 큽니다.").divider().foot("대책: 경량 테마 + 캐시")
b.chip("단점", "critical").title("HTML 노이즈").text("Elementor, Divi가 만드는 div 중첩 10단계와 인라인 스타일은 AI가 답변 단락을 뽑을 때 노이즈입니다. h2 질문, p 답변 구조가 깨집니다.").divider().foot("대책: Gutenberg만 사용")
c.chip("단점", "critical").title("스키마 중복 충돌").text("Yoast, 테마 내장, FAQ 플러그인이 각자 JSON-LD를 뿌려 Organization이 3개 나오는 경우가 흔합니다. Rich Results 검사에서 오류가 납니다.").divider().foot("대책: 스키마 소스 1개")
# 08 단점 2
s = d.slide(eyebrow="Disadvantages · 2 / 2",
title="보안, 제어, ", title_accent="한국 시장 커버리지",
lede="병원 사이트는 해킹 피해가 브랜드 오염으로 이어지고, 국내 AI 답변은 네이버 자산을 우선 인용합니다.",
section="Disadvantages")
a, b, c = s.cards3(y=s.band_y)
a.chip("단점", "warning").title("보안·유지보수 부담").text("플러그인 취약점으로 해킹당하면 스팸 페이지가 대량 생성되고, 이것이 AI 크롤러에 잡혀 브랜드가 오염됩니다.").divider().foot("대책: 관리형 호스팅")
b.chip("단점", "warning").title("세밀한 제어 한계").text("페이지별 robots 메타, 크롤러별 응답 분기, Edge 캐싱 정책은 커스텀 코드나 Cloudflare에서 처리해야 합니다.").divider().foot("Astro보다 손이 많이 감")
c.chip("단점", "warning").title("한국 시장 특수성").text("네이버 서치어드바이저 등록과 사이트맵 제출을 별도로 해야 하고, 네이버 AI 브리핑은 네이버 자산을 우선 인용합니다.").divider().foot("글로벌 AI에 강함")
# 09 대안 비교 (다크)
s = d.slide(eyebrow="Alternatives",
title="네 가지 선택지, ", title_accent="같은 기준으로",
lede="크롤러 가독성, 운영, 스키마 제어, 성능, 유지보수, 비용. INFINITH 현재 스택(Vite SPA)을 기준선으로 넣었습니다.",
dark=True, section="Alternatives")
w = s.card_wide(y=s.band_y)
w.grid(["기준", "워드프레스", "Astro / Next.js SSG", "Webflow / Framer", "Vite SPA (INFINITH 기존)"],
[["AI 크롤러 가독성", "좋음", "최고", "좋음", "나쁨"],
["비개발자 콘텐츠 운영", "최고", "나쁨", "좋음", "불가"],
["스키마 제어", "플러그인 의존", "코드로 완전 제어", "제한적", "코드로 완전 제어"],
["성능", "관리 필요", "최고", "좋음", "좋음"],
["유지보수", "부담 있음", "낮음", "낮음", "낮음"],
["비용", "낮음", "낮음", "월 구독", "낮음"]],
col_w=[3.5, 3.3, 3.3, 3.3, 3.3], row_h=0.66,
tones=[[None, "good", "good", "good", "critical"],
[None, "good", "critical", "good", "critical"],
[None, "warning", "good", "warning", "good"],
[None, "warning", "good", "good", "good"],
[None, "warning", "good", "good", "good"],
[None, "good", "good", "warning", "good"]])
# 10 추천 구성
s = d.slide(eyebrow="Recommendation",
title="용도에 따라 ", title_accent="세 가지 구성",
lede="한 가지 정답은 없습니다. 누가 콘텐츠를 추가하는지, 얼마나 제어가 필요한지로 정합니다.",
section="Recommendation")
a, b, c = s.cards3(y=s.band_y)
a.icon_square().title("병원 클라이언트 납품").text("워드프레스 + GeneratePress 또는 Kadence + Rank Math 단일 스키마 + WP Rocket 캐시 + 관리형 호스팅. 클라이언트가 FAQ를 직접 추가합니다.").divider().foot("운영 편의 우선")
b.icon_square().title("INFINITH 자체 랜딩").text("Astro 콘텐츠 + React 아일랜드. 현재 Vite SPA에는 프리렌더링을 붙여 크롤러 본문 4단어를 810단어로 이미 끌어올렸습니다.").divider().foot("제어·성능 우선")
c.icon_square().title("하이브리드").text("워드프레스를 헤드리스 CMS로 두고 Astro가 빌드 시 가져와 정적 배포. 클라이언트 수가 늘어나면 이 구성이 프로덕트화에 유리합니다.").divider().foot("확장 단계")
# 11 운영 규칙
s = d.slide(eyebrow="If WordPress · Operating Rules",
title="워드프레스를 쓴다면 ", title_accent="다섯 가지 규칙",
lede="이 규칙을 지키면 장점만 남고, 어기면 단점이 전부 살아납니다.",
section="Rules")
w = s.card_wide(y=s.band_y)
w.bullets([
"플러그인은 10개 이하. 하나 추가할 때마다 LCP와 HTML 크기를 다시 측정합니다.",
"테마는 GeneratePress, Kadence 같은 경량 테마만. Elementor, Divi 같은 페이지빌더는 쓰지 않습니다.",
"스키마 소스는 Rank Math 하나로 통일. 테마 내장 스키마와 별도 FAQ 플러그인의 JSON-LD 출력은 끕니다.",
"본문은 Gutenberg 블록으로 h2 질문, p 답변 구조를 유지합니다. AI는 이 단락 단위로 인용합니다.",
"호스팅은 관리형(WP Engine, Kinsta, Cafe24 매니지드)으로. 보안 패치와 백업을 운영자가 직접 하지 않습니다.",
], size=17.25, step=1.0)
# 12 클로징
d.closing(eyebrow="Next Step",
title_lines=["도구보다 조건이 먼저입니다."],
lede="크롤러 가독성, 단일 스키마, 콘텐츠 생산 구조. 이 세 가지를 통과하는 쪽을 고릅니다.",
cta_primary="병원용 워드프레스 표준 스택 문서화 →", cta_secondary="INFINITH 랜딩 FAQ 스키마 추가",
contact="infinith-demo.vercel.app · team.backstageai@gmail.com")
out = "docs/deck/INFINITH_WordPress_GEO_AEO_장단점.pptx"
d.save(out); print("saved", out)

View File

@ -0,0 +1,298 @@
# INFINITH AI Discovery PRD · 분석 → 진단 → 빌드 → 측정
- 버전: v0.2 (2026.08.28) · 상태: Draft for Engineering Review
- 작성: INFINITH Product · 대상: 프론트엔드 · 백엔드 · 인프라 · 콘텐츠 운영
- 목표 릴리스: v1.0 · 10주 · 2026.11.06
- 관련 코드: `AEO-GEO-Audit` 브랜치 (`src/data/aeoGeoRubric.ts`, `src/types/discovery.ts`, `src/lib/discoveryScore.ts`, `src/pages/DiscoveryReportPage.tsx`, `docs/AEO_GEO_RUBRIC.md`) · `Productize` 브랜치 (랜딩 프리렌더 커밋)
- 덱 버전: `INFINITH_AI-Discovery_PRD_20260828_v02.pptx`
---
## 1. 제품 흐름
병원 URL 하나를 넣으면 채널 분석과 AEO · GEO 진단이 나오고, 진단 항목이 그대로 빌드 요구사항과 측정 지표가 되는 제품.
| 단계 | 내용 | 상태 |
|---|---|---|
| 1 분석 | 채널 발견 · 6채널 데이터 수집 · 마케팅 리포트 | 구현 완료 · `discover-channels` → `collect-channel-data` → `generate-report` |
| 2 진단 | 36항목 AEO · GEO 스코어카드 · 등급 · 액션 플랜 | 프로토타입 동작 · 수동 채점 → 자동화 대상 |
| 3 빌드 | 진단 P0 · P1을 사이트 수정 또는 표준 사이트로 실행 | 신규 · 진단 항목이 곧 요구사항 |
| 4 측정 | 크롤러 로그 · GA4 AI 채널 · 재진단으로 점수 변화 증명 | 신규 · 루브릭 E 카테고리를 채운다 |
뷰성형외과는 1 · 2단계를 거쳐 P0 3건이 나왔다. 3 · 4단계가 없어 여기서 멈춘다. 그 공백이 이 PRD의 범위다.
## 2. 배경
AI 답변엔진은 JS를 실행하지 않는다. GPTBot, ClaudeBot, PerplexityBot은 서버가 내려준 HTML만 읽는다. 진단은 이 사실에서 출발한다.
- **실측 · 뷰성형외과: 읽히지만 라벨뿐.** AI 봇 12종 전부 200, JS 없이 본문 10,757자. 그런데 H1 5개가 전부 영문 라벨(VIEW SELFIE / VIEW EVENT …)이고 JSON-LD는 문법 오류(ItemList 블록 쉼표 누락)로 무효.
- **시장 · 네이버 자산은 AI에 차단됨.** 블로그 · 플레이스 · 카페는 robots.txt로 AI 크롤러를 차단한다. 인용되려면 오픈웹 소유 자산이 필요하다.
- **실측 · INFINITH 랜딩: 4단어.** 크롤러 UA 요청 결과 title 4단어 외 본문 0. 1.5 MB JS를 실행해야 본문이 나왔다. 프리렌더 후 810단어.
**문제 정의.** 진단은 나오는데 다음이 없다. 진단 결과를 받은 병원이 무엇을 고쳐야 하는지, 고친 뒤 점수가 올랐는지 증명할 수단이 제품 안에 없다.
## 3. 케이스 · 뷰성형외과 (2026.08.28)
카테고리 점수는 검증 항목 기준 정규화. 미검증(A6 · D6 · E1~E3)은 분모 제외.
| 카테고리 | 배점 | 획득 | 점수 | 핵심 발견 | → 빌드 · 측정 요구사항 |
|---|---|---|---|---|---|
| A 크롤러 접근성 | 20 | 15.7 / 17 | 92% | robots · SSR · HTTPS 정상. sitemap lastmod 15개월 전 | FR-B05 sitemap 자동 갱신 |
| B 엔티티 구조화 | 20 | 6.0 / 20 | 30% | JSON-LD 깨짐 · MedicalClinic 없음 · Physician 없음 | FR-B03 스키마 단일 소스 |
| C 인용 가능 콘텐츠 | 25 | 5.0 / 25 | 20% | 정의문 · FAQ · 서술형 H1 없음. 수치 부족 | FR-B02 질문 템플릿 · FR-B06 검사 |
| D 인용 표면 | 20 | 13.7 / 19 | 72% | 강남언니 19,316건 강함. GBP 전화 없음 · NAP 3종 | FR-B08 NAP 통일 체크리스트 |
| E 측정 인프라 | 10 | 0 / 2 | 0% | 로그 · GA4 · GSC 오너 접근 필요. 기준선 없음 | FR-M01 ~ M03 |
| F 기술 위생 | 5 | 1.7 / 5 | 33% | WordPress 5.5.3 · alt 누락 · 페이지 무게 | NFR-04 · FR-B09 CMS 업그레이드 |
종합 48점 · C등급. P0 3건: JSON-LD 수정 + MedicalClinic 삽입, GBP 전화 등록 + NAP 통일, 측정 인프라 설치.
> 점수 확인 필요: 현재 `discovery_viewclinic.ts` 레벨 데이터로 재계산한 값이 48점. 리포트 페이지 표시값과 대조할 것.
## 4. 목표와 지표
출시 10주 후 기준. 모든 지표는 제품 안에서 자동 측정된다.
| 단계 | 지표 | 현재 | v1.0 목표 | 측정 방법 |
|---|---|---|---|---|
| 진단 | 자동 채점 항목 비율 | 0% (36항목 수동) | 24 / 36 자동 (67%) | `discover-aeo-geo` 실행 로그 |
| 진단 | URL 입력 → 리포트 소요 시간 | 약 4시간 (수동) | 10분 이내 | `analysis_runs` 타임스탬프 |
| 진단 | 재진단 재현성 | 미검증 | 동일 URL 2회 점수 편차 3점 이내 | 회귀 테스트 |
| 빌드 | P0 액션 완료 → 재진단 점수 상승 | 측정 불가 | 뷰성형외과 48 → 65+ (B) | 재진단 비교 |
| 빌드 | 질문 페이지 발행 (표준 사이트) | 0 | 8주 내 40개 | CMS 발행 로그 |
| 측정 | AI 크롤러 · AI 유입 계측 병원 | 0 | 파일럿 100% | 로그 파서 · GA4 |
답변엔진 언급률은 지표에서 제외한다. 소비자 UI 자동 조회는 약관 위반이고 단발 조회는 무효다.
## 5. 범위
**In scope (v1.0)**
- 진단 Edge Function `discover-aeo-geo` (자동 채점 1 · 2 · 3단계)
- 수동 항목 입력 슬롯 (A6 · D1 · D2 · D4 · E1~E4)과 미검증 처리
- 진단 리포트 DB 저장 · `/discovery/:id` 실데이터 연결 · PDF
- 빌드 A: 기존 사이트 수정 패키지 (스키마 · NAP · CMS · FAQ 삽입)
- 빌드 B: 병원용 워드프레스 표준 사이트 (템플릿 4종 · 검사)
- 측정: 크롤러 로그 파서 · GA4 AI 채널 · 재진단 비교 뷰
- INFINITH 랜딩 파일럿: FAQ 섹션 · FAQPage 스키마
**Out of scope (v1.0)**
- 분석 파이프라인 변경 (`discover` · `collect` · `generate-report`)
- Q&A 콘텐츠 작성 (운영팀 · 병원 담당, 별도 가이드)
- 네이버 블로그 · 플레이스 운영 (AI 크롤러 차단 자산)
- 답변엔진 UI 자동 조회 · 언급률 리포트 (약관 위반)
- llms.txt 납품 (Google 효과 0 · 채택률 0.13%)
- 헤드리스(WordPress + Astro) 전환 (v2.0 후보)
빌드 A와 B를 나눈 이유: 뷰성형외과처럼 사이트가 있는 병원은 수정이고, 없는 병원은 표준 사이트다.
## 6. 사용자
| 구분 | 사용자 | 성공 기준 |
|---|---|---|
| Primary | 병원 마케팅 담당자 | URL을 넣고 10분 안에 스코어카드와 P0를 본다. 수정 후 재진단으로 점수 변화를 확인한다. 표준 사이트면 질문 페이지를 직접 추가한다 |
| Secondary | INFINITH 운영팀 | 수동 항목(GBP · 강남언니 · 로그)을 입력하고 여러 병원의 점수 · 크롤 수 · 오류를 한 화면에서 본다. 병원 온보딩 1일 |
| System | AI 크롤러 · 검색엔진 | GPTBot · ClaudeBot · PerplexityBot · Googlebot · Yeti. 진단은 이들의 UA로 실제 요청해 채점한다. 빌드 결과도 같은 방법으로 검증한다 |
설계 원칙: 확인 못 한 것은 감점하지 않는다(미검증은 분모 제외). 근거 없는 것은 팔지 않는다. 담당자의 실수는 시스템이 발행 전에 막는다.
## 7. 기능 요구사항
### 7.1 진단 (FR-D)
AEO-GEO-Audit 브랜치의 루브릭 · 타입 · 집계 로직을 그대로 쓰고, 채점 데이터만 수동에서 자동으로 바꾼다.
| ID | 요구사항 | 상세 | 루브릭 | 우선순위 |
|---|---|---|---|---|
| FR-D01 | 자동 채점 1단계 | robots 파싱 · 12개 AI 봇 UA GET · HTML 파서 (`crawler_audit.py` 이식) | A1~A5 · A7 · B1 · B4 · B6 · B7 · C2 · C3 · C5 · C6 · F1~F4 | P0 |
| FR-D02 | 자동 채점 2단계 | 본문 텍스트를 Perplexity 또는 Claude에 투입해 구조화 판정 | B2 · B3 · C1 · C4 · C7 · C8 | P0 |
| FR-D03 | 자동 채점 3단계 | 검색 그라운딩 도메인 집계 · Wikidata API | D3 · D6 | P1 |
| FR-D04 | 수동 입력 슬롯 | 운영팀이 근거 · 레벨 입력. 미입력은 `unverified`로 분모 제외 | A6 · D1 · D2 · D4 · E1~E4 | P0 |
| FR-D05 | 결과 저장 · 리포트 | `DiscoveryResult`를 DB 저장. `/discovery/:id`가 mock 대신 DB를 읽음 | 전체 | P0 |
| FR-D06 | 액션 플랜 생성 | level 0 · 1 항목에서 P0 · P1 · P2 액션 자동 생성. 빌드 FR과 연결 | 전체 | P1 |
| FR-D07 | 재진단 비교 | 같은 URL의 이전 결과와 항목별 diff · 점수 변화 표시 | 전체 | P1 |
1단계만으로 36항목 중 17개가 자동이다. 2단계까지 23개. 나머지는 오너 계정 접근이 필요해 수동이 맞다.
### 7.2 빌드 A · 기존 사이트 수정 (FR-B, P0)
뷰성형외과 액션 플랜에서 역산했다. 병원 개발사나 INFINITH가 붙여 넣을 수 있는 산출물이어야 한다.
| ID | 요구사항 | 상세 | 루브릭 | 우선순위 |
|---|---|---|---|---|
| FR-B01 | 서버 렌더링 검증 · 처방 | A3 실패 시 프리렌더 · SSR 처방 (INFINITH 랜딩 방식 문서) | A3 | P0 |
| FR-B03 | 스키마 패키지 생성 | 진단 데이터로 MedicalClinic · Physician JSON-LD 생성. 기존 스키마 차단 안내 | B1 · B2 · B3 · B5 | P0 |
| FR-B08 | NAP 통일 체크리스트 | 홈페이지 · 강남언니 · GBP · 플레이스 표기를 나열하고 정본 지정 | B4 · D2 · D4 | P0 |
| FR-B04 | 메타 패키지 | title · description · canonical · OG · hreflang 코드 생성 | B6 · B7 | P1 |
| FR-B05 | robots · sitemap 처방 | AI 봇 허용 robots.txt · lastmod 갱신 규칙 | A1 · A5 | P1 |
| FR-B07 | FAQ 삽입 패키지 | 시술별 질문 · 요약 답변 초안 + FAQPage 스키마 코드 | C1 · C2 · C4 | P1 |
| FR-B09 | CMS 위생 처방 | WordPress 버전 · alt 누락 목록 · 페이지 무게 리포트 | F1 · F2 · F3 | P1 |
빌드 A의 산출물은 코드 조각과 체크리스트다. 병원 사이트를 INFINITH가 직접 호스팅하지 않는다.
### 7.3 빌드 B · 표준 사이트 (FR-B, P1)
루브릭 A · B · C · F를 처음부터 통과하는 워드프레스 사이트. 담당자가 질문 페이지를 직접 늘린다.
| ID | 요구사항 | 상세 | 루브릭 | 우선순위 |
|---|---|---|---|---|
| FR-B10 | 표준 스택 프리셋 | 경량 테마 · Rank Math · WP Rocket · ACF · 관리형 호스팅. 1회 명령 복제 | A · F 전체 | P1 |
| FR-B02 | 질문 페이지 템플릿 | 질문(h1) · 요약 답변(p, 60자) · 상세 · 관련 시술 · 의료진. 필드 입력만으로 생성 | C1 · C2 · C3 · C8 | P1 |
| FR-B11 | 시술 · 의료진 템플릿 | MedicalProcedure · Physician 스키마 포함. 가격대 · 시간 · 회복 필드 | B3 · C4 · C7 | P1 |
| FR-B12 | 스키마 단일 소스 | 페이지 유형별 JSON-LD 1개 자동 출력. 테마 · 타 플러그인 출력 차단 | B1 · B2 · B3 | P1 |
| FR-B06 | 발행 전 검사 | 스키마 중복 · h1 2개 · alt 누락 · 요약 답변 누락 시 발행 차단 | B1 · C3 · F1 | P1 |
| FR-B13 | sitemap · robots 자동 | 발행 시 lastmod 갱신 · AI 봇 9종 허용 | A1 · A5 · C6 | P1 |
빌드 B는 P1이다. 뷰성형외과처럼 사이트가 있는 병원이 먼저이므로 빌드 A가 P0다.
### 7.4 측정 (FR-M)
인용 여부를 직접 볼 수 없으므로 소유한 신호를 계측한다. 재진단이 개선의 증거다.
| ID | 요구사항 | 상세 | 루브릭 | 우선순위 |
|---|---|---|---|---|
| FR-M01 | AI 크롤러 로그 파서 | 액세스 로그 또는 Cloudflare Logpush에서 GPTBot · ClaudeBot · PerplexityBot 히트를 IP 검증 후 일 집계 | E1 | P0 |
| FR-M02 | GA4 AI 채널 | chatgpt.com · perplexity.ai · gemini.google.com 리퍼러를 커스텀 채널로 분리 · 설정 가이드 | E2 | P0 |
| FR-M03 | 기준선 스팟체크 기록 | 분기 반복 측정 프로토콜과 입력 슬롯 (수동) | E4 | P1 |
| FR-M04 | 재진단 스케줄 | 월 1회 자동 재진단 · 점수 변화 알림 | 전체 | P1 |
| FR-M05 | 운영 대시보드 | 병원별 점수 · 크롤 수 · AI 세션 · 스키마 오류 · LCP 주간 표시 | E 전체 | P1 |
FR-M01 · M02는 뷰성형외과 P0 3번(측정 인프라 설치)이다. 빌드보다 먼저 깔아야 전후 비교가 된다.
## 8. 비기능 요구사항
| ID | 영역 | 요구사항 | 예산 · 기준 |
|---|---|---|---|
| NFR-01 | 진단 | 재현성 | 동일 URL 2회 실행 점수 편차 3점 이내 · LLM 판정 항목은 temperature 0 |
| NFR-02 | 진단 | 소요 시간 · 비용 | URL당 10분 이내 · API 비용 2,000원 이내 |
| NFR-03 | 진단 | 대상 사이트 부하 | UA 테스트 요청 30회 이내 · 1초 간격 · 429 시 중단 |
| NFR-04 | 빌드 B | 성능 | 모바일 LCP p75 2.5초 · CLS 0.1 · 플러그인 10개 이하 · HTML 80 KB 이하 |
| NFR-05 | 빌드 B | HTML 품질 · 보안 | h1 1개 · div 중첩 6단계 이하 · 관리형 호스팅 · 자동 업데이트 · 일 백업 |
| NFR-06 | 측정 | 로그 보존 · 정확도 | 90일 보존 · 봇 IP 역DNS 검증 (위장 UA 제외) |
| NFR-07 | 공통 | 정직성 규약 | 리포트에 "하지 않을 것" 섹션 고정 · 근거 등급(실측 · 학술 · 벤더 · 추정) 표기 |
Elementor · Divi 같은 페이지빌더는 NFR-04 · 05를 통과하지 못하므로 빌드 B에서 금지다.
## 9. 아키텍처
Supabase Edge Functions 체인. 분석 3개 함수는 그대로, 신규 4개를 추가한다.
| 단계 | 함수 · 컴포넌트 | 비고 |
|---|---|---|
| 1 분석 | `discover-channels` → `collect-channel-data` → `generate-report` | 기존 · `marketing_reports` · `clinic_registry` |
| 2 진단 | `discover-aeo-geo`: UA 테스트 · HTML 파서 · LLM 판정 · 집계 | 신규 · 루브릭 · 집계는 AEO-GEO-Audit 코드 이식 |
| 3 빌드 | `build-package`: 스키마 · 메타 · NAP · FAQ 코드 생성 / WP 커스텀 플러그인 | 신규 · 빌드 A는 함수, B는 플러그인 |
| 4 측정 | `log-ingest` (Logpush → Supabase) · GA4 커넥터 · 재진단 cron | 신규 · `discovery_results` 시계열 |
신규 테이블 2개: `discovery_results` (결과 · 버전) · `crawler_hits` (봇 · IP · 경로 · 일자).
## 10. 루브릭 → 빌드 매핑 (FR-D06 규칙표)
| 루브릭 항목 | level 0 · 1이면 | 빌드 산출물 | FR |
|---|---|---|---|
| A3 서버 렌더링 본문 | 본문이 JS에만 있음 | 프리렌더 · SSR 처방 문서 + 검증 스크립트 | FR-B01 |
| B1 · B2 · B3 스키마 | JSON-LD 깨짐 · 엔티티 없음 | MedicalClinic · Physician JSON-LD 코드 + 차단 안내 | FR-B03 · B12 |
| B4 · D2 · D4 NAP | 표면 간 표기 불일치 | 정본 NAP 체크리스트 · GBP 수정 항목 | FR-B08 |
| C1 · C2 · C4 콘텐츠 | 정의문 · FAQ · 수치 없음 | 시술별 질문 · 요약 답변 초안 + FAQPage 코드 | FR-B07 · B02 |
| C3 제목 계층 | H1 없음 · 이미지 텍스트 | H1 재설계안 · 이미지 정보 텍스트화 목록 | FR-B07 |
| C6 신선도 | dateModified 없음 | dateModified 활성화 · 갱신 주기 규칙 | FR-B13 |
| E1 · E2 측정 | 미설치 | 로그 파서 · GA4 채널 설정 | FR-M01 · M02 |
| F2 CMS | 구버전 | 업그레이드 절차 · 백업 체크리스트 | FR-B09 |
## 11. 스키마 스펙
빌드 A는 코드 조각으로, 빌드 B는 Rank Math 훅으로 같은 스펙을 출력한다. 테마 내장 스키마는 끈다.
| 페이지 | @type | 필수 속성 | 데이터 소스 |
|---|---|---|---|
| 홈 | MedicalClinic + WebSite | name · address · telephone · openingHours · sameAs | 분석 1단계 `clinics` · 병원 정보 ACF |
| 시술 | MedicalProcedure | name · procedureType · bodyLocation · howPerformed · preparation | 시술 ACF |
| 의료진 | Physician | name · medicalSpecialty · memberOf · image · alumniOf | 의료진 ACF · 강남언니 의료진 |
| 질문 | FAQPage (+ Article) | mainEntity[Question · acceptedAnswer] · author · dateModified | 질문 템플릿 필드 |
| 공통 | BreadcrumbList | itemListElement | 자동 |
수용 기준: Rich Results Test 오류 0. 응답에 ld+json 블록 정확히 1개 (Breadcrumb 포함 시 @graph 병합). 루브릭 B1 · B2 · B3 level 3.
## 12. 질문 페이지 템플릿
루브릭 C1 · C2 · C3 · C4 · C8을 동시에 통과하는 구조.
| 필드 | HTML 출력 | 제약 | 예시 | 루브릭 |
|---|---|---|---|---|
| 질문 | h1 | 물음표로 끝남 · 40자 이내 | 코 재수술은 언제 가능한가요? | C3 |
| 요약 답변 | p (h1 직후) | 60자 이내 · 숫자 · 기간 포함 권장 | 1차 수술 후 최소 6개월, 보통 1년 뒤 가능합니다. | C1 · C8 |
| 상세 답변 | h2 + p 반복 | h2는 하위 질문형 · 단락 3문장 이내 | 왜 6개월을 기다려야 하나요? | C3 · C8 |
| 가격 · 시간 · 회복 | 표 | 숫자 범위 필수 | 300~500만원 · 2시간 · 회복 2주 | C4 · C5 |
| 관련 시술 · 의료진 | 링크 + Physician | 각 1개 이상 | 코 재수술 · 김OO 원장 | C7 |
| 갱신일 | dateModified | 자동 | 2026-08-28 | C6 |
요약 답변 60자는 AI 답변엔진이 한 단락으로 인용하는 길이다. 이 필드가 비면 발행이 막힌다(FR-B06).
## 13. 수용 테스트
| ID | 단계 | 테스트 | 통과 기준 |
|---|---|---|---|
| AT-01 | 진단 | viewclinic.com 자동 진단 실행 | 수동 채점 대비 자동 항목 일치율 90% · 소요 10분 이내 |
| AT-02 | 진단 | infinith-demo.vercel.app 진단 | A3 level 3 · B1 level 3 · 재실행 편차 3점 이내 |
| AT-03 | 진단 | 미검증 처리 | 수동 슬롯 비운 채 실행 시 해당 항목 분모 제외 · 점수 계산 일치 |
| AT-04 | 빌드 A | 스키마 패키지 적용 후 Rich Results Test | 오류 0 · 블록 1개 |
| AT-05 | 빌드 B | `curl -A GPTBot` 5종 UA 본문 단어 수 | 300단어 이상 · 5개 UA 동일 · 429 · 403 0건 |
| AT-06 | 빌드 B | 발행 검사 | 요약 답변 비운 채 발행 시 차단 + 안내 |
| AT-07 | 측정 | 로그 파서 위장 UA 테스트 | 역DNS 실패 히트 제외 · 일 집계 정확 |
| AT-08 | 루프 | 빌드 후 재진단 | 변경 항목 level 상승이 diff에 표시 · 점수 상승 |
AT-02 · 05는 2026.08.28 INFINITH 랜딩 점검 스크립트를 그대로 쓴다.
## 14. 마일스톤 (10주)
2주 단위. 각 단계 끝에 수용 테스트를 통과해야 다음 단계로 간다.
| 주차 | 단계 | 내용 | 완료 기준 |
|---|---|---|---|
| W1-2 | 진단 1단계 | `discover-aeo-geo` · UA 테스트 · 파서 · DB · 리포트 연결 | FR-D01 · D04 · D05 · AT-01~03 |
| W3-4 | 측정 · 진단 2단계 | 로그 파서 · GA4 · LLM 판정 · 재진단 diff | FR-M01 · M02 · D02 · D07 · AT-07 |
| W5-6 | 빌드 A | 스키마 · NAP · FAQ · CMS 패키지 생성 | FR-B01 · B03 · B04 · B07 · B08 · AT-04 |
| W7-8 | 빌드 B | 표준 스택 · 템플릿 3종 · 검사 · 플러그인 | FR-B02 · B06 · B10~B13 · AT-05 · 06 |
| W9-10 | 파일럿 · 릴리스 | 뷰성형외과 빌드 A 적용 · 재진단 · 표준 사이트 1곳 | AT-08 · 48 → 65+ · v1.0 |
측정(W3-4)을 빌드보다 앞에 둔 이유: 전후 비교의 기준선이 빌드 전에 있어야 한다.
## 15. 리스크
| 리스크 | 영향 | 가능성 | 대응 |
|---|---|---|---|
| LLM 판정 항목(2단계)의 채점 불일치 | 높음 | 중간 | temperature 0 · 근거 인용 강제 · 수동 채점과 90% 일치 회귀 테스트 |
| 대상 사이트가 진단 요청을 차단 | 중간 | 중간 | 요청 30회 · 1초 간격 · 429 시 중단 후 unverified 처리 |
| 병원이 빌드 A 패키지를 적용하지 않음 | 높음 | 높음 | 적용 대행 옵션 · 재진단 알림 · P0만 먼저 |
| 담당자가 질문 페이지를 추가하지 않음 | 높음 | 높음 | 분석 리포트의 질문 목록을 초안으로 제공 · 주간 발행 목표 |
| AI 크롤러 UA · 정책 변경 | 중간 | 높음 | 봇 목록 중앙 관리 · 분기 점검 · 루브릭 버전 관리 |
| 스키마 플러그인 업데이트로 출력 변경 | 중간 | 중간 | AT-04 매 배포 실행 · 버전 고정 |
## 16. 오픈 이슈 (리뷰 미팅 결정)
| # | 질문 | 선택지 | 기본안 · 근거 |
|---|---|---|---|
| 1 | 2단계 LLM 판정 모델 | Perplexity · Claude · 둘 다 | Claude. 판정 일관성 · 근거 인용. Perplexity는 D3 그라운딩에만 |
| 2 | 로그 수집 방식 | 호스팅 로그 API · Cloudflare Logpush · WP 플러그인 | Cloudflare Logpush → Supabase. 호스팅 무관 |
| 3 | 빌드 A 적용 주체 | 병원 개발사 · INFINITH 대행 · 둘 다 | 둘 다. 패키지는 개발사용, 대행은 유료 옵션 |
| 4 | 빌드 B 호스팅 · 스키마 플러그인 | Kinsta · WP Engine · Cafe24 / Rank Math · Yoast | Kinsta + Rank Math. Cloudflare 통합 · 의료 타입 · 훅 |
| 5 | 헤드리스 전환 시점 | 병원 5곳 · 10곳 · 미정 | 병원 5곳 시 v2.0 검토. 콘텐츠는 WP DB에 남아 이전 비용 낮음 |
결정되지 않은 항목은 기본안으로 W1을 시작하고, 리뷰에서 뒤집히면 W2에 반영한다.
## 부록 · 실측 (2026.08.28)
| 대상 | 항목 | 결과 | 방법 |
|---|---|---|---|
| 뷰성형외과 | 종합 · 등급 | 48점 · C (검증 31 / 36항목) | `crawler_audit.py` + curl + HTML 파서 · 수동 채점 |
| 뷰성형외과 | 카테고리 | A 92 · B 30 · C 20 · D 72 · E 0 · F 33 | 루브릭 v1.0 · unverified 분모 제외 |
| 뷰성형외과 | P0 | JSON-LD 수정 + MedicalClinic · GBP 전화 + NAP 통일 · 측정 인프라 | 액션 플랜 |
| INFINITH 랜딩 | 크롤러 5종 본문 단어 | 4 → 810 | `vite build --ssr` + `renderToString` 프리렌더 |
| INFINITH 랜딩 | JSON-LD · lang · 메타 | 0 → 3 · en → ko · description · OG 추가 | `index.html` 정적 삽입 |
| INFINITH 랜딩 | robots · sitemap · llms.txt | HTML 반환 → text/plain · xml 정상 | `public/` 정적 파일 |
재현:
```bash
curl -sS -A "Mozilla/5.0 (compatible; GPTBot/1.0)" https://infinith-demo.vercel.app/ \
| sed -e 's/<script[^>]*>.*<\/script>//g' -e 's/<[^>]*>//g' | tr -s ' \n' | wc -w
# 뷰성형외과 리포트: /discovery/viewclinic (AEO-GEO-Audit 브랜치)
```

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,269 @@
<!doctype html>
<html lang="ko"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>INFINITH Global Medical Hub PRD v0.1</title>
<link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700;900&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css">
<style>
:root{--navy:#0A1128;--navy800:#1A2B5E;--near:#F4F6FB;--accent:#6C5CE7;--g1:#4F1DA1;--g2:#021341;--slate7:#334155;--slate6:#475569;--slate5:#64748B;--line:#E2E8F0;
--crit-bg:#FFF0F0;--crit-tx:#7C3A4B;--crit-bd:#F5D5DC;--crit-dot:#D4889A;--warn-bg:#FFF6ED;--warn-tx:#7C5C3A;--warn-bd:#F5E0C5;--warn-dot:#D4A872;--good-bg:#F3F0FF;--good-tx:#4A3A7C;--good-bd:#D5CDF5;--good-dot:#9B8AD4;--info-bg:#EFF0FF;--info-tx:#3A3F7C;--info-bd:#C5CBF5;--info-dot:#7A84D4}
*{box-sizing:border-box}body{margin:0;font-family:Pretendard,Inter,-apple-system,sans-serif;color:var(--navy);background:#fff;line-height:1.65;font-size:15px;word-break:keep-all}
.serif{font-family:'Playfair Display',serif}
section{padding:96px 24px}.wrap{max-width:1160px;margin:0 auto}
.dark{background:var(--navy);color:#fff;position:relative}.dark::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at top right,rgba(108,92,231,.15),transparent 60%);pointer-events:none}.dark .wrap{position:relative}
.light{background:#fff}.near{background:var(--near)}
.eyebrow{font-family:Inter,sans-serif;font-size:12px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--accent)}.dark .eyebrow{color:#C4B5FD}
h1{font-size:56px;line-height:1.05;margin:14px 0 10px;letter-spacing:-.02em}h2{font-size:38px;line-height:1.15;margin:10px 0 14px}h3{font-size:18px;font-weight:700;margin:0 0 8px}
.dark h2{background:linear-gradient(90deg,#C4B5FD,#93C5FD);-webkit-background-clip:text;background-clip:text;color:transparent}
.sub{font-size:17px;color:var(--slate6);max-width:820px}.dark .sub{color:#DDD6FE}
p{margin:0 0 10px}.muted{color:var(--slate5);font-size:13.5px}.dark .muted{color:#C4B5FD}
.grid{display:grid;gap:18px}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.g2,.g3,.g4{grid-template-columns:1fr}}
.card{background:#fff;border:1px solid #F1F5F9;border-radius:18px;padding:22px 24px;box-shadow:3px 4px 12px rgba(0,0,0,.06);color:var(--navy)}.card:hover{box-shadow:4px 6px 16px rgba(0,0,0,.09)}
.card p{color:var(--slate7);font-size:14.5px}
.grad{background:linear-gradient(90deg,var(--g1),var(--g2));color:#fff;border:0}.grad p,.grad .muted{color:#DDD6FE}.grad h3{color:#fff}
.cta{background:linear-gradient(to right,#fff3eb,#e4cfff,#f5f9ff);border:0}
.badge{display:inline-block;font-family:Inter,sans-serif;font-size:11.5px;font-weight:600;border:1px solid;border-radius:999px;padding:3px 10px;line-height:1.3}
.b-crit{background:var(--crit-bg);color:var(--crit-tx);border-color:var(--crit-bd)}.b-warn{background:var(--warn-bg);color:var(--warn-tx);border-color:var(--warn-bd)}.b-good{background:var(--good-bg);color:var(--good-tx);border-color:var(--good-bd)}.b-info{background:var(--info-bg);color:var(--info-tx);border-color:var(--info-bd)}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:middle}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:14px;overflow:hidden;font-size:13.5px;box-shadow:3px 4px 12px rgba(0,0,0,.05)}th{background:var(--navy);color:#fff;text-align:left;padding:11px 13px;font-size:12.5px;font-weight:600}td{padding:11px 13px;border-bottom:1px solid #EEF2F7;vertical-align:top;color:var(--slate7)}tr:last-child td{border-bottom:0}td b{color:var(--navy)}
.dark table{color:var(--navy)}
.kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.kpi .k{background:#fff;border-radius:16px;padding:18px 20px;box-shadow:3px 4px 12px rgba(0,0,0,.06)}.kpi b{display:block;font-family:'Playfair Display',serif;font-size:34px;color:var(--accent);line-height:1}.kpi span{font-size:12.5px;color:var(--slate5)}
@media(max-width:900px){.kpi{grid-template-columns:repeat(2,1fr)}}
.flow{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;counter-reset:s}.flow .st{background:#fff;border-radius:14px;padding:14px;box-shadow:3px 4px 12px rgba(0,0,0,.06);color:var(--navy);font-size:13px}.flow .st::before{counter-increment:s;content:counter(s);display:inline-block;font-family:'Playfair Display',serif;font-weight:700;color:var(--accent);font-size:20px;margin-bottom:4px}
@media(max-width:900px){.flow{grid-template-columns:repeat(2,1fr)}}
ul{margin:6px 0 0 18px;padding:0}li{margin:4px 0;color:var(--slate7)}.dark li{color:#E9E5FF}
.pill{display:inline-block;background:#F1F5F9;color:var(--slate6);border-radius:999px;padding:2px 9px;font-size:11.5px;font-family:Inter,sans-serif;font-weight:500;margin:0 4px 4px 0}
.mono{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--accent)}
.toc a{color:var(--accent);text-decoration:none}.toc li{color:var(--slate6)}
footer{padding:36px 24px;font-size:12.5px;color:var(--slate5);border-top:1px solid var(--line);text-align:center}
@media print{@page{size:A4;margin:11mm}section{padding:26px 6px;page-break-inside:auto}.pb{page-break-before:always}h1{font-size:40px}h2{font-size:28px}.card,tr{page-break-inside:avoid}.dark,.grad,.badge,.kpi .k,.cta,th{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
</style></head><body>
<!-- 0. Cover -->
<section class="dark" style="padding-top:120px;padding-bottom:88px"><div class="wrap">
<div class="eyebrow">INFINITH · Product Requirements Document · v0.1 Draft</div>
<h1 class="serif">Global Medical Hub</h1>
<div style="font-size:24px;font-weight:700;margin-bottom:6px">외국인 환자가 AI에 물었을 때 인용되는, AIO2O 운영 중립 의료관광 허브</div>
<p class="sub">한국 성형외과·피부과의 시술·의료진·회복·비용 항목을 다국어 원문으로 공급하고, 상담·예약과 회복기 여정(숙박·식사·관광·미용)을 한 곳에서 연결하는 플랫폼. 병원이 아니라 AIO2O가 소유·운영한다. 지금 완성된 AI Discovery 진단과 서포터즈 자동 빌드 파이프라인이 공급 쪽 절반을 이미 자동화했다.</p>
<div class="kpi" style="margin-top:34px">
<div class="k"><b>3</b><span>제품 층 (정보·발견 / 상담·예약 / 여정 연결)</span></div>
<div class="k"><b>2</b><span>검증된 병원 (뷰성형외과 18/18 · 원진 6/6, 사람 개입 0)</span></div>
<div class="k"><b>$0.6</b><span>병원 1곳 온보딩 실측 비용 (30분)</span></div>
<div class="k"><b>8~12주</b><span>1단계 글로벌 허브 MVP</span></div>
</div>
<p class="muted" style="margin-top:22px">작성 2026-09-08 · 작성 Claude (haewon 세션) · 검토 haewon · 결정 CEO · 배경: 2026-09-08 CEO·뷰성형외과 미팅 (원장의 의료관광 포털 제안) · 법 해석은 자문이 아니며 계약·등록 전 변호사 확인 필요</p>
</div></section>
<!-- TOC -->
<section class="light" style="padding:56px 24px"><div class="wrap toc">
<div class="eyebrow">Contents</div>
<ol style="columns:2;gap:40px;margin:10px 0 0 18px;font-size:14.5px">
<li><a href="#s1">배경과 문제</a></li><li><a href="#s2">제품 정의와 범위</a></li><li><a href="#s3">사용자와 핵심 여정</a></li><li><a href="#s4">중립성과 IP: 운영 구조 비교</a></li><li><a href="#s5">AIO2O가 신청·등록·갖춰야 하는 것</a></li><li><a href="#s6">기술 스택과 기능: 완료 / 부분 / 신규</a></li><li><a href="#s7">아키텍처와 데이터 흐름</a></li><li><a href="#s8">로드맵</a></li><li><a href="#s9">KPI와 측정</a></li><li><a href="#s10">리스크와 미결</a></li><li><a href="#s11">부록: 근거 자료</a></li>
</ol>
</div></section>
<!-- 1. 배경 -->
<section id="s1" class="near"><div class="wrap">
<div class="eyebrow">01 · Why Now</div><h2 class="serif">Why Now</h2>
<p class="sub">병원 홈페이지와 네이버 자산은 글로벌 AI 답변에 닿지 않는다. 그 공백을 원문 매체로 채우는 것이 INFINITH의 처방이고, 외국인 환자 시장은 인용할 원문이 가장 부족한 곳이다.</p>
<div class="grid g3" style="margin-top:22px">
<div class="card"><span class="badge b-crit">진단 근거</span><h3 style="margin-top:10px">병원은 읽히지만 인용되지 않는다</h3><p>뷰성형외과 AEO 42 / GEO 56, 원진성형외과 AEO 15 / GEO 45. 크롤러 접근은 열려 있으나 정의문·FAQ·표·의료진 스키마가 없다. 원진 영문 사이트는 hreflang조차 없다.</p></div>
<div class="card"><span class="badge b-warn">시장 신호</span><h3 style="margin-top:10px">병원이 먼저 포털을 원한다</h3><p>2026-09-08 CEO 미팅에서 뷰성형외과 원장이 성형외과·피부과를 모은 글로벌 의료관광 포털을 제안했다. 반응은 좋았으나 "비슷한 제안이 많다"는 말도 들었다. 차별점은 실측 진단과 인용되는 원문, 그리고 자동 온보딩이다.</p></div>
<div class="card"><span class="badge b-good">준비된 것</span><h3 style="margin-top:10px">공급 쪽은 이미 자동이다</h3><p>이름 하나로 채널 확인, 근거 수집, 팩트 시트, 의료진, 영상, 이미지(의료법 필터), 글 6편, 발행 게이트, 미리보기까지 30분에 $0.6. 두 병원에서 사람 개입 없이 완주했다.</p></div>
</div>
<div class="card cta" style="margin-top:18px"><h3>우리가 채울 공백</h3><p style="color:var(--navy)">외국인이 ChatGPT·Perplexity·Gemini에 "best rhinoplasty clinic in Seoul for foreigners"라고 물었을 때 인용할 다국어 원문(시술 조건 표·회복 일정·의료진·안전 체계·비용 항목)이 오픈웹에 사실상 없다. 기존 앱(강남언니 글로벌·바비톡·크리에이트립)은 정보를 앱 안에 가두고, 병원 영문 사이트는 슬로건과 이미지다. 네이버 자산은 robots.txt로 AI 크롤러를 막아 기여도 0이다(2026-08-26 실측).</p></div>
</div></section>
<!-- 2. 제품 정의 -->
<section id="s2" class="dark"><div class="wrap">
<div class="eyebrow">02 · Product Definition</div><h2 class="serif">What We Build</h2>
<p class="sub">세 층으로 나눈다. 첫 층은 우리가 만들고, 둘째 층은 자격을 갖춰 만들며, 셋째 층은 만들지 않고 연결한다.</p>
<div class="grid g3" style="margin-top:22px">
<div class="card"><span class="badge b-good">1층 · 만든다</span><h3 style="margin-top:10px">정보·발견</h3><p>병원별 다국어 원문 페이지(시술 조건 표·회복 일정·의료진·안전·비용 항목·FAQ), 병원 공통 허브(시술별 비교 없는 목록·질문별 답), AI 답변엔진·검색 인용 구조(MedicalClinic·Physician·Article·FAQPage·hreflang). 지금 파이프라인 그대로.</p></div>
<div class="card"><span class="badge b-warn">2층 · 자격 후 만든다</span><h3 style="margin-top:10px">상담·예약</h3><p>병원 선택 → 상담 신청 → 통역 포함 예약 확정 → 결제·정산. 대가를 받는 순간 외국인환자 유치업자 등록이 필요하다. 1단계에서는 상담 신청을 병원에 직접 넘기고 수수료를 받지 않는다.</p></div>
<div class="card"><span class="badge b-info">3층 · 연결한다</span><h3 style="margin-top:10px">회복기 여정</h3><p>숙박·식사·관광·축제·미용·배달은 제휴 링크와 파트너 API로 연결한다. 직접 판매하면 여행업·통신판매업 등록이 따라온다. 배달은 국내 앱이 외부 API를 열지 않아 정보 안내 수준.</p></div>
</div>
<div class="grid g2" style="margin-top:18px">
<div class="card"><h3>제품이 아닌 것</h3><ul><li>병원 홈페이지를 대체하는 사이트. 홈페이지는 그대로 두고 sameAs로 같은 엔티티에 묶는다.</li><li>후기·전후 사진·병원 비교·가격 할인으로 설득하는 앱. 의료법 56조 2항이 막는 것은 처음부터 없다.</li><li>슈퍼앱. 예약·숙박·배달 시스템을 처음부터 짓지 않는다.</li><li>특정 병원의 사이트. 뷰성형외과는 앵커 파트너이지 소유자가 아니다.</li></ul></div>
<div class="card"><h3>성공의 정의 (1단계)</h3><ul><li>병원 4곳 이상이 다국어 원문으로 발행되고 각 병원 개설자 승인이 데이터로 켜진다.</li><li>외국인 질문 뱅크(영·일·중 각 60문항) 실측에서 허브 인용률이 0에서 유의미하게 오른다. 소유 신호(서버 로그 AI 크롤러 히트, GA4 AI 유입)로 잰다.</li><li>상담 신청이 병원으로 전달되고 병원이 응답한 건수를 센다.</li></ul></div>
</div>
</div></section>
<!-- 3. 사용자 -->
<section id="s3" class="light"><div class="wrap">
<div class="eyebrow">03 · Users & Journeys</div><h2 class="serif">Who It Serves</h2>
<div class="grid g4" style="margin-top:22px">
<div class="card"><h3>외국인 환자</h3><p>일본·중국어권·동남아·영어권. AI와 검색에 질문 → 허브 원문 → 병원 페이지 → 상담 신청 → 방문·회복. 원하는 것은 조건(시간·마취·회복·비용 항목)과 안전, 그리고 의사소통.</p></div>
<div class="card"><h3>병원 담당자</h3><p>온보딩 폼(v2 §6 9항목), 글별 검토자·검토일 입력, 상담 신청 응답. 기술 지식 없음. 지금 만든 `/supporters/:id` 패널이 시작점.</p></div>
<div class="card"><h3>원장·개설자</h3><p>의학 검토, 게시 승인. 의료광고 주체. 승인 기록(승인자·직함·일시·글 버전)이 법적 근거가 된다.</p></div>
<div class="card"><h3>AIO2O 운영자</h3><p>큐·워커 운영, 게이트 실패 처리, 이미지 육안 확인, "확인 필요" 채널 판정, 정정 접수. 비개발자가 운영할 수 있어야 한다.</p></div>
</div>
<div class="card" style="margin-top:18px"><h3>핵심 여정 (외국인 환자)</h3>
<div class="flow" style="margin-top:10px">
<div class="st">AI·검색에 질문. 허브의 질문형 글이 인용된다</div><div class="st">시술 조건 표·회복 일정·비용 항목을 언어별로 읽는다</div><div class="st">병원 페이지에서 의료진·안전 체계·확인일을 본다</div><div class="st">상담 신청(언어·희망 시술·일정). 1단계는 병원 직결</div><div class="st">예약 확정·통역·결제 (2단계, 유치업 등록 후)</div><div class="st">회복기 숙박·식사·관광 제휴 링크와 주의사항 안내 (3단계)</div>
</div>
</div>
</div></section>
<!-- 4. 중립성과 IP -->
<section id="s4" class="near"><div class="wrap">
<div class="eyebrow">04 · Neutrality & IP</div><h2 class="serif">Ownership Structure</h2>
<p class="sub">포털의 생명은 중립성이다. 한 병원의 계열 플랫폼에는 두 번째 병원이 들어오지 않는다. 파이프라인 IP는 AIO2O 사업 자체이므로 어떤 구조에서도 밖에 두지 않는다.</p>
<div style="overflow-x:auto;margin-top:22px"><table>
<thead><tr><th style="width:150px">기준</th><th>뷰성형외과 자회사</th><th>뷰 · AIO2O 합작법인</th><th>AIO2O 단독 + 뷰 앵커 파트너 (추천)</th></tr></thead>
<tbody>
<tr><td><b>다른 병원 참여</b></td><td><span class="dot" style="background:var(--crit-dot)"></span>어렵다. 경쟁 병원 계열사에 의료진·비용 항목을 올릴 이유가 없다</td><td><span class="dot" style="background:var(--warn-dot)"></span>뷰 지분이 보이면 같은 경계. 지분이 작고 공개돼 있으면 완화</td><td><span class="dot" style="background:var(--good-dot)"></span>문제없다</td></tr>
<tr><td><b>의료광고·고지</b></td><td>자회사 매체가 모병원을 노출하면 경제적 이해관계 고지가 페이지마다 붙고 추천·보증 심사지침 대상</td><td>같다. 뷰 관련 페이지에 지분 관계 고지</td><td>병원별 지원 관계 고지만</td></tr>
<tr><td><b>유치업 등록</b></td><td>의료기관도 유치 등록은 가능하나 타 병원 환자 중개는 별도 법인이 깔끔</td><td>합작법인이 유치업자로 등록하면 자연스럽다</td><td>AIO2O 법인이 등록 (2단계 전)</td></tr>
<tr><td><b>자본·앵커</b></td><td>병원이 자본을 댄다</td><td>자본·첫 병원·의료 자문을 같이 얻는다</td><td>자본은 AIO2O 몫. 앵커는 계약으로</td></tr>
<tr><td><b>IP·속도</b></td><td>파이프라인이 병원 소유가 된다</td><td>IP를 JV에 넣으면 사업이 JV에 묶인다. 의사결정 둘</td><td>IP·속도 모두 AIO2O</td></tr>
<tr><td><b>브랜드 리스크</b></td><td>뷰의 2026-07 공정위 시정명령(후기 뒷광고) 이력이 그대로 붙는다</td><td>같은 이력이 JV 브랜드에 묻는다</td><td>파트너 병원 중 하나의 이력</td></tr>
</tbody>
</table></div>
<div class="grid g2" style="margin-top:18px">
<div class="card grad"><h3>추천 구조</h3><ul style="color:#E9E5FF"><li>플랫폼·파이프라인·게이트·데이터 모델 IP는 AIO2O 100%. 라이선스도 넘기지 않는다.</li><li>뷰성형외과는 앵커 파트너 계약: 첫 병원 무상 온보딩, 다국어 첫 발행, 병원 2~4곳 소개, 의료 자문. 대가는 소액 지분(10% 미만, 공개) 또는 소개 수수료.</li><li>예약 수수료를 받는 2단계에서 유치업 전용 법인이 필요하면 그 법인만 합작 검토. 자본금·배상보험을 나눠 지고 플랫폼 IP는 밖에 둔다.</li></ul></div>
<div class="card"><h3>합작을 하게 된다면 계약 필수 조항</h3><ul><li>IP 귀속: 파이프라인·게이트·데이터 모델은 AIO2O 소유, JV는 사용권.</li><li>뷰 지분 상한과 중립성 조항: 노출 순서·비교 금지, 타 병원 정보 접근 제한.</li><li>의료광고 책임 분리: 각 병원 개설자가 광고 주체, JV는 매체·대행. 사전심의·유치 광고 규정 준수는 병원 책임.</li><li>공정위 이력에 대한 표명·보증. JV 이름에 병원명을 넣지 않는다.</li><li>데이터: 병원 자산 사용 허락 범위, 환자 데이터 처리 주체.</li></ul></div>
</div>
</div></section>
<!-- 5. 신청·등록 -->
<section id="s5" class="dark pb"><div class="wrap">
<div class="eyebrow">05 · Registrations & Compliance</div><h2 class="serif">What AIO2O Must Obtain</h2>
<p class="sub">단계별로 필요한 등록·신고·계약·계정을 전부 적었다. "확인"은 요건 수치나 적용 여부를 담당 기관 또는 변호사에게 확인해야 하는 항목이다.</p>
<div style="overflow-x:auto;margin-top:22px"><table>
<thead><tr><th style="width:56px">단계</th><th style="width:230px">항목</th><th>근거·요건</th><th style="width:170px">담당·비고</th></tr></thead>
<tbody>
<tr><td><span class="badge b-good">1</span></td><td><b>사업자 업종 추가</b></td><td>정보서비스업(포털·데이터), 광고대행업, 소프트웨어 개발. 의료관광 유치업은 등록 후 추가.</td><td>세무 대리인</td></tr>
<tr><td><span class="badge b-good">1</span></td><td><b>병원 파트너 계약 (병원마다)</b></td><td>홈페이지·영상·이미지 자산 사용 허락 범위, 의료광고 주체는 개설자·AIO2O는 제작·운영 대행, 글별 의학 검토·게시 승인 의무와 주기, 지원 관계 고지 문구, 정정 절차, 환자 데이터 처리 역할. 뷰성형외과와의 앵커 조항(소개·자문·지분 또는 수수료)은 별도 부속.</td><td>변호사 검토. 표준 계약서 1종</td></tr>
<tr><td><span class="badge b-good">1</span></td><td><b>의료광고 규정 준수 체계</b></td><td>의료법 56조 2항(치료경험담 2호, 비교 4호, 수술 장면 6호, 부작용 누락 7호, 과장 8호, 기사·전문가 형태 10호, 인증·보증 14호)을 발행 게이트와 이미지 규칙으로 차단. 경제적 이해관계 표시는 추천·보증 심사지침대로 글 첫 부분. 외국어 페이지도 동일 적용.</td><td>완료(코드). 외국어 게이트 어휘 추가 필요</td></tr>
<tr><td><span class="badge b-warn">1→2</span></td><td><b>의료광고 사전심의 (매체 기준)</b></td><td>의료법 57조. 자체 도메인 신규 매체는 전년도 일평균 이용자 10만 미만이라 의무 아님. 10만을 넘기면 대한의사협회 의료광고심의위원회 심의 대상. 네이버 블로그 재작성본은 게시물별 심의 대상이며 신청은 병원 명의.</td><td>이용자 수 모니터링. 확인: 외국어 매체 적용 여부</td></tr>
<tr><td><span class="badge b-warn">1→2</span></td><td><b>외국인환자 유치 광고 규정</b></td><td>의료해외진출 및 외국인환자 유치 지원법. 유치업자·의료기관의 외국인환자 유치 광고는 국내 지정 장소(공항·항만·면세구역 등) 외 제한, 진료 비용 할인·과장 금지. 온라인 다국어 매체가 이 규정에서 어떻게 취급되는지 확인.</td><td>확인: 보건복지부·KHIDI</td></tr>
<tr><td><span class="badge b-warn">2</span></td><td><b>외국인환자 유치업자 등록</b></td><td>같은 법 6조. 상담·예약을 중개하고 대가를 받으면 필수. 요건(확인): 법인, 자본금 1억 원 이상, 의료사고 배상책임보험 또는 공제(보장 한도 기준 있음), 사무실. 시·도에 등록, 3년마다 갱신, 유치 실적 연 1회 보고. 미등록 유치·수수료는 형사 처벌 대상.</td><td>AIO2O 법인. 2단계 착수 전 3개월</td></tr>
<tr><td><span class="badge b-warn">2</span></td><td><b>통신판매업 신고 · 결제(PG)</b></td><td>예약금·상담비를 온라인으로 받으면 통신판매업 신고(구청). 해외 카드 결제 PG(Stripe·토스 해외결제) 계약, 외화 정산 계좌. 환불·취소 약관.</td><td>2단계</td></tr>
<tr><td><span class="badge b-warn">2</span></td><td><b>개인정보·민감정보 처리</b></td><td>개인정보처리방침(한·영·일·중), 건강 정보는 민감정보라 별도 동의, 외국인 데이터의 국외 이전 동의(해외 결제·번역 API 사용 시), 병원과의 처리 위탁·제공 계약. GDPR·일본 개인정보보호법 적용 여부 확인(대상 국가별). 상담 신청 폼은 최소 수집.</td><td>변호사·개인정보 담당자 지정</td></tr>
<tr><td><span class="badge b-info">3</span></td><td><b>여행업 등록 (직접 판매 시)</b></td><td>숙박·관광 상품을 직접 판매·알선하면 관광진흥법 여행업 등록. 제휴 링크(아고다·클룩·야놀자 어필리에이트)만 쓰면 불필요. 배달은 제휴 API 부재.</td><td>3단계에서 결정</td></tr>
<tr><td><span class="badge b-info">1</span></td><td><b>상표·도메인</b></td><td>허브 브랜드 상표 출원(한국·주요 대상국), 국제 도메인, 언어별 서브패스(/en /ja /zh) 또는 서브도메인 결정(hreflang 설계에 영향).</td><td>브랜드 확정 후</td></tr>
<tr><td><span class="badge b-info">1</span></td><td><b>API·플랫폼 계정</b></td><td>Google Cloud 프로젝트 쿼터(신청 중) → Places API(GBP 평점·리뷰 수·NAP 실측), YouTube Data API 쿼터 증량(기본 1만 유닛/일, 병원 10곳 이상 시 신청), OpenAI 조직 한도, Firecrawl·네이버 검색 API, 번역(DeepL 또는 GPT), Vercel Pro(팀·도메인), Supabase Pro, Trigger.dev(워커), Apify 미납 해소(인스타 수집).</td><td>AIO2O 계정 소유자 통일</td></tr>
<tr><td><span class="badge b-info">1</span></td><td><b>보험·회계</b></td><td>매체 배상책임(명예훼손·저작권) 보험 검토, 병원 구독·수수료 세금계산서 체계, 외화 수익 회계.</td><td>확인</td></tr>
</tbody>
</table></div>
</div></section>
<!-- 6. 기술 스택과 기능 -->
<section id="s6" class="light pb"><div class="wrap">
<div class="eyebrow">06 · Stack & Capabilities</div><h2 class="serif">Done, Partial, New</h2>
<p class="sub">완료는 두 병원에서 검증된 것, 부분은 있으나 포털 규모로 바꿔야 하는 것, 신규는 없는 것. 근거 열은 저장소 파일이다.</p>
<div class="grid g3" style="margin-top:22px">
<div class="card"><h3>현재 스택</h3><p><span class="pill">React 19</span><span class="pill">Vite 6</span><span class="pill">Tailwind 4</span><span class="pill">React Router 7</span><span class="pill">Astro 7 (서포터즈)</span><span class="pill">Supabase (DB·Edge Functions)</span><span class="pill">Vercel</span><span class="pill">Node 22 워커</span><span class="pill">Python (채점기·이미지)</span><span class="pill">GPT-4.1</span><span class="pill">YouTube Data API</span><span class="pill">Firecrawl</span><span class="pill">네이버 검색 API</span></p></div>
<div class="card"><h3>추가 스택 (1~2단계)</h3><p><span class="pill">번역: GPT-4.1 근거 프로토콜 재실행 + DeepL 검수</span><span class="pill">Trigger.dev (워커 상시)</span><span class="pill">Supabase Auth (병원·운영자 역할)</span><span class="pill">Stripe / 토스 해외결제</span><span class="pill">Google Places API</span><span class="pill">Resend·SES (알림 메일)</span><span class="pill">Plausible 또는 GA4 (AI 유입 채널그룹)</span><span class="pill">Vercel 로그 드레인 (AI 크롤러 계측)</span></p></div>
<div class="card"><h3>원칙 (변하지 않는 것)</h3><ul><li>근거 없는 사실은 생성하지 않는다. "확인 대기".</li><li>사람 게이트(검토·승인·채널 확인·이미지 육안)는 자동화하지 않는다.</li><li>고객 화면에 운영자 설명 없음. 확정 디자인은 텍스트만.</li><li>부재는 증명한다(채널 탐색 다섯 갈래).</li></ul></div>
</div>
<div style="overflow-x:auto;margin-top:22px"><table>
<thead><tr><th style="width:150px">영역</th><th>기능</th><th style="width:78px">상태</th><th style="width:260px">근거 파일 · 비고</th></tr></thead>
<tbody>
<tr><td rowspan="3"><b>진단 (AI Discovery)</b></td><td>기준표 v1.0 36항목 · v2.0 AEO/GEO 분리 채점, 미검증 분모 제외, 치명 게이트</td><td><span class="badge b-good">완료</span></td><td class="mono">src/data/aeoGeoRubric*.ts · src/lib/discoveryScore*.ts</td></tr>
<tr><td>자동 채점기(auto 21~22항목) · 리포트 페이지 · 독립 HTML/PDF 리포트</td><td><span class="badge b-good">완료</span></td><td class="mono">scripts/audit_aeo_geo.py · /discovery/:id · scripts/build_discovery_report.ts</td></tr>
<tr><td>외국인 질문 뱅크(영·일·중) · 다국어 답변엔진 실측 러너 · GBP·강남언니·플레이스 자동 실측(D1·D2·D4·D5)</td><td><span class="badge b-crit">신규</span></td><td>국문 120문항 러너 `scripts/run_question_bank_openai.py` 확장. Places API 키 필요</td></tr>
<tr><td rowspan="4"><b>온보딩 파이프라인</b></td><td>채널 발견·엔티티 검증(5갈래, 근거 점수 3-state) · 근거 수집(223p) · 팩트 시트·의료진 초안</td><td><span class="badge b-good">완료</span></td><td class="mono">supporters/scripts/discover_channels.mjs · collect_evidence.mjs</td></tr>
<tr><td>유튜브 집계(정보형 필터·쇼츠 판별) · 로고·파비콘 · 이미지(의료법 규칙·글자 이미지 검사)</td><td><span class="badge b-good">완료</span></td><td class="mono">collect_youtube.mjs · collect_images.mjs · img_process.py · docs/INFINITH_Supporters_Image_Rules.md</td></tr>
<tr><td>첫 배치 기획(2층 구조) · GPT-4.1 글 생성 · 수치 대조 · 모델 근거 대조 · 수정 2회</td><td><span class="badge b-good">완료</span></td><td class="mono">default_briefs.mjs · generate_posts.mjs · gen/*</td></tr>
<tr><td>뉴스룸 단계 · 감사 재실행(색인 허용 빌드 비교) · 유튜브 자막(IP 차단 대비 큐·프록시)</td><td><span class="badge b-warn">부분</span></td><td>뷰 수작업 스크립트 있음(`build_news.py`·`build_supporters_audit_xlsx.py`). 워커 단계로 미연결. 자막은 미구현</td></tr>
<tr><td rowspan="2"><b>발행 게이트</b></td><td>error 11종 + warn 6종 + 비교 수치 · 승인 · 고지 위치 · 기자 화법 · 구조 지문, 픽스처 테스트 16/16</td><td><span class="badge b-good">완료</span></td><td class="mono">supporters/scripts/gate/rules.mjs · check.mjs</td></tr>
<tr><td>외국어 금칙어·결론 단정·비교 표현 사전(영·일·중), 외국어 홈페이지 40자 중복 기준</td><td><span class="badge b-crit">신규</span></td><td>언어별 규칙 모듈. 원문 병원 페이지가 국문이면 번역 중복 검사 방식 결정 필요</td></tr>
<tr><td rowspan="3"><b>서포터즈 사이트 (병원 페이지)</b></td><td>Astro 템플릿(INFINITH 토큰) · 팩트 시트 단일 원본 · 신뢰 층(작성자·검토·승인·근거 유형·갱신·정정) · MedicalClinic·Physician·Article·FAQPage · noindex→색인 전환</td><td><span class="badge b-good">완료</span></td><td class="mono">templates/supporters-astro · supporters/src/lib.ts</td></tr>
<tr><td>다국어(hreflang·언어별 라우팅·언어별 팩트 시트 표기·통화·날짜) · 언어별 상담 신청 폼</td><td><span class="badge b-crit">신규</span></td><td>같은 팩트 시트에서 언어별 렌더. 수치·시점은 언어 간 동일해야 함</td></tr>
<tr><td>병원 N개를 한 도메인에서: 병원 서브패스 또는 서브도메인, 공통 홈·시술별 허브·질문별 답 페이지·병원 목록(비교·순위 없음)</td><td><span class="badge b-crit">신규</span></td><td>현재는 병원당 Vercel 프로젝트. 허브 도메인 설계와 canonical·sitemap 분리 필요</td></tr>
<tr><td rowspan="3"><b>승인·운영 UI</b></td><td>병원 확인 항목 폼(9항목) · 글별 검토·승인 기록 · 발견 채널 확인 · 미리보기 · 입력 반영 재빌드</td><td><span class="badge b-good">완료</span></td><td class="mono">src/components/discovery/ClinicInputsPanel.tsx · apply_inputs.mjs</td></tr>
<tr><td>계정·역할(병원 담당자·원장·운영자) · 로그인 · 병원별 권한 · 승인 서명 기록(승인자·직함·일시·글 버전 해시)</td><td><span class="badge b-crit">신규</span></td><td>지금은 익명 입력. Supabase Auth + RLS 병원 스코프</td></tr>
<tr><td>운영자 콘솔: 게이트 실패 목록, 이미지 육안 확인 체크, 확인 필요 채널 판정, 정정 접수, 비용·쿼터 대시보드</td><td><span class="badge b-warn">부분</span></td><td>status.json·report.md로 존재. 화면 없음</td></tr>
<tr><td rowspan="2"><b>워커·인프라</b></td><td>워커 11단계 · 큐(supporter_builds) · 폴러 · 랜딩 URL 신청 → 큐 · Vercel 미리보기 배포</td><td><span class="badge b-good">완료</span></td><td class="mono">workers/supporters-build/run.mjs · poll.mjs</td></tr>
<tr><td>상시 실행(Trigger.dev) · 입력 변경 시 자동 재빌드 트리거 · 실패 알림 · 병원 10곳 이상 동시 큐</td><td><span class="badge b-warn">부분</span></td><td>launchd plist 준비, 미설치. Trigger.dev 이관은 가입·키만 필요</td></tr>
<tr><td rowspan="2"><b>상담·예약 (2단계)</b></td><td>상담 신청 폼(언어·시술·일정·연락처) → 병원 이메일·카카오 알림 · 응답 추적</td><td><span class="badge b-crit">신규</span></td><td>1단계는 병원 직결(수수료 없음)</td></tr>
<tr><td>예약 확정·통역 배정·예약금 결제·취소 환불·정산 · 유치 실적 보고 데이터</td><td><span class="badge b-crit">신규</span></td><td>유치업 등록 후. Stripe·토스, 정산 테이블, 실적 보고 양식</td></tr>
<tr><td><b>여정 연결 (3단계)</b></td><td>회복 일정 기반 숙박·식사·관광 추천 · 제휴 링크 트래킹 · 축제·행사 데이터 연동(한국관광공사 API)</td><td><span class="badge b-crit">신규</span></td><td>제휴 API·어필리에이트 계정. 직접 판매 없음</td></tr>
<tr><td rowspan="2"><b>측정</b></td><td>서버 로그 AI 크롤러 히트 · GA4 AI 유입 채널그룹 · GSC AI Overviews · 기준선 스팟체크(질의 × 반복)</td><td><span class="badge b-crit">신규</span></td><td>E 카테고리 0/4. Vercel 로그 드레인 → Supabase, GA4 채널그룹 정의. 답변엔진 UI 자동 조회는 약관 위반이라 소유 신호만</td></tr>
<tr><td>병원별 성과 리포트(인용·유입·상담 신청) 자동 생성</td><td><span class="badge b-warn">부분</span></td><td>리포트 빌더 있음. 측정 데이터가 없어 카드가 비어 있음</td></tr>
</tbody>
</table></div>
</div></section>
<!-- 7. 아키텍처 -->
<section id="s7" class="dark"><div class="wrap">
<div class="eyebrow">07 · Architecture</div><h2 class="serif">Data Flow</h2>
<p class="sub">공급(병원)은 자동 온보딩 파이프라인, 수요(환자)는 AI·검색 인용, 그 사이를 승인 데이터가 잇는다.</p>
<div class="flow" style="margin-top:22px">
<div class="st"><b>입력</b><br>병원 이름 또는 URL (랜딩 신청·운영자·앵커 소개) → 큐</div>
<div class="st"><b>발견·수집</b><br>채널 엔티티 검증, 근거 223p, 유튜브, 이미지(법 필터), 팩트 시트</div>
<div class="st"><b>생성·게이트</b><br>기획 → GPT-4.1 → 수치·근거 대조 → 발행 게이트 → 국문 원문</div>
<div class="st"><b>다국어</b><br>같은 팩트 시트·근거로 언어별 재생성(번역 아님) → 언어별 게이트 → hreflang</div>
<div class="st"><b>승인</b><br>병원 폼 입력 → 검토·승인 기록 → 색인 허용 빌드에 승인 글만</div>
<div class="st"><b>허브 배포·측정</b><br>허브 도메인(병원별 경로) → AI·검색 인용 → 로그·GA4·상담 신청 계측</div>
</div>
<div class="grid g2" style="margin-top:18px">
<div class="card"><h3>데이터 모델 (핵심 테이블)</h3><ul><li><b>clinics</b>: id, 이름(다국어), url, 팩트 시트(JSON, checkedAt/nextCheck), surfaces(확인된 채널), 파트너 계약 상태.</li><li><b>supporter_builds</b>(있음): 빌드 실행·단계·미리보기 URL·리포트.</li><li><b>supporter_inputs</b>(있음): 병원 입력, 글별 검토·승인.</li><li><b>posts</b>: 언어별 글, 근거 유형, 검토·승인, 갱신 기록. 지금은 md frontmatter, 허브 규모에서는 DB로.</li><li><b>inquiries</b>(신규): 상담 신청, 언어, 병원 전달·응답 시각.</li><li><b>bookings·payments</b>(2단계), <b>affiliate_clicks</b>(3단계), <b>ai_crawler_hits·ai_referrals</b>(측정).</li></ul></div>
<div class="card"><h3>다국어 설계 원칙</h3><ul><li>번역이 아니라 근거 프로토콜을 언어별로 다시 태운다. 수치·시점·의료진은 팩트 시트 한 곳에서 나온다.</li><li>언어별 게이트: 금칙어·결론 단정·비교 표현 사전을 언어마다 둔다. 부작용 고지·지원 관계 고지는 언어별 문안 고정.</li><li>hreflang 상호 연결, canonical 언어별, sitemap 언어별. 병원 홈페이지 영문 사이트가 있으면 sameAs로 연결.</li><li>통화·단위: 비용 항목만 쓰고 금액은 쓰지 않으므로 환율 문제는 2단계 결제에서만.</li></ul></div>
</div>
</div></section>
<!-- 8. 로드맵 -->
<section id="s8" class="near"><div class="wrap">
<div class="eyebrow">08 · Roadmap</div><h2 class="serif">Three Phases</h2>
<div class="grid g3" style="margin-top:22px">
<div class="card"><span class="badge b-good">1단계 · 8~12주</span><h3 style="margin-top:10px">글로벌 허브 MVP</h3><ul><li>허브 브랜드·도메인·언어 라우팅 결정</li><li>다국어 생성(영·일·중) + 언어별 게이트</li><li>다병원 허브(공통 홈·시술 허브·병원 페이지·상담 신청 병원 직결)</li><li>뷰성형외과 + 앵커 소개 병원 2~4곳 온보딩(자동)</li><li>외국인 질문 뱅크 실측(기준선)</li><li>측정 인프라: 로그 드레인·GA4 채널그룹</li><li>계정·역할·운영자 콘솔 최소판</li></ul><p class="muted">게이트: 병원 4곳 개설자 승인, 인용 기준선 확보</p></div>
<div class="card"><span class="badge b-warn">2단계 · 3~6개월</span><h3 style="margin-top:10px">예약·수익화</h3><ul><li>유치업자 등록(법인·자본금·배상보험) 완료</li><li>예약 확정·통역·예약금 결제·환불·정산</li><li>병원 구독(온보딩·원문 공급·리포트) 요금제</li><li>뉴스룸·감사 재실행·자막 단계 워커 연결</li><li>Trigger.dev 상시 워커, 입력 변경 자동 재빌드</li><li>개인정보 국외 이전·민감정보 동의 체계</li></ul><p class="muted">게이트: 유치업 등록증, PG 계약, 상담→예약 전환 데이터</p></div>
<div class="card"><span class="badge b-info">3단계 · 이후</span><h3 style="margin-top:10px">회복기 여정 연결</h3><ul><li>회복 일정 기반 숙박·식사·관광 추천(제휴)</li><li>축제·행사 데이터(관광공사 API)</li><li>미용 서비스 제휴, 배달은 안내</li><li>병원 10곳 이상, 피부과 확장</li><li>여행업 등록 여부 결정</li></ul><p class="muted">게이트: 제휴 계약, 3단계 수익 검증</p></div>
</div>
<div class="card cta" style="margin-top:18px"><h3>1단계 착수 전 CEO 결정 3가지</h3><p style="color:var(--navy)">(1) 뷰성형외과 앵커 계약 조건(무상 온보딩·소개·자문 대가로 소액 지분 또는 수수료). (2) 유치업 등록을 AIO2O 법인으로 할지, 등록된 유치업자와 제휴할지. (3) 수익 순서: 병원 구독이 먼저인지 예약 수수료가 먼저인지. 이 셋이 정해지면 나머지는 지금 파이프라인 위에 붙는 개발이다.</p></div>
</div></section>
<!-- 9. KPI -->
<section id="s9" class="light"><div class="wrap">
<div class="eyebrow">09 · Metrics</div><h2 class="serif">How We Measure</h2>
<p class="sub">답변엔진 UI 자동 조회는 약관 위반이라 주력 지표는 소유 신호다. 효과는 반복 측정과 신뢰구간으로만 보고한다.</p>
<div style="overflow-x:auto;margin-top:22px"><table>
<thead><tr><th style="width:170px">축</th><th>지표</th><th style="width:220px">소스</th><th style="width:150px">1단계 목표</th></tr></thead>
<tbody>
<tr><td><b>공급</b></td><td>온보딩 병원 수, 언어별 발행 글 수, 개설자 승인 글 비율, 게이트 오류율, 편당 생성 비용</td><td>supporter_builds·inputs, 생성기 리포트</td><td>병원 4곳 · 승인 60% 이상</td></tr>
<tr><td><b>인용(AEO/GEO)</b></td><td>외국인 질문 뱅크 인용률(언어별, 5회 반복), 병원 AEO/GEO 점수 변화, AI 크롤러 히트(IP 검증)</td><td>QB 러너, 채점기, 서버 로그</td><td>기준선 확보, 크롤러 히트 발생</td></tr>
<tr><td><b>유입</b></td><td>AI 유입 세션(GA4 채널그룹), 검색 유입, 언어별 체류</td><td>GA4·GSC</td><td>월 AI 유입 세션 측정 시작</td></tr>
<tr><td><b>전환</b></td><td>상담 신청 수, 병원 응답률·응답 시간, (2단계) 예약 확정·결제</td><td>inquiries·bookings</td><td>상담 신청 월 10건</td></tr>
<tr><td><b>신뢰</b></td><td>정정 접수·처리 시간, 게이트 차단 건수, 확인 대기 항목 해소율</td><td>corrections, 게이트 로그</td><td>정정 72시간 내 처리</td></tr>
</tbody>
</table></div>
</div></section>
<!-- 10. 리스크 -->
<section id="s10" class="dark"><div class="wrap">
<div class="eyebrow">10 · Risks & Open Questions</div><h2 class="serif">What Can Break</h2>
<div class="grid g2" style="margin-top:22px">
<div class="card"><h3>리스크와 대응</h3><ul><li><b>규제</b>: 유치업 미등록 상태의 수수료, 외국인 유치 광고 규정, 사전심의 매체 기준. 대응: 1단계 무수수료·병원 직결, 2단계 전 등록, 이용자 수 모니터링.</li><li><b>공급 정체</b>: 병원이 검토·승인을 안 한다. 대응: 미승인이어도 "확인 대기" 미리보기 발행, 검토 담당자·주기를 계약에.</li><li><b>중립성 의심</b>: 앵커 병원 편향. 대응: 지분 공개·고지, 노출 순서 규칙 공개, 비교·순위 없음.</li><li><b>생성 품질</b>: 근거 없는 수치·오역. 대응: 언어별 수치 대조·근거 대조, 사람 확인 플래그, 정정 페이지.</li><li><b>경쟁</b>: 크리에이트립·강남언니 글로벌이 AI 인용 구조를 갖추면 선점 기회가 사라진다. 대응: 속도. 온보딩 자동화가 유일한 시간 우위.</li><li><b>운영</b>: 비개발자 운영, 워커 상시 실행 미결정. 대응: Trigger.dev, 운영자 콘솔.</li><li><b>브랜드</b>: 파트너 병원의 공정위·의료사고 이력. 대응: 계약 표명·보증, 뉴스룸 부정 기사 제외 규칙 유지, 허브 이름에 병원명 배제.</li></ul></div>
<div class="card"><h3>미결 (결정 주체)</h3><ul><li>허브 브랜드·도메인·언어 라우팅 (CEO·haewon)</li><li>뷰 앵커 계약 조건, 합작 여부 (CEO)</li><li>유치업 등록 주체와 시점 (CEO·법무)</li><li>수익 모델 순서와 병원 구독 가격 (경영진)</li><li>대상 언어·국가 우선순위 (일본·중국어권·영어권) (CEO)</li><li>실존 서포터즈·편집 책임자 명의 (haewon)</li><li>워커 상시 실행 위치 (haewon)</li><li>기존 미결: 뷰 도메인, POC 8주 범위, 서포터즈 모집</li></ul></div>
</div>
</div></section>
<!-- 11. 부록 -->
<section id="s11" class="near"><div class="wrap">
<div class="eyebrow">11 · Appendix</div><h2 class="serif">References</h2>
<div class="grid g2" style="margin-top:22px">
<div class="card"><h3>프로젝트 산출물</h3><ul>
<li>진단 리포트: <span class="mono">docs/reports/viewclinic/01_readiness_report</span> · <span class="mono">docs/reports/wonjin/01_readiness_report</span> (HTML·PDF)</li>
<li>미리보기: supporters-viewclinic.vercel.app · supporters-wonjin.vercel.app (noindex)</li>
<li>병원 확인 항목 패널: infinith-demo.vercel.app/supporters/wonjin</li>
<li>핸드오버: <span class="mono">docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD_v3.md</span>, 규칙: v2 §3·§4·§6·§12</li>
<li>회고: <span class="mono">docs/INFINITH_AI_Discovery_Retrospective_2026-09-08.md</span></li>
<li>이미지 규칙: <span class="mono">docs/INFINITH_Supporters_Image_Rules.md</span></li>
<li>워커: <span class="mono">workers/supporters-build/README.md</span></li>
</ul></div>
<div class="card"><h3>법령·기준 (원문 확인 필요)</h3><ul>
<li>의료법 제56조(의료광고의 금지 등) 제2항, 제57조(의료광고의 심의), 시행령 제23조·제24조</li>
<li>의료 해외진출 및 외국인환자 유치 지원법 제6조(유치업자 등록), 제15조(의료광고 특례·제한), 시행규칙(등록 요건·보험)</li>
<li>표시·광고의 공정화에 관한 법률, 추천·보증 등에 관한 표시·광고 심사지침(2024-12 개정)</li>
<li>개인정보 보호법(민감정보·국외 이전), 정보통신망법</li>
<li>전자상거래법(통신판매업 신고), 관광진흥법(여행업)</li>
<li>공정거래위원회 2026-07-12 성형외과 후기 뒷광고 시정명령(뷰성형외과 포함 3곳)</li>
</ul></div>
</div>
</div></section>
<footer>INFINITH · AI오투오 · o2oteam@o2o.kr · PRD v0.1 초안 2026-09-08 · 법 해석은 자문이 아니며 계약·등록 전 변호사 확인이 필요합니다.</footer>
</body></html>

View File

@ -0,0 +1,412 @@
"""GEO/AEO 최적화 병원 웹사이트 PRD — ADO2 AEO-GEO 경쟁분석 덱 포맷(13.333×7.5in, Pretendard, 333/666, 5D61D1/ADB0FF)."""
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.shapes import MSO_SHAPE
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.oxml.ns import qn
from lxml import etree
INK, MUTED, DIM, WHITE, BLACK = "333333", "666666", "444444", "FFFFFF", "000000"
VIO, VIO_LT, VIO_BG, GRAY_BG, ZEBRA, LINE = "5D61D1", "ADB0FF", "F3F3FF", "F0F0F0", "F7F8FA", "CCCCCC"
FONT = "Pretendard"
DATE = "2026.08.28"
FOOT = f"INFINITH AI Discovery · 분석 → 진단 → 빌드 → 측정 PRD | {DATE}"
M, CW = 0.44, 12.46
prs = Presentation(); prs.slide_width = Inches(13.333); prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]
page = 0
def rgb(h): return RGBColor.from_string(h)
def rect(s, x, y, w, h, fill=None, line=None):
sh = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, Inches(x), Inches(y), Inches(w), Inches(h))
if fill: sh.fill.solid(); sh.fill.fore_color.rgb = rgb(fill)
else: sh.fill.background()
if line: sh.line.color.rgb = rgb(line); sh.line.width = Pt(0.75)
else: sh.line.fill.background()
sh.shadow.inherit = False
return sh
def tb(s, x, y, w, h, text, size, color=INK, bold=False, align=PP_ALIGN.LEFT, anchor=MSO_ANCHOR.TOP, spc=None, ls=1.1):
t = s.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = t.text_frame; tf.word_wrap = True; tf.vertical_anchor = anchor
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = 0
lines = text if isinstance(text, list) else [text]
for i, ln in enumerate(lines):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.alignment = align; p.line_spacing = ls
r = p.add_run(); r.text = ln
r.font.name = FONT; r.font.size = Pt(size); r.font.bold = bold; r.font.color.rgb = rgb(color)
if spc: r.font._element.set("spc", str(spc))
return t
def chrome(s, eyebrow, title, lede=None):
global page; page += 1
tb(s, M, 0.31, 8, 0.19, eyebrow.upper(), 11.25, MUTED, True, spc=200)
tb(s, M, 0.60, 11.85, 0.60, title, 30, INK, True)
if lede: tb(s, M, 1.26, 11.85, 0.40, lede, 15.75, MUTED)
rect(s, M, 1.73, CW, 0.02, BLACK)
rect(s, M, 7.10, CW, 0.01, LINE)
tb(s, M, 7.20, 6, 0.16, FOOT, 10.5, MUTED)
tb(s, 12.4, 7.18, 0.5, 0.19, f"{page:02d}", 11.25, INK, True, PP_ALIGN.RIGHT)
def new(eyebrow, title, lede=None):
s = prs.slides.add_slide(BLANK); chrome(s, eyebrow, title, lede); return s
def card(s, x, y, w, h, tag, head, body, bar=VIO_LT):
rect(s, x, y, w, h, WHITE, LINE); rect(s, x, y, 0.07, h, bar)
tb(s, x + 0.23, y + 0.19, w - 0.4, 0.17, tag, 11.25, bar if bar != BLACK else DIM, True)
tb(s, x + 0.23, y + 0.45, w - 0.4, 0.42, head, 18, INK, True)
tb(s, x + 0.23, y + 0.95, w - 0.4, h - 1.1, body, 13.5, MUTED, ls=1.2)
def cards3(s, items, y=2.10, h=1.88):
w = 3.85; gap = (CW - 3 * w) / 2
bars = [VIO_LT, DIM, VIO]
for i, (tag, head, body) in enumerate(items):
card(s, M + i * (w + gap), y, w, h, tag, head, body, bars[i % 3])
def band(s, y, h, label, big, small=None):
rect(s, M, y, CW, h, BLACK)
tb(s, M + 0.29, y + 0.27, 11.56, 0.23, label, 12.75, VIO_LT, True)
tb(s, M + 0.29, y + 0.62, 11.56, 0.75, big, 18, WHITE, True, ls=1.15)
if small: tb(s, M + 0.29, y + h - 0.42, 11.56, 0.23, small, 12.75, LINE)
def table(s, headers, rows, col_w, y=2.14, row_h=0.52, size=12.5, first_bold=True):
n, m = len(rows) + 1, len(headers)
gs = s.shapes.add_table(n, m, Inches(M), Inches(y), Inches(CW), Inches(row_h * n))
t = gs.table
tblPr = t._tbl.tblPr
for a in ("bandRow", "firstRow"): tblPr.set(a, "0")
st = tblPr.find(qn("a:tableStyleId"))
if st is not None: tblPr.remove(st)
for i, w in enumerate(col_w): t.columns[i].width = Inches(w)
for r in range(n): t.rows[r].height = Inches(row_h)
for r in range(n):
for c in range(m):
cell = t.cell(r, c)
txt = headers[c] if r == 0 else rows[r - 1][c]
cell.margin_left, cell.margin_right = Inches(0.10), Inches(0.08)
cell.margin_top, cell.margin_bottom = Inches(0.05), Inches(0.05)
cell.vertical_anchor = MSO_ANCHOR.MIDDLE
cell.fill.solid()
cell.fill.fore_color.rgb = rgb(BLACK if r == 0 else (ZEBRA if r % 2 == 0 else WHITE))
tf = cell.text_frame; tf.word_wrap = True
p = tf.paragraphs[0]; p.text = ""
run = p.add_run(); run.text = txt
run.font.name = FONT; run.font.size = Pt(size)
run.font.bold = (r == 0) or (first_bold and c == 0)
run.font.color.rgb = rgb(WHITE if r == 0 else INK)
tcPr = cell._tc.get_or_add_tcPr()
for side in ("lnL", "lnR", "lnT", "lnB"):
ln = etree.SubElement(tcPr, qn(f"a:{side}"), w="6350")
sf = etree.SubElement(ln, qn("a:solidFill")); etree.SubElement(sf, qn("a:srgbClr"), val=LINE)
return t
def step_rows(s, items, y=2.10, h=0.81, gap=0.21):
"""번호 밴드 리스트(레퍼런스 S3). items: (num, label, mid, right). 위에서 아래로 진해짐 반대: 첫 줄 검정."""
fills = [BLACK, VIO_LT, VIO_LT, GRAY_BG, GRAY_BG, GRAY_BG]
for i, (num, label, mid, right) in enumerate(items):
f = fills[i]; fg = WHITE if f in (BLACK, VIO_LT) else INK
yy = y + i * (h + gap)
rect(s, M, yy, CW, h, f)
tb(s, M + 0.18, yy + 0.20, 1.1, 0.4, num, 22, fg, True)
tb(s, M + 1.35, yy + 0.25, 2.0, 0.3, label, 15, fg, True)
tb(s, M + 3.4, yy + 0.25, 4.3, 0.3, mid, 13.5, fg)
tb(s, M + 7.8, yy + 0.25, 4.5, 0.3, right, 13.5, fg, True)
def bullets(s, x, y, w, items, size=13.5, step=0.42, color=MUTED, dot=VIO):
for i, t in enumerate(items):
yy = y + i * step
d = s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(x), Inches(yy + 0.08), Inches(0.09), Inches(0.09))
d.fill.solid(); d.fill.fore_color.rgb = rgb(dot); d.line.fill.background(); d.shadow.inherit = False
tb(s, x + 0.22, yy, w - 0.22, step, t, size, color, ls=1.15)
def takeaway(s, text, y=6.30):
tb(s, M, y, CW, 0.47, text, 16, VIO, True)
# ───────────────────────────── 01 표지
s = prs.slides.add_slide(BLANK); page += 1
tb(s, M, 0.42, 6, 0.19, "PRODUCT REQUIREMENTS DOCUMENT · v0.2", 11.25, MUTED, True, spc=200)
rect(s, M, 0.77, CW, 0.02, BLACK)
tb(s, M, 1.40, 7.5, 1.56, ["AI Discovery PRD", "분석 · 진단 · 빌드 · 측정"], 40.5, INK, True, ls=1.05)
tb(s, M, 3.46, 7.2, 0.73, ["병원 URL 하나를 넣으면 채널 분석과 AEO · GEO 진단이 나오고,", "진단 항목이 그대로 빌드 요구사항과 측정 지표가 되는 제품"], 18.75, MUTED, ls=1.2)
for x, w, bg, num, cap, col in [
(8.18, 2.14, VIO_BG, "36항목", "AEO · GEO 루브릭 v1.0", VIO_LT),
(10.52, 2.14, GRAY_BG, "C · 48점", "뷰성형외과 실측 2026.08.28", VIO),
]:
rect(s, x, 1.51, w, 1.38, bg); tb(s, x + 0.18, 1.70, w - 0.36, 0.54, num, 29.25, col, True); tb(s, x + 0.18, 2.36, w - 0.36, 0.36, cap, 13, INK, True)
rect(s, 8.18, 3.09, 4.48, 1.38, GRAY_BG); tb(s, 8.36, 3.28, 4.1, 0.54, "v1.0 · 10주", 29.25, DIM, True); tb(s, 8.36, 3.95, 4.1, 0.36, "목표 릴리스 · 2026.11.06", 13, INK, True)
tb(s, M, 6.75, 6.5, 0.21, f"작성 INFINITH Product | {DATE} | 상태 Draft for Engineering Review", 12, INK, True)
tb(s, 8.5, 6.75, 4.4, 0.21, "대상 · 프론트엔드 · 백엔드 · 인프라 · 콘텐츠 운영", 12, MUTED, align=PP_ALIGN.RIGHT)
# ───────────────────────────── 02 제품 흐름
s = new("Product Flow", "URL 하나로 분석, 진단, 빌드, 측정까지 한 흐름",
"1 · 2단계는 이미 동작한다. 이 PRD는 2단계를 자동화하고 3 · 4단계를 새로 만든다.")
step_rows(s, [
("4", "측정", "크롤러 로그 · GA4 AI 채널 · 재진단으로 점수 변화 증명", "신규 · 루브릭 E 카테고리를 채운다"),
("3", "빌드", "진단 P0 · P1을 사이트 수정 또는 표준 사이트로 실행", "신규 · 진단 항목이 곧 요구사항"),
("2", "진단", "36항목 AEO · GEO 스코어카드 · 등급 · 액션 플랜", "프로토타입 동작 · 수동 채점 → 자동화 대상"),
("1", "분석", "채널 발견 · 6채널 데이터 수집 · 마케팅 리포트", "구현 완료 · discover → collect → generate-report"),
], h=0.81, gap=0.21)
takeaway(s, "뷰성형외과는 1 · 2단계를 거쳐 P0 3건이 나왔다. 3 · 4단계가 없어 여기서 멈춘다. 그 공백이 이 PRD의 범위다.", y=6.35)
# ───────────────────────────── 03 배경
s = new("Background", "AI 답변엔진은 JS를 실행하지 않는다",
"GPTBot, ClaudeBot, PerplexityBot은 서버가 내려준 HTML만 읽는다. 진단은 이 사실에서 출발한다.")
cards3(s, [
("실측", "01 뷰성형외과: 읽히지만 라벨뿐", "AI 봇 12종 전부 200, JS 없이 본문 10,757자. 그런데 H1 5개가 전부 영문 라벨이고 JSON-LD는 문법 오류로 무효."),
("시장", "02 네이버 자산은 AI에 차단됨", "블로그 · 플레이스 · 카페는 robots.txt로 AI 크롤러를 차단한다. 인용되려면 오픈웹 소유 자산이 필요하다."),
("실측", "03 INFINITH 랜딩: 4단어", "크롤러 UA 요청 결과 title 4단어 외 본문 0. 1.5 MB JS를 실행해야 본문이 나왔다. 프리렌더 후 810단어."),
])
band(s, 4.31, 2.03, "문제 정의",
"진단은 나오는데 다음이 없다. 진단 결과를 받은 병원이 무엇을 고쳐야 하는지, 고친 뒤 점수가 올랐는지 증명할 수단이 제품 안에 없다.",
"이 PRD의 범위 · 진단 자동화 · 빌드(수정 · 표준 사이트) · 측정 인프라 · 재진단 루프")
# ───────────────────────────── 04 뷰성형외과 케이스
s = new("Case · 뷰성형외과 (2026.08.28)", "진단 결과가 빌드 요구사항으로 바로 이어진다",
"카테고리 점수는 검증 항목 기준 정규화. 미검증(A6 · D6 · E1~E3)은 분모 제외.")
table(s, ["카테고리", "배점", "획득", "점수", "핵심 발견", "→ 빌드 · 측정 요구사항"], [
["A 크롤러 접근성", "20", "15.7 / 17", "92%", "robots · SSR · HTTPS 정상. sitemap lastmod 15개월 전", "FR-B05 sitemap 자동 갱신"],
["B 엔티티 구조화", "20", "6.0 / 20", "30%", "JSON-LD 깨짐 · MedicalClinic 없음 · Physician 없음", "FR-B03 스키마 단일 소스"],
["C 인용 가능 콘텐츠", "25", "5.0 / 25", "20%", "정의문 · FAQ · 서술형 H1 없음. 수치 부족", "FR-B02 질문 템플릿 · FR-B06 검사"],
["D 인용 표면", "20", "13.7 / 19", "72%", "강남언니 19,316건 강함. GBP 전화 없음 · NAP 3종", "FR-B08 NAP 통일 체크리스트"],
["E 측정 인프라", "10", "0 / 2", "0%", "로그 · GA4 · GSC 오너 접근 필요. 기준선 없음", "FR-M01 ~ M03"],
["F 기술 위생", "5", "1.7 / 5", "33%", "WordPress 5.5.3 · alt 누락 · 페이지 무게", "NFR-04 · FR-B09 CMS 업그레이드"],
], [2.1, 0.7, 1.2, 0.8, 4.2, 3.46], row_h=0.5)
takeaway(s, "종합 48점 · C등급. P0 3건: JSON-LD 수정 + MedicalClinic 삽입, GBP 전화 등록 + NAP 통일, 측정 인프라 설치.", y=6.2)
# ───────────────────────────── 05 목표와 지표
s = new("Goals & Metrics", "목표는 진단 자동화와 점수 개선의 증명이다",
"출시 10주 후 기준. 모든 지표는 제품 안에서 자동 측정된다.")
table(s, ["단계", "지표", "현재", "v1.0 목표", "측정 방법"], [
["진단", "자동 채점 항목 비율", "0% (36항목 수동)", "24 / 36 자동 (67%)", "discover-aeo-geo 실행 로그"],
["진단", "URL 입력 → 리포트 소요 시간", "약 4시간 (수동)", "10분 이내", "analysis_runs 타임스탬프"],
["진단", "재진단 재현성", "미검증", "동일 URL 2회 점수 편차 3점 이내", "회귀 테스트"],
["빌드", "P0 액션 완료 → 재진단 점수 상승", "측정 불가", "뷰성형외과 48 → 65+ (B)", "재진단 비교"],
["빌드", "질문 페이지 발행 (표준 사이트)", "0", "8주 내 40개", "CMS 발행 로그"],
["측정", "AI 크롤러 · AI 유입 계측 병원", "0", "파일럿 100%", "로그 파서 · GA4"],
], [1.0, 3.0, 2.4, 3.0, 3.06], row_h=0.5)
takeaway(s, "답변엔진 언급률은 지표에서 제외한다. 소비자 UI 자동 조회는 약관 위반이고 단발 조회는 무효다.")
# ───────────────────────────── 06 범위
s = new("Scope", "v1.0은 진단 자동화부터 재진단 루프까지",
"분석(1단계)은 기존 구현을 그대로 쓴다. 콘텐츠 작성과 광고 · SNS 운영은 범위 밖이다.")
w = 6.08
rect(s, M, 2.10, w, 3.95, WHITE, LINE); rect(s, M, 2.10, 0.07, 3.95, VIO)
tb(s, M + 0.25, 2.28, 5.6, 0.3, "IN SCOPE", 12.75, VIO, True, spc=200)
bullets(s, M + 0.25, 2.70, 5.6, [
"진단 Edge Function discover-aeo-geo (자동 채점 1 · 2 · 3단계)",
"수동 항목 입력 슬롯 (A6 · D1 · D2 · D4 · E1~E4)과 미검증 처리",
"진단 리포트 DB 저장 · /discovery/:id 실데이터 연결 · PDF",
"빌드 A: 기존 사이트 수정 패키지 (스키마 · NAP · CMS · FAQ 삽입)",
"빌드 B: 병원용 워드프레스 표준 사이트 (템플릿 4종 · 검사)",
"측정: 크롤러 로그 파서 · GA4 AI 채널 · 재진단 비교 뷰",
"INFINITH 랜딩 파일럿: FAQ 섹션 · FAQPage 스키마",
], step=0.44)
x2 = M + w + 0.30
rect(s, x2, 2.10, w, 3.95, WHITE, LINE); rect(s, x2, 2.10, 0.07, 3.95, DIM)
tb(s, x2 + 0.25, 2.28, 5.6, 0.3, "OUT OF SCOPE (v1.0)", 12.75, DIM, True, spc=200)
bullets(s, x2 + 0.25, 2.70, 5.6, [
"분석 파이프라인 변경 (discover · collect · generate-report)",
"Q&A 콘텐츠 작성 (운영팀 · 병원 담당, 별도 가이드)",
"네이버 블로그 · 플레이스 운영 (AI 크롤러 차단 자산)",
"답변엔진 UI 자동 조회 · 언급률 리포트 (약관 위반)",
"llms.txt 납품 (Google 효과 0 · 채택률 0.13%)",
"헤드리스(WordPress + Astro) 전환 (v2.0 후보)",
], step=0.44, dot=DIM)
takeaway(s, "빌드 A와 B를 나눈 이유: 뷰성형외과처럼 사이트가 있는 병원은 수정이고, 없는 병원은 표준 사이트다.")
# ───────────────────────────── 07 사용자
s = new("Users", "세 사용자, 세 가지 다른 성공 기준",
"설계 기준은 병원 마케팅 담당자다. 진단을 읽고, 고치고, 다시 점수를 볼 수 있어야 한다.")
cards3(s, [
("PRIMARY", "병원 마케팅 담당자", "URL을 넣고 10분 안에 스코어카드와 P0를 본다. 수정 후 재진단으로 점수 변화를 확인한다. 표준 사이트면 질문 페이지를 직접 추가한다."),
("SECONDARY", "INFINITH 운영팀", "수동 항목(GBP · 강남언니 · 로그)을 입력하고 여러 병원의 점수 · 크롤 수 · 오류를 한 화면에서 본다. 성공 기준: 병원 온보딩 1일."),
("SYSTEM", "AI 크롤러 · 검색엔진", "GPTBot · ClaudeBot · PerplexityBot · Googlebot · Yeti. 진단은 이들의 UA로 실제 요청해 채점한다. 빌드 결과도 같은 방법으로 검증한다."),
], h=2.3)
band(s, 4.75, 1.55, "설계 원칙", "확인 못 한 것은 감점하지 않는다(미검증은 분모 제외). 근거 없는 것은 팔지 않는다. 담당자의 실수는 시스템이 발행 전에 막는다.")
# ───────────────────────────── 08 FR 진단
s = new("Functional Requirements · 진단", "FR-D01 ~ D07: 36항목을 제품 안에서 채점한다",
"AEO-GEO-Audit 브랜치의 루브릭 · 타입 · 집계 로직을 그대로 쓰고, 채점 데이터만 수동에서 자동으로 바꾼다.")
table(s, ["ID", "요구사항", "상세", "루브릭", "우선순위"], [
["FR-D01", "자동 채점 1단계", "robots 파싱 · 12개 AI 봇 UA GET · HTML 파서 (crawler_audit.py 이식)", "A1~A5 · A7 · B1 · B4 · B6 · B7 · C2 · C3 · C5 · C6 · F1~F4", "P0"],
["FR-D02", "자동 채점 2단계", "본문 텍스트를 Perplexity 또는 Claude에 투입해 구조화 판정", "B2 · B3 · C1 · C4 · C7 · C8", "P0"],
["FR-D03", "자동 채점 3단계", "검색 그라운딩 도메인 집계 · Wikidata API", "D3 · D6", "P1"],
["FR-D04", "수동 입력 슬롯", "운영팀이 근거 · 레벨 입력. 미입력은 unverified로 분모 제외", "A6 · D1 · D2 · D4 · E1~E4", "P0"],
["FR-D05", "결과 저장 · 리포트", "DiscoveryResult를 DB 저장. /discovery/:id가 mock 대신 DB를 읽음", "전체", "P0"],
["FR-D06", "액션 플랜 생성", "level 0 · 1 항목에서 P0 · P1 · P2 액션 자동 생성. 빌드 FR과 연결", "전체", "P1"],
["FR-D07", "재진단 비교", "같은 URL의 이전 결과와 항목별 diff · 점수 변화 표시", "전체", "P1"],
], [1.0, 1.8, 5.2, 3.5, 0.96], row_h=0.5, size=12)
takeaway(s, "1단계만으로 36항목 중 17개가 자동이다. 2단계까지 23개. 나머지는 오너 계정 접근이 필요해 수동이 맞다.", y=6.3)
# ───────────────────────────── 09 FR 빌드 A
s = new("Functional Requirements · 빌드 A (기존 사이트 수정)", "FR-B01 ~ B09: 진단 P0 · P1을 실행 가능한 패키지로",
"뷰성형외과 액션 플랜에서 역산했다. 병원 개발사나 INFINITH가 붙여 넣을 수 있는 산출물이어야 한다.")
table(s, ["ID", "요구사항", "상세", "루브릭", "우선순위"], [
["FR-B01", "서버 렌더링 검증 · 처방", "A3 실패 시 프리렌더 · SSR 처방 (INFINITH 랜딩 방식 문서)", "A3", "P0"],
["FR-B03", "스키마 패키지 생성", "진단 데이터로 MedicalClinic · Physician JSON-LD 생성. 기존 스키마 차단 안내", "B1 · B2 · B3 · B5", "P0"],
["FR-B08", "NAP 통일 체크리스트", "홈페이지 · 강남언니 · GBP · 플레이스 표기를 나열하고 정본 지정", "B4 · D2 · D4", "P0"],
["FR-B04", "메타 패키지", "title · description · canonical · OG · hreflang 코드 생성", "B6 · B7", "P1"],
["FR-B05", "robots · sitemap 처방", "AI 봇 허용 robots.txt · lastmod 갱신 규칙", "A1 · A5", "P1"],
["FR-B07", "FAQ 삽입 패키지", "시술별 질문 · 요약 답변 초안 + FAQPage 스키마 코드", "C1 · C2 · C4", "P1"],
["FR-B09", "CMS 위생 처방", "WordPress 버전 · alt 누락 목록 · 페이지 무게 리포트", "F1 · F2 · F3", "P1"],
], [1.0, 2.1, 5.4, 2.4, 1.56], row_h=0.5, size=12)
takeaway(s, "빌드 A의 산출물은 코드 조각과 체크리스트다. 병원 사이트를 INFINITH가 직접 호스팅하지 않는다.", y=6.3)
# ───────────────────────────── 10 FR 빌드 B
s = new("Functional Requirements · 빌드 B (표준 사이트)", "FR-B02 · B06 · B10 ~ B12: 사이트가 없는 병원용 표준 스택",
"루브릭 A · B · C · F를 처음부터 통과하는 워드프레스 사이트. 담당자가 질문 페이지를 직접 늘린다.")
table(s, ["ID", "요구사항", "상세", "루브릭", "우선순위"], [
["FR-B10", "표준 스택 프리셋", "경량 테마 · Rank Math · WP Rocket · ACF · 관리형 호스팅. 1회 명령 복제", "A · F 전체", "P1"],
["FR-B02", "질문 페이지 템플릿", "질문(h1) · 요약 답변(p, 60자) · 상세 · 관련 시술 · 의료진. 필드 입력만으로 생성", "C1 · C2 · C3 · C8", "P1"],
["FR-B11", "시술 · 의료진 템플릿", "MedicalProcedure · Physician 스키마 포함. 가격대 · 시간 · 회복 필드", "B3 · C4 · C7", "P1"],
["FR-B12", "스키마 단일 소스", "페이지 유형별 JSON-LD 1개 자동 출력. 테마 · 타 플러그인 출력 차단", "B1 · B2 · B3", "P1"],
["FR-B06", "발행 전 검사", "스키마 중복 · h1 2개 · alt 누락 · 요약 답변 누락 시 발행 차단", "B1 · C3 · F1", "P1"],
["FR-B13", "sitemap · robots 자동", "발행 시 lastmod 갱신 · AI 봇 9종 허용", "A1 · A5 · C6", "P1"],
], [1.0, 2.1, 5.4, 2.4, 1.56], row_h=0.5, size=12)
takeaway(s, "빌드 B는 P1이다. 뷰성형외과처럼 사이트가 있는 병원이 먼저이므로 빌드 A가 P0다.", y=6.0)
# ───────────────────────────── 11 FR 측정
s = new("Functional Requirements · 측정", "FR-M01 ~ M05: 루브릭 E를 채우고 개선을 증명한다",
"인용 여부를 직접 볼 수 없으므로 소유한 신호를 계측한다. 재진단이 개선의 증거다.")
table(s, ["ID", "요구사항", "상세", "루브릭", "우선순위"], [
["FR-M01", "AI 크롤러 로그 파서", "액세스 로그 또는 Cloudflare Logpush에서 GPTBot · ClaudeBot · PerplexityBot 히트를 IP 검증 후 일 집계", "E1", "P0"],
["FR-M02", "GA4 AI 채널", "chatgpt.com · perplexity.ai · gemini.google.com 리퍼러를 커스텀 채널로 분리 · 설정 가이드", "E2", "P0"],
["FR-M03", "기준선 스팟체크 기록", "분기 반복 측정 프로토콜과 입력 슬롯 (수동)", "E4", "P1"],
["FR-M04", "재진단 스케줄", "월 1회 자동 재진단 · 점수 변화 알림", "전체", "P1"],
["FR-M05", "운영 대시보드", "병원별 점수 · 크롤 수 · AI 세션 · 스키마 오류 · LCP 주간 표시", "E 전체", "P1"],
], [1.0, 2.1, 6.2, 1.6, 1.56], row_h=0.55, size=12)
takeaway(s, "FR-M01 · M02는 뷰성형외과 P0 3번(측정 인프라 설치)이다. 빌드보다 먼저 깔아야 전후 비교가 된다.", y=5.9)
# ───────────────────────────── 12 NFR
s = new("Non-Functional Requirements", "진단 재현성, 성능, 보안 예산",
"진단은 같은 입력에 같은 점수를 내야 한다. 빌드 B의 예산은 CI에서 강제한다.")
table(s, ["ID", "영역", "요구사항", "예산 · 기준"], [
["NFR-01", "진단", "재현성", "동일 URL 2회 실행 점수 편차 3점 이내 · LLM 판정 항목은 temperature 0"],
["NFR-02", "진단", "소요 시간 · 비용", "URL당 10분 이내 · API 비용 2,000원 이내"],
["NFR-03", "진단", "대상 사이트 부하", "UA 테스트 요청 30회 이내 · 1초 간격 · 429 시 중단"],
["NFR-04", "빌드 B", "성능", "모바일 LCP p75 2.5초 · CLS 0.1 · 플러그인 10개 이하 · HTML 80 KB 이하"],
["NFR-05", "빌드 B", "HTML 품질 · 보안", "h1 1개 · div 중첩 6단계 이하 · 관리형 호스팅 · 자동 업데이트 · 일 백업"],
["NFR-06", "측정", "로그 보존 · 정확도", "90일 보존 · 봇 IP 역DNS 검증 (위장 UA 제외)"],
["NFR-07", "공통", "정직성 규약", "리포트에 '하지 않을 것' 섹션 고정 · 근거 등급(실측 · 학술 · 벤더 · 추정) 표기"],
], [1.1, 1.1, 2.6, 7.66], row_h=0.5, size=12.5)
takeaway(s, "Elementor · Divi 같은 페이지빌더는 NFR-04 · 05를 통과하지 못하므로 빌드 B에서 금지다.", y=6.2)
# ───────────────────────────── 13 아키텍처
s = new("Architecture", "기존 파이프라인 뒤에 진단 · 빌드 · 측정 함수를 잇는다",
"Supabase Edge Functions 체인. 분석 3개 함수는 그대로, 신규 4개를 추가한다.")
step_rows(s, [
("4", "측정", "log-ingest · GA4 커넥터 · 재진단 cron", "신규 · discovery_results 시계열"),
("3", "빌드", "build-package: 스키마 · 메타 · NAP · FAQ 코드", "신규 · 빌드 A는 함수, B는 플러그인"),
("2", "진단", "discover-aeo-geo: UA 테스트 · 파서 · LLM 판정", "신규 · 루브릭 · 집계는 AEO-GEO-Audit 코드 이식"),
("1", "분석", "discover → collect → generate-report", "기존 · marketing_reports · clinic_registry"),
], h=0.81, gap=0.21)
takeaway(s, "신규 테이블 2개: discovery_results (결과 · 버전) · crawler_hits (봇 · IP · 경로 · 일자).", y=6.35)
# ───────────────────────────── 14 진단 → 빌드 매핑
s = new("Rubric → Build Mapping", "level 0 · 1 항목이 어떤 빌드 산출물로 이어지는지",
"FR-D06 액션 플랜 생성의 규칙표. 모든 항목이 빌드 또는 측정 FR 하나에 매핑된다.")
table(s, ["루브릭 항목", "level 0 · 1이면", "빌드 산출물", "FR"], [
["A3 서버 렌더링 본문", "본문이 JS에만 있음", "프리렌더 · SSR 처방 문서 + 검증 스크립트", "FR-B01"],
["B1 · B2 · B3 스키마", "JSON-LD 깨짐 · 엔티티 없음", "MedicalClinic · Physician JSON-LD 코드 + 차단 안내", "FR-B03 · B12"],
["B4 · D2 · D4 NAP", "표면 간 표기 불일치", "정본 NAP 체크리스트 · GBP 수정 항목", "FR-B08"],
["C1 · C2 · C4 콘텐츠", "정의문 · FAQ · 수치 없음", "시술별 질문 · 요약 답변 초안 + FAQPage 코드", "FR-B07 · B02"],
["C3 제목 계층", "H1 없음 · 이미지 텍스트", "H1 재설계안 · 이미지 정보 텍스트화 목록", "FR-B07"],
["C6 신선도", "dateModified 없음", "dateModified 활성화 · 갱신 주기 규칙", "FR-B13"],
["E1 · E2 측정", "미설치", "로그 파서 · GA4 채널 설정", "FR-M01 · M02"],
["F2 CMS", "구버전", "업그레이드 절차 · 백업 체크리스트", "FR-B09"],
], [2.6, 2.6, 5.3, 1.96], row_h=0.46, size=12)
# ───────────────────────────── 15 스키마 스펙
s = new("Schema Specification", "페이지 유형별 JSON-LD 1개, 단일 소스",
"빌드 A는 코드 조각으로, 빌드 B는 Rank Math 훅으로 같은 스펙을 출력한다. 테마 내장 스키마는 끈다.")
table(s, ["페이지", "@type", "필수 속성", "데이터 소스"], [
["홈", "MedicalClinic + WebSite", "name · address · telephone · openingHours · sameAs", "분석 1단계 clinics · 병원 정보 ACF"],
["시술", "MedicalProcedure", "name · procedureType · bodyLocation · howPerformed · preparation", "시술 ACF"],
["의료진", "Physician", "name · medicalSpecialty · memberOf · image · alumniOf", "의료진 ACF · 강남언니 의료진"],
["질문", "FAQPage (+ Article)", "mainEntity[Question · acceptedAnswer] · author · dateModified", "질문 템플릿 필드"],
["공통", "BreadcrumbList", "itemListElement", "자동"],
], [1.4, 2.6, 5.0, 3.46], row_h=0.55)
band(s, 5.75, 1.15, "수용 기준", "Rich Results Test 오류 0. 응답에 ld+json 블록 정확히 1개 (Breadcrumb 포함 시 @graph 병합). 루브릭 B1 · B2 · B3 level 3.")
# ───────────────────────────── 16 질문 페이지 템플릿
s = new("Q&A Page Template", "AI가 인용하는 단락 구조를 템플릿이 강제한다",
"루브릭 C1 · C2 · C3 · C4 · C8을 동시에 통과하는 구조. 담당자는 필드를 채우고, 템플릿이 HTML과 스키마를 만든다.")
table(s, ["필드", "HTML 출력", "제약", "예시", "루브릭"], [
["질문", "h1", "물음표로 끝남 · 40자 이내", "코 재수술은 언제 가능한가요?", "C3"],
["요약 답변", "p (h1 직후)", "60자 이내 · 숫자 · 기간 포함 권장", "1차 수술 후 최소 6개월, 보통 1년 뒤 가능합니다.", "C1 · C8"],
["상세 답변", "h2 + p 반복", "h2는 하위 질문형 · 단락 3문장 이내", "왜 6개월을 기다려야 하나요?", "C3 · C8"],
["가격 · 시간 · 회복", "표", "숫자 범위 필수", "300~500만원 · 2시간 · 회복 2주", "C4 · C5"],
["관련 시술 · 의료진", "링크 + Physician", "각 1개 이상", "코 재수술 · 김OO 원장", "C7"],
["갱신일", "dateModified", "자동", "2026-08-28", "C6"],
], [1.6, 1.6, 3.0, 4.3, 1.96], row_h=0.52)
takeaway(s, "요약 답변 60자는 AI 답변엔진이 한 단락으로 인용하는 길이다. 이 필드가 비면 발행이 막힌다(FR-B06).", y=6.0)
# ───────────────────────────── 17 수용 테스트
s = new("Acceptance Tests", "수용 기준은 전부 스크립트로 검증한다",
"진단은 뷰성형외과 · INFINITH 랜딩을 회귀 기준으로 삼는다. 빌드는 크롤러 UA 테스트를 CI로 옮긴다.")
table(s, ["ID", "단계", "테스트", "통과 기준"], [
["AT-01", "진단", "viewclinic.com 자동 진단 실행", "수동 채점 대비 자동 항목 일치율 90% · 소요 10분 이내"],
["AT-02", "진단", "infinith-demo.vercel.app 진단", "A3 level 3 · B1 level 3 · 재실행 편차 3점 이내"],
["AT-03", "진단", "미검증 처리", "수동 슬롯 비운 채 실행 시 해당 항목 분모 제외 · 점수 계산 일치"],
["AT-04", "빌드 A", "스키마 패키지 적용 후 Rich Results Test", "오류 0 · 블록 1개"],
["AT-05", "빌드 B", "curl -A GPTBot 5종 UA 본문 단어 수", "300단어 이상 · 5개 UA 동일 · 429 · 403 0건"],
["AT-06", "빌드 B", "발행 검사", "요약 답변 비운 채 발행 시 차단 + 안내"],
["AT-07", "측정", "로그 파서 위장 UA 테스트", "역DNS 실패 히트 제외 · 일 집계 정확"],
["AT-08", "루프", "빌드 후 재진단", "변경 항목 level 상승이 diff에 표시 · 점수 상승"],
], [1.0, 1.0, 4.5, 5.96], row_h=0.46)
takeaway(s, "AT-02 · 05는 2026.08.28 INFINITH 랜딩 점검 스크립트를 그대로 쓴다.", y=6.3)
# ───────────────────────────── 18 마일스톤
s = new("Milestones", "10주 · 5단계 · 뷰성형외과 파일럿 포함",
"2주 단위. 각 단계 끝에 수용 테스트를 통과해야 다음 단계로 간다.")
step_rows(s, [
("W9-10", "파일럿 · 릴리스", "뷰성형외과 빌드 A 적용 · 재진단 · 표준 사이트 1곳", "AT-08 · 48 → 65+ · v1.0"),
("W7-8", "빌드 B", "표준 스택 · 템플릿 3종 · 검사 · 플러그인", "FR-B02 · B06 · B10~B13 · AT-05 · 06"),
("W5-6", "빌드 A", "스키마 · NAP · FAQ · CMS 패키지 생성", "FR-B01 · B03 · B04 · B07 · B08 · AT-04"),
("W3-4", "측정 · 진단 2단계", "로그 파서 · GA4 · LLM 판정 · 재진단 diff", "FR-M01 · M02 · D02 · D07 · AT-07"),
("W1-2", "진단 1단계", "discover-aeo-geo · UA 테스트 · 파서 · DB · 리포트 연결", "FR-D01 · D04 · D05 · AT-01~03"),
], h=0.72, gap=0.16)
takeaway(s, "측정(W3-4)을 빌드보다 앞에 둔 이유: 전후 비교의 기준선이 빌드 전에 있어야 한다.", y=6.45)
# ───────────────────────────── 19 리스크
s = new("Risks & Mitigations", "가장 큰 리스크는 진단 신뢰도와 병원 측 실행이다",
"진단이 틀리면 빌드가 틀리고, 병원이 안 고치면 측정할 것이 없다.")
table(s, ["리스크", "영향", "가능성", "대응"], [
["LLM 판정 항목(2단계)의 채점 불일치", "높음", "중간", "temperature 0 · 근거 인용 강제 · 수동 채점과 90% 일치 회귀 테스트"],
["대상 사이트가 진단 요청을 차단", "중간", "중간", "요청 30회 · 1초 간격 · 429 시 중단 후 unverified 처리"],
["병원이 빌드 A 패키지를 적용하지 않음", "높음", "높음", "적용 대행 옵션 · 재진단 알림 · P0만 먼저"],
["담당자가 질문 페이지를 추가하지 않음", "높음", "높음", "분석 리포트의 질문 목록을 초안으로 제공 · 주간 발행 목표"],
["AI 크롤러 UA · 정책 변경", "중간", "높음", "봇 목록 중앙 관리 · 분기 점검 · 루브릭 버전 관리"],
["스키마 플러그인 업데이트로 출력 변경", "중간", "중간", "AT-04 매 배포 실행 · 버전 고정"],
], [3.8, 0.9, 0.9, 6.86], row_h=0.55)
# ───────────────────────────── 20 오픈 이슈
s = new("Open Questions", "개발 착수 전 결정이 필요한 다섯 가지",
"리뷰 미팅에서 결정한다. 기본안을 함께 적었다.")
table(s, ["#", "질문", "선택지", "기본안 · 근거"], [
["1", "2단계 LLM 판정 모델", "Perplexity · Claude · 둘 다", "Claude. 판정 일관성 · 근거 인용. Perplexity는 D3 그라운딩에만"],
["2", "로그 수집 방식", "호스팅 로그 API · Cloudflare Logpush · WP 플러그인", "Cloudflare Logpush → Supabase. 호스팅 무관"],
["3", "빌드 A 적용 주체", "병원 개발사 · INFINITH 대행 · 둘 다", "둘 다. 패키지는 개발사용, 대행은 유료 옵션"],
["4", "빌드 B 호스팅 · 스키마 플러그인", "Kinsta · WP Engine · Cafe24 / Rank Math · Yoast", "Kinsta + Rank Math. Cloudflare 통합 · 의료 타입 · 훅"],
["5", "헤드리스 전환 시점", "병원 5곳 · 10곳 · 미정", "병원 5곳 시 v2.0 검토. 콘텐츠는 WP DB에 남아 이전 비용 낮음"],
], [0.5, 2.6, 4.0, 5.36], row_h=0.62)
takeaway(s, "결정되지 않은 항목은 기본안으로 W1을 시작하고, 리뷰에서 뒤집히면 W2에 반영한다.", y=6.1)
# ───────────────────────────── 21 부록
s = new("Appendix · Evidence", "실측 두 건 (2026.08.28)",
"이 PRD의 수용 기준은 아래 두 실측에서 나왔다.")
table(s, ["대상", "항목", "결과", "방법"], [
["뷰성형외과", "종합 · 등급", "48점 · C (검증 31 / 36항목)", "crawler_audit.py + curl + HTML 파서 · 수동 채점"],
["뷰성형외과", "카테고리", "A 92 · B 30 · C 20 · D 72 · E 0 · F 33", "루브릭 v1.0 · unverified 분모 제외"],
["뷰성형외과", "P0", "JSON-LD 수정 + MedicalClinic · GBP 전화 + NAP 통일 · 측정 인프라", "액션 플랜"],
["INFINITH 랜딩", "크롤러 5종 본문 단어", "4 → 810", "vite build --ssr + renderToString 프리렌더"],
["INFINITH 랜딩", "JSON-LD · lang · 메타", "0 → 3 · en → ko · description · OG 추가", "index.html 정적 삽입"],
["INFINITH 랜딩", "robots · sitemap · llms.txt", "HTML 반환 → text/plain · xml 정상", "public/ 정적 파일"],
], [1.6, 2.2, 4.6, 4.06], row_h=0.5)
band(s, 5.95, 1.0, "재현", "curl -A GPTBot infinith-demo.vercel.app | sed 's/<[^>]*>//g' | wc -w · /discovery/viewclinic")
out = "docs/prd/INFINITH_AI-Discovery_PRD_20260828_v02.pptx"
prs.save(out); print("saved", out, "slides", len(prs.slides))

39
docs/reports/README.md Normal file
View File

@ -0,0 +1,39 @@
# docs/reports 폴더 안내
2026-09-07 분류. 산출물은 고객(병원)별 폴더 아래 산출 단계 순서로 둔다. 빌드 스크립트는 산출물과 같은 폴더에 둔다.
```
docs/reports/
├── viewclinic/ 뷰성형외과
│ ├── 01_readiness_report/ AI Answer Readiness 진단 덱 (v1.0 정본 · v2_표준캔버스 · v1.1 정정판) + 빌더
│ ├── 02_poc_proposal/ POC 제안서 덱 (정본 · v3 · v3_표준캔버스) + 빌더
│ ├── 03_question_bank/ 질문 뱅크 120문항 · ChatGPT/Perplexity 실측 결과 · TOP50 엑셀
│ └── 04_supporters/ 서포터즈 GEO 개선 계획 · 2단계 콘텐츠 기획 · 서포터즈 vs 공식 AEO 감사 엑셀
├── taeha/ 태하 AI Answer Readiness 리포트 (html · pdf · pptx) + 빌더
├── ibk/ 기업은행 블로그 AEO/GEO 감사
└── landing/ AI Discovery 랜딩 시안 (픽셀 정답 HTML) · 스크린샷 · 리포트 페이지 HTML 내보내기 스크립트
```
## 정본과 파생본
- `Viewclinic_AI_Answer_Readiness_Report.pptx`: v1.0 정본. haewon이 폰트를 직접 손본 파일이라 재생성하지 않는다.
- `Viewclinic_AI_Answer_Readiness_Report_v1.1.pptx`: 2026-09-07 재검증 정정판. 블로그·FAQ·수치 판정 3건 정정, 병원 요청 슬라이드 추가. 빌더 `build_viewclinic_deck_v1_1.py`.
- `Viewclinic_POC_Proposal.pptx`: POC 제안서 정본(haewon 수정본). v3 계열은 폰트 기준 적용 파생본.
- `*_표준캔버스.pptx`: 20in 캔버스를 2/3로 균등 축소한 13.33in 편집용. `scripts/rescale_deck.py`로 만든다.
## 빌드
```bash
# 진단 덱 v1.1
python3 docs/reports/viewclinic/01_readiness_report/build_viewclinic_deck_v1_1.py docs/reports/viewclinic/01_readiness_report/Viewclinic_AI_Answer_Readiness_Report_v1.1.pptx
# 표준캔버스 축소본
python3 scripts/rescale_deck.py <in.pptx> <out_표준캔버스.pptx>
# PDF
soffice --headless --convert-to pdf <file.pptx>
# 질문 뱅크 실측 → 통합 → 엑셀 (출력 경로는 스크립트 안에 03_question_bank로 고정)
python3 scripts/run_question_bank_openai.py && python3 scripts/merge_qb_results.py && python3 scripts/export_qb_excel.py
```
## 다른 문서에서의 참조
`docs/AI_DISCOVERY_FRONTEND_HANDOVER.md`, `docs/AI_DISCOVERY_BUILD2_HANDOVER.md`, `docs/AEO_GEO_RUBRIC.md`, `docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD.md`와 `src/pages/DiscoveryLandingPage.tsx` 주석이 이 폴더를 가리킨다. 파일을 옮기면 그 참조도 같이 고친다.

View File

@ -0,0 +1,89 @@
# IBK기업은행 블로그(blog.ibk.co.kr) AEO/GEO 감사
**실측일:** 2026-09-04 · **도구:** `scripts/audit_aeo_geo.py`(자동 22항목) + 수동 판정 5항목 + Perplexity sonar 실측 3문항
**대상 URL:** 메인 https://blog.ibk.co.kr/ + 최신 글 https://blog.ibk.co.kr/569694 (2026-09-02 발행, "IBK나라사랑카드 PX 환급")
**목적:** 뷰성형외과 서포터즈 사이트의 레퍼런스 모델로 삼기 전, 이 모델이 AI 답변엔진에 실제로 인용되는 구조인지 확인
---
## 1. 결론
**54점 / C (38.7 / 71, 검증 26/36).** 뷰성형외과(50점/C)와 총점은 비슷하지만 내용이 정반대입니다.
| | IBK 블로그 | 뷰성형외과 |
|---|---|---|
| 총점 | 54 / C | 50 / C |
| A 접근성 | 84% | 98% |
| B 엔티티 | **20%** | 25% |
| C 콘텐츠 | **64%** | 28% |
| D 표면 | 53% (검증 2/6) | 68% |
| E 측정 | 미검증 | 0% |
| F 위생 | 42% | 33% |
IBK 블로그는 **글 한 편의 구조(C)가 강하고, "누가 쓴 사이트인가"를 알리는 엔티티(B)가 약합니다.** 뷰성형외과는 반대로 접근성은 좋은데 인용할 문장이 없었습니다. 서포터즈 사이트는 IBK의 글 구조를 가져오되, IBK가 놓친 엔티티 연결을 처음부터 넣으면 됩니다.
**Perplexity 실측 3문항 중 3문항에서 blog.ibk.co.kr이 인용되었습니다.** 특히 "나라사랑카드 PX 환급 언제 입금돼?"라는 질문에 발행 2일 된 글이 1순위 출처로 나왔습니다. 이 모델은 실제로 작동합니다.
주의: 3문항 × 1회는 정식 기준선(10문항 × 5회)이 아닙니다. 방향 확인용 증거이며 언급률로 보고하지 않습니다.
---
## 2. 왜 인용되는가 (글 구조 실측)
최신 글 569694의 구조입니다. 서포터즈 페이지 템플릿이 그대로 가져갈 부분입니다.
| 요소 | 실측 | 판정 |
|---|---|---|
| 첫 단락 | "💡세 줄 요약" 블록. 질문의 답(신청 불필요·입금 시점·월 한도 11만 원)을 3문장으로 먼저 제시 | 직접 답변 블록의 교과서 형태 |
| H1 | 1개, 서술형 제목("IBK나라사랑카드 PX 환급, 신청 조건부터 입금 시점·할인 한도까지") | 양호. 단 빈 H1이 하나 더 있음(테마 결함) |
| H3 | "1. 나라사랑카드 PX 환급, 별도 신청이 필요한가요?" 등 질문형 3개 + "FAQ. 자주 하는 질문" | 질문형 소제목 |
| 표 | HTML table 2개 | 이미지가 아닌 표 |
| 수치 | 월 최대 11만 원, 20만 원 이상 50%, 3만 원 미만 15% 등 조건이 붙은 수치 | C4 만점 |
| FAQ | 텍스트 FAQ 섹션 존재. FAQPage 스키마는 없음 | 절반 |
| 갱신 | datePublished·dateModified·article:modified_time 모두 존재. sitemap lastmod 2,244개 글 전부 표기 | 만점 |
| 본문 길이 | 텍스트 약 13,500자, HTML 71KB | 가볍고 길다 |
---
## 3. 무엇이 약한가
| 항목 | 실측 | 서포터즈 설계 반영 |
|---|---|---|
| B2 조직 스키마 | Organization·BankOrCreditUnion 없음. JSON-LD의 publisher가 **"TISTORY"** | 티스토리 기본 스키마의 한계. 자체 빌드에서는 publisher와 about을 병원 엔티티로 |
| B5 sameAs | 빈 배열. 푸터에 페이스북·인스타·유튜브 링크가 있어도 스키마에 미연결 | sameAs에 홈페이지·유튜브·강남언니·GBP 연결 |
| 저자 | author가 "IBK.Bank.Official"이라는 Person. 실명·자격 없음 | 실명 서포터즈 Person + reviewedBy 원장 |
| B3·B4 | 전문가 스키마 없음. 주소·전화가 텍스트에 없음 | 팩트 시트에서 병원 정보 블록 자동 삽입 |
| C3 메인 H1 | 메인 페이지 H1 0개 | 메인에도 서술형 H1 1개 |
| A5 sitemap | /sitemap.xml은 있으나 robots.txt에 Sitemap 미선언 | robots에 선언 |
| A4 리다이렉트 | http → https 일부 302 | 301 |
| F1 alt | 메인 이미지 23개 중 19개(83%) alt 없음. 글 이미지 28개 중 20개 alt 없음 | 캡처 이미지 alt 필수 게이트 |
| C2 FAQPage | 텍스트 FAQ는 있으나 스키마 없음 | FAQPage 스키마 |
| 플랫폼 통제 | robots.txt는 카카오 공통, 서버 로그 접근 불가 | 자체 빌드로 해결 |
---
## 4. 중복 처리 방식 (참고 사례)
티스토리 기본 주소 **smartibk.tistory.com** 이 blog.ibk.co.kr과 같은 글을 그대로 200으로 서빙합니다. 즉 같은 글이 두 주소에 존재합니다. 티스토리는 이를 `rel=canonical → https://blog.ibk.co.kr/569694` 로 처리해 검색엔진이 한 주소만 원본으로 인식하게 합니다. 실측 결과 Perplexity 인용도 전부 blog.ibk.co.kr이었습니다.
시사점: 중복이 생겨도 canonical이 일관되면 원본이 살아남습니다. 서포터즈 허브와 네이버 재작성본 사이에도 같은 원리를 적용합니다(허브 선발행 + 허브 링크).
---
## 5. Perplexity 실측 상세
| 질문 | blog.ibk.co.kr 인용 | 인용 순위 | 비고 |
|---|---|---|---|
| 나라사랑카드 PX 할인 환급은 언제 어디로 입금돼? | ○ | 1위 (569694) | 발행 2일 된 글. 답변 첫 문장이 글의 세 줄 요약과 일치 |
| IBK기업은행 공식 블로그 있어? 무슨 내용 다뤄? | ○ | 1위 (메인) | 카테고리·태그 페이지까지 인용 |
| 기업은행 중소기업 대출 상품 종류 알려줘 | ○ | 하위 | 개인 티스토리·언론이 상위. 공식 블로그가 밀림 |
raw: 스크래치패드 `ibk_pplx/q1~3.json`, 자동 채점 `ibk_audit.json`
---
## 6. 판정 근거 메모
- 자동 판정 21항목은 스크립트 출력 그대로. 수동 판정 5항목(C1=2, C4=3, C7=1, C8=2, D3=2)은 글 569694 실측으로 haewon이 재확인 가능
- 기준표는 로컬 비즈니스용이라 D1(버티컬)·D2(GBP)·D5(플레이스)·B3(전문가)는 기업 블로그에 잘 맞지 않음. 미검증 처리해 분모에서 제외했고, B3은 스키마 부재 사실 그대로 0점
- E(측정) 4항목은 오너 접근 필요. 3문항 스팟체크는 E4 정식 기준선이 아니므로 미검증 유지

View File

@ -2,7 +2,7 @@
/discovery/:id 리포트 페이지를 단일 HTML 파일로 내보낸다.
npm run build && npx vite preview --port 3012
python3 docs/reports/export_html.py taeha docs/reports/Taeha_AI_Answer_Readiness_Report.html
python3 docs/reports/landing/export_html.py taeha docs/reports/taeha/Taeha_AI_Answer_Readiness_Report.html
- 헤드리스 Chrome으로 렌더된 DOM을 덤프하고 빌드 CSS를 인라인한다
- Navbar·Footer·스크립트 제거, motion 애니메이션 고정

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

View File

@ -1,7 +1,7 @@
"""
법무법인 태하 AI Answer Readiness Report 덱 빌드 (INFINITH Deck 규격)
python3 docs/reports/build_taeha_deck.py docs/reports/Taeha_AI_Answer_Readiness_Report.pptx
python3 docs/reports/taeha/build_taeha_deck.py docs/reports/taeha/Taeha_AI_Answer_Readiness_Report.pptx
"""
import sys
sys.path.insert(0, "/Users/haewonkam/.claude/skills/infinith-deck/scripts")

View File

@ -1,7 +1,7 @@
"""
Viewclinic AI Answer Readiness Report 덱 빌드 (INFINITH Deck 규격)
python3 docs/reports/build_viewclinic_deck.py docs/reports/Viewclinic_AI_Answer_Readiness_Report.pptx
python3 docs/reports/viewclinic/01_readiness_report/build_viewclinic_deck.py docs/reports/viewclinic/01_readiness_report/Viewclinic_AI_Answer_Readiness_Report.pptx
"""
import sys
sys.path.insert(0, "/Users/haewonkam/.claude/skills/infinith-deck/scripts")
@ -14,21 +14,21 @@ d = Deck()
d.cover(
eyebrow="AI DISCOVERY · AEO / GEO AUDIT v1.0",
title_lines=["AI Answer", "Readiness Report."],
subtitle="뷰성형외과 · viewclinic.com · 36개 항목 실측 · 2026. 08. 28",
subtitle="뷰성형외과 · viewclinic.com · 36개 항목 실측 2026. 08. 28 · 재채점·실측 검증 09. 01",
meta_right="AI Discovery Report · 2026",
)
# 02 Executive summary
s = d.slide(eyebrow="Executive Summary",
title="읽을 수는 있지만, ", title_accent="인용할 근거가 없다",
lede=["36개 항목 중 31개를 실측했고, 오너 계정이 필요한 5개는 점수 분모에서 제외했습니다.",
"접근성(A) 92%와 표면(D) 72%는 양호. 엔티티(B) 30%와 콘텐츠(C) 20%가 총점을 끌어내립니다."],
lede=["36개 항목 중 32개를 실측했고, 오너 계정이 필요한 4개는 점수 분모에서 제외했습니다.",
"접근성(A) 98%와 표면(D) 68%는 양호. 엔티티(B) 25%와 콘텐츠(C) 28%가 총점을 끌어내립니다."],
section="Summary")
k1, k2, k3, k4 = s.cards4(y=s.band_y, h=3.4)
k1.kpi("48 / 100", "AI ANSWER READINESS", "등급 C · 42.1 / 88점")
k2.kpi("92%", "A · 크롤러 접근성", "AI 검색봇 12종 전부 허용")
k3.kpi("20%", "C · 인용 가능 콘텐츠", "정의문 0 · FAQ 0 · HTML 표 0")
k4.kpi("5 / 36", "미검증 항목", "GA4 · 서버로그 · GSC · Bing")
k1.kpi("50 / 100", "AI ANSWER READINESS", "등급 C · 44.1 / 89점")
k2.kpi("98%", "A · 크롤러 접근성", "AI 검색봇 12종 전부 허용")
k3.kpi("28%", "C · 인용 가능 콘텐츠", "정의문 0 · FAQ 0 · HTML 표 0")
k4.kpi("4 / 36", "미검증 항목", "GA4 · 서버로그 · GSC · Bing")
# 03 What AI sees (dark)
s = d.slide(eyebrow="What AI Sees · 진단의 결론",
@ -55,10 +55,10 @@ W.grid(
headers=["카테고리", "배점", "획득", "검증", "판정"],
col_w=[4.6, 1.3, 2.0, 1.4, 1.6],
rows=[
["A · AI 크롤러 접근성", "20", "15.7 / 17", "6 / 7", "우수"],
["B · 엔티티 식별·구조화", "20", "6.0 / 20", "7 / 7", "미흡"],
["C · 답변 인용 가능 콘텐츠", "25", "5.0 / 25", "8 / 8", "치명"],
["D · AI 인용 표면 확보", "20", "13.7 / 19", "5 / 6", "양호"],
["A · AI 크롤러 접근성", "20", "16.7 / 17", "6 / 7", "우수"],
["B · 엔티티 식별·구조화", "20", "5.0 / 20", "7 / 7", "미흡"],
["C · 답변 인용 가능 콘텐츠", "25", "7.0 / 25", "8 / 8", "치명"],
["D · AI 인용 표면 확보", "20", "13.7 / 20", "6 / 6", "양호"],
["E · AI 가시성 측정 인프라", "10", "0 / 2", "1 / 4", "미설치"],
["F · 기술 위생", "5", "1.7 / 5", "4 / 4", "미흡"],
],
@ -69,12 +69,12 @@ W.grid(
)
Rail.title("읽는 법").bullets([
"획득 분모는 검증 항목의 배점 합. E는 미검증 3개라 분모가 2점뿐.",
"총점 42.1 / 88 = 48점, 등급 C.",
"미검증 5개는 GA4·서버로그·GSC·Bing 계정 접근으로 1일 안에 채운다.",
"총점 44.1 / 89 = 50점, 등급 C. 2026-08-31 자동 채점기 재채점 반영.",
"미검증 4개는 GA4·서버로그·GSC·Bing 계정 접근으로 1일 안에 채운다.",
])
# 05 A 접근성
s = d.slide(eyebrow="A · Access & Crawlability · 92%",
s = d.slide(eyebrow="A · Access & Crawlability · 98%",
title="크롤러 접근은 ", title_accent="열려 있다", section="A · Access")
L, R = s.cards2(y=s.band_y)
L.chip("우수 · 3/3", "info").rows([
@ -82,14 +82,14 @@ L.chip("우수 · 3/3", "info").rows([
("A2 CDN 차단 없음", "nginx 직접 응답. Cloudflare 헤더와 AI UA 챌린지 없음."),
("A4 HTTPS 정합", "http://viewclinic.com → 301 → https://www.viewclinic.com/ 정본 수렴."),
])
R.chip("보완 · 2/3", "warning").rows([
("A5 sitemap.xml", "선언·200 응답, 페이지 249개. 단 post lastmod 최신이 2024-05-31."),
R.chip("보완·미검증", "warning").rows([
("A5 sitemap 재채점 우수", "page·portfolio sitemap lastmod 2026-08-31로 최신. 블로그 post만 2024-05-31 정지."),
("A7 응답 속도·무게", "TTFB 0.135s는 양호. 초기 HTML 838KB로 기준 300KB의 2.8배."),
("A6 Bing 색인 (미검증)", "ChatGPT 검색은 Bing 인덱스에 의존. Webmaster 등록 여부는 계정 확인 필요."),
])
# 06 B 엔티티 (dark)
s = d.slide(eyebrow="B · Entity & Structured Data · 30%",
s = d.slide(eyebrow="B · Entity & Structured Data · 25%",
title="AI가 이 병원을 ", title_accent="하나의 엔티티로 못 묶는다", dark=True, section="B · Entity")
L, R = s.cards2(y=s.band_y)
L.chip("치명", "critical").rows([
@ -99,12 +99,12 @@ L.chip("치명", "critical").rows([
])
R.chip("미흡", "warning").rows([
("B5 sameAs 비어 있음", "푸터에 YouTube·Instagram·Facebook 링크가 있으나 스키마에 연결되지 않음."),
("B4 NAP 표기 2종", "\"서울 강남구 봉은사로 107\" / \"서울특별시 강남구 봉은사로 107,\" 혼재."),
("B4 NAP 표기 3종 혼재", "주소 표기가 메인 2종에 시술 페이지 1종까지 3종. 전화도 2회선과 휴대폰 혼재."),
("B7 영문 사이트 미연결", "viewplasticsurgery.com이 별도로 있으나 hreflang 없음. 두 도메인이 서로 모름."),
])
# 07 C 콘텐츠
s = d.slide(eyebrow="C · Answer-Ready Content · 20%",
s = d.slide(eyebrow="C · Answer-Ready Content · 28%",
title="답변엔진이 잘라 갈 ", title_accent="단락이 없다", section="C · Content")
L, R = s.cards2(y=s.band_y)
L.chip("0점 항목", "critical").rows([
@ -115,14 +115,14 @@ L.chip("0점 항목", "critical").rows([
R.chip("부분 점수", "warning").rows([
("C7 의료진 권위 신호 있음", "모티바 KOL·복지부 표창·갈더마 방문 등 17회 언급. 단 구조화되지 않음."),
("C4 수치 표기 미흡", "\"보형물 사용량 1위\" 같은 주장형. 가격대·수술시간·회복기간 표 없음."),
("C6 신선도 신호 약함", "dateModified 없음. 유튜브 활동이 사이트 갱신으로 전달되지 않음."),
("C6 신선도는 살아 있음", "시술 페이지 dateModified 2026-04-17, sitemap 2026-08-31. 블로그만 2024-05 정지."),
])
# 08 D 표면 / E 측정 (dark)
s = d.slide(eyebrow="D · Surfaces / E · Measurement",
title="강남언니는 강하고, ", title_accent="GBP는 전화번호가 없다", dark=True, section="D · Surfaces")
L, R = s.cards2(y=s.band_y)
L.chip("D · 표면 72%", "good").rows([
L.chip("D · 표면 68%", "good").rows([
("D1 강남언니 우수", "후기 19,316건, 의료진 26명, 이벤트 52건. 병의원 AI 인용의 핵심 표면 확보."),
("D2 GBP 4.9점 (901)", "소유자 게시물 활성. 단 전화번호 미등록, 웹사이트가 viewplasticsurgery.com."),
("D4 NAP 표기 3종", "홈페이지·강남언니·GBP 주소 표기가 전부 다름. 한 병원으로 묶을 근거 약함."),
@ -161,9 +161,26 @@ s = d.slide(eyebrow="Roadmap · 8 Weeks",
s.stats3([
("W1–2", "스키마·NAP·측정 인프라 설치.\n기준선 스팟체크 1회."),
("W3–6", "정의문·FAQ·H1 재설계·HTML 표.\nWordPress 업그레이드."),
("W7–8", "재진단. 미검증 5개 반영해\n총점 재산정."),
("W7–8", "재진단. 미검증 4개 반영해\n총점 재산정."),
], y=s.band_y + 0.6)
# 10b Validation · Question Bank 실측 (2026-09-01)
s = d.slide(eyebrow="Validation · 120-Question Live Test",
title="진단을 120문항 실측으로 ", title_accent="검증했다",
lede="잠재 환자 질문 120개를 OpenAI·Perplexity 정식 API로 질의해 진단의 예측력을 채점했습니다 (2026-09-01).",
section="Validation")
L, R = s.cards2(y=s.band_y)
L.chip("예측 적중", "good").rows([
("논브랜드 질문에서 부재", "추천·시술 정보 84문항 중 Perplexity 3문항, ChatGPT 10문항만 언급. 시술 정보 52문항은 두 엔진 모두 0건."),
("원인은 콘텐츠(C) 28%", "FAQ 0개, HTML 표 0개, 정의문 0개가 논브랜드 전멸로 그대로 이어짐."),
("표면(D)이 브랜드 방어", "병원명을 아는 질문 36문항은 97~100% 답변. 근거는 강남언니·GBP·뉴스."),
])
R.chip("진단 밖 발견 · v1.1 반영", "info").rows([
("제3자 표면이 더 넓다", "뉴스 기사·채용공고·바비톡·네이버 예약이 개원연도·주차·휴진을 정확히 답함. D3 실측 범위 확대."),
("멈춘 블로그가 인용됨", "ChatGPT 추천 답변의 근거가 blog.viewclinic.com. 텍스트 자산은 인용된다는 직접 증거."),
("엔진별 오답 편차", "주차 질문에 Perplexity는 35대 무료로 정답, ChatGPT는 시설 없음으로 추측. 구조화 부재의 비용."),
])
# 11 What we don't sell
s = d.slide(eyebrow="What We Don't Sell · 정직성 규약",
title="근거 없는 것은 ", title_accent="팔지 않는다", section="Integrity")
@ -205,9 +222,9 @@ c.icon_square().title("항목마다 붙는 태그").bullets([
# 13 Closing
d.closing(eyebrow="Next Step",
title_lines=["표면은 확보됐습니다.", "홈페이지가 따라가면 됩니다."],
lede="P0 세 가지: 스키마, NAP 통일, 측정 인프라. 미검증 5개는 계정 접근 후 1일 안에 채웁니다.",
lede="P0 세 가지: 스키마, NAP 통일, 측정 인프라. 미검증 4개는 계정 접근 후 1일 안에 채웁니다.",
cta_primary="P0 착수하기 →", cta_secondary="리포트 페이지 보기",
contact="infinith.kr · hello@infinith.kr")
contact="o2oteam@o2o.kr")
d.save(OUT)
print("saved", OUT)

View File

@ -0,0 +1,283 @@
"""
Viewclinic AI Answer Readiness Report v1.1 덱 빌드 (INFINITH Deck 규격)
v1.0(2026-09-01)을 2026-09-07 재검증으로 정정한 판. 원본 v1.0 파일은 haewon이 폰트를 직접 손본 정본이라
덮어쓰지 않고 v1.1 파일로 새로 저장한다.
정정 3건: 블로그 정지(오판) · FAQ 0개(프리저베 페이지 FAQ 7문항) · 수술시간·회복 표기 없음(프리저베·코·윤곽 페이지에 있음)
점수: 50 → 54 (C 유지). C 카테고리 28% → 44%.
추가 2장: 재검증 정정 내역 · 뷰성형외과에 드리는 요청(서포터즈 강화).
폰트: haewon 확정 기준(본문 20 / 리드 24 / 카드 제목 28). ifd 분량 검사(폰트 축소 금지) 안에서 카피를 줄였다.
python3 docs/reports/viewclinic/01_readiness_report/build_viewclinic_deck_v1_1.py docs/reports/viewclinic/01_readiness_report/Viewclinic_AI_Answer_Readiness_Report_v1.1.pptx
"""
import sys
sys.path.insert(0, "/Users/haewonkam/.claude/skills/infinith-deck/scripts")
from ifd import Deck
OUT = sys.argv[1] if len(sys.argv) > 1 else "Viewclinic_AI_Answer_Readiness_Report_v1.1.pptx"
BODY, HEAD = 20.0, 28.0
d = Deck()
# 01 Cover
d.cover(
eyebrow="AI DISCOVERY · AEO / GEO AUDIT v1.1",
title_lines=["AI Answer", "Readiness Report."],
subtitle="뷰성형외과 · viewclinic.com · 실측 2026. 08. 28 · 재채점 09. 01 · 재검증 정정 09. 07",
meta_right="AI Discovery Report · 2026",
)
# 02 Executive summary
s = d.slide(eyebrow="Executive Summary",
title="읽을 수는 있지만, ", title_accent="인용할 근거가 부족합니다",
lede=["36개 항목 중 32개를 실측했고, 오너 계정이 필요한 4개는 분모에서 제외했습니다.",
"접근성(A) 98%와 표면(D) 68%는 양호. 엔티티(B) 25%와 콘텐츠(C) 44%가 총점을 끌어내립니다."],
section="Summary")
k1, k2, k3, k4 = s.cards4(y=s.band_y, h=3.4)
k1.kpi("54 / 100", "AI ANSWER READINESS", "등급 C · 48.0 / 89점 · v1.0 50점 정정")
k2.kpi("98%", "A · 크롤러 접근성", "AI 검색봇 12종 전부 허용")
k3.kpi("44%", "C · 인용 가능 콘텐츠", "정의문 0 · FAQ 1페이지 · 표 0")
k4.kpi("4 / 36", "미검증 항목", "GA4 · 서버로그 · GSC · Bing")
# 03 What AI sees (dark)
s = d.slide(eyebrow="What AI Sees · 진단의 결론",
title="문제는 차단이 아니라 ", title_accent="내용에 있습니다", dark=True, section="Findings")
L, R = s.cards2(y=s.band_y)
L.chip("정상", "good").rows([
("크롤러 접근 정상", "robots.txt가 AI 검색봇 12종을 허용. Cloudflare 차단 없음."),
("서버 렌더링 본문", "WordPress가 본문을 서버에서 렌더. JS 없이 10,757자 추출."),
("표면이 넓습니다", "강남언니 후기 19,373건. 유튜브 1,215편. 블로그는 발행 중이고 AI 봇 허용."),
], t_size=HEAD, b_size=BODY)
R.chip("치명", "critical").rows([
("누구인지 확정 불가", "MedicalClinic 스키마 없음, sameAs 비어 있음. 시술 목록 JSON-LD 무효."),
("인용할 문장 부족", "H1 5개가 영문 라벨. HTML 표 0, 병원 정의문 0. FAQ는 프리저베뿐."),
("표면 간 NAP 불일치", "GBP 전화번호 없음. 웹사이트가 영문 도메인. 주소 표기 3종."),
], t_size=HEAD, b_size=BODY)
# 04 Scorecard
s = d.slide(eyebrow="Scorecard · 6 Categories",
title="카테고리별 점수와 ", title_accent="검증 범위",
lede="검증된 항목만으로 정규화했습니다. 09-07 재검증으로 C2·C4를 정정해 C가 28%에서 44%가 됐습니다.",
section="Scorecard")
W, Rail = s.cards2(y=s.band_y, split=0.66)
W.grid(
headers=["카테고리", "배점", "획득", "검증", "판정"],
col_w=[4.6, 1.3, 2.0, 1.4, 1.6],
rows=[
["A · AI 크롤러 접근성", "20", "16.7 / 17", "6 / 7", "우수"],
["B · 엔티티 식별·구조화", "20", "5.0 / 20", "7 / 7", "미흡"],
["C · 답변 인용 가능 콘텐츠", "25", "11.0 / 25", "8 / 8", "미흡"],
["D · AI 인용 표면 확보", "20", "13.7 / 20", "6 / 6", "양호"],
["E · AI 가시성 측정 인프라", "10", "0 / 2", "1 / 4", "미설치"],
["F · 기술 위생", "5", "1.7 / 5", "4 / 4", "미흡"],
],
tones=[[None, None, None, None, "info"], [None, None, None, None, "warning"],
[None, None, None, None, "warning"], [None, None, None, None, "good"],
[None, None, None, None, "critical"], [None, None, None, None, "warning"]],
row_h=0.62, size=BODY,
)
Rail.title("읽는 법", size=HEAD).bullets([
"분모는 검증 항목의 배점 합. E는 분모가 2점뿐.",
"48.0 / 89 = 54점, 등급 C. v1.0 50점은 오판 포함.",
"미검증 4개는 계정 접근 후 1일 안에 채웁니다.",
], size=BODY)
# 05 A 접근성
s = d.slide(eyebrow="A · Access & Crawlability · 98%",
title="크롤러 접근은 ", title_accent="열려 있습니다", section="A · Access")
L, R = s.cards2(y=s.band_y)
L.chip("우수 · 3/3", "info").rows([
("A1 검색용 AI 봇 허용", "Disallow는 /wp-admin/ 뿐. 12종 UA로 GET, 전부 200."),
("A2 CDN 차단 없음", "nginx 직접 응답. Cloudflare 헤더와 AI UA 챌린지 없음."),
("A4 HTTPS 정합", "http → 301 → https://www.viewclinic.com/ 정본 수렴."),
], t_size=HEAD, b_size=BODY)
R.chip("보완·미검증", "warning").rows([
("A5 sitemap 우수", "page·portfolio lastmod 2026-08-31. 블로그는 별도 서브도메인(정정)."),
("A7 응답 속도·무게", "TTFB 0.135s 양호. 초기 HTML 838KB, 기준 300KB의 2.8배."),
("A6 Bing 색인 (미검증)", "ChatGPT 검색은 Bing 인덱스 의존. 계정 확인 필요."),
], t_size=HEAD, b_size=BODY)
# 06 B 엔티티 (dark)
s = d.slide(eyebrow="B · Entity & Structured Data · 25%",
title="AI가 병원을 아직 ", title_accent="하나로 묶지 못합니다", dark=True, section="B · Entity")
L, R = s.cards2(y=s.band_y)
L.chip("치명", "critical").rows([
("B1 JSON-LD 문법 무효", "ItemList 블록 쉼표 누락. 09-07에도 그대로. 파서가 통째로 버림."),
("B2 MedicalClinic 없음", "Organization·WebSite·WebPage만. 주소·전화·진료시간 미구조화."),
("B3 Physician 없음", "의료진은 텍스트와 이미지뿐. 누가 수술하는지 기계가 못 읽음."),
], t_size=HEAD, b_size=BODY)
R.chip("미흡", "warning").rows([
("B5 sameAs 비어 있음", "푸터에 유튜브·인스타·블로그 링크가 있으나 스키마 미연결."),
("B4 NAP 표기 3종 혼재", "주소 표기 3종. 전화도 2회선과 휴대폰 혼재."),
("B7 영문 사이트 미연결", "viewplasticsurgery.com이 별도. hreflang 없음."),
], t_size=HEAD, b_size=BODY)
# 07 C 콘텐츠
s = d.slide(eyebrow="C · Answer-Ready Content · 44%",
title="프리저베 페이지가 ", title_accent="인용 구조의 기준입니다", section="C · Content")
L, R = s.cards2(y=s.band_y)
L.chip("0점 항목", "critical").rows([
("C1 병원 정의문 없음", "메인은 슬라이더와 라벨. 가슴성형 페이지 첫 텍스트는 상담 폼."),
("C3 H1 5개, 전부 라벨", "가슴·코·오시는길은 H1 없음. 프리저베만 H1 1개 서술형."),
("C5 HTML 표 없음", "5개 페이지 모두 table 0개. 비교 정보는 이미지."),
], t_size=HEAD, b_size=BODY)
R.chip("정정·부분 점수", "warning").rows([
("C2 FAQ는 프리저베에만 (정정)", "FAQ 7문항과 유효한 FAQPage 스키마. 다른 시술 페이지는 없음."),
("C4 수치는 시술 상세에 (정정)", "프리저베 20~40분·회복 1~3일, 코 1~2시간·실밥 7일. 가격대 없음."),
("C6 신선도 정상", "시술 페이지 2026-04-17, sitemap 08-31, 블로그 09-07 게시."),
], t_size=HEAD, b_size=BODY)
# 08 D 표면 / E 측정 (dark)
s = d.slide(eyebrow="D · Surfaces / E · Measurement",
title="강남언니는 강하고, ", title_accent="GBP 보완이 필요합니다", dark=True, section="D · Surfaces")
L, R = s.cards2(y=s.band_y)
L.chip("D · 표면 68%", "good").rows([
("D1 강남언니 우수", "후기 19,373건, 의료진 26명, 이벤트 52건. 핵심 표면 확보."),
("D2 GBP 4.9점 (901)", "게시물 활성. 전화번호 미등록, 웹사이트 영문 도메인(08-28 실측)."),
("D3 오픈웹 표면", "유튜브 1,215편, 블로그 발행 중, 언론 1,137건. NAP 불일치로 3점 보류."),
], t_size=HEAD, b_size=BODY)
R.chip("E · 측정 0%", "critical").rows([
("E1 크롤러 로그", "nginx 직접 호스팅. AI 봇 히트 추출 파이프라인 없음."),
("E2 GA4 AI 유입 채널", "chatgpt.com·perplexity.ai 채널그룹 없음. 계정 접근 필요."),
("E4 기준선 반복 측정", "120문항 API 실측 1회(09-01). 반복 측정은 미실시."),
], t_size=HEAD, b_size=BODY)
# 09 Action plan
s = d.slide(eyebrow="Action Plan",
title="지금 고칠 것과 ", title_accent="4주 안에 만들 것", section="Action Plan")
a, b, c = s.cards3(y=s.band_y)
a.chip("P0 · 1일~1주", "critical").title("엔티티·표면·측정", size=HEAD).bullets([
"깨진 JSON-LD 수정, MedicalClinic 스키마.",
"GBP 전화번호 등록, 웹사이트 교정.",
"4개 표면 NAP 통일. hreflang 연결.",
"GA4 AI 채널, 서버로그, GSC·Bing.",
], size=BODY)
b.chip("P1 · 4주 내", "warning").title("콘텐츠 구조", size=HEAD).bullets([
"프리저베 구조를 가슴·코·눈·윤곽으로 확산.",
"핵심 페이지 첫 단락에 병원 정의문.",
"비교표를 HTML 표로. Physician 스키마.",
"WordPress 업그레이드, alt 111개 보완.",
], size=BODY)
c.chip("P2 · 지속", "good").title("연결·시딩", size=HEAD).bullets([
"블로그 글과 시술 페이지를 내부 링크로.",
"유튜브 영상을 블로그 글로 전사.",
"월 1회 갱신, 분기 1회 반복 측정.",
], size=BODY)
# 10 Roadmap (dark)
s = d.slide(eyebrow="Roadmap · 8 Weeks",
title="8주 안에 ", title_accent="C에서 B로", dark=True, section="Roadmap")
s.stats3([
("W1–2", "스키마·NAP·측정 인프라 설치.\n기준선 반복 측정 1회."),
("W3–6", "정의문·FAQ·H1 재설계·HTML 표.\nWordPress 업그레이드."),
("W7–8", "재진단. 미검증 4개 반영해\n총점 재산정."),
], y=s.band_y + 0.6)
# 11 Validation
s = d.slide(eyebrow="Validation · 120-Question Live Test",
title="진단을 120문항 실측으로 ", title_accent="검증했습니다",
lede="잠재 환자 질문 120개를 OpenAI·Perplexity 정식 API로 질의해 예측력을 채점했습니다 (09-01).",
section="Validation")
L, R = s.cards2(y=s.band_y)
L.chip("예측 적중", "good").rows([
("논브랜드 질문에서 부재", "84문항 중 Perplexity 3, ChatGPT 10문항만 언급. 시술 정보 52문항은 0건."),
("원인은 콘텐츠(C)", "병원 정의문 0, HTML 표 0, FAQ는 한 페이지. 시술별 인용 단락 부재."),
("표면(D)이 브랜드 방어", "병원명을 아는 36문항은 97~100% 답변. 근거는 강남언니·GBP·뉴스."),
], t_size=HEAD, b_size=BODY)
R.chip("진단 밖 발견 · 정정 반영", "info").rows([
("제3자 표면이 더 넓습니다", "뉴스·채용공고·바비톡·네이버 예약이 개원연도·주차·휴진을 답함."),
("발행 중인 블로그가 인용됨", "ChatGPT 추천 근거가 blog.viewclinic.com. v1.0은 정지로 오판."),
("엔진별 오답 편차", "주차 질문에 Perplexity는 정답, ChatGPT는 추측. 구조화 부재의 비용."),
], t_size=HEAD, b_size=BODY)
# 12 Corrections (dark)
s = d.slide(eyebrow="Corrections · 2026-09-07 재검증",
title="v1.0에서 틀린 것 ", title_accent="세 가지를 바로잡습니다", dark=True,
lede="홈·프리저베·가슴·코·오시는길 5개 URL의 원본 HTML을 다시 받아 파싱하고 점수를 다시 계산했습니다.",
section="Corrections")
L, R = s.cards2(y=s.band_y)
L.chip("정정", "warning").rows([
("블로그 정지 → 발행 중", "www post-sitemap만 본 오판. blog.viewclinic.com은 09-07까지 발행, AI 봇 14종 허용."),
("FAQ 0개 → 프리저베 7문항", "2개 URL 결과를 전체로 일반화. 프리저베에 FAQ 7문항과 FAQPage 스키마. C2 0→2."),
("수치 없음 → 시술 상세에 있음", "프리저베·코·윤곽 페이지에 수술시간·마취·회복 텍스트. 가격대는 없음. C4 1→2."),
], t_size=HEAD, b_size=BODY)
R.chip("유지 · 재확인", "info").rows([
("그대로 확인된 것", "H1 5개 라벨, ItemList 파싱 실패, sameAs 빈 값, 표 0개, 진료시간 이미지, WP 5.5.3."),
("점수", "44.0/89 = 50점 → 48.0/89 = 54점. 등급 C 유지. C 카테고리 28% → 44%."),
("재확인 필요", "GBP 전화번호·웹사이트는 08-28 실측값. 병원이 고쳤다면 D2·D4 재채점."),
], t_size=HEAD, b_size=BODY)
# 13 Request to the clinic
s = d.slide(eyebrow="Request · 뷰 서포터즈 강화를 위해",
title="뷰성형외과에 ", title_accent="부탁드리는 것",
lede=["서포터즈 사이트 18편(검토 완료 10편)을 병원의 공식 답으로 완성하려면 병원만 아는 정보가 필요합니다.",
"아래 항목은 담당자 한 분이 1~2주 안에 처리하실 수 있는 범위로 추렸습니다."],
section="Request")
a, b, c = s.cards3(y=s.band_y)
a.chip("정보 · 병원만 아는 사실", "info").title("알려 주시면 반영합니다", size=HEAD).bullets([
"가슴성형 견적 기본 포함 항목과 결제 방식.",
"가슴성형 후 출근 기준과 걷기 시작 시점.",
"타원 수술 재수술 상담 가능 여부.",
"코·윤곽 재수술 대기 기간, 코 실밥 제거일.",
], size=BODY)
b.chip("확인 · 검토와 승인", "warning").title("확인해 주시면 켜집니다", size=HEAD).bullets([
"검토 대기 5편의 담당 원장 확정과 검토일.",
"검토 완료 10편의 기록을 병원 기록과 대조.",
"서포터즈 지원 관계 문구 확정.",
"작성자 실명·편집 책임자 표기 승인.",
], size=BODY)
c.chip("액션 · 홈페이지 쪽", "critical").title("병원이 직접 고쳐야 합니다", size=HEAD).bullets([
"ItemList JSON-LD 오류 수정, MedicalClinic 추가.",
"GBP 전화번호 등록, 웹사이트 교정.",
"프리저베 구조를 다른 시술 페이지로 확산.",
"서포터즈 정식 도메인 확정과 링크 연결.",
], size=BODY)
# 14 Integrity
s = d.slide(eyebrow="What We Don't Sell · 정직성 규약",
title="근거 없는 것은 ", title_accent="약속하지 않습니다", section="Integrity")
a, b, c = s.cards3(y=s.band_y)
a.icon_square().title("만들지 않는 것", size=HEAD).bullets([
"llms.txt. Google 공식 효과 0, 요청 로그 없음.",
"네이버 블로그 증량. AI 크롤링 금지 도메인.",
], size=BODY)
b.icon_square().title("약속하지 않는 것", size=HEAD).bullets([
"\"스키마 넣으면 인용됩니다\". 인과 증거 없음.",
"순위·노출 보장. 답변은 10~34% 흔들림.",
], size=BODY)
c.icon_square().title("측정 규율", size=HEAD).bullets([
"단발 조회 보고 금지. 반복 측정만.",
"답변엔진 UI 자동 조회 금지. 약관 위반.",
"틀린 판정은 정정 슬라이드로 남깁니다.",
], size=BODY)
# 15 Method
s = d.slide(eyebrow="Method · AEO / GEO Rubric v1.0",
title="36개 항목, 100점, ", title_accent="근거 등급 명시", section="Method")
a, b, c = s.cards3(y=s.band_y)
a.icon_square().title("채점 방식", size=HEAD).bullets([
"항목별 0~3 레벨 × 배점. 미검증은 분모 제외.",
"A 20 · B 20 · C 25 · D 20 · E 10 · F 5.",
"등급 A 81+ · B 61~80 · C 41~60 · D 40 이하.",
], size=BODY)
b.icon_square().title("배점 근거", size=HEAD).bullets([
"차단되면 인용될 수 없어 A·B에 무게.",
"콘텐츠 전술 효과는 논쟁 중이라 C는 원칙만.",
"병의원은 강남언니 비중이 커 D1 배점 6.",
], size=BODY)
c.icon_square().title("항목마다 붙는 태그", size=HEAD).bullets([
"근거 등급: 실측 / 학술 / 벤더 / 추정.",
"통제 가능성: 직접 / 영향 / 불가.",
"채점 방식: 자동 / 반자동 / 수동.",
], size=BODY)
# 16 Closing
d.closing(eyebrow="Next Step",
title_lines=["표면은 확보됐습니다.", "홈페이지가 따라가면 됩니다."],
lede="P0 세 가지: 스키마, NAP 통일, 측정 인프라. 서포터즈 요청은 담당자 한 분이 처리할 수 있습니다.",
cta_primary="P0 착수하기 →", cta_secondary="서포터즈 사이트 보기",
contact="o2oteam@o2o.kr")
d.save(OUT)
print("saved", OUT)

View File

@ -0,0 +1,317 @@
"""
Viewclinic AI Answer Readiness Report v2.0 덱 빌드 (INFINITH Deck 규격)
v1.1(2026-09-07 재검증 정정)의 실측을 그대로 두고, 점수를 기준표 v2.0(AEO 답변 준비도 100 · GEO 출처 준비도 100)으로
바꾼 판. v1.0·v1.1 파일은 haewon이 손본 정본이라 덮어쓰지 않고 v2.0 파일로 새로 저장한다.
바뀐 것: 표지 배지·부제, Executive Summary KPI(AEO 42 / GEO 56), 스코어카드 2장(AEO·GEO 항목별), 로드맵 제목,
Method(두 점수·게이트·36개 실측 신호). A~E 실측 슬라이드와 정정·요청·정직성 슬라이드는 v1.1과 같다.
점수 원본: src/data/aeoGeoRubricV2.ts + src/lib/discoveryScoreV2.ts (docs/AEO_GEO_RUBRIC_v2.md 재채점 표).
폰트: haewon 확정 기준(본문 20 / 리드 24 / 카드 제목 28). ifd 분량 검사 안에서 카피를 줄였다.
python3 docs/reports/viewclinic/01_readiness_report/build_viewclinic_deck_v2_0.py docs/reports/viewclinic/01_readiness_report/Viewclinic_AI_Answer_Readiness_Report_v2.0.pptx
"""
import sys
sys.path.insert(0, "/Users/haewonkam/.claude/skills/infinith-deck/scripts")
from ifd import Deck
OUT = sys.argv[1] if len(sys.argv) > 1 else "Viewclinic_AI_Answer_Readiness_Report_v2.0.pptx"
BODY, HEAD = 20.0, 28.0
d = Deck()
# 01 Cover
d.cover(
eyebrow="AI DISCOVERY · AEO / GEO AUDIT v2.0",
title_lines=["AI Answer", "Readiness Report."],
subtitle="뷰성형외과 · viewclinic.com · 실측 2026. 08. 28 · 재검증 09. 07 · 기준표 v2.0 채점 09. 07",
meta_right="AI Discovery Report · 2026",
)
# 02 Executive summary
s = d.slide(eyebrow="Executive Summary",
title="답은 부족하고, ", title_accent="출처로는 절반쯤 됩니다",
lede=["답변 준비도(AEO) 42점, 출처 준비도(GEO) 56점. 각각 100점의 독립 지표입니다.",
"36개 실측 항목 중 32개를 확인했고, 오너 계정이 필요한 4개는 분모에서 제외했습니다."],
section="Summary")
k1, k2, k3, k4 = s.cards4(y=s.band_y, h=3.4)
k1.kpi("42 / 100", "AEO · 답변 준비도", "등급 C · 정의문 0 · 라벨형 H1 · 표 0")
k2.kpi("56 / 100", "GEO · 출처 준비도", "등급 C · 근거 없는 주장 · 후기 광고 이력")
k3.kpi("2 / 2", "게이트 통과", "크롤러 접근 · 본문 렌더링")
k4.kpi("4 / 36", "미검증 실측 항목", "GA4 · 서버로그 · GSC · Bing")
# 03 What AI sees (dark)
s = d.slide(eyebrow="What AI Sees · 진단의 결론",
title="문제는 차단이 아니라 ", title_accent="내용에 있습니다", dark=True, section="Findings")
L, R = s.cards2(y=s.band_y)
L.chip("정상", "good").rows([
("크롤러 접근 정상", "robots.txt가 AI 검색봇 12종을 허용. Cloudflare 차단 없음."),
("서버 렌더링 본문", "WordPress가 본문을 서버에서 렌더. JS 없이 10,757자 추출."),
("표면이 넓습니다", "강남언니 후기 19,373건. 유튜브 1,215편. 블로그는 발행 중이고 AI 봇 허용."),
], t_size=HEAD, b_size=BODY)
R.chip("치명", "critical").rows([
("누구인지 확정 불가", "MedicalClinic 스키마 없음, sameAs 비어 있음. 시술 목록 JSON-LD 무효."),
("인용할 문장 부족", "H1 5개가 영문 라벨. HTML 표 0, 병원 정의문 0. FAQ는 프리저베뿐."),
("표면 간 NAP 불일치", "GBP 전화번호 없음. 웹사이트가 영문 도메인. 주소 표기 3종."),
], t_size=HEAD, b_size=BODY)
# 04 AEO scorecard
s = d.slide(eyebrow="Scorecard · AEO Answer Readiness · 42",
title="답변 준비도 ", title_accent="8개 항목",
lede="고객의 질문에 얼마나 명확하고 충분하게 답하는가. 항목 점수는 36개 실측 항목에서 파생하고, 실측이 없는 항목은 사람이 판정했습니다.",
section="AEO")
W, Rail = s.cards2(y=s.band_y, split=0.66)
W.grid(
headers=["항목", "배점", "점수", "근거", "판정"],
col_w=[3.5, 1.0, 1.2, 3.7, 1.5],
rows=[
["AEO1 질문 수요 충족", "20", "13.3", "FAQ 프리저베 1페이지뿐", "양호"],
["AEO2 답변의 직접성", "20", "0", "병원 정의문 없음", "치명"],
["AEO3 자기완결성", "15", "5.0", "단락에 상호·시술명 부족", "미흡"],
["AEO4 의사결정 정보", "15", "6.0", "수치 일부 · 표 0", "미흡"],
["AEO5 정보 구조·가독성", "10", "0", "H1 5개 영문 라벨", "치명"],
["AEO6 다음 행동", "10", "10", "전화·예약·방문 텍스트", "우수"],
["AEO7 텍스트 추출", "5", "3.7", "SSR 정상, alt 37% 누락", "양호"],
["AEO8 사이트 내 발견", "5", "4.3", "sitemap · canonical", "우수"],
],
tones=[[None, None, None, None, "good"], [None, None, None, None, "critical"],
[None, None, None, None, "warning"], [None, None, None, None, "warning"],
[None, None, None, None, "critical"], [None, None, None, None, "info"],
[None, None, None, None, "good"], [None, None, None, None, "info"]],
row_h=0.56, size=BODY - 2,
)
Rail.title("읽는 법", size=HEAD).bullets([
"8항목 합 100. 검증 8/8, 42.3점 = 42.",
"0점 두 항목(정의문·H1)이 40점을 비웁니다.",
"AEO6은 사람 판정. 나머지는 실측 파생.",
], size=BODY)
# 05 GEO scorecard
s = d.slide(eyebrow="Scorecard · GEO Source Readiness · 56",
title="출처 준비도 ", title_accent="8개 항목",
lede="그 답을 얼마나 검증하고 신뢰할 수 있는 출처로 쓸 수 있는가. 정본 URL과 갱신 신호는 만점, 근거와 투명성이 깎입니다.",
section="GEO")
W, Rail = s.cards2(y=s.band_y, split=0.66)
W.grid(
headers=["항목", "배점", "점수", "근거", "판정"],
col_w=[3.5, 1.0, 1.2, 3.7, 1.5],
rows=[
["GEO1 주장·근거 일치", "20", "6.7", "수상·1위 주장 원문 없음", "미흡"],
["GEO2 출처 추적성", "15", "15", "http → 301 정본 수렴", "우수"],
["GEO3 전문성·책임", "15", "6.0", "약력 일부, 스키마 없음", "미흡"],
["GEO4 엔티티 정합성", "15", "7.0", "강남언니 강함, NAP 3종", "미흡"],
["GEO5 최신성·정정", "10", "10", "수정일 표기, sitemap 최신", "우수"],
["GEO6 원천 대비 가치", "10", "6.7", "주의사항·애프터케어 고유", "양호"],
["GEO7 발행 투명성", "10", "3.3", "후기 광고 시정명령 07-12", "미흡"],
["GEO8 인용 메타데이터", "5", "1.7", "JSON-LD 1블록 무효", "미흡"],
],
tones=[[None, None, None, None, "warning"], [None, None, None, None, "info"],
[None, None, None, None, "warning"], [None, None, None, None, "warning"],
[None, None, None, None, "info"], [None, None, None, None, "good"],
[None, None, None, None, "warning"], [None, None, None, None, "warning"]],
row_h=0.56, size=BODY - 2,
)
Rail.title("읽는 법", size=HEAD).bullets([
"8항목 합 100. 검증 8/8, 56.4점 = 56.",
"GEO1·GEO6·GEO7은 사람 판정(09-07 초안).",
"근거 원문 링크만 붙여도 20점이 열립니다.",
], size=BODY)
# 06 A 접근성
s = d.slide(eyebrow="A · Access & Crawlability · 실측 98%",
title="크롤러 접근은 ", title_accent="열려 있습니다", section="A · Access")
L, R = s.cards2(y=s.band_y)
L.chip("우수 · 3/3", "info").rows([
("A1 검색용 AI 봇 허용", "Disallow는 /wp-admin/ 뿐. 12종 UA로 GET, 전부 200."),
("A2 CDN 차단 없음", "nginx 직접 응답. Cloudflare 헤더와 AI UA 챌린지 없음."),
("A4 HTTPS 정합", "http → 301 → https://www.viewclinic.com/ 정본 수렴."),
], t_size=HEAD, b_size=BODY)
R.chip("보완·미검증", "warning").rows([
("A5 sitemap 우수", "page·portfolio lastmod 2026-08-31. 블로그는 별도 서브도메인."),
("A7 응답 속도·무게", "TTFB 0.135s 양호. 초기 HTML 838KB, 기준 300KB의 2.8배."),
("A6 Bing 색인 (미검증)", "ChatGPT 검색은 Bing 인덱스 의존. 계정 확인 필요."),
], t_size=HEAD, b_size=BODY)
# 07 B 엔티티 (dark)
s = d.slide(eyebrow="B · Entity & Structured Data · 실측 25%",
title="AI가 병원을 아직 ", title_accent="하나로 묶지 못합니다", dark=True, section="B · Entity")
L, R = s.cards2(y=s.band_y)
L.chip("치명", "critical").rows([
("B1 JSON-LD 문법 무효", "ItemList 블록 쉼표 누락. 09-07에도 그대로. 파서가 통째로 버림."),
("B2 MedicalClinic 없음", "Organization·WebSite·WebPage만. 주소·전화·진료시간 미구조화."),
("B3 Physician 없음", "의료진은 텍스트와 이미지뿐. 누가 수술하는지 기계가 못 읽음."),
], t_size=HEAD, b_size=BODY)
R.chip("미흡", "warning").rows([
("B5 sameAs 비어 있음", "푸터에 유튜브·인스타·블로그 링크가 있으나 스키마 미연결."),
("B4 NAP 표기 3종 혼재", "주소 표기 3종. 전화도 2회선과 휴대폰 혼재."),
("B7 영문 사이트 미연결", "viewplasticsurgery.com이 별도. hreflang 없음."),
], t_size=HEAD, b_size=BODY)
# 08 C 콘텐츠
s = d.slide(eyebrow="C · Answer-Ready Content · 실측 44%",
title="프리저베 페이지가 ", title_accent="인용 구조의 기준입니다", section="C · Content")
L, R = s.cards2(y=s.band_y)
L.chip("0점 항목", "critical").rows([
("C1 병원 정의문 없음", "메인은 슬라이더와 라벨. 가슴성형 페이지 첫 텍스트는 상담 폼."),
("C3 H1 5개, 전부 라벨", "가슴·코·오시는길은 H1 없음. 프리저베만 H1 1개 서술형."),
("C5 HTML 표 없음", "5개 페이지 모두 table 0개. 비교 정보는 이미지."),
], t_size=HEAD, b_size=BODY)
R.chip("부분 점수", "warning").rows([
("C2 FAQ는 프리저베에만", "FAQ 7문항과 유효한 FAQPage 스키마. 다른 시술 페이지는 없음."),
("C4 수치는 시술 상세에", "프리저베 20~40분·회복 1~3일, 코 1~2시간·실밥 7일. 가격대 없음."),
("C6 신선도 정상", "시술 페이지 2026-04-17, sitemap 08-31, 블로그 09-07 게시."),
], t_size=HEAD, b_size=BODY)
# 09 D 표면 / E 측정 (dark)
s = d.slide(eyebrow="D · Surfaces / E · Measurement",
title="강남언니는 강하고, ", title_accent="GBP 보완이 필요합니다", dark=True, section="D · Surfaces")
L, R = s.cards2(y=s.band_y)
L.chip("D · 표면 실측 68%", "good").rows([
("D1 강남언니 우수", "후기 19,373건, 의료진 26명, 이벤트 52건. 핵심 표면 확보."),
("D2 GBP 4.9점 (901)", "게시물 활성. 전화번호 미등록, 웹사이트 영문 도메인(08-28 실측)."),
("D3 오픈웹 표면", "유튜브 1,215편, 블로그 발행 중, 언론 1,137건. NAP 불일치로 3점 보류."),
], t_size=HEAD, b_size=BODY)
R.chip("E · 측정 (점수 밖 부가 지표)", "critical").rows([
("E1 크롤러 로그", "nginx 직접 호스팅. AI 봇 히트 추출 파이프라인 없음."),
("E2 GA4 AI 유입 채널", "chatgpt.com·perplexity.ai 채널그룹 없음. 계정 접근 필요."),
("E4 기준선 반복 측정", "120문항 API 실측 1회(09-01). 반복 측정은 미실시."),
], t_size=HEAD, b_size=BODY)
# 10 Action plan
s = d.slide(eyebrow="Action Plan",
title="지금 고칠 것과 ", title_accent="4주 안에 만들 것", section="Action Plan")
a, b, c = s.cards3(y=s.band_y)
a.chip("P0 · 1일~1주 · GEO", "critical").title("엔티티·근거·측정", size=HEAD).bullets([
"깨진 JSON-LD 수정, MedicalClinic 스키마.",
"수상·1위 주장에 원문 링크와 시점.",
"GBP 전화번호 등록, 4개 표면 NAP 통일.",
"GA4 AI 채널, 서버로그, GSC·Bing.",
], size=BODY)
b.chip("P1 · 4주 내 · AEO", "warning").title("콘텐츠 구조", size=HEAD).bullets([
"핵심 페이지 첫 단락에 병원 정의문.",
"프리저베 구조를 가슴·코·눈·윤곽으로 확산.",
"비교표를 HTML 표로. H1 재설계.",
"Physician 스키마, alt 111개 보완.",
], size=BODY)
c.chip("P2 · 지속", "good").title("연결·시딩", size=HEAD).bullets([
"블로그 글과 시술 페이지를 내부 링크로.",
"유튜브 영상을 블로그 글로 전사.",
"월 1회 갱신, 분기 1회 반복 측정.",
], size=BODY)
# 11 Roadmap (dark)
s = d.slide(eyebrow="Roadmap · 8 Weeks",
title="8주 안에 ", title_accent="AEO·GEO 모두 C에서 B로", dark=True, section="Roadmap")
s.stats3([
("W1–2", "스키마·NAP·근거 링크·측정 인프라.\n기준선 반복 측정 1회."),
("W3–6", "정의문·FAQ·H1 재설계·HTML 표.\nWordPress 업그레이드."),
("W7–8", "재진단. 미검증 4개 반영해\nAEO·GEO 재산정."),
], y=s.band_y + 0.6)
# 12 Validation
s = d.slide(eyebrow="Validation · 120-Question Live Test",
title="진단을 120문항 실측으로 ", title_accent="검증했습니다",
lede="잠재 환자 질문 120개를 OpenAI·Perplexity 정식 API로 질의해 예측력을 채점했습니다 (09-01).",
section="Validation")
L, R = s.cards2(y=s.band_y)
L.chip("예측 적중", "good").rows([
("논브랜드 질문에서 부재", "84문항 중 Perplexity 3, ChatGPT 10문항만 언급. 시술 정보 52문항은 0건."),
("원인은 답변 준비도(AEO)", "병원 정의문 0, HTML 표 0, FAQ는 한 페이지. 시술별 인용 단락 부재."),
("표면이 브랜드 방어", "병원명을 아는 36문항은 97~100% 답변. 근거는 강남언니·GBP·뉴스."),
], t_size=HEAD, b_size=BODY)
R.chip("진단 밖 발견", "info").rows([
("제3자 표면이 더 넓습니다", "뉴스·채용공고·바비톡·네이버 예약이 개원연도·주차·휴진을 답함."),
("발행 중인 블로그가 인용됨", "ChatGPT 추천 근거가 blog.viewclinic.com. 정정 반영."),
("엔진별 오답 편차", "주차 질문에 Perplexity는 정답, ChatGPT는 추측. 구조화 부재의 비용."),
], t_size=HEAD, b_size=BODY)
# 13 Corrections (dark)
s = d.slide(eyebrow="Corrections · 2026-09-07 재검증",
title="v1.0에서 틀린 것 ", title_accent="세 가지를 바로잡습니다", dark=True,
lede="홈·프리저베·가슴·코·오시는길 5개 URL의 원본 HTML을 다시 받아 파싱했습니다. 이 실측이 v2.0 점수의 신호입니다.",
section="Corrections")
L, R = s.cards2(y=s.band_y)
L.chip("정정", "warning").rows([
("블로그 정지 → 발행 중", "www post-sitemap만 본 오판. blog.viewclinic.com은 09-07까지 발행, AI 봇 14종 허용."),
("FAQ 0개 → 프리저베 7문항", "2개 URL 결과를 전체로 일반화. 프리저베에 FAQ 7문항과 FAQPage 스키마. C2 0→2."),
("수치 없음 → 시술 상세에 있음", "프리저베·코·윤곽 페이지에 수술시간·마취·회복 텍스트. 가격대는 없음. C4 1→2."),
], t_size=HEAD, b_size=BODY)
R.chip("유지 · 재확인", "info").rows([
("그대로 확인된 것", "H1 5개 라벨, ItemList 파싱 실패, sameAs 빈 값, 표 0개, 진료시간 이미지, WP 5.5.3."),
("점수 체계 변경", "v1.0 종합 54점(C)은 참고값. v2.0은 AEO 42 · GEO 56 두 점수로 봅니다."),
("재확인 필요", "GBP 전화번호·웹사이트는 08-28 실측값. 병원이 고쳤다면 GEO4 재채점."),
], t_size=HEAD, b_size=BODY)
# 14 Request to the clinic
s = d.slide(eyebrow="Request · 뷰 서포터즈 강화를 위해",
title="뷰성형외과에 ", title_accent="부탁드리는 것",
lede=["서포터즈 사이트 18편(검토 완료 10편)을 병원의 공식 답으로 완성하려면 병원만 아는 정보가 필요합니다.",
"아래 항목은 담당자 한 분이 1~2주 안에 처리하실 수 있는 범위로 추렸습니다."],
section="Request")
a, b, c = s.cards3(y=s.band_y)
a.chip("정보 · 병원만 아는 사실", "info").title("알려 주시면 반영합니다", size=HEAD).bullets([
"가슴성형 견적 기본 포함 항목과 결제 방식.",
"가슴성형 후 출근 기준과 걷기 시작 시점.",
"타원 수술 재수술 상담 가능 여부.",
"코·윤곽 재수술 대기 기간, 코 실밥 제거일.",
], size=BODY)
b.chip("확인 · 검토와 승인", "warning").title("확인해 주시면 켜집니다", size=HEAD).bullets([
"검토 대기 5편의 담당 원장 확정과 검토일.",
"검토 완료 10편의 기록을 병원 기록과 대조.",
"서포터즈 지원 관계 문구 확정.",
"작성자 실명·편집 책임자 표기 승인.",
], size=BODY)
c.chip("액션 · 홈페이지 쪽", "critical").title("병원이 직접 고쳐야 합니다", size=HEAD).bullets([
"ItemList JSON-LD 오류 수정, MedicalClinic 추가.",
"GBP 전화번호 등록, 웹사이트 교정.",
"프리저베 구조를 다른 시술 페이지로 확산.",
"서포터즈 정식 도메인 확정과 링크 연결.",
], size=BODY)
# 15 Integrity
s = d.slide(eyebrow="What We Don't Sell · 정직성 규약",
title="근거 없는 것은 ", title_accent="약속하지 않습니다", section="Integrity")
a, b, c = s.cards3(y=s.band_y)
a.icon_square().title("만들지 않는 것", size=HEAD).bullets([
"llms.txt. Google 공식 효과 0, 요청 로그 없음.",
"네이버 블로그 증량. AI 크롤링 금지 도메인.",
], size=BODY)
b.icon_square().title("약속하지 않는 것", size=HEAD).bullets([
"\"스키마 넣으면 인용됩니다\". 인과 증거 없음.",
"순위·노출 보장. 답변은 10~34% 흔들림.",
], size=BODY)
c.icon_square().title("측정 규율", size=HEAD).bullets([
"단발 조회 보고 금지. 반복 측정만.",
"답변엔진 UI 자동 조회 금지. 약관 위반.",
"틀린 판정은 정정 슬라이드로 남깁니다.",
], size=BODY)
# 16 Method
s = d.slide(eyebrow="Method · AEO / GEO Rubric v2.0",
title="두 점수, 각 100점, ", title_accent="36개 실측 신호", section="Method")
a, b, c = s.cards3(y=s.band_y)
a.icon_square().title("두 축의 질문", size=HEAD).bullets([
"AEO: 질문에 얼마나 명확히 답하는가.",
"GEO: 그 답을 출처로 믿을 수 있는가.",
"같은 항목을 두 점수에 겹쳐 넣지 않습니다.",
], size=BODY)
b.icon_square().title("채점 방식", size=HEAD).bullets([
"축당 8항목 × 배점. 미검증은 분모 제외.",
"실측 36항목의 0~3 레벨을 신호로 씁니다.",
"실측이 없는 4항목은 사람이 근거와 함께 판정.",
], size=BODY)
c.icon_square().title("게이트와 등급", size=HEAD).bullets([
"크롤러 차단·본문 미렌더는 점수 아닌 상한 40.",
"등급 A 81+ · B 61~80 · C 41~60 · D 40 이하.",
"제품용 기준이며 인용 확률이 아닙니다.",
], size=BODY)
# 17 Closing
d.closing(eyebrow="Next Step",
title_lines=["출처는 절반쯤 왔습니다.", "답을 먼저 쓰면 됩니다."],
lede="P0 세 가지: 스키마, 근거 링크, NAP 통일. 서포터즈 요청은 담당자 한 분이 처리할 수 있습니다.",
cta_primary="P0 착수하기 →", cta_secondary="서포터즈 사이트 보기",
contact="o2oteam@o2o.kr")
d.save(OUT)
print("saved", OUT)

View File

@ -1,19 +1,26 @@
"""
Viewclinic AI Discovery POC Proposal 덱 빌드 (INFINITH Deck 규격, 10페이지)
Viewclinic AI Discovery POC Proposal 덱 빌드 (INFINITH Deck 규격, 15페이지)
제안 4장 + 진단 리포트 요약 5장 + 클로징 1장.
경고: 정본은 haewon이 직접 수정한 Viewclinic_POC_Proposal.pptx와 그 파생 v3 계열이다.
이 스크립트를 다시 실행해 해당 파일들을 덮어쓰지 않는다 (feedback-never-overwrite-haewon-edits).
폰트 기준은 2026-09-01 haewon 확정: 본문·그리드 20 / 리드·인용 24 / 카드 제목 28.
리드문(ifd 내부 20pt)과 카드 제목(24pt)은 ifd 기본값이라, 재생성 시 후처리로 24/28 승격이 필요하다.
제안 4장 + 진단 리포트 요약 5장 + 부록 5장(두 점수 읽는 법 + User Question Bank 120문항 실측) + 클로징 1장.
부록 실측 데이터: docs/reports/viewclinic/03_question_bank/Viewclinic_QB_Results_Combined.md (2026-09-01, OpenAI·Perplexity API)
본문 텍스트는 기본값 대비 +2pt (rows/bullets 18, grid 16.25, quote 19.25).
python3 docs/reports/build_viewclinic_poc_deck.py docs/reports/Viewclinic_POC_Proposal.pptx
python3 docs/reports/viewclinic/02_poc_proposal/build_viewclinic_poc_deck.py docs/reports/viewclinic/02_poc_proposal/Viewclinic_POC_Proposal.pptx
"""
import os
import sys
sys.path.insert(0, "/Users/haewonkam/.claude/skills/infinith-deck/scripts")
import ifd
from ifd import Deck
BODY = 18.0 # rows 본문·불릿 (기본 16 + 2)
GRID = 16.25 # 스코어카드 격자 셀 (기본 14.25 + 2)
QUOTE = 19.25 # 인용 본문 (기본 17.25 + 2)
BODY = 20.0 # rows 본문·불릿 (haewon 확정 2026-09-01)
GRID = 20.0 # 스코어카드 격자 셀 (haewon 확정 2026-09-01)
QUOTE = 24.0 # 인용 본문 = 리드문과 동일 (haewon 확정 2026-09-01)
def quote_up(s, text, who, x=1.25, y=6.63, w=17.5, h=1.83):
@ -34,7 +41,7 @@ d = Deck()
d.cover(
eyebrow="PROOF OF CONCEPT · POC PROPOSAL",
title_lines=["AI Discovery,", "AEO / GEO."],
subtitle="뷰성형외과 × INFINITH · AI 답변엔진 노출 구축 검증 제안 · 2026. 08. 31",
subtitle="뷰성형외과 × INFINITH · AI 답변엔진 노출 구축 검증 제안 · 2026. 09. 01",
meta_right="AI Discovery Proposal · 2026",
)
@ -50,29 +57,29 @@ L.chip("시장의 변화", "info").rows([
("AI는 인용으로만 노출한다", "답변엔진은 크롤링 가능한 오픈웹 근거를 골라 인용. 광고 입찰이 없어 근거를 먼저 갖춘 병원이 선점."),
("네이버 자산은 기여 0", "네이버 블로그·플레이스는 robots.txt로 AI 크롤러를 전면 차단(2026-08 실측). 기존 네이버 마케팅이 AI 답변에 닿지 않음."),
], b_size=BODY)
R.chip("뷰성형외과 실측 · 48 / 100 · C", "critical").rows([
("읽을 수는 있다", "robots.txt가 AI 검색봇 12종을 전부 허용. 크롤러 접근성 92%로 기술적 전제는 이미 확보."),
("인용할 근거가 없다", "MedicalClinic 스키마 없음, FAQ 0개, 정의문 0개. 답변 인용 가능 콘텐츠 점수 20%."),
R.chip("뷰성형외과 실측 · 50 / 100 · C", "critical").rows([
("읽을 수는 있다", "robots.txt가 AI 검색봇 12종을 전부 허용. 크롤러 접근성 98%로 기술적 전제는 이미 확보."),
("인용할 근거가 없다", "MedicalClinic 스키마 없음, FAQ 0개, 정의문 0개. 답변 인용 가능 콘텐츠 점수 28%."),
("성과를 잴 수도 없다", "AI 유입 측정 인프라 0%. AI가 보내는 환자를 세는 장치 자체가 아직 없음."),
], b_size=BODY)
# 03 Offering — 랜딩 히어로 스크린샷 + 3스텝
from pptx.util import Inches
SHOT = "/Users/haewonkam/orca/workspaces/INFINITH/AEO-GEO-Audit/docs/reports/shots"
SHOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "shots")
s = d.slide(eyebrow="Our Offering · AI Discovery",
title="진단하고, 구축하고, ", title_accent="숫자로 증명합니다",
lede="AI Discovery는 36개 항목 실측 진단, 우선순위 구축, 반복 측정 보고까지 한 파이프라인으로 제공합니다.",
section="Offering")
img_h = 9.9 - s.band_y
img_w = img_h * (1440 / 1384)
img_w = img_h * (1440 / 1402)
ifd._rect(s._raw, 1.25 - 0.05, s.band_y - 0.05, img_w + 0.10, img_h + 0.10,
fill="FFFFFF", line=ifd.CARD_LINE, radius=0.06)
s._raw.shapes.add_picture(f"{SHOT}/land_hero.png", Inches(1.25), Inches(s.band_y), height=Inches(img_h))
rx = 1.25 + img_w + 0.40
R = ifd.Card(s, rx, s.band_y, 18.75 - rx, img_h, s.dark)
R.rows([
("STEP 1 · Audit", "AEO/GEO 기준표 v1.0으로 36개 항목 실측. 뷰성형외과 1차 진단 완료, 48점 등급 C."),
("STEP 1 · Audit", "AEO/GEO 기준표 v1.0으로 36개 항목 실측. 뷰성형외과 1차 진단 완료, 50점 등급 C."),
("STEP 2 · Build", "스키마 삽입, NAP 통일, 정의문·FAQ 구축. AI가 인용할 근거를 홈페이지에 만듭니다."),
("STEP 3 · Prove", "GA4·서버로그·반복 스팟체크 설치. 언급률과 신뢰구간으로만 보고합니다."),
], b_size=BODY)
@ -83,9 +90,9 @@ s = d.slide(eyebrow="What You Get · 8 Weeks",
lede="목표는 두 가지입니다. 인용될 기술적 전제를 완성하고, AI가 보내는 환자를 처음으로 계측합니다.",
section="Outcome")
k1, k2, k3, k4 = s.cards4(y=s.band_y, h=2.55)
k1.kpi("48 → 61+", "AI ANSWER READINESS", "등급 C에서 B로")
k1.kpi("50 → 61+", "AI ANSWER READINESS", "등급 C에서 B로")
k2.kpi("100%", "AI 유입 측정 인프라", "현재 0%. GA4·서버로그 설치")
k3.kpi("36 / 36", "검증 항목 커버리지", "미검증 5개를 계정 연동으로 해소")
k3.kpi("36 / 36", "검증 항목 커버리지", "미검증 4개를 계정 연동으로 해소")
k4.kpi("19,316", "강남언니 후기", "기존 자산을 AI 인용 표면으로 연결")
quote_up(s, "스키마를 넣으면 인용된다고 약속하지 않습니다. 인용될 수 없는 이유를 전부 제거하고, 결과를 반복 측정으로 증명합니다.",
"INFINITH 정직성 규약")
@ -95,11 +102,11 @@ quote_up(s, "스키마를 넣으면 인용된다고 약속하지 않습니다.
# 05 Report 1 · Executive summary
s = d.slide(eyebrow="Report 1 / 5 · Executive Summary",
title="읽을 수는 있지만, ", title_accent="인용할 근거가 없습니다",
lede=["36개 항목 중 31개를 실측했고, 오너 계정이 필요한 5개는 점수 분모에서 제외했습니다.",
"접근성(A) 92%와 표면(D) 72%는 양호. 엔티티(B) 30%와 콘텐츠(C) 20%가 총점을 끌어내립니다."],
lede=["36개 항목 중 32개를 실측했고, 오너 계정이 필요한 4개는 점수 분모에서 제외했습니다.",
"접근성(A) 98%와 표면(D) 68%는 양호. 엔티티(B) 25%와 콘텐츠(C) 28%가 총점을 끌어내립니다."],
section="Report · Summary")
img_h = 9.9 - s.band_y
img_w = img_h * (1440 / 912)
img_w = img_h * (1440 / 950)
ix = 1.25 + (17.5 - img_w) / 2
ifd._rect(s._raw, ix - 0.05, s.band_y - 0.05, img_w + 0.10, img_h + 0.10,
fill="FFFFFF", line=ifd.CARD_LINE, radius=0.06)
@ -130,10 +137,10 @@ W.grid(
headers=["카테고리", "배점", "획득", "검증", "판정"],
col_w=[4.6, 1.3, 2.0, 1.4, 1.6],
rows=[
["A · AI 크롤러 접근성", "20", "15.7 / 17", "6 / 7", "우수"],
["B · 엔티티 식별·구조화", "20", "6.0 / 20", "7 / 7", "미흡"],
["C · 답변 인용 가능 콘텐츠", "25", "5.0 / 25", "8 / 8", "치명"],
["D · AI 인용 표면 확보", "20", "13.7 / 19", "5 / 6", "양호"],
["A · AI 크롤러 접근성", "20", "16.7 / 17", "6 / 7", "우수"],
["B · 엔티티 식별·구조화", "20", "5.0 / 20", "7 / 7", "미흡"],
["C · 답변 인용 가능 콘텐츠", "25", "7.0 / 25", "8 / 8", "치명"],
["D · AI 인용 표면 확보", "20", "13.7 / 20", "6 / 6", "양호"],
["E · AI 가시성 측정 인프라", "10", "0 / 2", "1 / 4", "미설치"],
["F · 기술 위생", "5", "1.7 / 5", "4 / 4", "미흡"],
],
@ -144,8 +151,8 @@ W.grid(
)
Rail.title("읽는 법").bullets([
"획득 분모는 검증 항목의 배점 합. E는 미검증 3개라 분모가 2점뿐.",
"총점 42.1 / 88 = 48점, 등급 C.",
"미검증 5개는 계정 접근으로 1일 안에 채웁니다.",
"총점 44.1 / 89 = 50점, 등급 C.",
"미검증 4개는 계정 접근으로 1일 안에 채웁니다.",
], size=BODY)
# 08 Report 4 · Action plan
@ -176,10 +183,113 @@ s = d.slide(eyebrow="Report 5 / 5 · Roadmap · 8 Weeks",
s.stats3([
("W1–2", "스키마·NAP·측정 인프라 설치.\n기준선 스팟체크 1회."),
("W3–6", "정의문·FAQ·H1 재설계·HTML 표.\nWordPress 업그레이드."),
("W7–8", "재진단. 미검증 5개 반영해\n총점 재산정."),
("W7–8", "재진단. 미검증 4개 반영해\n총점 재산정."),
], y=s.band_y + 0.6)
# 10 Closing — 제안서 포맷 (웹 CTA 버튼 없음, 다음 단계 3줄)
# ── 부록 5장 · User Question Bank 120문항 실측 ───────────────────────────────
# 10 Appendix 1 · 두 점수 읽는 법
s = d.slide(eyebrow="Appendix 1 / 5 · How To Read Two Scores",
title="진단 50점과 랭킹 2위는 ", title_accent="같은 사실입니다",
lede=["보고서 점수는 인용될 준비(원인)를, TOP50 랭킹 점수는 실제 등장(결과)을 잽니다.",
"뷰성형외과는 만점 840점 기준 23점, 168번의 답변 기회 중 6번 등장했습니다."],
section="Appendix · Two Scores")
W, Rail = s.cards2(y=s.band_y, split=0.66)
W.grid(
headers=["", "진단 점수 (보고서)", "랭킹 점수 (TOP50)"],
col_w=[2.2, 4.3, 4.4],
rows=[
["재는 것", "인용될 준비가 됐는가 (원인)", "실제 답변에 등장했는가 (결과)"],
["계산", "36개 항목 체크리스트", "84문항 × 2엔진, 등장 순위 가중 합산"],
["만점", "100점", "840점 (전 답변 1위 등장 시)"],
["뷰성형외과", "50점 · 등급 C", "23점 · 2위 (등장률 3.6%, 만점 대비 2.7%)"],
],
row_h=0.62, size=GRID,
)
Rail.title("같이 읽는 법").bullets([
"2위는 빈 판의 상대 순위. 1위 디에이성형외과도 28/840.",
"진단에서 낮았던 B·C는 시술·가격 질문 등장 0회로, 높았던 D 표면은 23점 전부로 실증.",
"현재 순위의 근거는 남의 표면과 멈춘 블로그. 콘텐츠를 갖추면 1위 선점이 가능한 시점.",
], size=BODY)
# 11 Appendix 2 · Question Bank 설계
s = d.slide(eyebrow="Appendix 2 / 5 · User Question Bank",
title="환자의 질문 120개를 ", title_accent="먼저 만들었습니다",
lede=["잠재 환자가 AI에게 실제로 묻는 문장을 퍼널 4단계(인지·탐색·비교·결정)로 설계했습니다.",
"질문마다 진단 실측 기준의 예상 판정을 붙여, 구축 전후 비교의 기준선으로 씁니다."],
section="Appendix · Question Bank")
W, Rail = s.cards2(y=s.band_y, split=0.66)
W.grid(
headers=["카테고리", "문항", "대표 질문"],
col_w=[3.2, 1.0, 6.7],
rows=[
["브랜드 직접", "12", "뷰성형외과 어때? 믿을만한 병원이야?"],
["위치·운영", "10", "뷰성형외과 진료시간 어떻게 돼?"],
["지역 추천·비교", "15", "강남에서 가슴성형 잘하는 병원 어디야?"],
["시술 정보 7분야", "58", "가슴 보형물 종류 뭐가 있어?"],
["신뢰·안전", "9", "성형외과 고를 때 뭘 확인해야 해?"],
["가격·이벤트", "8", "뷰성형외과 지금 하는 이벤트 있어?"],
["후기·평판", "8", "뷰성형외과 실제 후기 어때?"],
],
row_h=0.56, size=GRID,
)
Rail.title("설계 원칙").bullets([
"검색 키워드가 아니라 채팅형 AI에 입력하는 구어체 문장.",
"브랜드 질문 36개, 논브랜드 질문 84개. 승부처는 병원 이름을 모르는 환자의 84개.",
"사전판정: 인용 기대 5, 불안정 35, 인용 불가 80.",
], size=BODY)
# 12 Appendix 3 · 실측 방법과 요약 (dark)
s = d.slide(eyebrow="Appendix 3 / 5 · Measurement",
title="두 답변엔진에 120문항을 ", title_accent="전부 실측했습니다",
lede="OpenAI와 Perplexity 정식 API로 서울 위치를 고정하고, 질문 원문 그대로 1회씩 질의했습니다.",
dark=True, section="Appendix · Measurement")
k1, k2, k3, k4 = s.cards4(y=s.band_y, h=2.55)
k1.kpi("97%", "CHATGPT · 브랜드 질문", "36문항 중 35문항 언급")
k2.kpi("11%", "CHATGPT · 논브랜드", "84문항 중 10문항 언급")
k3.kpi("100%", "PERPLEXITY · 브랜드 질문", "36문항 중 36문항 언급")
k4.kpi("3%", "PERPLEXITY · 논브랜드", "84문항 중 3문항 언급")
quote_up(s, "소비자 UI 자동 조회는 약관 위반이라 쓰지 않았습니다. 정식 API 측정과 반복 스팟체크로만 보고합니다.",
"INFINITH 정직성 규약")
# 13 Appendix 4 · 브랜드 vs 논브랜드
s = d.slide(eyebrow="Appendix 4 / 5 · Findings",
title="이름을 모르는 환자에게는 ", title_accent="존재하지 않습니다",
lede=["병원명을 아는 환자의 질문에는 두 엔진 모두 답합니다.",
"병원을 찾는 질문에서는 경쟁 병원이 추천 자리를 가져갑니다."],
section="Appendix · Findings")
L, R = s.cards2(y=s.band_y)
L.chip("브랜드 질문 · 언급 97~100%", "good").rows([
("이름을 대면 답한다", "뷰성형외과를 지목한 36문항은 위치·평점·안전 정보까지 서술. 인지도 문제는 아님."),
("근거는 남의 표면", "인용 출처는 강남언니·GetCareKorea·뉴스. 자사 홈페이지가 근거로 쓰인 답변은 예외적."),
("오답 위험 실증", "주차 질문에 Perplexity는 35대 무료로 정답, ChatGPT는 시설 없음으로 추측. 구조화 부재의 비용."),
], b_size=BODY)
R.chip("논브랜드 질문 · 언급 3~11%", "critical").rows([
("추천 목록에 없다", "추천·비교·시술 정보 84문항에서 Perplexity 3문항, ChatGPT 10문항만 뷰를 언급."),
("경쟁 병원이 선점", "Perplexity 추천은 디에이 4회, 우리 4회, 바노바기·JK 각 3회. 아이디병원은 1순위 2회."),
("시술 정보 질문 전멸", "가격·회복기간·보형물 비교 질문에서 인용 0. FAQ 0개, HTML 표 0개의 직접 결과."),
], b_size=BODY)
# 14 Appendix 5 · 핵심 증거
s = d.slide(eyebrow="Appendix 5 / 5 · Key Evidence",
title="멈춘 블로그가 아직 ", title_accent="인용되고 있습니다",
lede="ChatGPT가 논브랜드 질문에서 뷰성형외과를 인용한 드문 사례의 출처는 2024년 5월에 멈춘 자사 블로그였습니다.",
section="Appendix · Evidence")
a, b, c = s.cards3(y=s.band_y)
a.chip("발견", "info").title("실측 사례 C-02").bullets([
"강남에서 가슴성형 잘하는 병원을 묻자 뷰성형외과가 2순위로 등장.",
"인용 출처는 blog.viewclinic.com. 2024-05 이후 갱신이 멈춘 블로그.",
], size=BODY)
b.chip("해석", "violet").title("텍스트 자산은 인용된다").bullets([
"유튜브 영상 1,064개보다 오래된 블로그 글이 인용에 기여.",
"답변엔진은 크롤링 가능한 텍스트만 근거로 쓴다는 직접 증거.",
], size=BODY)
c.chip("함의", "good").title("P1 콘텐츠의 근거").bullets([
"정의문·FAQ·비교표가 생기면 논브랜드 언급률이 움직입니다.",
"8주 재측정에서 같은 120문항으로 변화를 확인합니다.",
], size=BODY)
# 15 Closing — 제안서 포맷 (웹 CTA 버튼 없음, 다음 단계 3줄)
raw = d._new(False)
ifd._write(ifd._tb(raw, ifd.MARGIN, 2.12, ifd.CONTENT_W, 0.47), "NEXT STEP · POC PROPOSAL",
ifd.T_EYEBROW, ifd.SANS, bold=True, color=ifd.VIOLET, spc=300)
@ -194,7 +304,7 @@ ifd._write(ifd._tb(raw, ifd.MARGIN, _y, ifd.CONTENT_W, 0.62),
_y += 1.10
for num, label, desc in [
("01", "검토", "본 제안서와 36개 항목 진단 리포트 전문을 검토합니다."),
("02", "계정 연동", "GA4·서버로그·GSC·Bing 권한 공유 시 미검증 5개 항목을 1일 안에 확정합니다."),
("02", "계정 연동", "GA4·서버로그·GSC·Bing 권한 공유 시 미검증 4개 항목을 1일 안에 확정합니다."),
("03", "킥오프", "W1 스키마·NAP·측정 인프라 설치부터 착수합니다."),
]:
ifd._write(ifd._tb(raw, ifd.MARGIN, _y, 0.75, 0.45), num, 19.5, ifd.SANS, bold=True, color=ifd.VIOLET)

View File

@ -0,0 +1,299 @@
# 뷰성형외과 AI Discovery User Question Bank v1.0
**작성일:** 2026-09-01 (당일 2엔진 실측 검증 완료, 6장 참조)
**용도:** 뷰성형외과 AI Discovery POC 제안·구축 첨부 자료
**범위:** 국내 환자, 한국어 질문 120문항 (주력 시술 전체)
**판정 기준:** AI Discovery 진단 실측 결과 50점/C (44.1/89, 검증 32/36 · 2026-08-31 재채점, 기준표 v1.0) 기반
**문의:** o2oteam@o2o.kr
---
## 1. 이 문서가 답하는 질문
잠재 환자가 ChatGPT·Perplexity·Gemini·네이버 AI 브리핑에 실제로 입력하는 질문 120개를 수집하고, 각 질문에 대해 "AI가 지금 뷰성형외과를 인용하거나 추천할 수 있는가"를 진단 실측 근거로 판정했다.
**요약 판정 분포**
| 판정 | 정의 | 문항 수 | 비율 |
|---|---|---|---|
| ◯ 인용 기대 | 현재 상태에서도 AI가 뷰성형외과를 근거와 함께 답할 가능성이 높음 | 5 | 4% |
| △ 불안정 | 제3자 표면(강남언니·GBP·유튜브)에 의존해 부분 노출은 가능하나, 자사 근거 부재로 누락·오답 위험이 있음 | 35 | 29% |
| ✕ 인용 불가 | 이 질문에 대응하는 뷰성형외과의 오픈웹 텍스트 근거가 현재 존재하지 않음 | 80 | 67% |
◯ 5개는 전부 위치·평점·채널 존재 확인 수준의 질문이다. 환자가 병원을 고르는 결정적 질문(시술 정보, 병원 추천·비교, 가격)에서 ◯는 0개다.
---
## 2. 판정 근거 (진단 실측 매핑)
판정에 사용한 사실은 전부 2026-08-28~31 실측이다. 추정은 근거 컬럼에 별도 표기했다.
| 근거 ID | 실측 사실 | 영향 받는 질문군 |
|---|---|---|
| C1 | 정의문 없음. "뷰성형외과는 ~한 병원입니다" 형태의 자기소개 단락이 어떤 페이지에도 없음 | A 브랜드, C 추천·비교 |
| C2 | FAQ 0개. 메인·시술 페이지에 Q&A 섹션 없음 | D 시술 정보 전체 |
| C3 | H1이 "VIEW SELFIE" 등 영문 라벨 5개. 시술 페이지 H1 없음 | D 시술 정보 전체 |
| C4 | 가격대·수술시간·회복기간 표 없음. 메타 설명은 주장형 문구 | D 시술, F 가격 |
| B1 | 시술 목록 JSON-LD가 문법 오류로 전체 무효 | A-03, D5-5 등 시술 라인업 질문 |
| B2 | MedicalClinic·LocalBusiness 스키마 없음. 주소·전화·진료시간이 구조화돼 있지 않음 | B 위치·운영 |
| B4 | 주소 표기 3종 혼재, 전화번호 2회선+휴대폰 혼재 | B-03 등 연락처 질문 (오답 위험) |
| D1 | 강남언니 hospitals/189 등록 우수: 후기 19,316건, 의료진 26명, 이벤트 52건, 병원정보 10건(CCTV·마취과 상주), 진료시간 표기 | △ 판정의 주 근거 |
| GBP | 구글 비즈니스 프로필 4.9점(리뷰 901), 소유자 게시 활성. 단 전화번호 없음, 웹사이트는 영문 사이트 연결 | B 위치, ◯ 판정의 주 근거 |
| YT | 유튜브 103K 구독, 영상 1,064개(가슴·눈코·윤곽·재수술 플레이리스트). 단 영상은 텍스트 근거로 약함 | D군 일부 △ |
| BLOG | 블로그 포스트 2024-05-31 이후 정지. 신규 텍스트 콘텐츠 공급 없음 | C 추천, D 시술 정보 |
| 권위 | 렛미인 출연·보건복지부장관 표창·안면윤곽 수상이 이미지·슬로건 안에만 있고 텍스트로 읽히지 않음 | A-06, D4-9 |
참고: 네이버 블로그·플레이스는 robots.txt로 글로벌 AI 크롤러를 차단하므로(2026-08-26 실측) ChatGPT·Perplexity 답변의 근거가 되지 못한다. 네이버 자산은 네이버 AI 브리핑에만 유효하다.
---
## 3. Question Bank (120문항)
퍼널 단계: **인지**(병원을 모르는 상태의 일반 질문) / **탐색**(시술·조건 정보 수집) / **비교**(병원 후보 비교) / **결정**(특정 병원 확인·예약 직전)
### A. 브랜드 직접 질문 (12문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| A-01 | 뷰성형외과 어때? 믿을만한 병원이야? | 결정 | △ | 강남언니 D1·GBP로 개요 답변 가능. 자사 정의문 없음(C1) |
| A-02 | 뷰성형외과는 어떤 병원이야? 소개해줘 | 결정 | △ | C1 정의문 부재. 제3자 표면 짜깁기로만 답변 |
| A-03 | 뷰성형외과는 무슨 수술을 주로 해? | 결정 | △ | 시술 목록 JSON-LD 무효(B1). 유튜브 플레이리스트로 유추 |
| A-04 | 뷰성형외과 최순우 원장 어떤 의사야? | 결정 | △ | 강남언니 프로필(9.4점, 리뷰 1,809) 존재. 자사 Physician 스키마 없음 |
| A-05 | 뷰성형외과 의료진 몇 명이야? 다 전문의야? | 결정 | △ | 강남언니 의료진 26명 표기. 자사 의료진 자격 텍스트 없음 |
| A-06 | 뷰성형외과가 렛미인 나온 병원 맞아? | 결정 | ✕ | 방송 이력이 이미지 안에만 있음(권위) |
| A-07 | 뷰성형외과 언제 생긴 병원이야? 오래됐어? | 결정 | ✕ | 개원 연도(2005)가 오픈웹 텍스트에 없음(C1) |
| A-08 | 뷰성형외과 건물이 통째로 병원이라던데 맞아? | 결정 | △ | 유튜브 채널 설명에 19층 규모 언급(YT) |
| A-09 | 뷰성형외과 강남언니 평점 몇 점이야? | 결정 | ◯ | 강남언니 표면 직접 존재(D1) |
| A-10 | 뷰성형외과 유튜브 채널 있어? | 결정 | ◯ | @ViewclinicKR 103K, 영상 1,064개(YT) |
| A-11 | 뷰성형외과랑 다른 강남 대형 성형외과랑 뭐가 달라? | 비교 | ✕ | 차별점 텍스트(C1)·비교 가능한 표(C4) 없음 |
| A-12 | 뷰성형외과 단점이나 주의할 점 있어? | 결정 | ✕ | 자사 설명 텍스트가 없어 AI가 제3자 부정 후기만 근거로 답할 위험 |
### B. 위치·접근·운영 정보 (10문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| B-01 | 뷰성형외과 주소 어디야? | 결정 | ◯ | GBP 등록 활성. 지도형 질문은 GBP가 근거 |
| B-02 | 뷰성형외과 신논현역에서 얼마나 걸려? | 결정 | ◯ | GBP 위치 기반 답변 가능 |
| B-03 | 뷰성형외과 전화번호 알려줘 | 결정 | △ | GBP에 전화번호 없음. 사이트는 2회선+휴대폰 혼재(B4). 오답 위험 |
| B-04 | 뷰성형외과 진료시간 어떻게 돼? | 결정 | △ | 강남언니에 진료시간 표기(D1). 자사 스키마 없음(B2) |
| B-05 | 뷰성형외과 일요일이나 공휴일에도 해? | 결정 | ✕ | 휴진 정보가 구조화 텍스트로 없음(B2) |
| B-06 | 뷰성형외과 주차 되나? | 결정 | ✕ | 주차 안내 텍스트 미탐지 |
| B-07 | 뷰성형외과 상담 예약 어떻게 해? | 결정 | △ | 유튜브 설명에 예약 URL 존재(YT). 자사 페이지 첫 텍스트가 상담폼이라 패시지 인용 불가(C1) |
| B-08 | 뷰성형외과 카톡으로 상담돼? | 결정 | △ | 유튜브 설명에 카카오 채널 링크(YT) |
| B-09 | 뷰성형외과 상담받으러 가면 몇 층으로 가? | 결정 | △ | 건물 구조 언급이 유튜브 설명에만 있음(YT) |
| B-10 | 신논현역 3번 출구 근처 성형외과 뭐 있어? | 인지 | ◯ | GBP 위치 검색 답변 가능 |
### C. 지역 추천·비교 질문 (15문항)
환자가 병원을 모르는 상태에서 던지는 추천형 질문. AI 추천 리스트에 들어가려면 오픈웹 텍스트 근거가 필요하다.
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| C-01 | 강남 성형외과 추천해줘 | 인지 | ✕ | 정의문·전문분야 텍스트 없음(C1). 추천 근거 부재 |
| C-02 | 강남에서 가슴성형 잘하는 병원 어디야? | 비교 | ✕ | 가슴성형 페이지에 인용 가능한 자기완결 단락 없음(C1·C3) |
| C-03 | 강남 안면윤곽 유명한 병원 알려줘 | 비교 | ✕ | 윤곽 수상 이력이 텍스트화 안 됨(권위) |
| C-04 | 코성형 잘하는 강남 병원 추천해줘 | 비교 | ✕ | C1·C2·BLOG |
| C-05 | 눈 재수술 잘하는 병원 어디야? | 비교 | ✕ | 재수술 전문성 텍스트 없음(C1) |
| C-06 | 강남 성형외과 톱5 알려줘 | 인지 | ✕ | 순위형 답변의 근거 표면에 자사 텍스트 없음 |
| C-07 | 가슴성형 병원 3곳만 골라서 비교해줘 | 비교 | ✕ | 비교 가능한 가격·시간·보형물 표 없음(C4) |
| C-08 | 마취과 전문의가 상주하는 강남 성형외과 어디야? | 비교 | △ | 강남언니 병원정보에 마취과 상주 표기(D1). 자사 텍스트 없음 |
| C-09 | 수술실 CCTV 있는 성형외과 추천해줘 | 비교 | △ | 강남언니 안전 뱃지(D1) |
| C-10 | 여의사한테 수술받을 수 있는 성형외과 있어? | 비교 | △ | 강남언니 뱃지에 여의사 표기(D1) |
| C-11 | 후기 제일 많은 강남 성형외과 어디야? | 비교 | △ | 강남언니 후기 19,316건(D1) |
| C-12 | 강남언니에서 평점 높은 성형외과 알려줘 | 비교 | △ | 강남언니 9.5점(D1) |
| C-13 | 20년 넘게 운영한 강남 성형외과 있어? | 비교 | ✕ | 개원 연도 텍스트 없음(C1) |
| C-14 | 리프팅 잘하는 강남 병원 추천해줘 | 비교 | ✕ | C1·C2·BLOG |
| C-15 | 의사 여러 명 있는 대형 성형외과가 나아? 어디 추천해? | 비교 | ✕ | 규모·협진 체계 텍스트 없음(C1) |
### D. 시술별 정보탐색 질문 (58문항)
환자 여정에서 가장 긴 구간. AI는 이 질문들에 일반론으로 답하면서 근거 콘텐츠를 가진 병원을 인용한다. 뷰성형외과는 FAQ 0개(C2), 표 0개(C4), 블로그 정지(BLOG) 상태라 이 구간 전체에서 인용 근거가 없다.
#### D1. 가슴성형 (12문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| D1-01 | 뷰성형외과 가슴성형 잘해? | 결정 | △ | 강남언니 시술 후기·이벤트(D1). 자사 시술 설명 인용 불가(C1) |
| D1-02 | 가슴 보형물 종류 뭐가 있어? | 탐색 | ✕ | 보형물 비교 표·설명 단락 없음(C2·C4) |
| D1-03 | 모티바랑 멘토 보형물 차이가 뭐야? | 탐색 | ✕ | C2·C4 |
| D1-04 | 가슴성형 수술시간 얼마나 걸려? | 탐색 | ✕ | 수술시간 표기 없음(C4) |
| D1-05 | 가슴성형 회복기간 어느 정도야? 언제 출근해? | 탐색 | ✕ | 회복기간 표기 없음(C4) |
| D1-06 | 가슴성형 흉터 어디에 남아? | 탐색 | ✕ | C2 |
| D1-07 | 구형구축이 뭐야? 예방할 수 있어? | 탐색 | ✕ | C2 |
| D1-08 | 가슴 지방이식이랑 보형물 중에 뭐가 나아? | 탐색 | ✕ | 비교 콘텐츠 없음(C2·C4) |
| D1-09 | 가슴 재수술은 언제 해야 해? | 탐색 | ✕ | C2 |
| D1-10 | 가슴성형하면 수유에 영향 있어? | 탐색 | ✕ | C2 |
| D1-11 | 가슴성형 후 정기검진 뭐 받아야 해? | 탐색 | ✕ | C2 |
| D1-12 | 가슴성형 과정 잘 설명해주는 영상 있어? | 탐색 | △ | 유튜브 가슴 플레이리스트 존재(YT). 텍스트 근거 아니라 불안정 |
#### D2. 눈성형 (9문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| D2-01 | 뷰성형외과 눈성형 어때? | 결정 | △ | 강남언니 후기(D1) |
| D2-02 | 쌍수 절개랑 매몰 차이가 뭐야? | 탐색 | ✕ | C2 |
| D2-03 | 자연유착 쌍수가 뭐야? | 탐색 | ✕ | C2 |
| D2-04 | 눈매교정은 쌍수랑 같이 해야 해? | 탐색 | ✕ | C2 |
| D2-05 | 앞트임 뒤트임 밑트임 뭐가 달라? | 탐색 | ✕ | C2 |
| D2-06 | 쌍수 회복기간 얼마나 걸려? | 탐색 | ✕ | C4 |
| D2-07 | 눈 재수술은 첫 수술 후 언제부터 가능해? | 탐색 | ✕ | C2 |
| D2-08 | 앞트임하면 잘 어울리는 얼굴이 따로 있어? | 탐색 | △ | 동일 주제 유튜브 쇼츠 154K 존재(YT) |
| D2-09 | 쌍수 붓기 빨리 빼는 법 있어? | 탐색 | ✕ | C2 |
#### D3. 코성형 (9문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| D3-01 | 뷰성형외과 코성형 어때? | 결정 | △ | 강남언니 후기(D1) |
| D3-02 | 코성형 재료 뭐뭐 있어? | 탐색 | ✕ | C2 |
| D3-03 | 실리콘이랑 자가연골 중에 뭐가 나아? | 탐색 | ✕ | C2·C4 |
| D3-04 | 콧대만 할까 코끝까지 같이 할까? | 탐색 | ✕ | C2 |
| D3-05 | 코성형 회복기간 얼마나 돼? | 탐색 | ✕ | C4 |
| D3-06 | 코 재수술은 언제부터 할 수 있어? | 탐색 | ✕ | C2 |
| D3-07 | 휜코 교정도 성형외과에서 해? | 탐색 | ✕ | C2 |
| D3-08 | 복코 수술 어떻게 하는 거야? | 탐색 | ✕ | C2 |
| D3-09 | 내 얼굴형에 맞는 코 모양 어떻게 정해? | 탐색 | △ | 동일 주제 유튜브 롱폼 124K 존재(YT) |
#### D4. 안면윤곽·양악 (9문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| D4-01 | 뷰성형외과 안면윤곽 잘하는 곳 맞아? | 결정 | △ | 윤곽 수상 이력이 있으나 이미지 안에만(권위). 강남언니 후기로 부분 답변 |
| D4-02 | 광대축소 수술 어떻게 하는 거야? | 탐색 | ✕ | C2 |
| D4-03 | V라인 사각턱 수술 부작용 없어? | 탐색 | ✕ | C2 |
| D4-04 | 양악수술은 어떤 경우에 해야 해? | 탐색 | ✕ | C2 |
| D4-05 | 윤곽수술 신경 손상 위험 얼마나 돼? | 탐색 | ✕ | C2 |
| D4-06 | 윤곽수술 회복기간 얼마나 걸려? | 탐색 | ✕ | C4 |
| D4-07 | 윤곽수술 붓기 언제 빠져? | 탐색 | ✕ | C2 |
| D4-08 | 윤곽이랑 코성형 같이 해도 돼? | 탐색 | ✕ | C2 |
| D4-09 | 안면윤곽으로 상 받은 병원 있어? | 비교 | ✕ | 수상·표창이 텍스트화 안 됨(권위) |
#### D5. 지방성형 (6문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| D5-01 | 지방흡입 부위별로 뭐가 달라? | 탐색 | ✕ | C2 |
| D5-02 | 얼굴 지방이식하면 자연스러워? | 탐색 | ✕ | C2 |
| D5-03 | 지방이식 생착률 얼마나 돼? | 탐색 | ✕ | C2 |
| D5-04 | 복부 지방흡입 회복 얼마나 걸려? | 탐색 | ✕ | C4 |
| D5-05 | 뷰성형외과에서 지방성형도 해? | 결정 | △ | 시술 목록 JSON-LD 무효(B1). 유튜브 플레이리스트로 유추(YT) |
| D5-06 | 지방흡입 흉터 남아? | 탐색 | ✕ | C2 |
#### D6. 피부·안티에이징·리프팅 (7문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| D6-01 | 리프팅 종류별로 뭐가 달라? | 탐색 | ✕ | C2 |
| D6-02 | 실리프팅이랑 안면거상 중에 뭐 해야 해? | 탐색 | ✕ | C2·C4 |
| D6-03 | 울쎄라 효과 진짜 있어? | 탐색 | ✕ | C2 |
| D6-04 | 리프팅 효과 얼마나 유지돼? | 탐색 | ✕ | C4 |
| D6-05 | 40대인데 안티에이징 뭐부터 시작해? | 탐색 | ✕ | C2 |
| D6-06 | 뷰성형외과에서 리프팅도 받을 수 있어? | 결정 | △ | B1·YT(피부+안티에이징 플레이리스트) |
| D6-07 | 수술 흉터 관리 어떻게 해? | 탐색 | ✕ | C2 |
#### D7. 재수술 (6문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| D7-01 | 재수술 전문 병원은 뭐가 달라? | 탐색 | ✕ | 재수술 전문성 텍스트 없음(C1·C2) |
| D7-02 | 뷰성형외과 재수술 잘해? | 결정 | △ | 유튜브 재수술 플레이리스트(YT)·강남언니 후기(D1) |
| D7-03 | 성형 재수술은 왜 하게 되는 거야? | 탐색 | ✕ | C2 |
| D7-04 | 재수술은 처음보다 비용 더 비싸? | 탐색 | ✕ | C4 |
| D7-05 | 재수술 하려면 첫 수술 후 얼마나 기다려야 해? | 탐색 | ✕ | C2 |
| D7-06 | 다른 병원에서 한 수술도 재수술 상담해줘? | 결정 | ✕ | C2 |
### E. 신뢰·안전 질문 (9문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| E-01 | 성형외과 고를 때 뭘 확인해야 해? | 인지 | ✕ | 체크리스트형 콘텐츠 없음(C2). 안전 인증 10개가 이미지 안에만 |
| E-02 | 성형수술 마취 사고 안 나려면 어떤 병원 가야 해? | 인지 | ✕ | 마취과 상주 사실이 자사 텍스트에 없음(C1) |
| E-03 | 수술실 CCTV 있는지 어떻게 확인해? | 탐색 | ✕ | C2 |
| E-04 | 전신마취랑 수면마취 차이가 뭐야? | 탐색 | ✕ | C2 |
| E-05 | 성형외과 전문의인지 어떻게 확인해? | 탐색 | ✕ | 의료진 자격이 텍스트·스키마로 없음(B3 계열) |
| E-06 | 응급상황 대응 시스템 갖춘 성형외과 어디야? | 비교 | △ | 강남언니 병원정보에 응급대응 표기(D1) |
| E-07 | 성형 부작용 생기면 어떻게 해야 해? | 탐색 | ✕ | C2 |
| E-08 | 상담실장 말고 의사가 직접 상담해주는 병원 있어? | 비교 | ✕ | 상담 프로세스 텍스트 없음(C1) |
| E-09 | 뷰성형외과 안전 시스템 어때? | 결정 | △ | 강남언니 안전 뱃지 10개(D1). 자사 텍스트 없음 |
### F. 가격·이벤트 질문 (8문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| F-01 | 강남 가슴성형 평균 비용 얼마야? | 탐색 | ✕ | 가격대 표기 없음(C4) |
| F-02 | 뷰성형외과 가슴성형 얼마야? | 결정 | △ | 자사 가격표 없음(C4). 강남언니 이벤트 52건 표면 의존 |
| F-03 | 쌍수 가격 보통 얼마 해? | 탐색 | ✕ | C4 |
| F-04 | 코성형 견적 어느 정도 잡아야 해? | 탐색 | ✕ | C4 |
| F-05 | 뷰성형외과 지금 하는 이벤트 있어? | 결정 | △ | 강남언니 이벤트 52건(D1). 자사 이벤트 게시판은 스키마 없음 |
| F-06 | 성형외과 이벤트가 믿어도 돼? 싼 데는 왜 싸? | 탐색 | ✕ | C2 |
| F-07 | 성형 비용 카드 할부나 분할 돼? | 결정 | ✕ | 결제 안내 텍스트 미탐지 |
| F-08 | 성형 견적 여러 병원 비교하려면 어떻게 해? | 비교 | ✕ | C4 |
### G. 후기·평판 질문 (8문항)
| # | 질문 | 단계 | 판정 | 근거 |
|---|---|---|---|---|
| G-01 | 뷰성형외과 실제 후기 어때? | 결정 | △ | 강남언니 후기 19,316건(D1) |
| G-02 | 뷰성형외과 부작용 후기나 안 좋은 얘기 있어? | 결정 | ✕ | 자사 설명·반론 텍스트가 없어 부정 표면만 인용될 위험 |
| G-03 | 강남언니 후기 믿을만해? | 탐색 | ✕ | 후기 정책 관련 자사 콘텐츠 없음 |
| G-04 | 뷰성형외과 수술 전후 사진 어디서 봐? | 결정 | △ | 강남언니·유튜브에 존재(D1·YT) |
| G-05 | 성형 후기는 어디서 봐야 정확해? | 탐색 | ✕ | C2 |
| G-06 | 뷰성형외과 인스타그램 있어? | 결정 | △ | @viewplastic 14K 존재. 자사 사이트 sameAs 비어 있어 연결 근거 약함 |
| G-07 | 뷰성형외과는 뭘로 유명한 병원이야? | 결정 | △ | 제3자 표면 조합으로 부분 답변. 자사 정의문 없음(C1) |
| G-08 | 가슴성형 후기 많은 병원 어디야? | 비교 | △ | 강남언니 후기 수 기준 부분 노출 가능(D1) |
---
## 4. POC에서의 활용 방법
**측정 원칙:** 답변엔진 소비자 UI 자동 조회는 약관 위반이므로 하지 않는다. 측정은 사람이 수행하는 수동 스팟체크로 한다.
1. **베이스라인(개선 전):** 120문항 중 판정 대표 문항 20~30개를 표본으로 뽑아, ChatGPT·Perplexity·네이버 AI 브리핑에 수동 입력하고 뷰성형외과 언급·인용 여부를 기록한다. 표본은 판정 분포(◯/△/✕)와 퍼널 단계를 비례 반영한다.
2. **개선 적용:** POC 제안서의 개선 항목을 실행한다.
3. **재측정(개선 후):** 동일 표본을 동일 조건으로 재입력해 판정 이동(✕→△, △→◯)을 집계한다.
**개선 항목과 질문군 연결 (예상 효과)**
| 개선 항목 | 판정이 이동하는 질문군 | 문항 수 |
|---|---|---|
| 정의문 도입 + MedicalClinic 스키마 (C1·B2) | A 브랜드 전체, B 위치·운영, C 추천의 조건형 질문 | 약 30 |
| 시술별 FAQ 5~8개 + FAQPage 스키마 (C2) | D 시술 정보 전체, E 신뢰·안전 | 약 60 |
| 가격대·수술시간·회복기간 HTML 표 (C4) | F 가격, D의 시간·비용 질문 | 약 15 |
| 의료진 자격 텍스트 + Physician 스키마 | A-04·05, E-05 | 약 5 |
| 수상·표창·안전 인증 텍스트화 | A-06, C-03, D4-09, E-01·02 | 약 6 |
✕ 80문항의 대부분이 FAQ·정의문·표라는 3가지 콘텐츠 형식 부재에서 나온다. POC 범위의 콘텐츠 개선만으로 ✕ 질문군의 절반 이상을 인용 후보로 전환할 수 있다.
---
## 5. 질문 설계 원칙
- 질문은 검색 키워드가 아니라 실제 사용자가 채팅형 AI에 입력하는 구어체 문장으로 작성했다.
- 퍼널 4단계(인지·탐색·비교·결정)를 모두 커버하되, 환자 여정에서 가장 긴 탐색 구간(시술 정보)에 가장 많은 문항(58개)을 배정했다.
- 브랜드 직접 질문과 논브랜드 질문의 비율은 약 3:7이다. AI Discovery의 승부처는 병원 이름을 모르는 환자의 논브랜드 질문이기 때문이다.
- 시술 범위는 병원의 실제 라인업(유튜브 플레이리스트 기준: 가슴, 눈, 코, 윤곽·양악, 지방성형, 피부·안티에이징, 재수술)을 따랐다.
- 판정은 전부 2026-08-28~31 실측 사실에 근거했으며, 실측하지 않은 항목은 판정 근거로 쓰지 않았다.
---
## 6. 실측 검증 결과 (2026-09-01)
이 뱅크의 120문항 전체를 OpenAI 웹검색 API(gpt-4o + web_search, 서울 고정)와 Perplexity API(sonar)로 실측해 사전판정을 채점했다. 문항별 결과는 `Viewclinic_QB_Results_Combined.md`와 `Viewclinic_QB_Results_TOP50.xlsx`, 답변 원문은 `scripts/out/qb_{openai,perplexity}_results.jsonl`에 있다.
**사전판정 채점표**
| 사전판정 | 문항 | 실측 결과 | 채점 |
|---|---|---|---|
| ✕ · 논브랜드 | 73 | Perplexity 언급 0건, ChatGPT 5건 (시술 정보 52문항은 두 엔진 모두 0건) | 적중 (93~100%) |
| ✕ · 브랜드 | 7 | 두 엔진 모두 7건 전부 정답 (뉴스·채용공고·바비톡·네이버 예약 근거) | 오판 |
| △ · 브랜드 | 25 | 24~25건 언급, 근거는 전부 제3자 표면 | 적중 |
| △ · 논브랜드 | 10 | 한쪽 엔진에서만 2~4건, 낮은 순위 | 적중 ("불안정" 그대로) |
| ◯ | 5 | 두 엔진 모두 5건 전부 언급 | 적중 |
**오판에서 배운 것 (기준표 v1.1 과제로 등록, `docs/AEO_GEO_RUBRIC.md` 참조)**
1. 브랜드 질문은 자사 텍스트가 없어도 뉴스 기사·채용공고·바비톡·네이버 예약 정보로 답이 성립한다. ✕ 판정은 논브랜드 전용으로 좁혀야 한다.
2. ChatGPT는 갱신이 멈춘 blog.viewclinic.com을 추천 질문의 인용 근거로 썼다. 진단 실측 대상에 블로그 서브도메인을 포함해야 한다.
3. 엔진별 근거 표면이 다르다. 같은 주차 질문에 Perplexity는 35대 무료로 정답, ChatGPT는 시설 없음으로 추측했다. 구조화된 자사 정보 부재는 엔진별 오답 편차로 나타난다.
핵심 결론은 유지된다. 승부처인 논브랜드 84문항에서 뷰성형외과 언급은 ChatGPT 11%, Perplexity 3%였고, 원인은 사전판정 근거였던 C군 콘텐츠 부재(FAQ 0, 정의문 0, 표 0) 그대로였다.

View File

@ -0,0 +1,230 @@
# 뷰성형외과 Question Bank 실측 결과: ChatGPT(OpenAI) x Perplexity 통합
측정일: 2026-09-01
측정 방식: OpenAI Responses API + web_search(gpt-4o, 서울 고정) / Perplexity API(sonar). 답변엔진 소비자 UI 자동 조회는 약관 위반이므로 정식 API로 측정했다.
## 요약
| 엔진 | 브랜드 질문 뷰 언급 | 논브랜드 질문 뷰 언급 |
|---|---|---|
| ChatGPT(OpenAI) | 35/36 (97%) | 10/84 (11%) |
| Perplexity | 36/36 (100%) | 3/84 (3%) |
브랜드 질문은 질문 문장에 '뷰성형외과'가 들어간 문항이다. 승부처인 논브랜드 질문(추천·비교·시술 정보)에서의 언급률이 AI Discovery의 실제 성적이다.
### ChatGPT(OpenAI): 논브랜드 질문에서 언급된 병원 상위 15
| 병원 | 언급 질문 수 | 1순위 등장 수 |
|---|---|---|
| VIEW Plastic Surgery | 5 | 1 |
| 한미인의원 강남본점 | 3 | 2 |
| The Door Plastic Surgery | 2 | 1 |
| 아이디병원 | 2 | 0 |
| 오르타의원 신관 | 2 | 0 |
| 팽팽의원 강남 | 2 | 0 |
| 디에이성형외과 | 2 | 2 |
| 스타라인성형외과 | 1 | 0 |
| 포레성형외과의원 | 1 | 0 |
| 링크성형외과 | 1 | 0 |
| 플레저성형외과 | 1 | 0 |
| Honesty Plastic Surgery | 1 | 1 |
| Kokoline Clinic | 1 | 0 |
| Sketch Plastic Surgery | 1 | 0 |
| Shimmian Clinic | 1 | 0 |
### Perplexity: 논브랜드 질문에서 언급된 병원 상위 15
| 병원 | 언급 질문 수 | 1순위 등장 수 |
|---|---|---|
| 디에이성형외과 | 4 | 2 |
| 우리성형외과 | 4 | 2 |
| 바노바기성형외과 | 3 | 1 |
| JK성형외과 | 3 | 1 |
| 플레저성형외과 | 2 | 0 |
| 링크성형외과 | 2 | 0 |
| 엄나구모 성형외과 | 2 | 1 |
| 아이디병원 | 2 | 2 |
| 삼사오성형외과 | 2 | 0 |
| 현대미학성형외과 | 2 | 0 |
| 베리굿 성형외과 | 2 | 0 |
| 강남서연성형외과 | 2 | 0 |
| 팝성형외과 | 2 | 0 |
| 원진성형외과 | 2 | 0 |
| 노트성형외과 | 2 | 0 |
## 문항별 결과
GPT/PPLX 컬럼: O(순위) = 뷰성형외과 언급과 답변 내 등장 순번, X = 미언급.
### A. 브랜드 직접
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| A-01 | 뷰성형외과 어때? 믿을만한 병원이야? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| A-02 | 뷰성형외과는 어떤 병원이야? 소개해줘 | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| A-03 | 뷰성형외과는 무슨 수술을 주로 해? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| A-04 | 뷰성형외과 최순우 원장 어떤 의사야? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과, 서울대학교병원 성형외과 |
| A-05 | 뷰성형외과 의료진 몇 명이야? 다 전문의야? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과의원 |
| A-06 | 뷰성형외과가 렛미인 나온 병원 맞아? | ✕ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| A-07 | 뷰성형외과 언제 생긴 병원이야? 오래됐어? | ✕ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| A-08 | 뷰성형외과 건물이 통째로 병원이라던데 맞아? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과, 스마일뷰치과의원 |
| A-09 | 뷰성형외과 강남언니 평점 몇 점이야? | ◯ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과의원 |
| A-10 | 뷰성형외과 유튜브 채널 있어? | ◯ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| A-11 | 뷰성형외과랑 다른 강남 대형 성형외과랑 뭐가 달라? | ✕ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| A-12 | 뷰성형외과 단점이나 주의할 점 있어? | ✕ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
### B. 위치·운영
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| B-01 | 뷰성형외과 주소 어디야? | ◯ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| B-02 | 뷰성형외과 신논현역에서 얼마나 걸려? | ◯ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| B-03 | 뷰성형외과 전화번호 알려줘 | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| B-04 | 뷰성형외과 진료시간 어떻게 돼? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| B-05 | 뷰성형외과 일요일이나 공휴일에도 해? | ✕ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| B-06 | 뷰성형외과 주차 되나? | ✕ | O (1위) | 뷰성형외과, 아이비성형외과 | O (1위) | 뷰성형외과 |
| B-07 | 뷰성형외과 상담 예약 어떻게 해? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| B-08 | 뷰성형외과 카톡으로 상담돼? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| B-09 | 뷰성형외과 상담받으러 가면 몇 층으로 가? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| B-10 | 신논현역 3번 출구 근처 성형외과 뭐 있어? | ◯ | O (1위) | VIEW Plastic Surgery, 스타라인성형외과, 포레성형외과의원, 링크성형외과, 플레저성형외과 | O (8위) | 우아인성형외과, 플레저성형외과, 링크성형외과, 나나성형외과, 밴스성형외과(신논현점) |
### C. 지역 추천·비교
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| C-01 | 강남 성형외과 추천해줘 | ✕ | O (5위) | Honesty Plastic Surgery, Kokoline Clinic, Sketch Plastic Surgery, Shimmian Clinic, The Door Plastic Surgery | X | 바노바기성형외과, 디에이성형외과, 1mm성형외과, 에디션성형외과의원, 시크릿성형외과·피부과 |
| C-02 | 강남에서 가슴성형 잘하는 병원 어디야? | ✕ | O (2위) | 우아성형외과, 뷰성형외과의원, 아이디병원, 바탕성형외과, 위쉬성형외과 | X | 엄나구모 성형외과, 유앤유성형외과, 윈느성형외과, 바노바기성형외과, 마블성형외과 |
| C-03 | 강남 안면윤곽 유명한 병원 알려줘 | ✕ | X | 플랜에스의원 강남, 한미인의원 강남본점, 오르타의원 신관, 팽팽의원 강남, Bondi Plastic Surgery | X | 아이디병원, 삼사오성형외과, 오늘성형외과, 유노성형외과, 현대미학성형외과 |
| C-04 | 코성형 잘하는 강남 병원 추천해줘 | ✕ | O (4위) | 기린성형외과 서초, 어린공주성형외과 강남, ID병원 강남, 뷰성형외과 강남, 프리미엄 리벤스 이비인후과의원 | X | 코원성형외과의원, 링크성형외과, 오엠성형외과, 코비쥬의원, 베리굿 성형외과 |
| C-05 | 눈 재수술 잘하는 병원 어디야? | ✕ | X | (병원 언급 없음) | X | 더스완성형외과, 강남서연성형외과, 팝성형외과, JK성형외과 |
| C-06 | 강남 성형외과 톱5 알려줘 | ✕ | O (2위) | The Door Plastic Surgery, View Plastic Surgery, Rohsanghoon Plastic Surgery, Gangnam Oz Plastic Surgery, The Plastic Surgery | X | 아이디병원, 원진성형외과, JK성형외과, 바노바기성형외과, 그랜드성형외과 |
| C-07 | 가슴성형 병원 3곳만 골라서 비교해줘 | ✕ | X | 강남 세란성형외과, 병원ABC, 병원XYZ | X | 땡큐성형외과의원, 밴스성형외과의원, 티제이성형외과의원 |
| C-08 | 마취과 전문의가 상주하는 강남 성형외과 어디야? | △ | O (3위) | 디에이성형외과, 윈느성형외과, 뷰성형외과의원, 더성형외과, 제이스성형외과 | X | 디에이성형외과, 현대미학성형외과, 노트성형외과, 에이비성형외과, 우리성형외과 |
| C-09 | 수술실 CCTV 있는 성형외과 추천해줘 | △ | X | 리브리 성형외과, 브라운 성형외과, 스케치 성형외과, 이룸 성형외과, 에이펙스 성형외과 | X | 이룸성형외과, BK성형외과, 라이크성형외과, 티와이성형외과 |
| C-10 | 여의사한테 수술받을 수 있는 성형외과 있어? | △ | X | (병원 언급 없음) | X | 조이플성형외과의원, 시크릿성형외과, 홍승현성형외과의원 |
| C-11 | 후기 제일 많은 강남 성형외과 어디야? | △ | O (5위) | 한미인의원 강남본점, 쁨글로벌의원 강남점, 팽팽의원 강남, 아비쥬의원 강남점, 릴리브의원 압구정 | X | 우리성형외과의원, 어린공주성형외과의원, 반니성형외과의원 |
| C-12 | 강남언니에서 평점 높은 성형외과 알려줘 | △ | O (6위) | 디에이성형외과의원, 팝성형외과의원, 나나성형외과의원, 에이트성형외과의원, 아이디병원‑본원 | O (6위) | 인트로성형외과의원, 그날성형외과의원, 우리성형외과의원, 팝성형외과의원, 삼사오성형외과의원 |
| C-13 | 20년 넘게 운영한 강남 성형외과 있어? | ✕ | X | 제림성형외과, 김종서 성형외과, JK 성형외과, 아이디 병원, JW 성형외과 | X | JK성형외과, 드림성형외과, 강남서연성형외과, 글램성형외과, 마이라인성형외과의원 |
| C-14 | 리프팅 잘하는 강남 병원 추천해줘 | ✕ | O (None위) | 한미인의원 강남본점, 오르타의원 신관, 팽팽의원, 더클리닉 강남점, 청담 라비앙로즈 | X | 온리프의원, 리팅성형외과의원, 윌비성형외과의원, 톡스앤필 강남본점, 리베리의원 강남점 |
| C-15 | 의사 여러 명 있는 대형 성형외과가 나아? 어디 추천해? | ✕ | X | (병원 언급 없음) | X | 디에이성형외과의원, 미인성형외과, 베리굿 성형외과, 삼성서울병원 성형외과 |
### D1. 가슴성형
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| D1-01 | 뷰성형외과 가슴성형 잘해? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| D1-02 | 가슴 보형물 종류 뭐가 있어? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D1-03 | 모티바랑 멘토 보형물 차이가 뭐야? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D1-04 | 가슴성형 수술시간 얼마나 걸려? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D1-05 | 가슴성형 회복기간 어느 정도야? 언제 출근해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D1-06 | 가슴성형 흉터 어디에 남아? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D1-07 | 구형구축이 뭐야? 예방할 수 있어? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D1-08 | 가슴 지방이식이랑 보형물 중에 뭐가 나아? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D1-09 | 가슴 재수술은 언제 해야 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D1-10 | 가슴성형하면 수유에 영향 있어? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D1-11 | 가슴성형 후 정기검진 뭐 받아야 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D1-12 | 가슴성형 과정 잘 설명해주는 영상 있어? | △ | X | (병원 언급 없음) | X | (병원 언급 없음) |
### D2. 눈성형
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| D2-01 | 뷰성형외과 눈성형 어때? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| D2-02 | 쌍수 절개랑 매몰 차이가 뭐야? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D2-03 | 자연유착 쌍수가 뭐야? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D2-04 | 눈매교정은 쌍수랑 같이 해야 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D2-05 | 앞트임 뒤트임 밑트임 뭐가 달라? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D2-06 | 쌍수 회복기간 얼마나 걸려? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D2-07 | 눈 재수술은 첫 수술 후 언제부터 가능해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D2-08 | 앞트임하면 잘 어울리는 얼굴이 따로 있어? | △ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D2-09 | 쌍수 붓기 빨리 빼는 법 있어? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
### D3. 코성형
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| D3-01 | 뷰성형외과 코성형 어때? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| D3-02 | 코성형 재료 뭐뭐 있어? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D3-03 | 실리콘이랑 자가연골 중에 뭐가 나아? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D3-04 | 콧대만 할까 코끝까지 같이 할까? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D3-05 | 코성형 회복기간 얼마나 돼? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D3-06 | 코 재수술은 언제부터 할 수 있어? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D3-07 | 휜코 교정도 성형외과에서 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D3-08 | 복코 수술 어떻게 하는 거야? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D3-09 | 내 얼굴형에 맞는 코 모양 어떻게 정해? | △ | X | (병원 언급 없음) | X | (병원 언급 없음) |
### D4. 안면윤곽·양악
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| D4-01 | 뷰성형외과 안면윤곽 잘하는 곳 맞아? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| D4-02 | 광대축소 수술 어떻게 하는 거야? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D4-03 | V라인 사각턱 수술 부작용 없어? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D4-04 | 양악수술은 어떤 경우에 해야 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D4-05 | 윤곽수술 신경 손상 위험 얼마나 돼? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D4-06 | 윤곽수술 회복기간 얼마나 걸려? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D4-07 | 윤곽수술 붓기 언제 빠져? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D4-08 | 윤곽이랑 코성형 같이 해도 돼? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D4-09 | 안면윤곽으로 상 받은 병원 있어? | ✕ | X | 강남 오앤의원 | X | 서울페이스21치과병원, 디에이성형외과의원, 1퍼센트성형외과 |
### D5. 지방성형
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| D5-01 | 지방흡입 부위별로 뭐가 달라? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D5-02 | 얼굴 지방이식하면 자연스러워? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D5-03 | 지방이식 생착률 얼마나 돼? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D5-04 | 복부 지방흡입 회복 얼마나 걸려? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D5-05 | 뷰성형외과에서 지방성형도 해? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| D5-06 | 지방흡입 흉터 남아? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
### D6. 피부·리프팅
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| D6-01 | 리프팅 종류별로 뭐가 달라? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D6-02 | 실리프팅이랑 안면거상 중에 뭐 해야 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D6-03 | 울쎄라 효과 진짜 있어? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D6-04 | 리프팅 효과 얼마나 유지돼? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D6-05 | 40대인데 안티에이징 뭐부터 시작해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D6-06 | 뷰성형외과에서 리프팅도 받을 수 있어? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| D6-07 | 수술 흉터 관리 어떻게 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
### D7. 재수술
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| D7-01 | 재수술 전문 병원은 뭐가 달라? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D7-02 | 뷰성형외과 재수술 잘해? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| D7-03 | 성형 재수술은 왜 하게 되는 거야? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D7-04 | 재수술은 처음보다 비용 더 비싸? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D7-05 | 재수술 하려면 첫 수술 후 얼마나 기다려야 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| D7-06 | 다른 병원에서 한 수술도 재수술 상담해줘? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
### E. 신뢰·안전
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| E-01 | 성형외과 고를 때 뭘 확인해야 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| E-02 | 성형수술 마취 사고 안 나려면 어떤 병원 가야 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| E-03 | 수술실 CCTV 있는지 어떻게 확인해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| E-04 | 전신마취랑 수면마취 차이가 뭐야? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| E-05 | 성형외과 전문의인지 어떻게 확인해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| E-06 | 응급상황 대응 시스템 갖춘 성형외과 어디야? | △ | X | 압구정서울성형외과, 아인병원 성형외과, PDM 박동만 성형외과, 리프트리성형외과, 엄나구모 성형외과 | X | 우리성형외과, 소다성형외과, Wannap 성형외과, 원진성형외과, 플레저 성형외과 |
| E-07 | 성형 부작용 생기면 어떻게 해야 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| E-08 | 상담실장 말고 의사가 직접 상담해주는 병원 있어? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| E-09 | 뷰성형외과 안전 시스템 어때? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
### F. 가격·이벤트
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| F-01 | 강남 가슴성형 평균 비용 얼마야? | ✕ | X | Gangnam Beauty Guide, Seoul Plastic Surgery Guide, SeoulBeautyTalk, ClinicSeoul.net, Gangnam Plastic Surgeon Cost Guide | X | (병원 언급 없음) |
| F-02 | 뷰성형외과 가슴성형 얼마야? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| F-03 | 쌍수 가격 보통 얼마 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| F-04 | 코성형 견적 어느 정도 잡아야 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| F-05 | 뷰성형외과 지금 하는 이벤트 있어? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| F-06 | 성형외과 이벤트가 믿어도 돼? 싼 데는 왜 싸? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| F-07 | 성형 비용 카드 할부나 분할 돼? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| F-08 | 성형 견적 여러 병원 비교하려면 어떻게 해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
### G. 후기·평판
| # | 질문 | 사전판정 | GPT | GPT 상위 병원 | PPLX | PPLX 상위 병원 |
|---|---|---|---|---|---|---|
| G-01 | 뷰성형외과 실제 후기 어때? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| G-02 | 뷰성형외과 부작용 후기나 안 좋은 얘기 있어? | ✕ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| G-03 | 강남언니 후기 믿을만해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| G-04 | 뷰성형외과 수술 전후 사진 어디서 봐? | △ | X | (병원 언급 없음) | O (1위) | 뷰성형외과 |
| G-05 | 성형 후기는 어디서 봐야 정확해? | ✕ | X | (병원 언급 없음) | X | (병원 언급 없음) |
| G-06 | 뷰성형외과 인스타그램 있어? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| G-07 | 뷰성형외과는 뭘로 유명한 병원이야? | △ | O (1위) | 뷰성형외과 | O (1위) | 뷰성형외과 |
| G-08 | 가슴성형 후기 많은 병원 어디야? | △ | O (5위) | WOOA Plastic Surgery Clinic, JW Plastic Surgery Center, SAERO Plastic Surgery, Dite Plastic Surgery, TJ Plastic Surgery | O (1위) | 뷰성형외과의원, 아이디병원-본원, 우아성형외과의원, 노트성형외과의원, 엄나구모성형외과의원 |

View File

@ -0,0 +1,150 @@
# 뷰성형외과 Question Bank 실측 결과: openai
측정일: 2026-09-01 / 방식: OpenAI 웹검색(Responses API + web_search, 서울 고정) / 120문항 완료
| # | 질문 | 사전판정 | 뷰 언급 | 뷰 순위 | 답변 내 상위 병원 (등장순) |
|---|---|---|---|---|---|
| A-01 | 뷰성형외과 어때? 믿을만한 병원이야? | △ | O | 1 | 뷰성형외과 |
| A-02 | 뷰성형외과는 어떤 병원이야? 소개해줘 | △ | O | 1 | 뷰성형외과 |
| A-03 | 뷰성형외과는 무슨 수술을 주로 해? | △ | O | 1 | 뷰성형외과 |
| A-04 | 뷰성형외과 최순우 원장 어떤 의사야? | △ | O | 1 | 뷰성형외과 |
| A-05 | 뷰성형외과 의료진 몇 명이야? 다 전문의야? | △ | O | 1 | 뷰성형외과 |
| A-06 | 뷰성형외과가 렛미인 나온 병원 맞아? | ✕ | O | 1 | 뷰성형외과 |
| A-07 | 뷰성형외과 언제 생긴 병원이야? 오래됐어? | ✕ | O | 1 | 뷰성형외과 |
| A-08 | 뷰성형외과 건물이 통째로 병원이라던데 맞아? | △ | O | 1 | 뷰성형외과 |
| A-09 | 뷰성형외과 강남언니 평점 몇 점이야? | ◯ | O | 1 | 뷰성형외과 |
| A-10 | 뷰성형외과 유튜브 채널 있어? | ◯ | O | 1 | 뷰성형외과 |
| A-11 | 뷰성형외과랑 다른 강남 대형 성형외과랑 뭐가 달라? | ✕ | O | 1 | 뷰성형외과 |
| A-12 | 뷰성형외과 단점이나 주의할 점 있어? | ✕ | O | 1 | 뷰성형외과 |
| B-01 | 뷰성형외과 주소 어디야? | ◯ | O | 1 | 뷰성형외과 |
| B-02 | 뷰성형외과 신논현역에서 얼마나 걸려? | ◯ | O | 1 | 뷰성형외과 |
| B-03 | 뷰성형외과 전화번호 알려줘 | △ | O | 1 | 뷰성형외과 |
| B-04 | 뷰성형외과 진료시간 어떻게 돼? | △ | O | 1 | 뷰성형외과 |
| B-05 | 뷰성형외과 일요일이나 공휴일에도 해? | ✕ | O | 1 | 뷰성형외과 |
| B-06 | 뷰성형외과 주차 되나? | ✕ | O | 1 | 뷰성형외과, 아이비성형외과 |
| B-07 | 뷰성형외과 상담 예약 어떻게 해? | △ | O | 1 | 뷰성형외과 |
| B-08 | 뷰성형외과 카톡으로 상담돼? | △ | O | 1 | 뷰성형외과 |
| B-09 | 뷰성형외과 상담받으러 가면 몇 층으로 가? | △ | O | 1 | 뷰성형외과 |
| B-10 | 신논현역 3번 출구 근처 성형외과 뭐 있어? | ◯ | O | 1 | VIEW Plastic Surgery, 스타라인성형외과, 포레성형외과의원, 링크성형외과, 플레저성형외과 |
| C-01 | 강남 성형외과 추천해줘 | ✕ | O | 5 | Honesty Plastic Surgery, Kokoline Clinic, Sketch Plastic Surgery, Shimmian Clinic, The Door Plastic Surgery |
| C-02 | 강남에서 가슴성형 잘하는 병원 어디야? | ✕ | O | 2 | 우아성형외과, 뷰성형외과의원, 아이디병원, 바탕성형외과, 위쉬성형외과 |
| C-03 | 강남 안면윤곽 유명한 병원 알려줘 | ✕ | X | - | 플랜에스의원 강남, 한미인의원 강남본점, 오르타의원 신관, 팽팽의원 강남, Bondi Plastic Surgery |
| C-04 | 코성형 잘하는 강남 병원 추천해줘 | ✕ | O | 4 | 기린성형외과 서초, 어린공주성형외과 강남, ID병원 강남, 뷰성형외과 강남, 프리미엄 리벤스 이비인후과의원 |
| C-05 | 눈 재수술 잘하는 병원 어디야? | ✕ | X | - | (병원 언급 없음) |
| C-06 | 강남 성형외과 톱5 알려줘 | ✕ | O | 2 | The Door Plastic Surgery, View Plastic Surgery, Rohsanghoon Plastic Surgery, Gangnam Oz Plastic Surgery, The Plastic Surgery |
| C-07 | 가슴성형 병원 3곳만 골라서 비교해줘 | ✕ | X | - | 강남 세란성형외과, 병원ABC, 병원XYZ |
| C-08 | 마취과 전문의가 상주하는 강남 성형외과 어디야? | △ | O | 3 | 디에이성형외과, 윈느성형외과, 뷰성형외과의원, 더성형외과, 제이스성형외과 |
| C-09 | 수술실 CCTV 있는 성형외과 추천해줘 | △ | X | - | 리브리 성형외과, 브라운 성형외과, 스케치 성형외과, 이룸 성형외과, 에이펙스 성형외과 |
| C-10 | 여의사한테 수술받을 수 있는 성형외과 있어? | △ | X | - | (병원 언급 없음) |
| C-11 | 후기 제일 많은 강남 성형외과 어디야? | △ | O | 5 | 한미인의원 강남본점, 쁨글로벌의원 강남점, 팽팽의원 강남, 아비쥬의원 강남점, 릴리브의원 압구정 |
| C-12 | 강남언니에서 평점 높은 성형외과 알려줘 | △ | O | 6 | 디에이성형외과의원, 팝성형외과의원, 나나성형외과의원, 에이트성형외과의원, 아이디병원‑본원 |
| C-13 | 20년 넘게 운영한 강남 성형외과 있어? | ✕ | X | - | 제림성형외과, 김종서 성형외과, JK 성형외과, 아이디 병원, JW 성형외과 |
| C-14 | 리프팅 잘하는 강남 병원 추천해줘 | ✕ | O | - | 한미인의원 강남본점, 오르타의원 신관, 팽팽의원, 더클리닉 강남점, 청담 라비앙로즈 |
| C-15 | 의사 여러 명 있는 대형 성형외과가 나아? 어디 추천해? | ✕ | X | - | (병원 언급 없음) |
| D1-01 | 뷰성형외과 가슴성형 잘해? | △ | O | 1 | 뷰성형외과 |
| D1-02 | 가슴 보형물 종류 뭐가 있어? | ✕ | X | - | (병원 언급 없음) |
| D1-03 | 모티바랑 멘토 보형물 차이가 뭐야? | ✕ | X | - | (병원 언급 없음) |
| D1-04 | 가슴성형 수술시간 얼마나 걸려? | ✕ | X | - | (병원 언급 없음) |
| D1-05 | 가슴성형 회복기간 어느 정도야? 언제 출근해? | ✕ | X | - | (병원 언급 없음) |
| D1-06 | 가슴성형 흉터 어디에 남아? | ✕ | X | - | (병원 언급 없음) |
| D1-07 | 구형구축이 뭐야? 예방할 수 있어? | ✕ | X | - | (병원 언급 없음) |
| D1-08 | 가슴 지방이식이랑 보형물 중에 뭐가 나아? | ✕ | X | - | (병원 언급 없음) |
| D1-09 | 가슴 재수술은 언제 해야 해? | ✕ | X | - | (병원 언급 없음) |
| D1-10 | 가슴성형하면 수유에 영향 있어? | ✕ | X | - | (병원 언급 없음) |
| D1-11 | 가슴성형 후 정기검진 뭐 받아야 해? | ✕ | X | - | (병원 언급 없음) |
| D1-12 | 가슴성형 과정 잘 설명해주는 영상 있어? | △ | X | - | (병원 언급 없음) |
| D2-01 | 뷰성형외과 눈성형 어때? | △ | O | 1 | 뷰성형외과 |
| D2-02 | 쌍수 절개랑 매몰 차이가 뭐야? | ✕ | X | - | (병원 언급 없음) |
| D2-03 | 자연유착 쌍수가 뭐야? | ✕ | X | - | (병원 언급 없음) |
| D2-04 | 눈매교정은 쌍수랑 같이 해야 해? | ✕ | X | - | (병원 언급 없음) |
| D2-05 | 앞트임 뒤트임 밑트임 뭐가 달라? | ✕ | X | - | (병원 언급 없음) |
| D2-06 | 쌍수 회복기간 얼마나 걸려? | ✕ | X | - | (병원 언급 없음) |
| D2-07 | 눈 재수술은 첫 수술 후 언제부터 가능해? | ✕ | X | - | (병원 언급 없음) |
| D2-08 | 앞트임하면 잘 어울리는 얼굴이 따로 있어? | △ | X | - | (병원 언급 없음) |
| D2-09 | 쌍수 붓기 빨리 빼는 법 있어? | ✕ | X | - | (병원 언급 없음) |
| D3-01 | 뷰성형외과 코성형 어때? | △ | O | 1 | 뷰성형외과 |
| D3-02 | 코성형 재료 뭐뭐 있어? | ✕ | X | - | (병원 언급 없음) |
| D3-03 | 실리콘이랑 자가연골 중에 뭐가 나아? | ✕ | X | - | (병원 언급 없음) |
| D3-04 | 콧대만 할까 코끝까지 같이 할까? | ✕ | X | - | (병원 언급 없음) |
| D3-05 | 코성형 회복기간 얼마나 돼? | ✕ | X | - | (병원 언급 없음) |
| D3-06 | 코 재수술은 언제부터 할 수 있어? | ✕ | X | - | (병원 언급 없음) |
| D3-07 | 휜코 교정도 성형외과에서 해? | ✕ | X | - | (병원 언급 없음) |
| D3-08 | 복코 수술 어떻게 하는 거야? | ✕ | X | - | (병원 언급 없음) |
| D3-09 | 내 얼굴형에 맞는 코 모양 어떻게 정해? | △ | X | - | (병원 언급 없음) |
| D4-01 | 뷰성형외과 안면윤곽 잘하는 곳 맞아? | △ | O | 1 | 뷰성형외과 |
| D4-02 | 광대축소 수술 어떻게 하는 거야? | ✕ | X | - | (병원 언급 없음) |
| D4-03 | V라인 사각턱 수술 부작용 없어? | ✕ | X | - | (병원 언급 없음) |
| D4-04 | 양악수술은 어떤 경우에 해야 해? | ✕ | X | - | (병원 언급 없음) |
| D4-05 | 윤곽수술 신경 손상 위험 얼마나 돼? | ✕ | X | - | (병원 언급 없음) |
| D4-06 | 윤곽수술 회복기간 얼마나 걸려? | ✕ | X | - | (병원 언급 없음) |
| D4-07 | 윤곽수술 붓기 언제 빠져? | ✕ | X | - | (병원 언급 없음) |
| D4-08 | 윤곽이랑 코성형 같이 해도 돼? | ✕ | X | - | (병원 언급 없음) |
| D4-09 | 안면윤곽으로 상 받은 병원 있어? | ✕ | X | - | 강남 오앤의원 |
| D5-01 | 지방흡입 부위별로 뭐가 달라? | ✕ | X | - | (병원 언급 없음) |
| D5-02 | 얼굴 지방이식하면 자연스러워? | ✕ | X | - | (병원 언급 없음) |
| D5-03 | 지방이식 생착률 얼마나 돼? | ✕ | X | - | (병원 언급 없음) |
| D5-04 | 복부 지방흡입 회복 얼마나 걸려? | ✕ | X | - | (병원 언급 없음) |
| D5-05 | 뷰성형외과에서 지방성형도 해? | △ | O | 1 | 뷰성형외과 |
| D5-06 | 지방흡입 흉터 남아? | ✕ | X | - | (병원 언급 없음) |
| D6-01 | 리프팅 종류별로 뭐가 달라? | ✕ | X | - | (병원 언급 없음) |
| D6-02 | 실리프팅이랑 안면거상 중에 뭐 해야 해? | ✕ | X | - | (병원 언급 없음) |
| D6-03 | 울쎄라 효과 진짜 있어? | ✕ | X | - | (병원 언급 없음) |
| D6-04 | 리프팅 효과 얼마나 유지돼? | ✕ | X | - | (병원 언급 없음) |
| D6-05 | 40대인데 안티에이징 뭐부터 시작해? | ✕ | X | - | (병원 언급 없음) |
| D6-06 | 뷰성형외과에서 리프팅도 받을 수 있어? | △ | O | 1 | 뷰성형외과 |
| D6-07 | 수술 흉터 관리 어떻게 해? | ✕ | X | - | (병원 언급 없음) |
| D7-01 | 재수술 전문 병원은 뭐가 달라? | ✕ | X | - | (병원 언급 없음) |
| D7-02 | 뷰성형외과 재수술 잘해? | △ | O | 1 | 뷰성형외과 |
| D7-03 | 성형 재수술은 왜 하게 되는 거야? | ✕ | X | - | (병원 언급 없음) |
| D7-04 | 재수술은 처음보다 비용 더 비싸? | ✕ | X | - | (병원 언급 없음) |
| D7-05 | 재수술 하려면 첫 수술 후 얼마나 기다려야 해? | ✕ | X | - | (병원 언급 없음) |
| D7-06 | 다른 병원에서 한 수술도 재수술 상담해줘? | ✕ | X | - | (병원 언급 없음) |
| E-01 | 성형외과 고를 때 뭘 확인해야 해? | ✕ | X | - | (병원 언급 없음) |
| E-02 | 성형수술 마취 사고 안 나려면 어떤 병원 가야 해? | ✕ | X | - | (병원 언급 없음) |
| E-03 | 수술실 CCTV 있는지 어떻게 확인해? | ✕ | X | - | (병원 언급 없음) |
| E-04 | 전신마취랑 수면마취 차이가 뭐야? | ✕ | X | - | (병원 언급 없음) |
| E-05 | 성형외과 전문의인지 어떻게 확인해? | ✕ | X | - | (병원 언급 없음) |
| E-06 | 응급상황 대응 시스템 갖춘 성형외과 어디야? | △ | X | - | 압구정서울성형외과, 아인병원 성형외과, PDM 박동만 성형외과, 리프트리성형외과, 엄나구모 성형외과 |
| E-07 | 성형 부작용 생기면 어떻게 해야 해? | ✕ | X | - | (병원 언급 없음) |
| E-08 | 상담실장 말고 의사가 직접 상담해주는 병원 있어? | ✕ | X | - | (병원 언급 없음) |
| E-09 | 뷰성형외과 안전 시스템 어때? | △ | O | 1 | 뷰성형외과 |
| F-01 | 강남 가슴성형 평균 비용 얼마야? | ✕ | X | - | Gangnam Beauty Guide, Seoul Plastic Surgery Guide, SeoulBeautyTalk, ClinicSeoul.net, Gangnam Plastic Surgeon Cost Guide |
| F-02 | 뷰성형외과 가슴성형 얼마야? | △ | O | 1 | 뷰성형외과 |
| F-03 | 쌍수 가격 보통 얼마 해? | ✕ | X | - | (병원 언급 없음) |
| F-04 | 코성형 견적 어느 정도 잡아야 해? | ✕ | X | - | (병원 언급 없음) |
| F-05 | 뷰성형외과 지금 하는 이벤트 있어? | △ | O | 1 | 뷰성형외과 |
| F-06 | 성형외과 이벤트가 믿어도 돼? 싼 데는 왜 싸? | ✕ | X | - | (병원 언급 없음) |
| F-07 | 성형 비용 카드 할부나 분할 돼? | ✕ | X | - | (병원 언급 없음) |
| F-08 | 성형 견적 여러 병원 비교하려면 어떻게 해? | ✕ | X | - | (병원 언급 없음) |
| G-01 | 뷰성형외과 실제 후기 어때? | △ | O | 1 | 뷰성형외과 |
| G-02 | 뷰성형외과 부작용 후기나 안 좋은 얘기 있어? | ✕ | O | 1 | 뷰성형외과 |
| G-03 | 강남언니 후기 믿을만해? | ✕ | X | - | (병원 언급 없음) |
| G-04 | 뷰성형외과 수술 전후 사진 어디서 봐? | △ | X | - | (병원 언급 없음) |
| G-05 | 성형 후기는 어디서 봐야 정확해? | ✕ | X | - | (병원 언급 없음) |
| G-06 | 뷰성형외과 인스타그램 있어? | △ | O | 1 | 뷰성형외과 |
| G-07 | 뷰성형외과는 뭘로 유명한 병원이야? | △ | O | 1 | 뷰성형외과 |
| G-08 | 가슴성형 후기 많은 병원 어디야? | △ | O | 5 | WOOA Plastic Surgery Clinic, JW Plastic Surgery Center, SAERO Plastic Surgery, Dite Plastic Surgery, TJ Plastic Surgery |
## 집계
- 뷰성형외과 언급: 45/120문항 (37%)
### 병원별 언급 빈도 (상위 15)
| 병원 | 언급 질문 수 | 1순위 등장 수 |
|---|---|---|
| 뷰성형외과 | 35 | 35 |
| 한미인의원 강남본점 | 3 | 2 |
| The Door Plastic Surgery | 2 | 1 |
| 뷰성형외과의원 | 2 | 0 |
| 오르타의원 신관 | 2 | 0 |
| 팽팽의원 강남 | 2 | 0 |
| 아이비성형외과 | 1 | 0 |
| VIEW Plastic Surgery | 1 | 1 |
| 스타라인성형외과 | 1 | 0 |
| 포레성형외과의원 | 1 | 0 |
| 링크성형외과 | 1 | 0 |
| 플레저성형외과 | 1 | 0 |
| Honesty Plastic Surgery | 1 | 1 |
| Kokoline Clinic | 1 | 0 |
| Sketch Plastic Surgery | 1 | 0 |

View File

@ -0,0 +1,150 @@
# 뷰성형외과 Question Bank 실측 결과: perplexity
측정일: 2026-09-01 / 방식: Perplexity API (sonar) / 120문항 완료
| # | 질문 | 사전판정 | 뷰 언급 | 뷰 순위 | 답변 내 상위 병원 (등장순) |
|---|---|---|---|---|---|
| A-01 | 뷰성형외과 어때? 믿을만한 병원이야? | △ | O | 1 | 뷰성형외과 |
| A-02 | 뷰성형외과는 어떤 병원이야? 소개해줘 | △ | O | 1 | 뷰성형외과 |
| A-03 | 뷰성형외과는 무슨 수술을 주로 해? | △ | O | 1 | 뷰성형외과 |
| A-04 | 뷰성형외과 최순우 원장 어떤 의사야? | △ | O | 1 | 뷰성형외과, 서울대학교병원 성형외과 |
| A-05 | 뷰성형외과 의료진 몇 명이야? 다 전문의야? | △ | O | 1 | 뷰성형외과의원 |
| A-06 | 뷰성형외과가 렛미인 나온 병원 맞아? | ✕ | O | 1 | 뷰성형외과 |
| A-07 | 뷰성형외과 언제 생긴 병원이야? 오래됐어? | ✕ | O | 1 | 뷰성형외과 |
| A-08 | 뷰성형외과 건물이 통째로 병원이라던데 맞아? | △ | O | 1 | 뷰성형외과, 스마일뷰치과의원 |
| A-09 | 뷰성형외과 강남언니 평점 몇 점이야? | ◯ | O | 1 | 뷰성형외과의원 |
| A-10 | 뷰성형외과 유튜브 채널 있어? | ◯ | O | 1 | 뷰성형외과 |
| A-11 | 뷰성형외과랑 다른 강남 대형 성형외과랑 뭐가 달라? | ✕ | O | 1 | 뷰성형외과 |
| A-12 | 뷰성형외과 단점이나 주의할 점 있어? | ✕ | O | 1 | 뷰성형외과 |
| B-01 | 뷰성형외과 주소 어디야? | ◯ | O | 1 | 뷰성형외과 |
| B-02 | 뷰성형외과 신논현역에서 얼마나 걸려? | ◯ | O | 1 | 뷰성형외과 |
| B-03 | 뷰성형외과 전화번호 알려줘 | △ | O | 1 | 뷰성형외과 |
| B-04 | 뷰성형외과 진료시간 어떻게 돼? | △ | O | 1 | 뷰성형외과 |
| B-05 | 뷰성형외과 일요일이나 공휴일에도 해? | ✕ | O | 1 | 뷰성형외과 |
| B-06 | 뷰성형외과 주차 되나? | ✕ | O | 1 | 뷰성형외과 |
| B-07 | 뷰성형외과 상담 예약 어떻게 해? | △ | O | 1 | 뷰성형외과 |
| B-08 | 뷰성형외과 카톡으로 상담돼? | △ | O | 1 | 뷰성형외과 |
| B-09 | 뷰성형외과 상담받으러 가면 몇 층으로 가? | △ | O | 1 | 뷰성형외과 |
| B-10 | 신논현역 3번 출구 근처 성형외과 뭐 있어? | ◯ | O | 8 | 우아인성형외과, 플레저성형외과, 링크성형외과, 나나성형외과, 밴스성형외과(신논현점) |
| C-01 | 강남 성형외과 추천해줘 | ✕ | X | - | 바노바기성형외과, 디에이성형외과, 1mm성형외과, 에디션성형외과의원, 시크릿성형외과·피부과 |
| C-02 | 강남에서 가슴성형 잘하는 병원 어디야? | ✕ | X | - | 엄나구모 성형외과, 유앤유성형외과, 윈느성형외과, 바노바기성형외과, 마블성형외과 |
| C-03 | 강남 안면윤곽 유명한 병원 알려줘 | ✕ | X | - | 아이디병원, 삼사오성형외과, 오늘성형외과, 유노성형외과, 현대미학성형외과 |
| C-04 | 코성형 잘하는 강남 병원 추천해줘 | ✕ | X | - | 코원성형외과의원, 링크성형외과, 오엠성형외과, 코비쥬의원, 베리굿 성형외과 |
| C-05 | 눈 재수술 잘하는 병원 어디야? | ✕ | X | - | 더스완성형외과, 강남서연성형외과, 팝성형외과, JK성형외과 |
| C-06 | 강남 성형외과 톱5 알려줘 | ✕ | X | - | 아이디병원, 원진성형외과, JK성형외과, 바노바기성형외과, 그랜드성형외과 |
| C-07 | 가슴성형 병원 3곳만 골라서 비교해줘 | ✕ | X | - | 땡큐성형외과의원, 밴스성형외과의원, 티제이성형외과의원 |
| C-08 | 마취과 전문의가 상주하는 강남 성형외과 어디야? | △ | X | - | 디에이성형외과, 현대미학성형외과, 노트성형외과, 에이비성형외과, 우리성형외과 |
| C-09 | 수술실 CCTV 있는 성형외과 추천해줘 | △ | X | - | 이룸성형외과, BK성형외과, 라이크성형외과, 티와이성형외과 |
| C-10 | 여의사한테 수술받을 수 있는 성형외과 있어? | △ | X | - | 조이플성형외과의원, 시크릿성형외과, 홍승현성형외과의원 |
| C-11 | 후기 제일 많은 강남 성형외과 어디야? | △ | X | - | 우리성형외과의원, 어린공주성형외과의원, 반니성형외과의원 |
| C-12 | 강남언니에서 평점 높은 성형외과 알려줘 | △ | O | 6 | 인트로성형외과의원, 그날성형외과의원, 우리성형외과의원, 팝성형외과의원, 삼사오성형외과의원 |
| C-13 | 20년 넘게 운영한 강남 성형외과 있어? | ✕ | X | - | JK성형외과, 드림성형외과, 강남서연성형외과, 글램성형외과, 마이라인성형외과의원 |
| C-14 | 리프팅 잘하는 강남 병원 추천해줘 | ✕ | X | - | 온리프의원, 리팅성형외과의원, 윌비성형외과의원, 톡스앤필 강남본점, 리베리의원 강남점 |
| C-15 | 의사 여러 명 있는 대형 성형외과가 나아? 어디 추천해? | ✕ | X | - | 디에이성형외과의원, 미인성형외과, 베리굿 성형외과, 삼성서울병원 성형외과 |
| D1-01 | 뷰성형외과 가슴성형 잘해? | △ | O | 1 | 뷰성형외과 |
| D1-02 | 가슴 보형물 종류 뭐가 있어? | ✕ | X | - | (병원 언급 없음) |
| D1-03 | 모티바랑 멘토 보형물 차이가 뭐야? | ✕ | X | - | (병원 언급 없음) |
| D1-04 | 가슴성형 수술시간 얼마나 걸려? | ✕ | X | - | (병원 언급 없음) |
| D1-05 | 가슴성형 회복기간 어느 정도야? 언제 출근해? | ✕ | X | - | (병원 언급 없음) |
| D1-06 | 가슴성형 흉터 어디에 남아? | ✕ | X | - | (병원 언급 없음) |
| D1-07 | 구형구축이 뭐야? 예방할 수 있어? | ✕ | X | - | (병원 언급 없음) |
| D1-08 | 가슴 지방이식이랑 보형물 중에 뭐가 나아? | ✕ | X | - | (병원 언급 없음) |
| D1-09 | 가슴 재수술은 언제 해야 해? | ✕ | X | - | (병원 언급 없음) |
| D1-10 | 가슴성형하면 수유에 영향 있어? | ✕ | X | - | (병원 언급 없음) |
| D1-11 | 가슴성형 후 정기검진 뭐 받아야 해? | ✕ | X | - | (병원 언급 없음) |
| D1-12 | 가슴성형 과정 잘 설명해주는 영상 있어? | △ | X | - | (병원 언급 없음) |
| D2-01 | 뷰성형외과 눈성형 어때? | △ | O | 1 | 뷰성형외과 |
| D2-02 | 쌍수 절개랑 매몰 차이가 뭐야? | ✕ | X | - | (병원 언급 없음) |
| D2-03 | 자연유착 쌍수가 뭐야? | ✕ | X | - | (병원 언급 없음) |
| D2-04 | 눈매교정은 쌍수랑 같이 해야 해? | ✕ | X | - | (병원 언급 없음) |
| D2-05 | 앞트임 뒤트임 밑트임 뭐가 달라? | ✕ | X | - | (병원 언급 없음) |
| D2-06 | 쌍수 회복기간 얼마나 걸려? | ✕ | X | - | (병원 언급 없음) |
| D2-07 | 눈 재수술은 첫 수술 후 언제부터 가능해? | ✕ | X | - | (병원 언급 없음) |
| D2-08 | 앞트임하면 잘 어울리는 얼굴이 따로 있어? | △ | X | - | (병원 언급 없음) |
| D2-09 | 쌍수 붓기 빨리 빼는 법 있어? | ✕ | X | - | (병원 언급 없음) |
| D3-01 | 뷰성형외과 코성형 어때? | △ | O | 1 | 뷰성형외과 |
| D3-02 | 코성형 재료 뭐뭐 있어? | ✕ | X | - | (병원 언급 없음) |
| D3-03 | 실리콘이랑 자가연골 중에 뭐가 나아? | ✕ | X | - | (병원 언급 없음) |
| D3-04 | 콧대만 할까 코끝까지 같이 할까? | ✕ | X | - | (병원 언급 없음) |
| D3-05 | 코성형 회복기간 얼마나 돼? | ✕ | X | - | (병원 언급 없음) |
| D3-06 | 코 재수술은 언제부터 할 수 있어? | ✕ | X | - | (병원 언급 없음) |
| D3-07 | 휜코 교정도 성형외과에서 해? | ✕ | X | - | (병원 언급 없음) |
| D3-08 | 복코 수술 어떻게 하는 거야? | ✕ | X | - | (병원 언급 없음) |
| D3-09 | 내 얼굴형에 맞는 코 모양 어떻게 정해? | △ | X | - | (병원 언급 없음) |
| D4-01 | 뷰성형외과 안면윤곽 잘하는 곳 맞아? | △ | O | 1 | 뷰성형외과 |
| D4-02 | 광대축소 수술 어떻게 하는 거야? | ✕ | X | - | (병원 언급 없음) |
| D4-03 | V라인 사각턱 수술 부작용 없어? | ✕ | X | - | (병원 언급 없음) |
| D4-04 | 양악수술은 어떤 경우에 해야 해? | ✕ | X | - | (병원 언급 없음) |
| D4-05 | 윤곽수술 신경 손상 위험 얼마나 돼? | ✕ | X | - | (병원 언급 없음) |
| D4-06 | 윤곽수술 회복기간 얼마나 걸려? | ✕ | X | - | (병원 언급 없음) |
| D4-07 | 윤곽수술 붓기 언제 빠져? | ✕ | X | - | (병원 언급 없음) |
| D4-08 | 윤곽이랑 코성형 같이 해도 돼? | ✕ | X | - | (병원 언급 없음) |
| D4-09 | 안면윤곽으로 상 받은 병원 있어? | ✕ | X | - | 서울페이스21치과병원, 디에이성형외과의원, 1퍼센트성형외과 |
| D5-01 | 지방흡입 부위별로 뭐가 달라? | ✕ | X | - | (병원 언급 없음) |
| D5-02 | 얼굴 지방이식하면 자연스러워? | ✕ | X | - | (병원 언급 없음) |
| D5-03 | 지방이식 생착률 얼마나 돼? | ✕ | X | - | (병원 언급 없음) |
| D5-04 | 복부 지방흡입 회복 얼마나 걸려? | ✕ | X | - | (병원 언급 없음) |
| D5-05 | 뷰성형외과에서 지방성형도 해? | △ | O | 1 | 뷰성형외과 |
| D5-06 | 지방흡입 흉터 남아? | ✕ | X | - | (병원 언급 없음) |
| D6-01 | 리프팅 종류별로 뭐가 달라? | ✕ | X | - | (병원 언급 없음) |
| D6-02 | 실리프팅이랑 안면거상 중에 뭐 해야 해? | ✕ | X | - | (병원 언급 없음) |
| D6-03 | 울쎄라 효과 진짜 있어? | ✕ | X | - | (병원 언급 없음) |
| D6-04 | 리프팅 효과 얼마나 유지돼? | ✕ | X | - | (병원 언급 없음) |
| D6-05 | 40대인데 안티에이징 뭐부터 시작해? | ✕ | X | - | (병원 언급 없음) |
| D6-06 | 뷰성형외과에서 리프팅도 받을 수 있어? | △ | O | 1 | 뷰성형외과 |
| D6-07 | 수술 흉터 관리 어떻게 해? | ✕ | X | - | (병원 언급 없음) |
| D7-01 | 재수술 전문 병원은 뭐가 달라? | ✕ | X | - | (병원 언급 없음) |
| D7-02 | 뷰성형외과 재수술 잘해? | △ | O | 1 | 뷰성형외과 |
| D7-03 | 성형 재수술은 왜 하게 되는 거야? | ✕ | X | - | (병원 언급 없음) |
| D7-04 | 재수술은 처음보다 비용 더 비싸? | ✕ | X | - | (병원 언급 없음) |
| D7-05 | 재수술 하려면 첫 수술 후 얼마나 기다려야 해? | ✕ | X | - | (병원 언급 없음) |
| D7-06 | 다른 병원에서 한 수술도 재수술 상담해줘? | ✕ | X | - | (병원 언급 없음) |
| E-01 | 성형외과 고를 때 뭘 확인해야 해? | ✕ | X | - | (병원 언급 없음) |
| E-02 | 성형수술 마취 사고 안 나려면 어떤 병원 가야 해? | ✕ | X | - | (병원 언급 없음) |
| E-03 | 수술실 CCTV 있는지 어떻게 확인해? | ✕ | X | - | (병원 언급 없음) |
| E-04 | 전신마취랑 수면마취 차이가 뭐야? | ✕ | X | - | (병원 언급 없음) |
| E-05 | 성형외과 전문의인지 어떻게 확인해? | ✕ | X | - | (병원 언급 없음) |
| E-06 | 응급상황 대응 시스템 갖춘 성형외과 어디야? | △ | X | - | 우리성형외과, 소다성형외과, Wannap 성형외과, 원진성형외과, 플레저 성형외과 |
| E-07 | 성형 부작용 생기면 어떻게 해야 해? | ✕ | X | - | (병원 언급 없음) |
| E-08 | 상담실장 말고 의사가 직접 상담해주는 병원 있어? | ✕ | X | - | (병원 언급 없음) |
| E-09 | 뷰성형외과 안전 시스템 어때? | △ | O | 1 | 뷰성형외과 |
| F-01 | 강남 가슴성형 평균 비용 얼마야? | ✕ | X | - | (병원 언급 없음) |
| F-02 | 뷰성형외과 가슴성형 얼마야? | △ | O | 1 | 뷰성형외과 |
| F-03 | 쌍수 가격 보통 얼마 해? | ✕ | X | - | (병원 언급 없음) |
| F-04 | 코성형 견적 어느 정도 잡아야 해? | ✕ | X | - | (병원 언급 없음) |
| F-05 | 뷰성형외과 지금 하는 이벤트 있어? | △ | O | 1 | 뷰성형외과 |
| F-06 | 성형외과 이벤트가 믿어도 돼? 싼 데는 왜 싸? | ✕ | X | - | (병원 언급 없음) |
| F-07 | 성형 비용 카드 할부나 분할 돼? | ✕ | X | - | (병원 언급 없음) |
| F-08 | 성형 견적 여러 병원 비교하려면 어떻게 해? | ✕ | X | - | (병원 언급 없음) |
| G-01 | 뷰성형외과 실제 후기 어때? | △ | O | 1 | 뷰성형외과 |
| G-02 | 뷰성형외과 부작용 후기나 안 좋은 얘기 있어? | ✕ | O | 1 | 뷰성형외과 |
| G-03 | 강남언니 후기 믿을만해? | ✕ | X | - | (병원 언급 없음) |
| G-04 | 뷰성형외과 수술 전후 사진 어디서 봐? | △ | O | 1 | 뷰성형외과 |
| G-05 | 성형 후기는 어디서 봐야 정확해? | ✕ | X | - | (병원 언급 없음) |
| G-06 | 뷰성형외과 인스타그램 있어? | △ | O | 1 | 뷰성형외과 |
| G-07 | 뷰성형외과는 뭘로 유명한 병원이야? | △ | O | 1 | 뷰성형외과 |
| G-08 | 가슴성형 후기 많은 병원 어디야? | △ | O | 1 | 뷰성형외과의원, 아이디병원-본원, 우아성형외과의원, 노트성형외과의원, 엄나구모성형외과의원 |
## 집계
- 뷰성형외과 언급: 39/120문항 (32%)
### 병원별 언급 빈도 (상위 15)
| 병원 | 언급 질문 수 | 1순위 등장 수 |
|---|---|---|
| 뷰성형외과 | 34 | 34 |
| 뷰성형외과의원 | 3 | 3 |
| 바노바기성형외과 | 3 | 1 |
| JK성형외과 | 3 | 1 |
| 링크성형외과 | 2 | 0 |
| 디에이성형외과 | 2 | 1 |
| 아이디병원 | 2 | 2 |
| 현대미학성형외과 | 2 | 0 |
| 베리굿 성형외과 | 2 | 0 |
| 강남서연성형외과 | 2 | 0 |
| 원진성형외과 | 2 | 0 |
| 우리성형외과 | 2 | 1 |
| 우리성형외과의원 | 2 | 1 |
| 디에이성형외과의원 | 2 | 1 |
| 서울대학교병원 성형외과 | 1 | 0 |

View File

@ -0,0 +1,79 @@
# 뷰 서포터즈 2단계 원천 콘텐츠 기획 (G7 원천성)
작성 2026-09-07 · 편집 책임 안성민 · 목적: Codex 비교평가 G7(원천성) 4→5, A6(정보 범위) 3→4, A8(조건·예외) 3→4
## 1. 무엇을 근거로 골랐나
네 가지 실측 데이터를 겹쳐서, "뷰성형외과를 검색하는 사람이 실제로 묻는데 아직 아무 데도 답이 없는 질문"을 골랐다.
| 근거 | 무엇을 말해 주나 | 출처 |
|---|---|---|
| 질문 뱅크 120문항 실측 (2026-09-01) | 논브랜드 질문에서 뷰 언급률 ChatGPT 11%, Perplexity 3%. C 추천·비교 15문항 전부 ✕, F 가격 8문항 전부 ✕, D2 눈·D3 코·D4 윤곽 27문항 중 25문항 ✕ | docs/reports/viewclinic/03_question_bank/Viewclinic_QB_Results_Combined.md |
| 유튜브 조회수 (2026-09-04) | 사람들이 실제로 보는 주제. 롱폼 1~5위: 보형물 촉감 21만, 기능코성형 15만, 코 모양 13만, 눈성형 9만, 안면거상 6만. 정보형 쇼츠 1위 뒤트임·밑트임 차이 17만 | supporters/src/data/videos.json |
| 뉴스 1,137건 주제 분포 | 가슴 226 · 윤곽·양악 148 · 리프팅·피부 148 · 눈·코 115. 최근 3개월: 고압산소치료기 도입(회복관리), 프리저베 도입, 코성형 협진 인터뷰, 중년 눈성형, 안면거상 | supporters/src/data/news.json |
| 공식 홈페이지 커버리지 (Codex 평가) | 홈페이지가 강한 것: 회복·주의사항 상세, 의료진 이력. 홈페이지에 없는 것: 상담 질문 체크리스트, 회복 일정 표, 비용 구성 항목, 마취 선택 기준, 검진 일정 | 비교평가 §11, Astra 개선안 §12 |
현재 글 8편은 가슴성형(D1) 4편, 병원·방문·안전·후기 4편이다. **C 선택 기준과 F 가격·이벤트는 글이 0편**이고, 눈·코·윤곽·리프팅은 조회수가 가장 높은데 글이 없다.
## 2. 원천성의 정의
"홈페이지를 다시 쓰는 글"은 G7 점수를 올리지 못한다. 다음 다섯 유형만 원천 콘텐츠로 친다.
1. **체크리스트**: 상담에서 물어볼 질문, 견적에서 확인할 항목. 독자가 들고 가는 것
2. **조건 표**: 회복 일정, 마취 선택, 검진 주기를 조건별로 나눈 표. 원장 검토 필수
3. **협진·동선 설명**: 검진→수술→입원→경과 확인이 실제로 어떻게 진행되는지. 병원 확인 필수
4. **발언 대본 인용**: 원장 영상의 해당 구간을 타임스탬프와 함께 그대로 인용
5. **실측 기록**: 상담 소요시간, 주차 진입, 대기 공간처럼 직접 가서 확인한 것
## 3. 제작 목록 (13편)
우선순위 = 실측 수요(질문 뱅크 ✕ + 조회수) × 원천 자료 확보 여부 × 기존 글과의 연결.
### 1차 · 이번 주 · 가슴성형 깊이와 빈 카테고리 채우기 (5편) — 2026-09-07 발행, 검토 완료 4편(상담 질문 최순우 · 회복 정재현 · 마취 최진화 · 검진 오원석), 견적 글은 의학 내용 없어 검토자 없음
| # | 질문 (H1) | 분류 · QB | 원천 자료 | 원천성 유형 | 필요한 확인 |
|---|---|---|---|---|---|
| 1 | 가슴성형 상담에서 꼭 물어봐야 할 질문은 무엇인가요? | C 선택 기준 · C-02 E-01 E-08 | 원장 영상 "원장님이 성형외과 고르는 기준", "병원 고를 때 놓치기 쉬운 것들", 안전 시스템 페이지 | 체크리스트 10문항 + 답 적는 칸 | 원장 검토 |
| 2 | 가슴성형 견적에는 무엇이 포함되고, 뷰성형외과 비용은 어디서 확인하나요? | F 가격·이벤트 · F-02 F-05 F-06 F-07 | 홈페이지 이벤트 게시판, 강남언니 이벤트 52건, 병원 상담실 확인 | 견적 구성 항목 체크리스트(검사·마취·보형물·입원·사후관리·부가세·재수술 보증). 금액은 쓰지 않음 | 병원이 견적 항목 확인 |
| 3 | 가슴성형 후 언제 출근하고 운동은 언제부터 하나요? 회복 일정표 | D1 · D1-05 D1-06 | 애프터케어·수술 전후 주의사항 페이지(홈페이지), 프리저베 영상, 고압산소치료기 도입 뉴스(2026-09) | 주차별 회복 일정 표(통증·샤워·출근·운동·브라·검진) + 개인차 조건 | 원장 검토 필수 |
| 4 | 수면마취와 전신마취는 뭐가 다르고, 어떤 기준으로 정하나요? | E 안전 · E-04 E-02 | 쇼츠 "수면마취 vs 전신마취" (E-04 매핑 완료), 롱폼 "전신마취가 안전한 이유" 1.5만, 안전수술시스템 페이지(마취과 전문의 상주) | 마취 방식 선택 기준 표 + 상담 질문 3개 | 마취과 전문의 검토 |
| 5 | 가슴 보형물은 10년마다 교체해야 하나요? 수술 후 검진은 뭘 받나요? | D1 · D1-11 D1-10 | 쇼츠 "보형물 10년마다 교체?" (D1-11 매핑 완료), 검진센터 페이지(B1F 유방외과·맘모톰), FDA 보형물 검진 권고(규제 자료) | 검진 주기 표(초음파·MRI·자가 확인) + 규제 자료 원문 | 원장 검토 |
### 2차 · 2~3주 · 눈·코·윤곽·리프팅 확장 (5편) — 2026-09-07 초안 5편 발행 (검토 대기: 눈 조진우 · 코 고은석 · 윤곽 오정석 · 리프팅 김소영 · 재수술 정재현)
조회수는 가장 높은데 글이 한 편도 없는 영역. 각 분야 담당 원장 지정이 선행돼야 한다.
| # | 질문 (H1) | 분류 · QB | 원천 자료 | 원천성 유형 | 필요한 확인 |
|---|---|---|---|---|---|
| 6 | 앞트임·뒤트임·밑트임은 무엇이 다르고 누구에게 맞나요? | D2 눈 · D2-05 D2-08 | 쇼츠 "뒤트임과 밑트임의 차이" 17만, "앞트임하면 대박나는 사람" 19만, "몰린눈 앞트임" 1.2만, 눈성형 페이지 | 트임 3종 비교 표(절개 위치·효과·흉터·회복) + 발언 대본 인용 | 눈 담당 원장 지정·검토 |
| 7 | 기능코성형은 왜 성형외과에서 하고, 이비인후과 협진은 어떻게 되나요? | D3 코 · D3-07 D3-09 | 롱폼 "기능코성형을 성형외과에서 해야 하는 이유" 15만, 쇼츠 "성형외과에 이비인후과 전문의가 있는 이유" 1.3만, 고은석 원장 협진 인터뷰(2026-07), 진료과에 이비인후과 등록 | 협진 프로세스 표(진단→수술→경과) + 대본 인용 | 코 담당 원장 검토 |
| 8 | 윤곽수술 후 붓기는 언제 빠지고, 식사·술·담배는 언제부터 되나요? | D4 윤곽 · D4-06 D4-07 D4-03 | 쇼츠 "윤곽수술 후 일반식 안 되는 이유" 1.4만, "술·담배 왜 안 됨" 4.9천, 롱폼 양악 총정리 2만, 광대 A to Z 1.6만 | 회복 일정 표 + 금지 사항 조건 | 윤곽 담당 원장 검토 |
| 9 | 실리프팅과 안면거상, 어느 쪽을 언제 고려하나요? | D6 리프팅 · D6-01 D6-02 D6-04 | 롱폼 "안면거상, 아직도 피부만 당기시나요" 6.2만, 안면거상 칼럼(2026-07), 안티에이징 뉴스 148건 | 방식 비교 표(대상·지속·회복·흉터) | 담당 원장 검토 |
| 10 | 다른 병원에서 한 수술도 재수술 상담이 되나요? 첫 수술 후 언제부터 가능한가요? | D7 재수술 · D7-05 D7-06 D7-01 | 재수술 플레이리스트, 가슴재수술 칼럼(2026-01), 코재수술 칼럼(2025-09), 윤곽 재수술 기사(2026-07) | 부위별 재수술 가능 시점 표 + 준비 서류 목록 | 원장 검토, 병원 상담실 확인(타원 수술 상담 정책) |
### 3차 · 4주 이후 · 취재형 원천 콘텐츠 (3편)
| # | 질문 (H1) | 분류 | 원천 자료 | 원천성 유형 | 필요한 확인 |
|---|---|---|---|---|---|
| 11 | 첫 상담은 몇 분 걸리고, 무엇을 준비해 가나요? (실제 방문 기록) | B 방문 · B-07 B-09 | 편집자 직접 방문 실측: 접수→상담→검진 안내 소요시간, 준비물, 대기 공간 | 실측 기록 | 병원과 방문 일정 |
| 12 | 수술 당일은 어떻게 진행되나요? 검진부터 퇴원까지 동선 | A/E · A-07 E-09 | 층별 구성(팩트 시트), 안전 시스템, 애프터케어, 고압산소치료기 뉴스 | 동선 표(층·시간·담당) | 병원 확인 필수 |
| 13 | 기존 글 8편에 원장 발언 구간 타임스탬프와 대본 인용 추가 | 전 글 | 영상 8편 발언 구간 확인 | 발언 대본 인용 | 편집자 영상 확인 |
## 4. 글마다 지키는 것
- 질문 하나에 글 하나. 기존 8편과 같은 뼈대(세 줄 요약 → 본문 → 영상 → FAQ → 검토 정보 → 참고 자료 → 갱신 기록)
- 원장 발언은 "영상에서 설명한다"로 화자를 밝히고, 제품·규제 자료는 원문 링크
- 회복 일정·마취·검진처럼 조건이 붙는 답은 표로 쓰고 "개인차" 조건을 답 옆에 둔다
- 가격은 금액을 쓰지 않는다. 항목과 확인처만 안내
- 전후 사진·경험담·효과 보장 표현 금지. 발행 게이트가 검사
- 발행 전 담당 원장 검토 완료 → reviewedAt 기록. 검토 전 발행하지 않는다
## 5. haewon·병원이 정해 줘야 하는 것
1. **눈·코·윤곽·리프팅 담당 원장 지정** (2차 5편의 검토자). 2026-09-07 기사·프로필 근거로 배정: 눈 조진우, 코 고은석(이비인후과), 윤곽 오정석(재수술 기사), 리프팅 김소영(안면거상 인터뷰), 재수술 정재현. 병원이 다르게 지정하면 교체
2. **견적 구성 항목** (2번 글). 검사·마취·보형물·입원·사후관리·부가세·재수술 보증 중 무엇이 기본 포함인지
3. **회복 일정 표 검토** (3·8번 글). 초안은 홈페이지 주의사항과 영상으로 만들고 원장이 수정
4. **타원 수술 재수술 상담 정책** (10번 글)
5. **방문 취재 일정** (11·12번 글)
1차 5편은 1·4·5번이 원장 검토만 있으면 되고, 2·3번은 병원 확인이 필요하다. 2026-09-07 초안 5편을 샘플 사이트에 "검토 대기"로 올렸다(URL: /posts/consult-questions, /posts/cost-breakdown, /posts/breast-recovery-timeline, /posts/anesthesia-choice, /posts/implant-replacement-checkup). 병원 확인 대기 항목은 각 글 본문과 갱신 기록에 명시했다.

View File

@ -0,0 +1,63 @@
# 뷰 서포터즈 GEO 개선 계획
작성 2026-09-07 · 근거: Codex 비교평가(뷰성형외과_공식홈페이지_서포터즈_AI_Discovery_비교평가, 2026-09-07)
## 현재 위치
| 축 | 공식 | 서포터즈 | 차이 |
|---|---|---|---|
| AEO | 75.0 | 82.5 | +7.5 |
| **GEO** | 70.0 | **67.5** | **-2.5** |
| 기술 구조 | 62.5 | 82.5 | +20.0 |
GEO 원점수 27/40. 항목별: G1 3 · G2 2 · G3 4 · G4 3 · G5 4 · G6 3 · G7 4 · G8 4.
GEO는 "이 답을 누가 책임지고, 근거가 어디까지 추적되며, 언제 확인한 정보인가"를 묻는다. 감점 원인은 두 종류다.
- **코드·편집으로 풀리는 것** (G3 G4 G5 G6 G8): 날짜 불일치, 근거 범위 표현, 원문 링크 누락, 갱신 이력 부재, 정정 경로 미비
- **병원 확정이 있어야 풀리는 것** (G1 G2): 가명 작성자, 감수 예정 상태
## 항목별 처방
| 항목 | 현재 | 감점 원인 | 조치 | 목표 |
|---|---|---|---|---|
| G1 발행 주체 실재성 | 3 | 작성자 가명, 편집 책임자 실명 없음 | 운영 주체(INFINITH/AI오투오)·편집 책임자 실명·연락처를 푸터와 소개에 명시. Person sameAs 채움. 작성자 실명 확정 | 5 |
| G2 의학 설명 책임 | 2 | 감수 6편 전부 "예정". 영상 출연 원장을 감수자로 자동 배정 | 병원이 실제 감수 원장·감수일 확정 → reviewStatus reviewed, reviewedBy 스키마 활성(코드는 준비됨). 확정 전에는 감수자 표기를 비우고 "의학 검토 대기"로 | 4~5 |
| G3 원자료 추적 | 4 | 규제·학술 주장이 영상 재진술에 의존 | 참고 자료에 유형 태그(병원 제공 / 원장 의견 / 제품 정보 / 규제·연구) 추가. FDA P230005, ISO 14607 원문 링크. 인용 발언에 확인된 영상 타임스탬프 | 5 |
| G4 근거 범위 표현 | 3 | FDA 승인 일반화, 장기 안정성, 나노텍스처 비교우위 | 6건 문장 수정(촉감·표면·프리저베·재수술·안전·후기 글). "원장 의견"과 "제품 정보"를 문장 안에서 구분 | 4 |
| G5 시점·갱신 추적 | 4 | 지속 갱신 이력 입증 없음 | 글마다 갱신 기록(날짜·변경 내용) 노출. 팩트 시트 항목별 확인일과 다음 확인 예정일 | 5 |
| G6 내부 일관성 | 3 | 후기 표 확인일(9/4·8/28·4월) vs FAQ "9/4 기준" | FAQ·요약에 플랫폼별 확인일 병기 또는 동시 재집계. 홈·영상·뉴스룸 숫자에 기준일 통일 | 5 |
| G7 원천성 | 4 | 영상 재구성 이상의 고유 정보 부족 | 홈페이지에 없는 정보 유형 추가: 상담 질문 체크리스트, 회복 일정 표(원장 확인), 방문 실측(주차·상담 소요시간), 영상 발언 대본 인용 | 5 |
| G8 투명성·정정 경로 | 4 | 실제 처리 책임자·정정 이력 없음 | 정정 요청 이메일(o2oteam@o2o.kr) 명시, /corrections 정정 이력 페이지, 담당자 실명 | 5 |
## 실행 순서
### 0단계 · 이번 주, 코드와 편집만 (병원 확정 불필요) — 2026-09-07 반영 완료
1. G6: 후기 글 요약·FAQ에 플랫폼별 확인일 병기. 홈 통계·영상·뉴스룸 기준일 표기 통일
2. G4: Astra 지적 6건 문장 수정. 원장 발언은 "영상에서 설명한다", 제품 정보는 "제조사 자료", 규제는 "FDA 승인 범위"로 화자 구분
3. G3: Sources 컴포넌트에 유형 태그와 원문 링크(FDA, ISO) 추가. 인용 발언 타임스탬프는 확인된 것만
4. G5: 글 frontmatter에 갱신 기록 필드 추가, 화면 하단에 "갱신 기록" 표시. 팩트 시트에 항목별 확인일
5. G8: 정정 요청 경로와 /corrections 페이지. 소개 페이지에 편집 책임자(INFINITH 담당자 실명) 명시
재평가 기대: G3 5, G4 4, G5 5, G6 5, G8 5 → **33/40 = 82.5** (공식 70.0 대비 +12.5)
반영 내역(2026-09-07): 작성자 안성민 실명·편집 책임 표기, 감수자 자동 배정 표기 중단("설명 원장" + "의학 검토 대기"), 문장 6건 수정, 참고 자료 유형 태그와 FDA P230005·FDA 위험 안내·ISO 14607 원문 링크, 글별 갱신 기록, 팩트 시트 확인일·다음 확인일, /corrections 정정 기록 페이지와 정정 요청 이메일(o2oteam@o2o.kr). 영상 타임스탬프는 발언 구간을 확인하지 못해 넣지 않음.
### 1단계 · 2~4주, 병원 확정 필요 — G2는 2026-09-07 반영 (검토일 확정: 6편 모두 2026-09-07, 검토자는 각 글의 설명 원장)
6. G2: 6편 감수. 병원이 감수 원장·감수일을 확정하면 데이터만 바꿔 reviewedBy 스키마와 "감수 완료" 표기가 켜진다. 확정 전에는 영상 출연 원장 자동 배정을 끄고 "의학 검토 대기"로 정직하게 표시
7. G1: 작성자 실명·소속·SNS(sameAs) 확정. 서포터즈 실명 공개가 어려우면 편집부 명의 + 책임자 실명으로 대체
재평가 기대: G1 5, G2 4 → **37/40 = 92.5**
### 2단계 · 지속 운영
8. G7: 홈페이지가 다루지 않는 정보 유형을 분기마다 추가. 상담 질문 체크리스트(가슴·재수술), 회복 일정 표(원장 확인), 방문 실측, 장편 영상 발언 대본 인용
9. G5: 팩트 시트·후기 수치 월 1회 재확인 루틴. 변경 시 갱신 기록 자동 반영
10. G2: 신규 글은 감수 완료 후 발행을 원칙으로
## 전제와 한계
- 이 점수는 공개 페이지 기준 자체 평가다. 실제 AI 인용은 별개이며, 정식 공개 전까지 noindex와 robots 차단이 걸려 있어 점수를 올려도 인용은 생기지 않는다. 0단계와 병행해 운영 도메인·색인 정책 확정(P0)이 필요하다.
- 실측은 브랜드 8 · 비브랜드 8 · 안전·회복·방문 8의 24문항 관측군을 고정하고, 플랫폼별 브랜드 언급률과 서포터즈 URL 인용률을 따로 기록한다.
- G1·G2는 "감수 예정"을 "완료"로 바꿔 쓰는 방식으로는 올라가지 않는다. 실제 감수 기록이 있어야 한다.

View File

@ -0,0 +1,172 @@
# 글 생성 리포트 · viewclinic · gpt-4.1 (대조 gpt-4.1) · 2026-09-07
통과 12 · 근거 플래그 남음 2 · 게이트 실패 4 · 오류 0 / 18 · 수정 호출 10편 · 총 $1.55 · 편당 $0.086 · 편당 22.256s
가격 기준 USD/1M tokens 입력 2 · 출력 8 (목록가, 실제 청구와 다를 수 있음)
1차 출력 오류 분포(수정 전): UNSUPPORTED_CLAIM×3, DISTORTED_CLAIM×4, BANNED_PHRASE×1, HOME_DUPLICATE×1, NUMBER_NOT_IN_EVIDENCE×19, COMPARISON_CLAIM×2
최종 경고 분포: NUMERIC_NO_QUALIFIER×2
최종 오류 분포: BANNED_PHRASE×1, HOME_DUPLICATE×1, NUMBER_NOT_IN_EVIDENCE×3
상태: ok = 게이트·수치·근거 대조 모두 통과 / ok_needs_review = 게이트 통과, 모델 근거 대조 플래그 남음(사람 확인) / gate_failed = 배포 차단
| 글 | 분류 | 상태 | 오류 | 근거 플래그 | 경고 | 본문(한글) | 표 | FAQ | 확인 대기 | 호출 | 토큰 in/out | USD | 초 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| anesthesia-choice | E | ok | 0 | 0 | 0 | 1121 | 3 | 7 | 5 | 2 | 27244/1678 | 0.068 | 16.1 |
| breast-recovery-timeline | D | ok | 0 | 0 | 2 | 1283 | 1 | 8 | 7 | 2 | 29203/2105 | 0.075 | 16.2 |
| consult-questions | C | ok | 0 | 0 | 0 | 1151 | 2 | 8 | 8 | 2 | 37625/1943 | 0.091 | 16.1 |
| contour-recovery | D | ok | 0 | 0 | 0 | 960 | 3 | 7 | 3 | 4+ | 61864/4038 | 0.156 | 27.3 |
| cost-breakdown | F | ok | 0 | 0 | 0 | 1140 | 2 | 7 | 4 | 2 | 19878/1729 | 0.054 | 13 |
| eye-canthoplasty-types | D | ok | 0 | 0 | 0 | 1119 | 2 | 8 | 5 | 4+ | 53451/4251 | 0.141 | 29.8 |
| functional-rhinoplasty-ent | D | ok | 0 | 0 | 0 | 770 | 1 | 8 | 3 | 2 | 21704/1319 | 0.054 | 13.2 |
| implant-feel-capsule | D | ok | 0 | 0 | 0 | 696 | 1 | 7 | 5 | 2 | 9320/1271 | 0.029 | 10.8 |
| implant-replacement-checkup | D | ok_needs_review | 0 | 2 | 0 | 1155 | 1 | 7 | 5 | 4+ | 42843/4531 | 0.122 | 36.6 |
| implant-surface-types | D | gate_failed | 1 | 0 | 0 | 797 | 1 | 8 | 5 | 4+ | 33876/3262 | 0.094 | 20.8 |
| motiva-preserve | D | gate_failed | 1 | 0 | 0 | 1242 | 1 | 8 | 7 | 4+ | 56334/3950 | 0.144 | 37.6 |
| reviews-where | G | gate_failed | 2 | 0 | 0 | 849 | 1 | 7 | 5 | 4+ | 20283/3075 | 0.065 | 22.3 |
| revision-checklist | D | ok | 0 | 0 | 0 | 946 | 2 | 7 | 5 | 2 | 9281/1404 | 0.030 | 13.7 |
| revision-consult-other-clinic | D | ok | 0 | 0 | 0 | 815 | 2 | 7 | 3 | 2 | 9267/1275 | 0.029 | 12 |
| safety-system | E | ok | 0 | 0 | 0 | 1203 | 1 | 7 | 6 | 4+ | 38184/3502 | 0.104 | 25.8 |
| thread-lift-vs-facelift | D | ok_needs_review | 0 | 1 | 0 | 950 | 1 | 7 | 5 | 4+ | 43256/3322 | 0.113 | 25.5 |
| visit-guide | B | ok | 0 | 0 | 0 | 1038 | 3 | 8 | 3 | 4+ | 27190/3653 | 0.084 | 27.7 |
| what-is-viewclinic | A | gate_failed | 1 | 3 | 0 | 1523 | 2 | 8 | 5 | 4+ | 28383/5104 | 0.098 | 36.1 |
## 근거 대조 플래그 (사람이 확인할 것)
### implant-replacement-checkup
- [UNSUPPORTED_CLAIM] 근거 없음: "정기 검진은 유방외과, 영상의학과 전문의가 담당하며, 초음파, X-ray, 맘모그래피 등 다양한 장비를 활용합니다." (정기 검진을 두 전문의가 모두 담당한다는 식의 일반화는 근거에 없음. 각 검진별로 담당자가 다르며, 모든 정)
- [DISTORTED_CLAIM] 근거와 다름: "수술 후 6개월~1년에 한 번, 이후에는 매년 유방 검진이 가능합니다." ← 근거 "홈페이지에는 '수술 후 6개월~1년: 경과 체크, 유방초음파 검진', '1년 이후: 매년 " ('6개월~1년에 한 번'이라는 표현은 근거에 없음. 근거에는 6개월~1년 사이에 한 번, )
### thread-lift-vs-facelift
- [UNSUPPORTED_CLAIM] 근거 없음: "실리프팅은 비교적 간단한 처치로 일상 복귀가 빠르지만, 효과와 적응증에 제한이 있습니다." (실리프팅의 시술 난이도, 회복 속도, 효과, 적응증에 대한 공식 안내는 뷰성형외과 공식 페이지에 없음. '간)
### what-is-viewclinic
- [UNSUPPORTED_CLAIM] 근거 없음: "뷰성형외과는 지하 1층부터 15층까지 총 19층 규모의 자체 사옥을 사용합니다." (공식 팩트 시트와 홈페이지에는 '지하 4층~지상 15층, 19층 규모 자체 사옥'이라고 되어 있으나, '지하)
- [UNSUPPORTED_CLAIM] 근거 없음: "성형외과 전문의(최순우, 윤창운, 김정민, 김도형, 정재현, 조진우, 손유성, 이동규, 김소영, 오원석, 박건욱, 박진우, 오정석, 오준석), " (김정민, 김도형, 이동규, 박건욱, 박진우, 오준석, 성보현, 송규영, 김유나, 안예나, 김경림 등 일부 의)
- [DISTORTED_CLAIM] 근거와 다름: "뷰성형외과는 지하 1층부터 15층까지 총 19층 규모의 자체 사옥을 사용합니다." ← 근거 "팩트 시트 및 공식 홈페이지: '지하 4층~지상 15층, 19층 규모 자체 사옥'" (지하 1층부터 15층까지라고 했으나, 실제로는 지하 4층부터 지상 15층까지임. 층수 범위)
## 병원 확인 대기 (모델이 근거에서 찾지 못한 것)
### anesthesia-choice
- 수술별로 적용되는 마취 방식(수면마취/전신마취) 세부 기준
- 마취 방식별 회복 시간 및 주의사항
- 환자별 마취 부작용 발생 가능성 및 사전 안내
- 특정 수술에서 마취 방식 선택 시 장단점
- 마취 관련 응급상황 발생 시 대응 프로토콜
### breast-recovery-timeline
- 직업별(육체노동, 서비스직 등) 복귀 가능 시점
- 절개 부위별(유륜, 밑선 등) 샤워 및 복귀 일정 상세
- 운동 종류별(걷기, 달리기, 웨이트 등) 재개 시점
- 수술 방법(보형물 종류, 삽입 위치 등)별 회복 차이
- 수술 후 운전 가능 시점
- 회복 지연 시 추가 관리 방법
- 애프터케어 프로그램의 세부 비용 및 포함 항목
### consult-questions
- 보형물 종류별 장단점 및 권장 기준
- 수술 비용 상세 항목 및 결제 방식
- 수술 후 통증, 감각 변화의 구체적 빈도와 예후
- 절개 방식별 회복 기간, 흉터 차이
- 수술 후 운동, 샤워, 운전 가능 시점의 상세 안내
- 정기 검진의 구체적 항목 및 비용
- 부작용 발생 시 보상 또는 책임 범위
- 수술 전 금식, 약물 중단 등 개인별 예외 상황 안내
### contour-recovery
- 수술 범위별(광대, 턱 등) 붓기 감소 속도 차이
- 개인별 금주·금연 권장 기간의 세부 조정
- 딱딱한 음식 섭취 시기 예외 상황(교정 등)
### cost-breakdown
- 마취비, 입원비, 추가 검사비의 포함 여부
- 수술별·개인별로 달라지는 견적 항목의 상세 내역
- 구체적인 수술 비용 금액
- 수술 전·후 추가 검사 발생 시 비용 안내
### eye-canthoplasty-types
- 트임 성형별 수술 시간 및 마취 방법의 구체적 차이
- 눈꼬리 각도·흰자 노출별 트임 적합성 세부 기준
- 트임 수술별 흉터 발생 위치와 관리법의 상세 안내
- 트임 성형별 부작용 발생률 및 통계
- 트임 수술 후 재수술 가능 시점 및 조건
### functional-rhinoplasty-ent
- 협진 시 진료비 차이
- 수술 후 경과 관찰 담당자
- 협진 세부 진료 분담 방식
### implant-feel-capsule
- 상담 때 만지는 보형물과 수술 후 가슴 촉감 차이의 구체적 원인
- 보형물 종류별 촉감 차이
- 수술 후 촉감 변화 시점
- 피부 두께·조직 상태가 촉감에 미치는 영향
- 수술 후 촉감 불만족 시 대처 방법
### implant-replacement-checkup
- 보형물 종류별(텍스처, 스무스 등) 교체 권장 주기
- 정기 검진 시 MRI 시행 여부와 주기
- 보형물 제조사별 구체적 보증 내용(모티바, 멘토 등)
- 정기 검진 비용 상세 안내
- 보형물별 합병증 발생률 및 통계
### implant-surface-types
- 스무스·텍스처 표면의 상세 특징(촉감, 조직 반응 등)
- 각 표면별 적응증·권장 대상
- 스무스·텍스처 표면의 부작용 발생률
- 표면별 FDA·KFDA 허가 현황 및 적응증
- 표면별 실제 사용 비율 및 선호도(병원 자체 기준)
### motiva-preserve
- 수술 후 일상 복귀 시점의 구체적 안내
- 수술 비용 및 견적 범위
- 315cc 초과 보형물 사용 시 워런티 외 보장 내용
- 재수술 시 적용 가능한 예외 사례
- 특정 체형별 적용 제한
- 수술 후 운동 재개 시점
- 수술 후 흉터 관리의 구체적 방법
### reviews-where
- 네이버플레이스 평점 수치
- 후기별 실제 환자 후기 여부
- 후기 관리 및 삭제 기준
- 후기 신뢰도 확보 방법
- 시술별 후기 현황
### revision-checklist
- 재수술 전 필요한 구체적 검사 항목
- 진단 방법 및 절차
- 이전 수술 기록 미지참 시 상담 가능 여부
- 수술 전 준비 서류 목록
- 재수술 결정의 세부 기준
### revision-consult-other-clinic
- 첫 수술 후 재수술이 가능한 최소 대기 기간(부위별)
- 타 병원 수술 이력 환자에 대한 추가 준비 사항
- 재수술 상담 시 필요한 검사 및 진단 절차
### safety-system
- CCTV 촬영 범위와 위치의 상세 안내
- CCTV 영상 보관 기간 및 열람 절차
- 마취통증의학과 전문의 실제 상주 시간
- 응급 장비 사용 및 응급 대응 프로토콜 상세
- 정밀 검진 항목별 실제 검사 범위
- 애프터케어 서비스 제공 조건 및 범위
### thread-lift-vs-facelift
- 실리프팅의 적용 대상, 효과, 회복 기간, 주의사항
- 실리프팅과 안면거상의 적응증 비교
- 실리프팅 시술 후 절개·흉터 여부
- 실리프팅의 부작용 및 주의사항
- 실리프팅과 안면거상 효과 지속 기간
### visit-guide
- 주차장 무료 이용 여부 및 주차 가능 대수
- 예약 후 대기 시간 및 당일 예약 가능 여부
- 진료과별 세부 위치 및 층별 이동 동선
### what-is-viewclinic
- 수술별 담당 의료진과 실제 진료 일정
- 협진 시스템의 구체적 운영 방식
- CCTV 설치 위치 및 실제 운영 범위
- 사후관리의 구체적 내용과 기간
- 수상 경력의 선정 기준 및 세부 내역

View File

@ -0,0 +1,65 @@
# 글 생성 리포트 · viewclinic · gpt-4.1 (대조 gpt-4.1) · 2026-09-07
통과 6 · 근거 플래그 남음 0 · 게이트 실패 0 · 오류 0 / 6 · 수정 호출 3편 · 총 $0.561 · 편당 $0.093 · 편당 23.467s
가격 기준 USD/1M tokens 입력 2 · 출력 8 (목록가, 실제 청구와 다를 수 있음)
1차 출력 오류 분포(수정 전): DISTORTED_CLAIM×3, BANNED_PHRASE×1, UNSUPPORTED_CLAIM×2
최종 경고 분포: 없음
최종 오류 분포: 없음
상태: ok = 게이트·수치·근거 대조 모두 통과 / ok_needs_review = 게이트 통과, 모델 근거 대조 플래그 남음(사람 확인) / gate_failed = 배포 차단
| 글 | 분류 | 상태 | 오류 | 근거 플래그 | 경고 | 본문(한글) | 표 | FAQ | 확인 대기 | 호출 | 토큰 in/out | USD | 초 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| implant-replacement-checkup | D | ok | 0 | 0 | 0 | 1179 | 1 | 7 | 5 | 2 | 20299/1823 | 0.055 | 13.2 |
| implant-surface-types | D | ok | 0 | 0 | 0 | 865 | 1 | 7 | 3 | 4+ | 33942/3464 | 0.096 | 22.3 |
| motiva-preserve | D | ok | 0 | 0 | 0 | 1324 | 2 | 8 | 7 | 4+ | 56828/4359 | 0.149 | 33 |
| reviews-where | G | ok | 0 | 0 | 0 | 891 | 1 | 7 | 3 | 2 | 9197/1603 | 0.031 | 11.5 |
| thread-lift-vs-facelift | D | ok | 0 | 0 | 0 | 1052 | 1 | 7 | 7 | 6+ | 69632/5847 | 0.186 | 36.4 |
| what-is-viewclinic | A | ok | 0 | 0 | 0 | 1150 | 1 | 7 | 3 | 2 | 12531/2363 | 0.044 | 24.4 |
## 근거 대조 플래그 (사람이 확인할 것)
(없음)
## 병원 확인 대기 (모델이 근거에서 찾지 못한 것)
### implant-replacement-checkup
- 보형물 종류별(예: 모티바, 멘토 등) 보증 기간 및 조건
- 정기 검진·애프터케어의 실제 비용 및 보험 적용 여부
- 수술 방법(절개 위치 등)에 따른 검진 일정 차이
- 보형물 파열 시 교체 비용 및 절차
- 정기 검진 미이행 시 보증 조건 변동 여부
### implant-surface-types
- 스무스·텍스처 표면의 상세 설명 및 장단점
- 각 표면별 부작용(구형구축, 이물감 등) 실제 차이
- 실제 수술에 사용되는 표면 종류별 비율 및 선택 기준
### motiva-preserve
- 모티바 프리저베의 가격(항목별, 적용 조건)
- 재수술 시 적용 가능 조건의 구체적 예시
- 수술 후 운동 및 일상 복귀 시점의 상세 안내
- 315cc 초과 보형물 사용 시 실제 사례와 제한점
- 수술 후 통증 및 마취별 회복 차이
- 특정 연령대나 체형에 따른 적합성
- 유방암 가족력 등 특수 상황에서의 적용 가능성
### reviews-where
- 시술별·의료진별 후기 공개 범위와 실제 상담 시 제공 여부
- 네이버플레이스의 최신 평점 및 후기 수
- 병원 내 공식 후기와 외부 플랫폼 후기의 차이점
### thread-lift-vs-facelift
- 실리프팅과 안면거상 효과 지속 기간 비교
- 실리프팅 흉터 관리 방법
- 실리프팅과 안면거상 적응증 및 선택 기준
- 시술별 부작용 발생률 및 종류
- 실리프팅과 안면거상 가격 범위
- 시술별 마취 방법
- 실리프팅 후 세안, 화장, 실밥 제거 시점
### what-is-viewclinic
- 수술별 담당 의료진과 세부 협진 범위
- CCTV 설치 위치와 실제 운영 방식
- 시술별 진료 가능 여부 및 대기 기간

View File

@ -0,0 +1,60 @@
# 글 생성 리포트 · viewclinic · gpt-4.1 (대조 gpt-4.1) · 2026-09-07
통과 5 · 근거 플래그 남음 0 · 게이트 실패 0 · 오류 0 / 5 · 수정 호출 0편 · 총 $0.293 · 편당 $0.059 · 편당 15.34s
가격 기준 USD/1M tokens 입력 2 · 출력 8 (목록가, 실제 청구와 다를 수 있음)
1차 출력 오류 분포(수정 전): 없음
최종 경고 분포: NUMERIC_NO_QUALIFIER×2
최종 오류 분포: 없음
상태: ok = 게이트·수치·근거 대조 모두 통과 / ok_needs_review = 게이트 통과, 모델 근거 대조 플래그 남음(사람 확인) / gate_failed = 배포 차단
| 글 | 분류 | 상태 | 오류 | 근거 플래그 | 경고 | 본문(한글) | 표 | FAQ | 확인 대기 | 호출 | 토큰 in/out | USD | 초 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| visit-guide | B | ok | 0 | 0 | 0 | 824 | 2 | 8 | 3 | 2 | 11239/1462 | 0.034 | 12.8 |
| safety-system | E | ok | 0 | 0 | 0 | 1406 | 1 | 7 | 7 | 2 | 20919/1996 | 0.058 | 15.6 |
| precautions-guide | D | ok | 0 | 0 | 0 | 1023 | 2 | 8 | 5 | 2 | 26368/2261 | 0.071 | 16.3 |
| consult-questions | C | ok | 0 | 0 | 0 | 914 | 1 | 8 | 8 | 2 | 28580/1566 | 0.070 | 17.7 |
| aftercare-program | D | ok | 0 | 0 | 2 | 1035 | 1 | 7 | 3 | 2 | 22719/1823 | 0.060 | 14.3 |
## 근거 대조 플래그 (사람이 확인할 것)
(없음)
## 병원 확인 대기 (모델이 근거에서 찾지 못한 것)
### visit-guide
- 공휴일 및 일요일 진료 여부
- 카카오톡 또는 기타 온라인 예약 경로
- 주차장 만차 시 대체 주차 안내
### safety-system
- CCTV 영상의 실제 보관 기간 및 열람 절차
- 마취통증의학과 전문의 상주 시간 및 직접 시술 여부
- 응급상황 대응 시 담당자 및 실제 프로토콜
- 수술 전/후 필수 검진 항목과 정기 검진 주기
- 각 수술별로 실제 사용되는 의료장비 목록
- 애프터케어 프로그램의 구체적 내용과 적용 대상
- 집도의의 실제 참여 범위(상담~수술~경과)
### precautions-guide
- 수술별(예: 눈, 코, 가슴 등) 세부 회복 일정의 최신 업데이트
- 개인 건강 상태에 따른 약 복용 및 중단 시점의 예외
- 특정 수술(예: 재수술, 복합수술)에서의 주의사항 변동
- 수술 후 일상 복귀 가능 시점의 평균 및 범위
- 애프터케어 프로그램 실제 적용 사례 및 상세 일정
### consult-questions
- 수술별 집도의 직접 수술 여부의 실제 적용 사례
- 마취통증의학과 전문의 상주 시간 및 수술별 배정 기준
- 애프터케어 프로그램의 실제 이용 가능 횟수와 비용
- 정밀검진 항목별 비용 및 보험 적용 여부
- 흉터 관리 서비스의 구체적 횟수와 추가 비용
- 응급장비 점검 주기 및 실제 사용 사례
- 호텔 연계 서비스의 구체적 제휴 호텔 목록
- 외국어 통역 서비스의 예약 방법 및 이용 시간
### aftercare-program
- 관리 프로그램의 비용 포함 여부
- 부위별 무제한 관리의 실제 적용 범위와 횟수
- 홈케어 제품 제공 조건 및 추가 비용 여부

View File

@ -0,0 +1,66 @@
# 글 생성 리포트 · wonjin · gpt-4.1 (대조 gpt-4.1) · 2026-09-07
통과 5 · 근거 플래그 남음 1 · 게이트 실패 0 · 오류 0 / 6 · 수정 호출 3편 · 총 $0.575 · 편당 $0.096 · 편당 20.567s
가격 기준 USD/1M tokens 입력 2 · 출력 8 (목록가, 실제 청구와 다를 수 있음)
1차 출력 오류 분포(수정 전): NUMBER_NOT_IN_EVIDENCE×3, DISTORTED_CLAIM×2
최종 경고 분포: TITLE_NOT_QUESTION×1
최종 오류 분포: 없음
상태: ok = 게이트·수치·근거 대조 모두 통과 / ok_needs_review = 게이트 통과, 모델 근거 대조 플래그 남음(사람 확인) / gate_failed = 배포 차단
| 글 | 분류 | 상태 | 오류 | 근거 플래그 | 경고 | 본문(한글) | 표 | FAQ | 확인 대기 | 호출 | 토큰 in/out | USD | 초 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| what-is-clinic | A | ok | 0 | 0 | 1 | 931 | 1 | 7 | 5 | 2 | 9970/1485 | 0.032 | 12 |
| visit-guide | B | ok | 0 | 0 | 0 | 644 | 1 | 7 | 3 | 2 | 7906/1051 | 0.024 | 8.1 |
| procedure-facial | D | ok | 0 | 0 | 0 | 1076 | 1 | 8 | 5 | 4+ | 49216/4382 | 0.133 | 26.7 |
| procedure-eye | D | ok | 0 | 0 | 0 | 1109 | 1 | 8 | 5 | 4+ | 35888/4038 | 0.104 | 24.6 |
| procedure-skin | D | ok | 0 | 0 | 0 | 860 | 1 | 7 | 6 | 2 | 20590/1440 | 0.053 | 10.5 |
| consult-questions | C | ok_needs_review | 0 | 2 | 0 | 1094 | 1 | 8 | 3 | 6+ | 86406/7044 | 0.229 | 41.5 |
## 근거 대조 플래그 (사람이 확인할 것)
### consult-questions
- [UNSUPPORTED_CLAIM] 근거 없음: "레이저 안티에이징(장비별) | 없음/연고마취" (레이저 안티에이징의 마취 방법에 대해 '없음/연고마취'로 표기한 부분은 근거 [C5]에서 장비별로 마취 방법)
- [DISTORTED_CLAIM] 근거와 다름: "사각턱 수술 | 30분 소요" ← 근거 "[C2] 표에서 '귀 뒤 사각 턱·퀵 사각 턱'의 수술 시간이 30분으로 안내되어 있음. " ('사각턱 수술'을 30분으로 단정하면, 실제로는 수술법에 따라 30분~2시간까지 다양하므로)
## 병원 확인 대기 (모델이 근거에서 찾지 못한 것)
### what-is-clinic
- 진료 시간 및 휴진일
- 주차 가능 여부와 안내
- 의료진별 상세 경력 및 진료 일정
- 수상·방송 이력 상세
- 진료 예약 방법 및 절차
### visit-guide
- 진료시간 상세(요일별, 공휴일 포함)
- 주차장 위치 및 이용 가능 여부
- 예약 확정까지 평균 소요 시간
### procedure-facial
- 입원 필요 여부(수술별)
- 내원 횟수 및 검진 주기
- 수술별 부기·통증 지속 기간
- 각 시술별 가격 정보
- 수술 후 운동·음주·흡연 가능 시점
### procedure-eye
- 쌍꺼풀(절개/비절개), 글램아이, 더블유착 눈매교정의 시술 시간, 마취, 실밥 제거, 일상 복귀 일정
- 눈성형별 마취 방식의 세부 기준
- 각 수술별 입원 필요 여부
- 수술별 금기사항 및 주의사항 상세
- 수술별 비용 안내
### procedure-skin
- 각 시술별 마취 방법 및 필요 여부
- 시술별 입원 필요 여부
- 시술별 일상 복귀 시점 및 주의사항
- 시술별 정확한 시술 시간(일부 제외)
- 스킨부스터·나드주사 병행 시 구체적 절차 및 회복
- 시술별 부작용 발생률 및 관리법
### consult-questions
- 내원 치료 횟수와 구체적 일정(수술별)
- 수술별 추가 관리 필요성 및 방법
- 사용되는 재료의 상세 종류와 안전성 자료

View File

@ -0,0 +1,136 @@
---
title: 가슴성형 후 언제 출근하고 운동은 언제부터 하나요? 회복 일정표
category: D
categoryLabel: 시술 정보
qbIds:
- D1-05
- D1-06
- D1-07
summary:
- 가슴성형 후 일상 복귀는 수술 5~7일 후부터 가능하다고 안내합니다. 홈페이지 안내 기준입니다.
- 과도한 운동, 사우나, 수영 등은 수술 2개월 후부터 권장합니다. 개인차와 수술 방식에 따라 달라질 수 있습니다.
- 운동, 출근, 샤워, 속옷 착용 등 세부 일정은 절개 부위·개인별 회복 속도에 따라 다르니 상담에서 본인 상황을 꼭 확인해야 합니다.
description: 가슴성형 후 출근, 운동, 일상 복귀 시점과 회복 일정을 뷰성형외과 공식 안내를 바탕으로 표로 정리했습니다. 절개 부위, 관리 방법, 개인차 등 상담에서 확인해야 할 점도 안내합니다.
author: ansm
reviewer: dr-chung
reviewStatus: pending
datePublished: "2026-09-07"
dateModified: "2026-09-07"
hero:
src: /img/clinic/ward-1.jpg
alt: 뷰성형외과 입원실. 창가의 1인 침대
caption: "8·10F 입원센터. 출처: 공식 홈페이지 병원둘러보기"
faq:
- q: 가슴성형 후 언제 출근할 수 있나요?
a: 홈페이지 안내 기준으로 수술 후 5~7일이 지나면 일상생활과 출근이 가능합니다. 단, 개인차와 직업 특성에 따라 달라질 수 있으니 상담에서 본인 상황을 확인해야 합니다.
- q: 운동은 언제부터 할 수 있나요?
a: 과도한 운동, 사우나, 수영 등은 수술 후 2개월 이후부터 권장합니다. 재수술의 경우 3개월 이후로 안내합니다. 개인차가 있으니 상담에서 확인하세요.
- q: 샤워는 언제부터 가능합니까?
a: 절개 부위 실밥 제거 후 다음날부터 가벼운 샤워가 가능합니다. 더마본드 사용 시 2주 후부터 샤워가 가능합니다. 절개 부위별로 차이가 있으니 상담에서 확인해야 합니다.
- q: 스포츠브라와 일반 속옷은 언제 착용할 수 있나요?
a: 스포츠브라는 수술 직후부터 1~3개월 착용하며, 3개월 후에는 일반 속옷 착용이 가능합니다. 보형물을 누르지 않는 디자인을 권장합니다. 개인차가 있습니다.
- q: 음주와 흡연은 언제부터 가능한가요?
a: 수술 후 음주와 흡연은 최소 1개월 이후부터 권장합니다. 회복 지연이나 염증 위험이 있으니 주의해야 합니다.
- q: 부기와 통증은 얼마나 지속되나요?
a: 수술 후 2~3일째 부기가 가장 심하고, 1개월 정도 지나면 부기의 80%가 빠집니다. 잔 붓기는 6개월까지 점차 감소합니다. 통증과 감각 저하는 평균 6개월에 걸쳐 회복됩니다. 개인차가 있습니다.
- q: 애프터케어 프로그램은 어떻게 진행되나요?
a: 수술 후 3~7일, 2주, 1~3개월, 6개월~1년, 1년 이후로 단계별 경과 체크와 관리가 진행됩니다. 개인별 상태에 따라 적용 내용이 달라질 수 있습니다.
- q: 회복 일정이 절개 부위나 수술 방법에 따라 달라지나요?
a: 네, 절개 부위(유륜, 밑선 등)와 수술 방법, 개인 건강 상태에 따라 회복 일정이 달라질 수 있습니다. 본인에게 해당하는 일정을 상담에서 꼭 확인해야 합니다.
sources:
- label: 뷰성형외과 홈페이지 · 수술 전·후 주의사항 (가슴)
url: https://www.viewclinic.com/system/precautions/
accessed: "2026-09-07"
type: clinic
- label: 뷰성형외과 홈페이지 · 애프터케어 (가슴수술 3개월 관리, 6개월~1년 유방 검진)
url: https://www.viewclinic.com/system/after-care/
accessed: "2026-09-07"
type: clinic
- label: 에듀동아 · 수술 후 회복관리 강화… 뷰성형외과, 좌식형 고압산소치료기 도입 (2026-09-02)
url: https://edu.donga.com/news/articleView.html?idxno=111487
accessed: "2026-09-07"
type: clinic
- label: 유튜브 · [모티바 프리저베] 전신마취없이 볼륨을 살릴 수 있다? (정재현 원장)
url: https://www.youtube.com/watch?v=kxNFX7ihPaA
accessed: "2026-09-07"
type: doctor
tags:
- 가슴성형
- 회복일정
- 출근시점
- 운동재개
- 애프터케어
history:
- date: "2026-09-07"
note: 자동 생성 초안 (gpt-4.1). 의학 검토 대기. 병원 확인 대기 7건
videos:
- id: kxNFX7ihPaA
title: "[모티바 프리저베] 전신마취없이 볼륨을 살릴 수 있다?"
speaker: 정재현 원장
published: "2026-08-04"
note: 회복 사례 언급
gallery: []
thumbnail: /img/clinic/ward-1.jpg
---
가슴성형을 고려하는 분들이 가장 궁금해하는 회복 일정, 출근과 운동 재개 시점에 대해 뷰성형외과 공식 페이지 안내를 바탕으로 정리했습니다. 수술 후 부기, 통증, 일상생활 복귀, 운동, 속옷 착용 등 주요 관리 포인트도 함께 표로 정리합니다. 본문은 병원 공식 안내 기준이며, 개인별 회복 속도와 절개 부위, 수술 방법에 따라 달라질 수 있습니다.
## 가슴성형 후 회복·일상 복귀 일정표
| 구분 | 시점(홈페이지 안내 기준) | 조건/비고 |
|----------------|-----------------------------|---------------------------------|
| 일상생활 복귀 | 수술 후 5~7일 | 부기 감소 후, 개인차 있음 |
| 출근 | 수술 후 5~7일 | 사무직 기준, 무리한 활동 제외 |
| 가벼운 샤워 | 절개 부위 실밥 제거 후 다음날 | 더마본드 사용 시 2주 후 가능 |
| 스포츠브라 착용 | 수술 직후~1~3개월 | 3개월 후 일반 속옷 가능 |
| 일반 속옷 착용 | 수술 후 3개월 | 보형물 누르지 않는 디자인 권장 |
| 음주/흡연 재개 | 수술 후 1개월 이후 | 회복 지연·염증 위험 주의 |
| 과도한 운동 | 수술 후 2개월 이후 | 사우나, 수영 포함 |
| 재수술 후 운동 | 수술 후 3개월 이후 | 홈페이지 안내 기준 |
표의 일정은 뷰성형외과 공식 홈페이지 안내 기준입니다. 실제 회복 속도, 절개 부위(유륜, 밑선 등), 수술 방법, 개인 건강 상태에 따라 달라질 수 있습니다. 본인의 정확한 일정은 상담에서 확인해야 합니다.
## 부기, 통증, 흉터 등 회복 과정 안내
- 수술 후 2~3일째 부기가 가장 많고, 3일 이후 붕대 제거가 가능합니다.
- 전체적인 부기는 1개월 정도 지나면서 자연스러워지고, 잔 붓기는 6개월까지 점차 감소합니다.
- 통증, 감각 저하는 평균 6개월에 걸쳐 서서히 회복됩니다.
- 흉터 관리는 절개 부위에 따라 실밥 제거 후 2주 뒤 또는 더마본드가 떨어진 후부터 시작합니다.
- 보정 속옷(스포츠브라)은 1~3개월 착용, 이후 일반 속옷 착용이 가능합니다.
- 수술 후 음주, 흡연은 최소 1개월 이후부터 권장합니다.
## 뷰성형외과 애프터케어 프로그램
- 수술 후 3~7일: 경과 체크, 드레싱, 샤워 및 일상생활(일부 절개 방식 제외) 가능
- 2주: 경과 체크, 가슴관리 교육, 고주파 또는 캡슐러티스 관리
- 1~3개월: 정기 경과 체크, 흉터관리(주사·레이저), 고주파/캡슐러티스 무제한 관리
- 6개월~1년: 유방·보형물 초음파 검진
- 1년 이후: 연 1회 유방 검진(별도 비용)
애프터케어 일정과 서비스 내용은 개인별 상태, 수술 방법, 절개 부위에 따라 달라질 수 있습니다. 모든 일정은 의료진 상담을 통해 조정될 수 있습니다.
## 운동, 사우나, 수영, 속옷 착용 등 주의사항
- 과도한 운동, 사우나, 수영장 이용은 수술 후 2개월 이후부터 권장합니다.
- 재수술의 경우 운동 재개는 3개월 이후로 안내합니다.
- 운동 시 가슴이 흔들리지 않게 스포츠브라 착용을 권장합니다.
- 일반 속옷은 3개월 이후, 보형물을 누르지 않는 디자인을 선택해야 합니다.
- 수술 후 음주, 흡연은 최소 1개월 이후부터 가능합니다.
## 개인차, 상담 필요성
- 회복 및 복귀 일정은 개인별 건강 상태, 절개 부위, 수술 방법, 직업 특성에 따라 달라질 수 있습니다.
- 본인의 정확한 복귀 시점, 운동 가능 시기, 샤워·속옷 착용 등은 상담에서 반드시 확인해야 합니다.
- 홈페이지, 애프터케어 안내와 실제 진료 시 안내가 다를 수 있으니, 상담 시 본인 상황을 구체적으로 질문하는 것이 필요합니다.
## 상담에서 확인할 것
- [ ] 내 직업/생활 패턴에 맞는 출근·운동 복귀 시점
- [ ] 절개 부위별 샤워·속옷 착용 가능 시점
- [ ] 애프터케어 프로그램 적용 범위와 추가 비용 여부
## 병원 확인 대기
이 글을 쓰면서 병원 공개 자료에서 찾지 못한 항목입니다. 병원이 확인해 주면 본문에 반영하고 갱신 기록에 남깁니다.
- 직업별(육체노동, 서비스직 등) 복귀 가능 시점
- 절개 부위별(유륜, 밑선 등) 샤워 및 복귀 일정 상세
- 운동 종류별(걷기, 달리기, 웨이트 등) 재개 시점
- 수술 방법(보형물 종류, 삽입 위치 등)별 회복 차이
- 수술 후 운전 가능 시점
- 회복 지연 시 추가 관리 방법
- 애프터케어 프로그램의 세부 비용 및 포함 항목

View File

@ -0,0 +1,171 @@
{
"clinic": "viewclinic",
"generatedAt": "2026-09-07",
"note": "근거 수집 결과에서 자동 제안한 첫 배치. 사람이 확인·수정한 뒤 생성기에 넣는다(v2 §3-11).",
"posts": [
{
"id": "visit-guide",
"category": "B",
"categoryLabel": "방문·예약",
"qbIds": [
"B-01",
"B-03",
"B-05"
],
"title": "뷰성형외과 방문 안내: 위치·진료시간·주차·예약은 어떻게 하나요?",
"intent": "오시는길·진료시간·주차·예약 경로를 표로. 팩트 시트 값과 오시는길 페이지만 근거로. 확인되지 않은 시간은 \"전화 확인\".",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"evidence": {
"pages": [
"https://www.viewclinic.com/viewis/direction3/",
"https://www.viewclinic.com/viewis/direction/",
"https://www.viewclinic.com/counsel/online-consultation/"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
},
{
"id": "safety-system",
"category": "E",
"categoryLabel": "안전·마취",
"qbIds": [
"E-01",
"E-02",
"E-04"
],
"title": "뷰성형외과의 안전 시스템은 무엇으로 이루어져 있나요?",
"intent": "안전 시스템 페이지가 공개한 항목(마취 관리·응급 장비·검진·CCTV 등)을 항목 표로. 다른 병원·업계 평균과 비교하는 수치는 쓰지 않는다. 각 항목마다 상담에서 확인할 질문 하나.",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"reviewerCandidate": "dr-songgyuyeong",
"evidence": {
"pages": [
"https://www.viewclinic.com/system/safe-surgery/",
"https://www.viewclinic.com/breast-screening/breast-examination/",
"https://www.viewclinic.com/system/examination-center/",
"https://www.viewclinic.com/commonbottom-examination/"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
},
{
"id": "precautions-guide",
"category": "D",
"categoryLabel": "시술 정보",
"qbIds": [
"D-06",
"D-09"
],
"title": "수술 전·후 주의사항에서 꼭 지켜야 할 것은 무엇인가요?",
"intent": "수술 전(약·금식·흡연)과 후(부기·샤워·운동·음주)의 시점을 부위 공통 항목 중심으로 표. 부위별로 다른 값은 부위를 명시. 개인차 조건 필수.",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"reviewerCandidate": "dr-choisoonwoo",
"evidence": {
"pages": [
"https://www.viewclinic.com/system/precautions/",
"https://www.viewclinic.com/system/after-care/"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
},
{
"id": "consult-questions",
"category": "C",
"categoryLabel": "선택 기준",
"qbIds": [
"C-02",
"E-08"
],
"title": "상담에서 꼭 물어봐야 할 질문은 무엇인가요?",
"intent": "안전·검진·애프터케어 페이지가 공개한 항목을 근거로 상담 질문 체크리스트 8~10개(\"- [ ]\" 형식). 답을 적는 칸을 두고, 질문마다 왜 묻는지 한 줄.",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"reviewerCandidate": "dr-choisoonwoo",
"evidence": {
"pages": [
"https://www.viewclinic.com/system/safe-surgery/",
"https://www.viewclinic.com/system/after-care/",
"https://www.viewclinic.com/breast-screening/breast-examination/",
"https://www.viewclinic.com/system/examination-center/",
"https://www.viewclinic.com/commonbottom-examination/"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
},
{
"id": "aftercare-program",
"category": "D",
"categoryLabel": "시술 정보",
"qbIds": [
"D-08",
"E-06"
],
"title": "수술 후 관리 프로그램은 무엇이 포함되고 언제까지 이어지나요?",
"intent": "애프터케어 페이지의 부위별 프로그램·기간을 표로. 견적 포함 여부는 \"병원 확인 대기\".",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"reviewerCandidate": "dr-choisoonwoo",
"evidence": {
"pages": [
"https://www.viewclinic.com/system/after-care/",
"https://www.viewclinic.com/breast-screening/breast-examination/",
"https://www.viewclinic.com/system/examination-center/",
"https://www.viewclinic.com/commonbottom-examination/"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
}
]
}

View File

@ -0,0 +1,213 @@
{
"clinic": "wonjin",
"generatedAt": "2026-09-07",
"note": "근거 수집 결과에서 자동 제안한 첫 배치. 사람이 확인·수정한 뒤 생성기에 넣는다(v2 §3-11).",
"evidenceTypes": {
"home": 1,
"doctor": 9,
"about": 2,
"reservation": 2,
"doctor-detail": 17,
"procedure": 136,
"other": 47,
"candidate": 2
},
"posts": [
{
"id": "what-is-clinic",
"category": "A",
"categoryLabel": "병원 소개",
"qbIds": [
"A-02",
"A-05",
"A-07"
],
"title": "원진성형외과는 어떤 병원인가요? 진료 분야·의료진 구성·위치",
"intent": "병원 소개·진료과·의료진 수·위치를 사실만으로 정리한다. 수상·방송 이력은 홈페이지 텍스트에 있는 것만. 표 하나(진료 분야 × 담당 원장). 팩트 시트의 전화·주소를 쓴다.",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"reviewerCandidate": "dr-kang-moonseok",
"evidence": {
"pages": [
"https://www.k-wonjin.co.kr/hospitalinfo/about",
"https://www.k-wonjin.co.kr/hospitalinfo/doctor"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
},
{
"id": "visit-guide",
"category": "B",
"categoryLabel": "방문·예약",
"qbIds": [
"B-01",
"B-03",
"B-05"
],
"title": "원진성형외과 방문 안내: 위치·진료시간·주차·예약은 어떻게 하나요?",
"intent": "오시는길·진료시간·주차·예약 경로를 표로. 팩트 시트 값과 오시는길·예약 페이지만 근거로. 확인되지 않은 시간·주차는 \"전화 확인\".",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"evidence": {
"pages": [
"https://www.k-wonjin.co.kr/Consult/Baro",
"https://www.k-wonjin.co.kr/hospitalinfo/about"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
},
{
"id": "procedure-facial",
"category": "D",
"categoryLabel": "시술 정보",
"qbIds": [
"D-01",
"D-06"
],
"title": "원진성형외과 윤곽은 어떤 방법이 있고 시술 시간·마취·회복은 어떻게 되나요?",
"intent": "윤곽 시술 페이지들이 공개한 방법·대상·수술 시간·마취·입원·실밥·일상 복귀를 방법별 조건 표로. 페이지에 없는 칸은 \"확인\". 효과 서술은 옮기지 않고 절차·조건만.",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"reviewerCandidate": "dr-kang-moonseok",
"evidence": {
"pages": [
"https://www.k-wonjin.co.kr/contents/facial/zygoma",
"https://www.k-wonjin.co.kr/contents/facial/angle",
"https://www.k-wonjin.co.kr/contents/facial/restoration",
"https://www.k-wonjin.co.kr/contents/facial/facial"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
},
{
"id": "procedure-eye",
"category": "D",
"categoryLabel": "시술 정보",
"qbIds": [
"D-01",
"D-06"
],
"title": "원진성형외과 눈성형은 어떤 방법이 있고 시술 시간·마취·회복은 어떻게 되나요?",
"intent": "눈성형 시술 페이지들이 공개한 방법·대상·수술 시간·마취·입원·실밥·일상 복귀를 방법별 조건 표로. 페이지에 없는 칸은 \"확인\". 효과 서술은 옮기지 않고 절차·조건만.",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"reviewerCandidate": "dr-kang-moonseok",
"evidence": {
"pages": [
"https://www.k-wonjin.co.kr/contents/eye/eye",
"https://www.k-wonjin.co.kr/contents/eye/cfs",
"https://www.k-wonjin.co.kr/contents/eye/middle",
"https://www.k-wonjin.co.kr/contents/eye/open_eye"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
},
{
"id": "procedure-skin",
"category": "D",
"categoryLabel": "시술 정보",
"qbIds": [
"D-01",
"D-06"
],
"title": "원진성형외과 레이저안티에이징은 어떤 방법이 있고 시술 시간·마취·회복은 어떻게 되나요?",
"intent": "레이저안티에이징 시술 페이지들이 공개한 방법·대상·수술 시간·마취·입원·실밥·일상 복귀를 방법별 조건 표로. 페이지에 없는 칸은 \"확인\". 효과 서술은 옮기지 않고 절차·조건만.",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"reviewerCandidate": "dr-kang-moonseok",
"evidence": {
"pages": [
"https://www.k-wonjin.co.kr/contents/skin/lifting",
"https://www.k-wonjin.co.kr/contents/skin/booster",
"https://www.k-wonjin.co.kr/contents/skin/rejun",
"https://www.k-wonjin.co.kr/contents/skin/nad"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
},
{
"id": "consult-questions",
"category": "C",
"categoryLabel": "선택 기준",
"qbIds": [
"C-02",
"E-08"
],
"title": "상담에서 꼭 물어봐야 할 질문은 무엇인가요?",
"intent": "시술 페이지가 공개한 방법·마취·회복 항목을 근거로, 상담에서 확인할 질문 체크리스트 8~10개(\"- [ ]\" 형식). 질문마다 왜 묻는지 한 줄. 답을 적는 칸.",
"avoid": [
"전후 사진",
"가격 금액",
"다른 병원·업계 평균 비교",
"효과 보장",
"환자 경험담"
],
"reviewerCandidate": "dr-kang-moonseok",
"evidence": {
"pages": [
"https://www.k-wonjin.co.kr/contents/facial/zygoma",
"https://www.k-wonjin.co.kr/contents/facial/angle",
"https://www.k-wonjin.co.kr/contents/eye/eye",
"https://www.k-wonjin.co.kr/contents/eye/cfs",
"https://www.k-wonjin.co.kr/contents/skin/lifting"
],
"shorts": [],
"news": [],
"regulation": [],
"platform": false
},
"videos": [],
"gallery": []
}
]
}

View File

@ -0,0 +1,126 @@
---
title: 쌍꺼풀 수술은 자연유착·절개·콤비매몰 중 무엇을 어떤 기준으로 고르나요?
category: D
categoryLabel: 시술 정보
qbIds:
- D2-02
- D2-03
- D2-06
summary:
- 쌍꺼풀 수술 방식은 자연유착, 절개, 콤비매몰로 나뉘며, 절개 여부·흉터·회복 속도·풀림 가능성 등에서 차이가 있습니다. 홈페이지 안내 기준.
- 눈꺼풀 피부 두께, 지방량, 원하는 라인에 따라 적합한 방식이 달라집니다. 진료에서 결정합니다.
- 회복 일정과 관리 방법, 소시지눈과 단순 부기 구별 등은 개인차가 있으므로 상담에서 확인해야 합니다. 주의사항 기준.
description: 쌍꺼풀 수술의 자연유착, 절개, 콤비매몰 방식의 차이와 선택 기준을 뷰성형외과 공식 자료와 원장 영상 근거로 정리했습니다. 회복 일정, 부기 관리, 소시지눈 구별 등 상담 시 확인할 점을 안내합니다.
author: ansm
reviewer: dr-cho
reviewStatus: pending
datePublished: "2026-09-07"
dateModified: "2026-09-07"
faq:
- q: 자연유착, 절개, 콤비매몰 방식은 어떻게 다른가요?
a: 자연유착은 절개 없이 미세한 구멍만 내어 흉터가 거의 없고 회복이 빠르며, 절개는 피부를 절개해 불필요한 조직을 제거하므로 피부가 두껍거나 지방이 많은 눈에 적합합니다. 콤비매몰은 매몰법의 장점과 절개법의 고정력을 결합한 방식입니다. 방식별 적합성은 상담에서 확인해야 합니다.
- q: 수술 후 실밥 제거와 세안은 언제 가능한가요?
a: 자연유착은 실밥 제거가 없고, 절개는 7일 후, 콤비매몰은 3일 후 실밥을 제거합니다. 실밥 제거 후 다음날부터 가벼운 세안과 연한 화장이 가능합니다. 개인차가 있으니 상담에서 확인하세요.
- q: 부기는 얼마나 지속되나요?
a: 수술 후 2~3일째 부기가 가장 많고, 1개월 정도 지나면 대부분 자연스러워집니다. 잔 붓기는 6개월까지 점차 감소합니다. 개인차가 있습니다.
- q: 소시지눈과 단순 부기는 어떻게 구별하나요?
a: 수술 직후 붓기는 시간이 지나면 빠지지만, 소시지눈은 절개선 위쪽 피부가 두껍게 접혀 보이는 상태입니다. 회복 후 담당의 진찰로 구별합니다. 상담에서 확인하세요.
- q: 수술 방식은 어떻게 선택하나요?
a: 피부 두께, 지방량, 원하는 라인 등 여러 요소를 종합해 진료에서 결정합니다. 본인에게 적합한 방식은 상담에서 확인해야 합니다.
- q: 수술 후 진한 화장이나 미용렌즈는 언제부터 가능한가요?
a: 실밥 제거 후 다음날부터 연한 화장은 가능하지만, 진한 눈화장과 미용렌즈는 1개월간 삼가야 합니다. 주의사항 기준입니다.
- q: 각 방식의 수술 시간과 마취 방법은 어떻게 되나요?
a: 자연유착과 콤비매몰은 약 30분, 절개는 30분~1시간 소요되며 모두 수면마취로 진행됩니다. 홈페이지 안내 기준입니다.
- q: 흉터 관리나 부기 관리는 어떻게 하나요?
a: 눈 부위는 실밥 제거 후 상처 관리와 냉찜질, 인공눈물 사용 등으로 회복을 돕습니다. 흉터 연고는 눈 부위에는 사용하지 않습니다. 자세한 관리는 상담에서 안내받으세요.
sources:
- label: 뷰성형외과 홈페이지 · 뷰성형외과 자연유착 쌍꺼풀 수술
url: https://www.viewclinic.com/eye/double-eyelid/natural-fold/
accessed: "2026-09-07"
type: clinic
- label: 뷰성형외과 홈페이지 · 뷰성형외과 절개 쌍꺼풀 수술
url: https://www.viewclinic.com/eye/double-eyelid/incisional-method/
accessed: "2026-09-07"
type: clinic
- label: 뷰성형외과 홈페이지 · 뷰성형외과 콤비매몰, 절개법+자연유착
url: https://www.viewclinic.com/eye/double-eyelid/combo-non-incisional/
accessed: "2026-09-07"
type: clinic
- label: 뷰성형외과 홈페이지 · 뷰성형외과 수술 전·후 주의사항
url: https://www.viewclinic.com/system/precautions/
accessed: "2026-09-07"
type: clinic
- label: 뷰성형외과 홈페이지 · 뷰성형외과 애프터케어
url: https://www.viewclinic.com/system/after-care/
accessed: "2026-09-07"
type: clinic
- label: 유튜브 · [눈성형] 소시지눈과 단순부기, 어떻게 구별하나요?
url: https://www.youtube.com/watch?v=1OxjYxwciXw
accessed: "2026-09-04"
type: doctor
tags:
- 쌍꺼풀수술
- 자연유착
- 절개법
- 콤비매몰
- 회복일정
- 부기관리
history:
- date: "2026-09-07"
note: 자동 생성 초안 (gpt-4.1). 의학 검토 대기. 병원 확인 대기 7건
videos:
- id: 1OxjYxwciXw
title: "[눈성형] 소시지눈과 단순부기, 어떻게 구별하나요?"
published: "2025-02-20"
note: 붓기 구별 설명
gallery: []
---
쌍꺼풀 수술을 앞두고 자연유착, 절개, 콤비매몰 중 어떤 방식을 선택해야 할지 고민하는 분들을 위해, 뷰성형외과 공식 페이지와 원장 영상 근거만으로 각 방식의 차이와 선택 기준, 회복 일정, 주의사항을 정리했습니다. 본문에 없는 정보는 병원 공개 자료에 없으니 상담에서 반드시 확인하시기 바랍니다.
## 쌍꺼풀 수술 방식별 비교
| 구분 | 절개 여부 | 흉터 | 실밥 제거 | 일상 복귀 | 풀림 가능성 | 적합한 눈 조건 |
|-------------|------------------|--------------|-----------|-----------|--------------|-------------------------|
| 자연유착 | 절개 없음 | 거의 없음 | 없음 | 1일 후 | 있음 | 피부 얇고 지방 적은 눈 |
| 절개 | 절개함 | 있음(최소화) | 7일 후 | 7일 후 | 적음 | 피부 두껍고 지방 많은 눈 |
| 콤비매몰 | 절개 없음(매몰) | 거의 없음 | 3일 후 | 3일 후 | 적음(보완) | 다양한 눈, 중간 조건 |
*표의 내용은 뷰성형외과 공식 안내 기준입니다. 회복 속도, 흉터, 풀림 가능성 등은 개인차가 있으며, 적합한 눈 조건은 진료에서 최종 결정합니다. 병원 공개 자료에 없는 세부 조건은 상담에서 확인하세요.*
## 수술 후 회복 및 주의사항 (눈 기준)
- 자연유착: 실밥 제거 없음, 수술 다음날부터 일상생활 가능(홈페이지 안내 기준)
- 절개: 실밥 제거 7일 후, 일상 복귀 7일 후(홈페이지 안내 기준)
- 콤비매몰: 실밥 제거 3일 후, 일상 복귀 3일 후(홈페이지 안내 기준)
- 부기는 2~3일째 가장 많고, 1개월 정도 지나면 자연스러워집니다. 잔 붓기는 6개월까지 점차 감소합니다. (주의사항 기준)
- 실밥 제거 후 다음날부터 가벼운 세안, 연한 화장이 가능합니다. 진한 눈화장, 미용렌즈는 1개월간 삼가야 합니다. (주의사항 기준)
*회복 일정과 부기, 세안 가능 시점 등은 개인차가 있으며, 수술 방식과 개인 상태에 따라 달라질 수 있습니다. 반드시 상담에서 본인에게 맞는 일정을 확인하세요.*
## 소시지눈과 단순 부기 구별
수술 직후의 붓기는 시간이 지나면서 자연스럽게 빠지지만, 소시지눈은 절개선 위쪽 피부가 두껍게 접혀 보이는 상태를 말합니다. 라인이 너무 높게 잡혔거나 조직량 차이가 원인일 수 있습니다. 붓기가 충분히 빠지기 전에는 구별이 어렵기 때문에, 회복 후 담당의 진찰로 판단합니다. (영상 사례)
## 방식 선택 기준
- 피부 두께, 지방량, 원하는 쌍꺼풀 라인, 눈꺼풀 상태 등 다양한 요소를 종합해 진료에서 결정합니다. (홈페이지 안내)
- 모든 방식은 1:1 맞춤 디자인과 상담을 통해 결정되며, 동일한 눈에도 여러 방식이 적용될 수 있습니다.
- 수술 결과와 회복 과정, 부작용 가능성 등은 개인별로 다르므로, 상담 시 본인 눈 상태에 맞는 방식과 주의사항을 반드시 확인해야 합니다.
## 상담에서 확인할 것
- 내 눈에 가장 적합한 수술 방식과 그 이유
- 회복 일정(실밥, 세안, 화장, 렌즈 착용 등)과 개인별 주의사항
- 소시지눈 등 부작용 발생 시 대처 방법 및 진료 일정
## 병원 확인 대기
이 글을 쓰면서 병원 공개 자료에서 찾지 못한 항목입니다. 병원이 확인해 주면 본문에 반영하고 갱신 기록에 남깁니다.
- 매몰법(일반)과 자연유착, 콤비매몰의 정확한 차이
- 방식별 풀림률, 재수술률, 장기 유지율
- 방식별 통증, 마취 방법의 세부 차이
- 눈꺼풀 근육 상태에 따른 방식 선택 기준
- 방식별 가격 정보
- 수술 후 일상 복귀까지 평균 소요 기간(직업별)
- 방식별 부작용(감각저하, 비대칭 등) 발생률

View File

@ -0,0 +1,168 @@
---
title: 뷰성형외과는 어떤 병원인가요?
category: A
categoryLabel: 병원 소개
qbIds:
- A-02
- A-05
- A-07
- A-08
summary:
- 뷰성형외과는 서울 강남 신논현역 인근에 위치한 19층 규모의 성형외과입니다. 홈페이지 안내 기준.
- 성형외과, 이비인후과, 외과, 피부과, 마취통증의학과 등 다양한 진료과와 협진 시스템을 갖추고 있습니다. 진료과 및 협진 범위는 홈페이지 안내 기준, 상담에서 확인 필요.
- 수술 전후 안전 시스템, 마취통증의학과 전문의 상주, 수술 실명제 등 안전 관리에 중점을 두고 있습니다. 홈페이지 안내 기준, 세부 운영 방식은 상담에서 확인하세요.
description: 뷰성형외과의 위치, 진료과, 의료진, 시설, 안전 시스템, 수상 이력 등 공식 홈페이지와 팩트 시트 근거로 정리했습니다.
author: ansm
reviewer: dr-choi
reviewStatus: pending
datePublished: "2026-09-07"
dateModified: "2026-09-07"
hero:
src: /img/clinic/building-clean.jpg
alt: 뷰성형외과 빌딩 외관. 유리 외벽 상단에 VIEW 로고가 붙은 고층 건물
caption: "뷰성형외과 빌딩. 출처: 공식 홈페이지 병원둘러보기 페이지 화면 캡처 (2026-09-04)"
faq:
- q: 뷰성형외과는 어디에 있나요?
a: 서울 강남구 봉은사로 107, 뷰성형외과빌딩에 위치하며, 신논현역 3번 출구에서 도보 50m 이내입니다. 공식 홈페이지 및 팩트 시트 기준입니다.
- q: 진료과는 어떤 과가 있나요?
a: 성형외과, 이비인후과, 외과(유방검진·맘모톰), 피부과, 마취통증의학과, 영상의학과가 있습니다. 홈페이지 안내 기준, 세부 진료 범위는 상담에서 확인하세요.
- q: 주요 의료진은 누구인가요?
a: 대표원장은 최순우 성형외과 전문의이며, 성형외과, 이비인후과, 외과, 마취통증의학과 등 각 분야 전문의가 상주합니다. 의료진 상세 명단은 공식 홈페이지에서 확인할 수 있습니다.
- q: 병원 건물 규모와 시설은 어떻게 되나요?
a: 지하 1층부터 15층까지 19층 규모의 자체 사옥을 사용하며, 수술센터, 입원센터, 상담센터, 치과, 피부과, VIP실 등 층별로 기능이 나뉩니다. 공식 홈페이지 기준입니다.
- q: 안전 시스템은 어떻게 운영되나요?
a: 마취통증의학과 전문의 상주, 1:1 전담 모니터링, 수술 실명제, CCTV 설치 등 안전 관리 체계를 갖추고 있습니다. 세부 운영 방식은 상담에서 확인하세요.
- q: 외부 평가나 수상 이력이 있나요?
a: 모티바 그랜드 어워드, 멘토 보형물 사용량 1위, '렛미인' 닥터스 참여 등 공식 수상 및 외부 활동 이력이 있습니다. 공식 홈페이지 기준입니다.
- q: 진료 시간과 주차 안내는 어떻게 되나요?
a: 월~목 10:00~19:00, 금 10:00~21:00, 토 10:00~17:00 진료하며, 일·공휴일은 휴진입니다. 주차장은 봉은사로 1길 4로 네비게이션 설정이 필요합니다. 2026-09-04 확인 기준입니다.
sources:
- label: 뷰성형외과 홈페이지 · 병원소개(뷰 특별함)
url: https://www.viewclinic.com/viewis/specialties/
accessed: "2026-09-04"
type: clinic
- label: 뷰성형외과 홈페이지 · 병원둘러보기(층별 안내)
url: https://www.viewclinic.com/viewis/facilities/
accessed: "2026-09-04"
type: clinic
- label: 뷰성형외과 홈페이지 · 의료진 소개
url: https://www.viewclinic.com/viewis/doctors/
accessed: "2026-09-04"
type: clinic
- label: 강남언니 · 뷰성형외과의원 병원 페이지
url: https://www.gangnamunni.com/hospitals/189
accessed: "2026-09-04"
type: platform
- label: 유튜브 @ViewclinicKR 채널 설명
url: https://www.youtube.com/@ViewclinicKR
accessed: "2026-09-04"
type: doctor
tags:
- 성형외과
- 강남
- 진료과
- 의료진
- 병원시설
history:
- date: "2026-09-07"
note: 자동 생성 초안 (gpt-4.1). 의학 검토 대기. 병원 확인 대기 3건
videos:
- id: Nbemu6mL_uY
title: "가장 VIEW다운 가치 : 안전과 신뢰의 약속"
published: "2026-05-19"
- id: 24of08iA8iE
title: 모티바가 뷰성형외과에 보낸 깜짝 선물
published: "2026-08-01"
note: 모티바 No.1 Champion 감사패
- id: _OZRSJIDWgs
title: 스포르자가 또 방문한 이유, 모티바 프리저베 교육 현장
published: "2026-08-20"
gallery:
- src: /img/breast/dream-team.jpg
alt: 뷰성형외과 가슴성형 의료진 단체 사진. 흰 가운을 입은 의사 12명
caption: "가슴성형 의료진. 출처: 홈페이지 가슴성형 페이지"
- src: /img/clinic/news-2.jpg
alt: 이탈리아 공영방송 RAI News 취재 장면. 의료진 3명이 카메라 앞에 서 있음
caption: "이탈리아 공영방송 RAI News 취재. 출처: 홈페이지 병원소개"
- src: /img/clinic/news-6.jpg
alt: 싱가포르 The Straits Times 인터뷰 촬영 장면
caption: "싱가포르 The Straits Times 인터뷰. 출처: 홈페이지 병원소개"
- src: /img/clinic/news-5.jpg
alt: 뉴질랜드 신문 Stuff의 K-뷰티 관광 기사 화면
caption: "뉴질랜드 Stuff 취재. 출처: 홈페이지 병원소개"
- src: /img/clinic/news-3.jpg
alt: 키르기즈스탄 방송 취재 장면. 원장이 카메라 앞에서 상담 시연
caption: "키르기즈스탄 Channel 취재. 출처: 홈페이지 병원소개"
- src: /img/clinic/news-7.jpg
alt: 수술 실명제 인증 시스템 도입 안내 화면
caption: "수술 실명제 인증 시스템. 출처: 홈페이지 병원소개"
thumbnail: /img/clinic/building-clean.jpg
---
뷰성형외과는 서울 강남구 신논현역 3번 출구 인근에 위치한 19층 규모의 성형외과 전문 병원입니다. 병원 공식 자료와 팩트 시트를 바탕으로, 진료과 구성, 의료진, 주요 시설, 안전 시스템, 수상 이력 등 상담 전 확인할 만한 핵심 정보를 정리했습니다.
## 주요 진료과 및 의료진 구성
뷰성형외과는 성형외과, 이비인후과, 외과(유방검진·맘모톰), 피부과, 마취통증의학과, 영상의학과 등 다양한 진료과를 운영합니다. 성형외과 전문의가 다수 상주하며, 협진 체계를 통해 양악·안면윤곽 등 복합 수술 시 치과와의 연계 진료가 가능합니다. 대표원장은 최순우 성형외과 전문의입니다. [홈페이지 안내 기준]
### 의료진(2026-09-07 기준)
- 성형외과 전문의: 최순우, 윤창운, 김정민, 김도형, 정재현, 조진우, 손유성, 이동규, 김소영, 오원석, 박건욱, 박진우, 오정석, 오준석
- 이비인후과 전문의: 고은석
- 외과 전문의(유방검진): 김민수
- 영상의학과 전문의: 김영민, 이승현, 이지현, 오혜미
- 마취통증의학과 전문의: 성보현, 최진화, 송규영, 김유나, 안예나, 김경림
## 병원 건물 및 주요 시설
뷰성형외과는 지하 1층부터 15층까지 자체 사옥을 사용하며, 각 층별로 진료와 수술, 입원, 상담, 검진, 교육 등 기능이 분리되어 있습니다. 주요 시설은 아래와 같습니다.
| 층수 | 주요 용도 |
|---------|----------------------------|
| 15F | 치과(양악·안면윤곽 협진) |
| 11~14F | 수술센터, 치료센터 |
| 8·10F | 입원센터 |
| 9F | 대강당(교육장) |
| 7F | VIP 입원실 |
| 4~5F | 상담센터 |
| 3F | 피부과, VIP 상담실 |
| 1F | 안내데스크 |
| B1F | 유방외과, 검진센터 |
표의 시설 분류와 용도는 공식 홈페이지 기준입니다. 실제 이용 시 층별 배치나 세부 운영 방식은 상담에서 확인이 필요합니다.
## 안전 시스템 및 관리
- 마취통증의학과 전문의가 상주하며, 수술 전후 1:1 전담 모니터링을 진행합니다.
- 수술실 내부와 주요 공간에 CCTV가 설치되어 대리수술 방지 구역을 운영합니다.
- 수술 전 검진센터에서 원스톱 검진 후 수술 여부를 결정합니다.
- 수술 실명제를 시행하고 있습니다.
- 입원센터에는 24시간 간호사가 상주하여 환자 상태를 실시간으로 체크합니다.
세부 안전 시스템의 실제 운영 방식, CCTV 설치 범위, 모니터링 방식 등은 병원 공개 자료에 없습니다. 상담에서 직접 확인하시기 바랍니다.
## 진료과목 및 전문 분야
뷰성형외과의 주요 진료 분야는 가슴성형, 안면윤곽, 양악수술, 눈성형, 코성형, 지방성형, 안티에이징·리프팅, 남자성형, 피부과, 모발이식 등입니다. 세부 시술별 담당 의료진, 수술 가능 범위 등은 상담에서 확인할 수 있습니다.
## 수상 이력 및 외부 평가
- 모티바 그랜드 어워드 4회 수상(2020, 2021, 2024, 2025)
- 모티바 글로벌 KOL 4년 연속 위촉(2023~2026)
- 모티바 보형물 국내 사용량 1위(2023, 모티바코리아 전체 수술량 기준)
- 멘토 보형물 사용량 1위(2016, 2017)
- 메이크오버 쇼 '렛미인' 시즌 2~5 닥터스 참여
외부 플랫폼 평점(2026-09-04 확인 기준):
- 강남언니 9.5점(19,373건), 구글 4.9점(901건)
## 진료 시간 및 위치
- 위치: 서울특별시 강남구 봉은사로 107, 뷰성형외과빌딩(신논현역 3번 출구 50m)
- 진료시간: 월~목 10:00~19:00, 금 10:00~21:00, 토 10:00~17:00, 일·공휴일 휴진(2026-09-04 기준)
- 주차장 진입은 봉은사로 1길 4로 네비게이션 설정 필요
## 상담에서 확인할 것
- [ ] 수술별 담당 의료진 및 협진 범위
- [ ] 안전 시스템의 실제 운영 방식(CCTV, 모니터링 등)
- [ ] 시술별 세부 진료 가능 여부 및 대기 기간
## 병원 확인 대기
이 글을 쓰면서 병원 공개 자료에서 찾지 못한 항목입니다. 병원이 확인해 주면 본문에 반영하고 갱신 기록에 남깁니다.
- 수술별 담당 의료진과 세부 협진 범위
- CCTV 설치 위치와 실제 운영 방식
- 시술별 진료 가능 여부 및 대기 기간

View File

@ -0,0 +1,120 @@
---
title: 원진성형외과 눈성형은 어떤 방법이 있고 시술 시간·마취·회복은 어떻게 되나요?
category: D
categoryLabel: 시술 정보
qbIds:
- D-01
- D-06
summary:
- 원진성형외과 눈성형은 쌍꺼풀, 눈매교정, 트임, 중년눈성형 등 다양한 방법을 제공합니다. 홈페이지 안내 기준.
- 수술 방법별로 시술 시간, 마취, 실밥 제거, 일상 복귀 시점이 다르며, 일부 항목은 병원 공개 자료에 없습니다. 개인차가 있습니다.
- 상담에서 본인에게 적합한 방법과 회복 일정, 마취 방식, 부작용 안내를 반드시 확인하세요.
description: 원진성형외과의 눈성형 방법, 수술 시간, 마취, 회복 일정을 공식 홈페이지 안내 기준으로 정리했습니다. 확인되지 않은 항목은 상담에서 꼭 문의하세요.
author: editor
reviewer: dr-kang-moonseok
reviewStatus: pending
datePublished: "2026-09-07"
dateModified: "2026-09-07"
faq:
- q: 원진성형외과에서 쌍꺼풀 수술은 어떤 방식으로 진행되나요?
a: 공식 홈페이지에는 쌍꺼풀 수술의 절차, 시간, 마취, 회복 일정에 대한 구체적 안내가 없습니다. 상담에서 본인에게 맞는 방법과 절차를 확인해야 합니다.
- q: 눈매교정(글램아이, 더블유착)은 수술 시간이 얼마나 걸리나요?
a: 글램아이, 더블유착 눈매교정의 시술 시간은 홈페이지에 안내되어 있지 않습니다. CFS 공통근막 눈매교정은 2시간 소요로 안내되어 있습니다. 상담에서 확인하세요.
- q: 트임성형(오픈아이)은 마취를 어떻게 하나요?
a: 오픈아이 트임성형은 단기 수면 마취 또는 부분 마취로 진행된다고 홈페이지에 안내되어 있습니다. 개인차가 있습니다.
- q: 중년눈성형의 회복 기간은 얼마나 되나요?
a: 중년눈성형(상안검, 하안검, 눈썹하거상술)은 7일 후 일상 복귀가 가능하다고 안내되어 있습니다. 개인차가 있습니다.
- q: 실밥 제거는 언제 하나요?
a: CFS 공통근막 눈매교정은 7일 후, 트임성형(오픈아이)은 5~7일 후, 중년눈성형은 최대 7일 후 실밥 제거로 안내되어 있습니다. 쌍꺼풀, 글램아이, 더블유착은 홈페이지에 안내가 없습니다.
- q: 눈성형 후 부작용이 있을 수 있나요?
a: 출혈, 감염, 염증, 신경손상 등 부작용이 개인에 따라 발생할 수 있다고 홈페이지에 안내되어 있습니다. 상담에서 본인 상황에 맞는 위험 안내를 받으세요.
- q: 수술 후 바로 일상생활이 가능한가요?
a: CFS 공통근막 눈매교정은 3일 후, 트임성형(오픈아이)은 5~7일 후, 중년눈성형은 7일 후 일상 복귀가 가능하다고 안내되어 있습니다. 개인차가 있습니다.
- q: 눈성형 방법별로 마취 방식이 다른가요?
a: CFS 공통근막 눈매교정과 트임성형(오픈아이)은 단기 수면 또는 부분 마취, 중년눈성형은 수면 마취로 안내되어 있습니다. 쌍꺼풀, 글램아이, 더블유착은 홈페이지에 안내가 없습니다.
sources:
- label: 원진성형외과 홈페이지 · 눈성형(쌍꺼풀)-당신만 봅니다-원진성형외과
url: https://www.k-wonjin.co.kr/contents/eye/eye
accessed: "2026-09-07"
type: clinic
- label: 원진성형외과 홈페이지 · 눈매교정(고도안검하수)-당신만 봅니다-원진성형외과
url: https://www.k-wonjin.co.kr/contents/eye/cfs
accessed: "2026-09-07"
type: clinic
- label: 원진성형외과 홈페이지 · 중년눈성형(상안검, 하안검)-당신만 봅니다-원진성형외과
url: https://www.k-wonjin.co.kr/contents/eye/middle
accessed: "2026-09-07"
type: clinic
- label: 원진성형외과 홈페이지 · 트임성형(오픈아이)-당신만 봅니다-원진성형외과
url: https://www.k-wonjin.co.kr/contents/eye/open_eye
accessed: "2026-09-07"
type: clinic
tags:
- 눈성형
- 수술방법
- 회복기간
- 마취
- 원진성형외과
history:
- date: "2026-09-07"
note: 자동 생성 초안 (gpt-4.1). 의학 검토 대기. 병원 확인 대기 5건
videos: []
gallery: []
---
눈성형을 고려할 때 가장 궁금한 점은 어떤 수술 방법이 있는지, 각 방법별로 수술 시간과 마취, 회복 과정이 어떻게 되는지입니다. 이 글은 원진성형외과 공식 홈페이지에 공개된 눈성형 관련 정보를 바탕으로, 주요 수술법의 절차와 조건을 표로 정리했습니다. 효과나 결과에 대한 설명은 제외하고, 절차와 조건만 객관적으로 안내합니다.
## 원진성형외과 눈성형 방법별 안내
원진성형외과에서 홈페이지에 공개한 주요 눈성형 방법은 다음과 같습니다.
- 쌍꺼풀 수술(절개/비절개)
- 눈매교정(글램아이, 더블유착, CFS 공통근막)
- 트임성형(오픈아이: 앞트임, 뒤트임, 밑트임)
- 중년눈성형(상안검, 하안검, 눈썹하거상술)
각 수술법별로 시술 시간, 마취, 실밥 제거, 일상 복귀 시점 등은 아래 표와 같습니다.
| 수술명 | 시술 시간 | 마취 방법 | 실밥 제거 | 일상 복귀 |
|---------------------|----------------|--------------------------|------------------|------------------|
| 쌍꺼풀(절개/비절개) | 확인 | 확인 | 확인 | 확인 |
| 눈매교정(글램아이) | 확인 | 확인 | 확인 | 확인 |
| 눈매교정(더블유착) | 확인 | 확인 | 확인 | 확인 |
| 눈매교정(CFS 공통근막) | 2시간 | 단기 수면 또는 부분 마취 | 7일 후 | 3일 후 |
| 트임성형(오픈아이) | 40분 | 단기 수면 또는 부분 마취 | 5~7일 후 | 5~7일 후 |
| 중년눈성형(상안검/하안검/눈썹하거상술) | 확인 | 수면 마취 | 최대 7일 후 | 7일 후 |
표에 없는 항목은 병원 홈페이지에 공개된 자료가 없습니다. 개인별 회복 속도나 수술 적용 범위, 마취 방법 등은 상담에서 추가 안내가 필요합니다.
## 수술별 절차와 주요 특징
### 쌍꺼풀 수술(절개/비절개)
공식 홈페이지에 절차, 시간, 마취, 회복 일정 등 구체적 안내가 없습니다. 상담에서 본인에게 적합한 방법과 절차를 확인해야 합니다. (병원 공개 자료에 없습니다)
### 눈매교정(글램아이, 더블유착, CFS 공통근막)
- CFS 공통근막 눈매교정은 고난도 수술로, 2시간 소요, 단기 수면 또는 부분 마취, 7일 후 실밥 제거, 3일 후 일상생활이 가능하다고 안내되어 있습니다. (개인차)
- 글램아이, 더블유착 등 다른 눈매교정 방법은 홈페이지에 시술 시간, 마취, 회복 일정이 안내되어 있지 않습니다.
### 트임성형(오픈아이)
- 위트임, 뒤트임, 밑트임 등 방법이 있으며, 40분 소요, 단기 수면 또는 부분 마취, 5~7일 후 실밥 제거, 5~7일 후 일상 복귀가 가능하다고 안내되어 있습니다. (개인차)
### 중년눈성형(상안검, 하안검, 눈썹하거상술)
- 수면 마취, 최대 7일 후 실밥 제거, 7일 후 일상 복귀가 가능하다고 안내되어 있습니다. 수술 시간은 병원 공개 자료에 없습니다. (개인차)
## 표의 한계와 주의사항
- 표에 '확인'으로 표시된 항목은 공식 홈페이지에 안내가 없는 부분입니다.
- 실제 수술 시간, 마취 방법, 회복 기간 등은 개인의 상태와 수술 방법에 따라 달라질 수 있습니다.
- 부작용(출혈, 감염, 염증, 신경손상 등)은 개인차가 있으므로 상담에서 반드시 안내받으시기 바랍니다.
## 상담에서 확인할 것
- 본인에게 적합한 수술 방법과 절차
- 수술별 시술 시간, 마취 방법, 회복 일정
- 부작용, 합병증, 재수술 가능성 등 위험 안내
## 병원 확인 대기
이 글을 쓰면서 병원 공개 자료에서 찾지 못한 항목입니다. 병원이 확인해 주면 본문에 반영하고 갱신 기록에 남깁니다.
- 쌍꺼풀(절개/비절개), 글램아이, 더블유착 눈매교정의 시술 시간, 마취, 실밥 제거, 일상 복귀 일정
- 눈성형별 마취 방식의 세부 기준
- 각 수술별 입원 필요 여부
- 수술별 금기사항 및 주의사항 상세
- 수술별 비용 안내

View File

@ -0,0 +1,185 @@
{
"source": "Viewclinic_Supporters_vs_Official_AEO_Audit.xlsx (2026-09-04 색인 허용 빌드 실측)",
"results": [
{
"criterionId": "A1",
"level": 3,
"evidence": "12개 AI 봇 전부 허용. OAI-SearchBot·PerplexityBot·GPTBot UA로 GET → 전부 200"
},
{
"criterionId": "A2",
"level": 3,
"evidence": "Server: 미표기 직접 응답, Cloudflare 헤더 없음, AI UA 챌린지 없음"
},
{
"criterionId": "A3",
"level": 3,
"evidence": "서버 렌더링. JS 미실행 HTML에서 본문 텍스트 3,070자 추출"
},
{
"criterionId": "A4",
"level": 1,
"evidence": "변형 간 최종 URL 불일치(중복 콘텐츠 위험): ['https://view-supporters-sample.vercel.app', 'https://www.view-supporters-sample.vercel.app']"
},
{
"criterionId": "A5",
"level": 3,
"evidence": "robots.txt에 sitemap 선언, 200 응답. URL 17개, lastmod 최신 2026-09-04"
},
{
"criterionId": "A6",
"level": "unverified",
"evidence": "[manual] Bing Webmaster Tools 등록 여부는 오너 계정 접근 필요 (또는 site: 검색 수동 확인)"
},
{
"criterionId": "A7",
"level": 2,
"evidence": "TTFB 0.536s / 초기 HTML 20KB. 시술 페이지 31KB"
},
{
"criterionId": "B1",
"level": 3,
"evidence": "JSON-LD 2블록 전부 유효 + @graph 연결"
},
{
"criterionId": "B2",
"level": 3,
"evidence": "@type MedicalClinic + 주소·전화·openingHours·전문분야/geo 구조화"
},
{
"criterionId": "B3",
"level": 3,
"evidence": "Physician/Attorney 스키마 1개 + 전문분야·소속/sameAs"
},
{
"criterionId": "B4",
"level": 3,
"evidence": "주소 단일 표기: \"서울특별시 강남구 봉은사로 107, 뷰성형외과빌딩\". 전화 2종: 02-539-1177, 02-539-1132"
},
{
"criterionId": "B5",
"level": 3,
"evidence": "sameAs 5개 (SNS·버티컬·지도 연결)"
},
{
"criterionId": "B6",
"level": 2,
"evidence": "rel=canonical self-referencing 존재"
},
{
"criterionId": "B7",
"level": 1,
"evidence": "hreflang 없음, 다국어 페이지 흔적도 탐지 안 됨 (단일 언어)"
},
{
"criterionId": "C1",
"level": 3,
"evidence": "홈 히어로 첫 단락과 글 8편 전부 첫 단락에 '뷰성형외과는 2005년 개원한 서울 강남 신논현역 인근 성형외과' 정의문 + 세 줄 요약(직접 답변 블록). 시술 페이지 첫 텍스트가 상담폼이 아니라 답변"
},
{
"criterionId": "C2",
"level": 3,
"evidence": "FAQ 섹션(자주 묻는 질문) + FAQPage 스키마 존재"
},
{
"criterionId": "C3",
"level": 3,
"evidence": "H1 1개 서술형: \"뷰성형외과를 알아보는 사람들의질문에 먼저 답합니다.\". H2 7개 중복 없음"
},
{
"criterionId": "C4",
"level": 2,
"evidence": "시술 페이지(프리저베)에 절개 3~3.5cm, 수술 시간 약 30분, 200~300cc 등 수치가 본문·표·FAQ에 텍스트로 존재. 가격대·회복 일수 표는 없음(가격 노출 범위는 경영진 결정 대기)"
},
{
"criterionId": "C5",
"level": 2,
"evidence": "HTML 표 1개"
},
{
"criterionId": "C6",
"level": 3,
"evidence": "최신 갱신 신호 2026-09-04 (dateModified 2026-09-04, sitemap lastmod 2026-09-04) + dateModified 표기"
},
{
"criterionId": "C7",
"level": 3,
"evidence": "감수 원장 약력이 텍스트로 표기(서울대 의학박사, 고려대의료원 성형외과 전문의 등) + Physician 스키마 sameAs(강남언니 프로필) + 작성자 Person 스키마. 단 감수는 '예정' 상태"
},
{
"criterionId": "C8",
"level": 3,
"evidence": "세 줄 요약·FAQ 답변 10개 샘플 중 10개가 '뷰성형외과'와 시술명(프리저베·보형물 등)을 문장 안에 포함. 단독으로 떼어도 주어가 살아 있음"
},
{
"criterionId": "D1",
"level": 3,
"evidence": "병원 엔티티 항목. 공식 사이트와 같은 표면(강남언니 hospitals/189)이라 공식 실측값 준용: 강남언니 hospitals/189 등록. 후기 19,316건, 이벤트 52건, 의료진 26명(정재현 9.6·후기 3,236 등), 병원정보 10"
},
{
"criterionId": "D2",
"level": 2,
"evidence": "병원 엔티티 항목. 공식 실측값 준용: GBP 존재. 평점 4.9(리뷰 901), 소유자 제공 게시물 2일 전(소유·활성). 단 전화번호 미등록(\"장소의 전화번호 추가\" 상태), 웹사이트가 국문 홈페이"
},
{
"criterionId": "D3",
"level": 2,
"evidence": "사이트 밖 언급 표면: 유튜브 1,215편·강남언니·언론 1,137건(뉴스룸 집계). 서포터즈 도메인 자체는 신규라 외부 언급 0. 검색 그라운딩 미실시"
},
{
"criterionId": "D4",
"level": 1,
"evidence": "병원 엔티티 항목. 공식 실측값 준용. 서포터즈는 팩트 시트에서 홈페이지 표기를 그대로 쓰므로 표면 간 불일치를 늘리지 않음"
},
{
"criterionId": "D5",
"level": 2,
"evidence": "병원 엔티티 항목. 공식 실측값 준용(네이버 플레이스 리뷰 776건). 서포터즈 병원 정보 페이지에 플레이스 링크 추가 예정"
},
{
"criterionId": "D6",
"level": 0,
"evidence": "Wikidata에서 \"뷰성형외과\" 검색 결과 없음"
},
{
"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회 반복은 별도 단계)"
},
{
"criterionId": "F1",
"level": 3,
"evidence": "메인 페이지 이미지 18개 중 0개(0%) alt 누락 또는 빈 값"
},
{
"criterionId": "F2",
"level": 3,
"evidence": "CMS 없음. Astro 정적 빌드(HTML 파일)라 보안 패치 대상 코어·플러그인이 없음. 채점기는 generator 메타가 없어 미검증 처리했으나 실질 위험 없음"
},
{
"criterionId": "F3",
"level": 3,
"evidence": "초기 HTML 20KB (300KB 미만)"
},
{
"criterionId": "F4",
"level": 2,
"evidence": "viewport meta 존재, 반응형. CWV 미측정"
}
]
}

View File

@ -0,0 +1,185 @@
{
"source": "Viewclinic_Supporters_vs_Official_AEO_Audit.xlsx (2026-09-04 실측)",
"results": [
{
"criterionId": "A1",
"level": 0,
"evidence": "검색봇 6개 차단: OAI-SearchBot, Googlebot, bingbot, PerplexityBot, Claude-SearchBot, Applebot. 봇 GET: OAI-SearchBot 200·PerplexityBot 200·GPTBot 200"
},
{
"criterionId": "A2",
"level": 3,
"evidence": "Server: Vercel 직접 응답, Cloudflare 헤더 없음, AI UA 챌린지 없음"
},
{
"criterionId": "A3",
"level": 3,
"evidence": "서버 렌더링. JS 미실행 HTML에서 본문 텍스트 3,132자 추출"
},
{
"criterionId": "A4",
"level": 1,
"evidence": "변형 간 최종 URL 불일치(중복 콘텐츠 위험): ['https://view-supporters-sample.vercel.app', 'https://www.view-supporters-sample.vercel.app']"
},
{
"criterionId": "A5",
"level": 1,
"evidence": "/sitemap.xml 200이나 robots.txt에 Sitemap 미선언. URL 17개"
},
{
"criterionId": "A6",
"level": "unverified",
"evidence": "[manual] Bing Webmaster Tools 등록 여부는 오너 계정 접근 필요 (또는 site: 검색 수동 확인)"
},
{
"criterionId": "A7",
"level": 2,
"evidence": "TTFB 0.536s / 초기 HTML 20KB. 시술 페이지 31KB"
},
{
"criterionId": "B1",
"level": 3,
"evidence": "JSON-LD 2블록 전부 유효 + @graph 연결"
},
{
"criterionId": "B2",
"level": 3,
"evidence": "@type MedicalClinic + 주소·전화·openingHours·전문분야/geo 구조화"
},
{
"criterionId": "B3",
"level": 3,
"evidence": "Physician/Attorney 스키마 1개 + 전문분야·소속/sameAs"
},
{
"criterionId": "B4",
"level": 3,
"evidence": "주소 단일 표기: \"서울특별시 강남구 봉은사로 107, 뷰성형외과빌딩\". 전화 2종: 02-539-1177, 02-539-1132"
},
{
"criterionId": "B5",
"level": 3,
"evidence": "sameAs 5개 (SNS·버티컬·지도 연결)"
},
{
"criterionId": "B6",
"level": 2,
"evidence": "rel=canonical self-referencing 존재"
},
{
"criterionId": "B7",
"level": 1,
"evidence": "hreflang 없음, 다국어 페이지 흔적도 탐지 안 됨 (단일 언어)"
},
{
"criterionId": "C1",
"level": 3,
"evidence": "홈 히어로 첫 단락과 글 8편 전부 첫 단락에 '뷰성형외과는 2005년 개원한 서울 강남 신논현역 인근 성형외과' 정의문 + 세 줄 요약(직접 답변 블록). 시술 페이지 첫 텍스트가 상담폼이 아니라 답변"
},
{
"criterionId": "C2",
"level": 3,
"evidence": "FAQ 섹션(자주 묻는 질문) + FAQPage 스키마 존재"
},
{
"criterionId": "C3",
"level": 3,
"evidence": "H1 1개 서술형: \"뷰성형외과를 알아보는 사람들의질문에 먼저 답합니다.\". H2 7개 중복 없음"
},
{
"criterionId": "C4",
"level": 2,
"evidence": "시술 페이지(프리저베)에 절개 3~3.5cm, 수술 시간 약 30분, 200~300cc 등 수치가 본문·표·FAQ에 텍스트로 존재. 가격대·회복 일수 표는 없음(가격 노출 범위는 경영진 결정 대기)"
},
{
"criterionId": "C5",
"level": 2,
"evidence": "HTML 표 1개"
},
{
"criterionId": "C6",
"level": 3,
"evidence": "최신 갱신 신호 2026-09-04 (dateModified 2026-09-04, sitemap lastmod 2026-09-04) + dateModified 표기"
},
{
"criterionId": "C7",
"level": 3,
"evidence": "감수 원장 약력이 텍스트로 표기(서울대 의학박사, 고려대의료원 성형외과 전문의 등) + Physician 스키마 sameAs(강남언니 프로필) + 작성자 Person 스키마. 단 감수는 '예정' 상태"
},
{
"criterionId": "C8",
"level": 3,
"evidence": "세 줄 요약·FAQ 답변 10개 샘플 중 10개가 '뷰성형외과'와 시술명(프리저베·보형물 등)을 문장 안에 포함. 단독으로 떼어도 주어가 살아 있음"
},
{
"criterionId": "D1",
"level": 3,
"evidence": "병원 엔티티 항목. 공식 사이트와 같은 표면(강남언니 hospitals/189)이라 공식 실측값 준용: 강남언니 hospitals/189 등록. 후기 19,316건, 이벤트 52건, 의료진 26명(정재현 9.6·후기 3,236 등), 병원정보 10"
},
{
"criterionId": "D2",
"level": 2,
"evidence": "병원 엔티티 항목. 공식 실측값 준용: GBP 존재. 평점 4.9(리뷰 901), 소유자 제공 게시물 2일 전(소유·활성). 단 전화번호 미등록(\"장소의 전화번호 추가\" 상태), 웹사이트가 국문 홈페이"
},
{
"criterionId": "D3",
"level": 2,
"evidence": "사이트 밖 언급 표면: 유튜브 1,215편·강남언니·언론 1,137건(뉴스룸 집계). 서포터즈 도메인 자체는 신규라 외부 언급 0. 검색 그라운딩 미실시"
},
{
"criterionId": "D4",
"level": 1,
"evidence": "병원 엔티티 항목. 공식 실측값 준용. 서포터즈는 팩트 시트에서 홈페이지 표기를 그대로 쓰므로 표면 간 불일치를 늘리지 않음"
},
{
"criterionId": "D5",
"level": 2,
"evidence": "병원 엔티티 항목. 공식 실측값 준용(네이버 플레이스 리뷰 776건). 서포터즈 병원 정보 페이지에 플레이스 링크 추가 예정"
},
{
"criterionId": "D6",
"level": 0,
"evidence": "Wikidata에서 \"뷰성형외과\" 검색 결과 없음"
},
{
"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회 반복은 별도 단계)"
},
{
"criterionId": "F1",
"level": 3,
"evidence": "메인 페이지 이미지 18개 중 0개(0%) alt 누락 또는 빈 값"
},
{
"criterionId": "F2",
"level": 3,
"evidence": "CMS 없음. Astro 정적 빌드(HTML 파일)라 보안 패치 대상 코어·플러그인이 없음. 채점기는 generator 메타가 없어 미검증 처리했으나 실질 위험 없음"
},
{
"criterionId": "F3",
"level": 3,
"evidence": "초기 HTML 20KB (300KB 미만)"
},
{
"criterionId": "F4",
"level": 2,
"evidence": "viewport meta 존재, 반응형. CWV 미측정"
}
]
}

View File

@ -0,0 +1,700 @@
{
"generatedAt": "2026-09-07",
"rubricVersion": "2.0",
"note": "점수는 INFINITH 제품용 진단 기준이며 검색엔진의 공식 점수나 인용 확률이 아니다. 서포터즈 v1.0 레벨은 2026-09-04 실측(기존 비교 엑셀), 공식은 2026-09-07 v1.1 재검증. 사람 판정 4항목은 2026-09-07 초안.",
"axes": [
{
"id": "aeo",
"code": "AEO",
"name": "답변 준비도",
"nameEn": "Answer Readiness",
"question": "고객의 질문에 얼마나 명확하고 충분하게 답하는가?",
"description": "질문을 고르고, 답을 먼저 쓰고, 한 단락으로 완결하고, 결정에 필요한 정보와 다음 행동까지 닿게 하는가."
},
{
"id": "geo",
"code": "GEO",
"name": "출처 준비도",
"nameEn": "Source Readiness",
"question": "그 답을 얼마나 검증하고 신뢰할 수 있는 출처로 사용할 수 있는가?",
"description": "주장에 근거가 붙어 있고, 누가 책임지는지 보이고, 병원 사실이 표면마다 같고, 갱신·정정 기록이 있으며, 기계가 인용 식별자를 읽을 수 있는가."
}
],
"items": [
{
"id": "AEO1",
"axis": "aeo",
"name": "질문 수요 충족",
"weight": 20,
"method": "semi",
"question": "사람들이 실제로 묻는 질문에 답하는 페이지가 있는가",
"derivedFrom": "C2 FAQ 섹션(1)"
},
{
"id": "AEO2",
"axis": "aeo",
"name": "답변의 직접성",
"weight": 20,
"method": "semi",
"question": "페이지 첫 단락에 답이 먼저 나오는가",
"derivedFrom": "C1 정의문형 첫 문단(1)"
},
{
"id": "AEO3",
"axis": "aeo",
"name": "답변 단위의 자기완결성",
"weight": 15,
"method": "manual",
"question": "한 단락만 떼어내도 누가·어디서·무엇을이 들어 있는가",
"derivedFrom": "C8 패시지 자기완결성(1)"
},
{
"id": "AEO4",
"axis": "aeo",
"name": "의사결정에 필요한 정보",
"weight": 15,
"method": "semi",
"question": "가격대·시간·회복·조건처럼 결정에 쓰는 정보가 텍스트로 있는가",
"derivedFrom": "C4 구체 수치 (가격·시간·회복)(0.6), C5 표·비교 구조(0.4)"
},
{
"id": "AEO5",
"axis": "aeo",
"name": "정보 구조와 가독성",
"weight": 10,
"method": "auto",
"question": "제목이 주제를 서술하고 계층이 논리적인가",
"derivedFrom": "C3 제목 계층 의미성(1)"
},
{
"id": "AEO6",
"axis": "aeo",
"name": "다음 행동의 명확성",
"weight": 10,
"method": "manual",
"question": "답을 읽은 사람이 무엇을 하면 되는지(예약·전화·방문) 바로 보이는가",
"derivedFrom": ""
},
{
"id": "AEO7",
"axis": "aeo",
"name": "핵심 답변의 텍스트 추출",
"weight": 5,
"method": "auto",
"question": "답이 이미지가 아니라 텍스트로 존재하고 서버가 렌더하는가",
"derivedFrom": "A3 서버 렌더링 본문(0.6), F1 이미지 대체텍스트(0.4)"
},
{
"id": "AEO8",
"axis": "aeo",
"name": "사이트 내 답변 발견",
"weight": 5,
"method": "auto",
"question": "크롤러가 답이 있는 페이지를 찾아갈 수 있는가",
"derivedFrom": "A5 sitemap.xml 제공(0.6), B6 canonical·중복 제거(0.4)"
},
{
"id": "GEO1",
"axis": "geo",
"name": "주장과 근거의 일치",
"weight": 20,
"method": "manual",
"question": "수치·수상·효과 주장마다 근거(원문·출처·조건)가 붙어 있는가",
"derivedFrom": ""
},
{
"id": "GEO2",
"axis": "geo",
"name": "출처의 적합성과 추적성",
"weight": 15,
"method": "auto",
"question": "인용된 URL이 정본으로 수렴하고 시간이 지나도 같은 곳을 가리키는가",
"derivedFrom": "A4 HTTPS·리다이렉트 정합(1)"
},
{
"id": "GEO3",
"axis": "geo",
"name": "전문성과 책임 주체",
"weight": 15,
"method": "semi",
"question": "누가 썼고 누가 의학적으로 책임지는지 텍스트와 스키마로 보이는가",
"derivedFrom": "C7 전문가 E-E-A-T (의료진 / 변호사)(0.6), B3 전문가 스키마 (Physician / Attorney)(0.4)"
},
{
"id": "GEO4",
"axis": "geo",
"name": "병원 엔티티와 사실의 정합성",
"weight": 15,
"method": "semi",
"question": "이 병원이 누구인지 사이트 안과 밖(강남언니·GBP·플레이스)에서 같은 사실로 확정되는가",
"derivedFrom": "B2 업종 엔티티 스키마 (MedicalClinic / LegalService / LocalBusiness)(0.2), B4 NAP 사이트 내 일관성(0.15), B5 sameAs 연결(0.1), D1 업종 버티컬 프로필 (병의원: 강남언니 / 법률: 로톡)(0.2), D2 Google 비즈니스 프로필(0.1), D4 표면 간 NAP 완전 일치(0.15), D5 네이버 플레이스 (AI 브리핑 전용)(0.05), D6 위키데이터/위키백과 엔티티(0.05)"
},
{
"id": "GEO5",
"axis": "geo",
"name": "사실의 최신성과 정정",
"weight": 10,
"method": "auto",
"question": "언제 확인한 사실인지 적혀 있고, 틀린 것을 고친 기록이 있는가",
"derivedFrom": "C6 신선도 신호(1)"
},
{
"id": "GEO6",
"axis": "geo",
"name": "원천 대비 추가 가치",
"weight": 10,
"method": "manual",
"question": "다른 곳에 있는 문장을 옮긴 것이 아니라 여기서만 얻는 정보(체크리스트·조건 표·실측)가 있는가",
"derivedFrom": ""
},
{
"id": "GEO7",
"axis": "geo",
"name": "발행 관계와 투명성",
"weight": 10,
"method": "manual",
"question": "누가 운영하고 누구의 지원을 받는지, 광고와 정보가 구분되는지 밝히는가",
"derivedFrom": ""
},
{
"id": "GEO8",
"axis": "geo",
"name": "인용 식별자와 메타데이터 정합성",
"weight": 5,
"method": "auto",
"question": "기계가 읽는 식별자(JSON-LD·메타)가 유효하고 화면 내용과 같은가",
"derivedFrom": "B1 JSON-LD 문법 유효성(1)"
}
],
"gates": [
{
"id": "G1",
"name": "AI 크롤러 접근",
"criterionIds": [
"A1",
"A2"
],
"failLevel": 1,
"cap": 40,
"axes": [
"aeo",
"geo"
],
"reason": "검색용 AI 봇이 차단되거나 CDN이 챌린지를 걸면 답도 출처도 될 수 없다. 점수 대신 상한 40으로 표시한다."
},
{
"id": "G2",
"name": "본문 렌더링",
"criterionIds": [
"A3"
],
"failLevel": 0,
"cap": 40,
"axes": [
"aeo",
"geo"
],
"reason": "JS 미실행 HTML에 본문이 없으면 크롤러에게 빈 페이지다."
}
],
"variants": [
{
"key": "official",
"label": "공식 홈페이지 (viewclinic.com)",
"v1": {
"score": 54,
"grade": "C"
},
"aeo": {
"score": 42,
"raw": 42,
"grade": "C",
"verified": 8,
"capped": []
},
"geo": {
"score": 56,
"raw": 56,
"grade": "C",
"verified": 8,
"capped": []
},
"gates": [
{
"id": "G1",
"passed": true,
"failedBy": []
},
{
"id": "G2",
"passed": true,
"failedBy": []
}
],
"items": [
{
"id": "AEO1",
"pct": 67,
"earned": 13.3,
"basis": "derived",
"signals": "C2=2",
"evidence": "C2: v1.1 정정: 프리저베 페이지(/preserve/)에 FAQ 7문항과 유효한 FAQPage 스키마 존재. 모바일 분기로 2문항이 중복. 메인·가슴성형(/breast/main/)·코성형·오시는길에는 FAQ 없음 → 시술별 확산 전이라 레벨 2"
},
{
"id": "AEO2",
"pct": 0,
"earned": 0,
"basis": "derived",
"signals": "C1=0",
"evidence": "C1: 메인 첫 화면은 슬라이더·\"VIEW SELFIE\" 등 라벨. \"뷰성형외과는 …에 있는 … 병원입니다\" 형태의 정의문 없음. 시술 페이지 첫 텍스트는 오시는길·상담폼"
},
{
"id": "AEO3",
"pct": 33,
"earned": 5,
"basis": "derived",
"signals": "C8=1",
"evidence": "C8: H2 \"철저한 정밀 검진 / ONE_STOP 시스템 / 1:1 전담 마취시스템\". 단독으로 떼면 어느 병원의 무엇인지 알 수 없음"
},
{
"id": "AEO4",
"pct": 40,
"earned": 6,
"basis": "derived",
"signals": "C4=2, C5=0",
"evidence": "C4: v1.1 정정: 프리저베 페이지에 수술시간 20~40분·마취(국소 또는 수면)·회복 1~3일, 코성형 페이지에 수술시간 1~2시간·실밥 7일·일상 5~7일, 안면윤곽 페이지에 1~2시간·전신마취·당일 또는 1일 입원이 텍스트로 있음. 가격대 표기는 없 / C5: HTML <table> 없음. 비교 정보는 이미지로 추정"
},
{
"id": "AEO5",
"pct": 0,
"earned": 0,
"basis": "derived",
"signals": "C3=0",
"evidence": "C3: H1 5개: \"VIEW SELFIE / VIEW EVENT / VIEW SHORTS / VIEW FILM / VIEW SPECIALITY\". 전부 영문 라벨. H2는 같은 문구가 2회씩 중복(모바일/PC 분기). 가슴·코·오시는길 페이지 H1 없음. "
},
{
"id": "AEO6",
"pct": 100,
"earned": 10,
"basis": "judged",
"signals": "",
"evidence": "모든 페이지 하단에 전화 02-539-1177·주소·온라인 상담 폼이 텍스트로 반복되고(수집기 반복 줄), /counsel/reservation/ 예약 페이지와 카카오톡 채널 링크가 있다. 전화·예약·방문 3경로가 텍스트로 연결됨"
},
{
"id": "AEO7",
"pct": 73,
"earned": 3.7,
"basis": "derived",
"signals": "A3=3, F1=1",
"evidence": "A3: WordPress 서버 렌더링. JS 미실행 HTML에서 본문 텍스트 10,757자 추출 / F1: 이미지 302개 중 111개(37%) alt 누락 또는 빈 값"
},
{
"id": "AEO8",
"pct": 87,
"earned": 4.3,
"basis": "derived",
"signals": "A5=3, B6=2",
"evidence": "A5: robots.txt에 sitemap 선언, 200 응답, AIOSEO 3.7.1 동적 생성, URL 3,636개. page/portfolio-sitemap lastmod 최신 2026-08-31. www의 post-sitemap은 2024-05-31에 / B6: rel=canonical self-referencing 존재"
},
{
"id": "GEO1",
"pct": 33,
"earned": 6.7,
"basis": "judged",
"signals": "",
"evidence": "\"모티바 보형물 국내 사용량 1위(2023, 모티바코리아 전체 수술량 기준)\"처럼 집계 주체·시점이 붙은 주장이 일부 있으나, 모티바 그랜드 어워드·KOL·렛미인 등 대부분의 권위 신호는 이미지·슬로건 안에 있고 원문 링크가 없다. \"마취과 전문의 상주 43% vs 23.1%\" 비교는 출처·기준 시점 없음"
},
{
"id": "GEO2",
"pct": 100,
"earned": 15,
"basis": "derived",
"signals": "A4=3",
"evidence": "A4: http://viewclinic.com → 301 → https://www.viewclinic.com/ 정본 수렴"
},
{
"id": "GEO3",
"pct": 40,
"earned": 6,
"basis": "derived",
"signals": "C7=2, B3=0",
"evidence": "C7: 원장·전문의·의료진 언급 17회, 모티바 글로벌 KOL·보건복지부장관표창·갈더마 방문 등 권위 신호 존재. 단 구조화 안 됨 / B3: Physician 스키마 없음. 의료진 정보는 HTML 텍스트·이미지로만 존재"
},
{
"id": "GEO4",
"pct": 47,
"earned": 7,
"basis": "derived",
"signals": "B2=1, B4=1, B5=0, D1=3, D2=2, D4=1, D5=2, D6=0",
"evidence": "B2: Organization + WebSite + WebPage만 존재. MedicalClinic/LocalBusiness 없음 → 주소·전화·진료시간이 구조화되어 있지 않음 / B4: 주소 3가지 표기 혼재: \"서울 강남구 봉은사로 107 뷰성형외과 빌딩\" / \"서울특별시 강남구 봉은사로 107, 뷰성형외과빌딩\" / 시술 페이지 \"서울시 강남구 봉은사로 107, 뷰성형외과빌딩(논현동…\". 전화 02-539-1177·02-539-11 / B5: Organization.sameAs: [] (빈 배열). 푸터에 YouTube·Instagram·Facebook·네이버블로그 링크가 있으나 스키마에 미연결 / D1: 강남언니 hospitals/189 등록. 후기 19,373건(2026-09-04 재확인, 08-28 19,316건), 이벤트 52건, 의료진 26명(정재현 9.6·후기 3,236 등), 병원정보 10건(CCTV·마취과 상주), 진료시간 표기 / D2: GBP 존재. 평점 4.9(리뷰 901), 소유자 제공 게시물 2일 전(소유·활성). 단 전화번호 미등록(\"장소의 전화번호 추가\" 상태), 웹사이트가 국문 홈페이지가 아닌 viewplasticsurgery.com / D4: 주소 표기 3종 혼재: 홈페이지 \"서울 강남구 봉은사로 107 뷰성형외과 빌딩\" / 강남언니 \"서울 강남구 봉은사로 107 (논현동)\" / GBP \"서울특별시 강남구 봉은사로 107\". GBP 전화 누락, 웹사이트 도메인 불일치 / D5: 네이버 플레이스 존재(리뷰 776건, 2026-04 INFINITH 리포트 기준). 홈페이지 링크 연결 여부 미확인 → 보수적으로 2 / D6: Wikidata에서 \"뷰성형외과\" 검색 결과 없음 (wbsearchentities ko, 2026-08-31)"
},
{
"id": "GEO5",
"pct": 100,
"earned": 10,
"basis": "derived",
"signals": "C6=3",
"evidence": "C6: 시술 페이지에 article:modified_time·dateModified 2026-04-17 존재, page/portfolio-sitemap lastmod 최신 2026-08-31. blog.viewclinic.com은 2026-09-07 게시까지"
},
{
"id": "GEO6",
"pct": 67,
"earned": 6.7,
"basis": "judged",
"signals": "",
"evidence": "수술 전·후 주의사항(부위별 8탭, 9,585자)·애프터케어 프로그램(4,572자)·검진센터 항목·안전수술시스템 절차는 병원 고유 정보다. 다만 표·체크리스트 형태가 없고(C5=0) 회복 일정은 문단에 흩어져 있다"
},
{
"id": "GEO7",
"pct": 33,
"earned": 3.3,
"basis": "judged",
"signals": "",
"evidence": "푸터에 대표·사업자등록번호·주소가 있어 운영 주체는 분명하다. 그러나 홈페이지에 게시한 후기 광고가 수술비 할인 대가를 표시하지 않아 2026-07-12 공정위 시정명령·공표명령을 받았고, 이벤트·전후·후기 섹션이 정보 페이지와 구분 없이 섞여 있다"
},
{
"id": "GEO8",
"pct": 33,
"earned": 1.7,
"basis": "derived",
"signals": "B1=1",
"evidence": "B1: JSON-LD 2블록 중 ItemList 블록이 문법 오류(쉼표 누락, line 11)로 파싱 실패 → 시술 목록 구조화 데이터 전체 무효"
}
]
},
{
"key": "supporters_noindex",
"label": "서포터즈 샘플 (현재 · noindex)",
"v1": {
"score": 78,
"grade": "B"
},
"aeo": {
"score": 40,
"raw": 92,
"grade": "D",
"verified": 8,
"capped": [
"G1"
]
},
"geo": {
"score": 40,
"raw": 77,
"grade": "D",
"verified": 8,
"capped": [
"G1"
]
},
"gates": [
{
"id": "G1",
"passed": false,
"failedBy": [
"A1"
]
},
{
"id": "G2",
"passed": true,
"failedBy": []
}
],
"items": [
{
"id": "AEO1",
"pct": 100,
"earned": 20,
"basis": "derived",
"signals": "C2=3",
"evidence": "C2: FAQ 섹션(자주 묻는 질문) + FAQPage 스키마 존재"
},
{
"id": "AEO2",
"pct": 100,
"earned": 20,
"basis": "derived",
"signals": "C1=3",
"evidence": "C1: 홈 히어로 첫 단락과 글 8편 전부 첫 단락에 '뷰성형외과는 2005년 개원한 서울 강남 신논현역 인근 성형외과' 정의문 + 세 줄 요약(직접 답변 블록). 시술 페이지 첫 텍스트가 상담폼이 아니라 답변"
},
{
"id": "AEO3",
"pct": 100,
"earned": 15,
"basis": "derived",
"signals": "C8=3",
"evidence": "C8: 세 줄 요약·FAQ 답변 10개 샘플 중 10개가 '뷰성형외과'와 시술명(프리저베·보형물 등)을 문장 안에 포함. 단독으로 떼어도 주어가 살아 있음"
},
{
"id": "AEO4",
"pct": 67,
"earned": 10,
"basis": "derived",
"signals": "C4=2, C5=2",
"evidence": "C4: 시술 페이지(프리저베)에 절개 3~3.5cm, 수술 시간 약 30분, 200~300cc 등 수치가 본문·표·FAQ에 텍스트로 존재. 가격대·회복 일수 표는 없음(가격 노출 범위는 경영진 결정 대기) / C5: HTML 표 1개"
},
{
"id": "AEO5",
"pct": 100,
"earned": 10,
"basis": "derived",
"signals": "C3=3",
"evidence": "C3: H1 1개 서술형: \"뷰성형외과를 알아보는 사람들의질문에 먼저 답합니다.\". H2 7개 중복 없음"
},
{
"id": "AEO6",
"pct": 100,
"earned": 10,
"basis": "judged",
"signals": "",
"evidence": "헤더 상담 예약 버튼, /visit 페이지에 전화·카카오톡·온라인 예약 3경로가 표로, FactBlock에 tel: 링크. 전부 텍스트 링크"
},
{
"id": "AEO7",
"pct": 100,
"earned": 5,
"basis": "derived",
"signals": "A3=3, F1=3",
"evidence": "A3: 서버 렌더링. JS 미실행 HTML에서 본문 텍스트 3,132자 추출 / F1: 메인 페이지 이미지 18개 중 0개(0%) alt 누락 또는 빈 값"
},
{
"id": "AEO8",
"pct": 47,
"earned": 2.3,
"basis": "derived",
"signals": "A5=1, B6=2",
"evidence": "A5: /sitemap.xml 200이나 robots.txt에 Sitemap 미선언. URL 17개 / B6: rel=canonical self-referencing 존재"
},
{
"id": "GEO1",
"pct": 67,
"earned": 13.3,
"basis": "judged",
"signals": "",
"evidence": "18편 전편의 참고 자료에 유형(병원 제공·원장 설명·제품·규제·플랫폼·2차)과 확인일이 붙고, FDA·ISO 주장은 원문 URL로 연결. 수치 문단 5곳에 개인차·사례 한정이 빠져 게이트 경고 → \"대부분 명시\""
},
{
"id": "GEO2",
"pct": 33,
"earned": 5,
"basis": "derived",
"signals": "A4=1",
"evidence": "A4: 변형 간 최종 URL 불일치(중복 콘텐츠 위험): ['https://view-supporters-sample.vercel.app', 'https://www.view-supporters-sample.vercel.app']"
},
{
"id": "GEO3",
"pct": 100,
"earned": 15,
"basis": "derived",
"signals": "C7=3, B3=3",
"evidence": "C7: 감수 원장 약력이 텍스트로 표기(서울대 의학박사, 고려대의료원 성형외과 전문의 등) + Physician 스키마 sameAs(강남언니 프로필) + 작성자 Person 스키마. 단 감수는 '예정' 상태 / B3: Physician/Attorney 스키마 1개 + 전문분야·소속/sameAs"
},
{
"id": "GEO4",
"pct": 80,
"earned": 12,
"basis": "derived",
"signals": "B2=3, B4=3, B5=3, D1=3, D2=2, D4=1, D5=2, D6=0",
"evidence": "B2: @type MedicalClinic + 주소·전화·openingHours·전문분야/geo 구조화 / B4: 주소 단일 표기: \"서울특별시 강남구 봉은사로 107, 뷰성형외과빌딩\". 전화 2종: 02-539-1177, 02-539-1132 / B5: sameAs 5개 (SNS·버티컬·지도 연결) / D1: 병원 엔티티 항목. 공식 사이트와 같은 표면(강남언니 hospitals/189)이라 공식 실측값 준용: 강남언니 hospitals/189 등록. 후기 19,316건, 이벤트 52건, 의료진 26명(정재현 9.6·후기 3,236 등), 병원정보 10 / D2: 병원 엔티티 항목. 공식 실측값 준용: GBP 존재. 평점 4.9(리뷰 901), 소유자 제공 게시물 2일 전(소유·활성). 단 전화번호 미등록(\"장소의 전화번호 추가\" 상태), 웹사이트가 국문 홈페이 / D4: 병원 엔티티 항목. 공식 실측값 준용. 서포터즈는 팩트 시트에서 홈페이지 표기를 그대로 쓰므로 표면 간 불일치를 늘리지 않음 / D5: 병원 엔티티 항목. 공식 실측값 준용(네이버 플레이스 리뷰 776건). 서포터즈 병원 정보 페이지에 플레이스 링크 추가 예정 / D6: Wikidata에서 \"뷰성형외과\" 검색 결과 없음"
},
{
"id": "GEO5",
"pct": 100,
"earned": 10,
"basis": "derived",
"signals": "C6=3",
"evidence": "C6: 최신 갱신 신호 2026-09-04 (dateModified 2026-09-04, sitemap lastmod 2026-09-04) + dateModified 표기"
},
{
"id": "GEO6",
"pct": 100,
"earned": 10,
"basis": "judged",
"signals": "",
"evidence": "원천 콘텐츠 5유형 중 4유형 존재: 상담 질문 체크리스트, 회복 일정·마취 선택·검진 주기 조건 표(18편 전편에 표), 협진·동선 설명(이비인후과 협진·방문 안내), 원장 발언 인용(쇼츠 정리 답). 실측 기록(방문 취재)은 미착수"
},
{
"id": "GEO7",
"pct": 67,
"earned": 6.7,
"basis": "judged",
"signals": "",
"evidence": "운영 주체(AI오투오·편집 책임 안성민)·정정 이메일·병원 지원 관계를 모든 글 하단 Disclosure와 /about·푸터에 명시. 후기·이벤트 없음. 다만 고지가 글 첫 부분이 아니라 하단에 있어 심사지침의 \"첫 부분\" 기준에는 못 미침"
},
{
"id": "GEO8",
"pct": 100,
"earned": 5,
"basis": "derived",
"signals": "B1=3",
"evidence": "B1: JSON-LD 2블록 전부 유효 + @graph 연결"
}
]
},
{
"key": "supporters_indexable",
"label": "서포터즈 색인 허용 빌드",
"v1": {
"score": 86,
"grade": "A"
},
"aeo": {
"score": 94,
"raw": 94,
"grade": "A",
"verified": 8,
"capped": []
},
"geo": {
"score": 77,
"raw": 77,
"grade": "B",
"verified": 8,
"capped": []
},
"gates": [
{
"id": "G1",
"passed": true,
"failedBy": []
},
{
"id": "G2",
"passed": true,
"failedBy": []
}
],
"items": [
{
"id": "AEO1",
"pct": 100,
"earned": 20,
"basis": "derived",
"signals": "C2=3",
"evidence": "C2: FAQ 섹션(자주 묻는 질문) + FAQPage 스키마 존재"
},
{
"id": "AEO2",
"pct": 100,
"earned": 20,
"basis": "derived",
"signals": "C1=3",
"evidence": "C1: 홈 히어로 첫 단락과 글 8편 전부 첫 단락에 '뷰성형외과는 2005년 개원한 서울 강남 신논현역 인근 성형외과' 정의문 + 세 줄 요약(직접 답변 블록). 시술 페이지 첫 텍스트가 상담폼이 아니라 답변"
},
{
"id": "AEO3",
"pct": 100,
"earned": 15,
"basis": "derived",
"signals": "C8=3",
"evidence": "C8: 세 줄 요약·FAQ 답변 10개 샘플 중 10개가 '뷰성형외과'와 시술명(프리저베·보형물 등)을 문장 안에 포함. 단독으로 떼어도 주어가 살아 있음"
},
{
"id": "AEO4",
"pct": 67,
"earned": 10,
"basis": "derived",
"signals": "C4=2, C5=2",
"evidence": "C4: 시술 페이지(프리저베)에 절개 3~3.5cm, 수술 시간 약 30분, 200~300cc 등 수치가 본문·표·FAQ에 텍스트로 존재. 가격대·회복 일수 표는 없음(가격 노출 범위는 경영진 결정 대기) / C5: HTML 표 1개"
},
{
"id": "AEO5",
"pct": 100,
"earned": 10,
"basis": "derived",
"signals": "C3=3",
"evidence": "C3: H1 1개 서술형: \"뷰성형외과를 알아보는 사람들의질문에 먼저 답합니다.\". H2 7개 중복 없음"
},
{
"id": "AEO6",
"pct": 100,
"earned": 10,
"basis": "judged",
"signals": "",
"evidence": "헤더 상담 예약 버튼, /visit 페이지에 전화·카카오톡·온라인 예약 3경로가 표로, FactBlock에 tel: 링크. 전부 텍스트 링크"
},
{
"id": "AEO7",
"pct": 100,
"earned": 5,
"basis": "derived",
"signals": "A3=3, F1=3",
"evidence": "A3: 서버 렌더링. JS 미실행 HTML에서 본문 텍스트 3,070자 추출 / F1: 메인 페이지 이미지 18개 중 0개(0%) alt 누락 또는 빈 값"
},
{
"id": "AEO8",
"pct": 87,
"earned": 4.3,
"basis": "derived",
"signals": "A5=3, B6=2",
"evidence": "A5: robots.txt에 sitemap 선언, 200 응답. URL 17개, lastmod 최신 2026-09-04 / B6: rel=canonical self-referencing 존재"
},
{
"id": "GEO1",
"pct": 67,
"earned": 13.3,
"basis": "judged",
"signals": "",
"evidence": "18편 전편의 참고 자료에 유형(병원 제공·원장 설명·제품·규제·플랫폼·2차)과 확인일이 붙고, FDA·ISO 주장은 원문 URL로 연결. 수치 문단 5곳에 개인차·사례 한정이 빠져 게이트 경고 → \"대부분 명시\""
},
{
"id": "GEO2",
"pct": 33,
"earned": 5,
"basis": "derived",
"signals": "A4=1",
"evidence": "A4: 변형 간 최종 URL 불일치(중복 콘텐츠 위험): ['https://view-supporters-sample.vercel.app', 'https://www.view-supporters-sample.vercel.app']"
},
{
"id": "GEO3",
"pct": 100,
"earned": 15,
"basis": "derived",
"signals": "C7=3, B3=3",
"evidence": "C7: 감수 원장 약력이 텍스트로 표기(서울대 의학박사, 고려대의료원 성형외과 전문의 등) + Physician 스키마 sameAs(강남언니 프로필) + 작성자 Person 스키마. 단 감수는 '예정' 상태 / B3: Physician/Attorney 스키마 1개 + 전문분야·소속/sameAs"
},
{
"id": "GEO4",
"pct": 80,
"earned": 12,
"basis": "derived",
"signals": "B2=3, B4=3, B5=3, D1=3, D2=2, D4=1, D5=2, D6=0",
"evidence": "B2: @type MedicalClinic + 주소·전화·openingHours·전문분야/geo 구조화 / B4: 주소 단일 표기: \"서울특별시 강남구 봉은사로 107, 뷰성형외과빌딩\". 전화 2종: 02-539-1177, 02-539-1132 / B5: sameAs 5개 (SNS·버티컬·지도 연결) / D1: 병원 엔티티 항목. 공식 사이트와 같은 표면(강남언니 hospitals/189)이라 공식 실측값 준용: 강남언니 hospitals/189 등록. 후기 19,316건, 이벤트 52건, 의료진 26명(정재현 9.6·후기 3,236 등), 병원정보 10 / D2: 병원 엔티티 항목. 공식 실측값 준용: GBP 존재. 평점 4.9(리뷰 901), 소유자 제공 게시물 2일 전(소유·활성). 단 전화번호 미등록(\"장소의 전화번호 추가\" 상태), 웹사이트가 국문 홈페이 / D4: 병원 엔티티 항목. 공식 실측값 준용. 서포터즈는 팩트 시트에서 홈페이지 표기를 그대로 쓰므로 표면 간 불일치를 늘리지 않음 / D5: 병원 엔티티 항목. 공식 실측값 준용(네이버 플레이스 리뷰 776건). 서포터즈 병원 정보 페이지에 플레이스 링크 추가 예정 / D6: Wikidata에서 \"뷰성형외과\" 검색 결과 없음"
},
{
"id": "GEO5",
"pct": 100,
"earned": 10,
"basis": "derived",
"signals": "C6=3",
"evidence": "C6: 최신 갱신 신호 2026-09-04 (dateModified 2026-09-04, sitemap lastmod 2026-09-04) + dateModified 표기"
},
{
"id": "GEO6",
"pct": 100,
"earned": 10,
"basis": "judged",
"signals": "",
"evidence": "원천 콘텐츠 5유형 중 4유형 존재: 상담 질문 체크리스트, 회복 일정·마취 선택·검진 주기 조건 표(18편 전편에 표), 협진·동선 설명(이비인후과 협진·방문 안내), 원장 발언 인용(쇼츠 정리 답). 실측 기록(방문 취재)은 미착수"
},
{
"id": "GEO7",
"pct": 67,
"earned": 6.7,
"basis": "judged",
"signals": "",
"evidence": "운영 주체(AI오투오·편집 책임 안성민)·정정 이메일·병원 지원 관계를 모든 글 하단 Disclosure와 /about·푸터에 명시. 후기·이벤트 없음. 다만 고지가 글 첫 부분이 아니라 하단에 있어 심사지침의 \"첫 부분\" 기준에는 못 미침"
},
{
"id": "GEO8",
"pct": 100,
"earned": 5,
"basis": "derived",
"signals": "B1=3",
"evidence": "B1: JSON-LD 2블록 전부 유효 + @graph 연결"
}
]
}
]
}

View File

@ -0,0 +1,146 @@
<!doctype html>
<html lang="ko"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>원진성형외과 AI Answer Readiness Report v2.0</title>
<link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css">
<style>
:root{--ink:#0A1128;--navy:#021341;--violet:#4F1DA1;--accent:#6C5CE7;--light:#F7F8FC;--slate:#4A5268;--muted:#7A8399;--line:#E3E7F2}
*{box-sizing:border-box}body{margin:0;font-family:Pretendard,-apple-system,sans-serif;color:var(--ink);background:#fff;word-break:keep-all;line-height:1.62;font-size:14px}
.serif{font-family:'Playfair Display',serif}
.page{padding:48px 56px;max-width:1080px;margin:0 auto}
.dark{background:var(--ink);color:#fff}.dark .sub,.dark .note{color:#B9C0D4}.light{background:var(--light)}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.24em;color:var(--accent);text-transform:uppercase}.dark .eyebrow{color:#C4B5FD}
h1{font-size:44px;line-height:1.1;margin:10px 0 6px;letter-spacing:-.02em}h2{font-size:30px;margin:8px 0 12px;line-height:1.2}h3{font-size:17px;margin:0 0 6px}
.accent{background:linear-gradient(90deg,#C4B5FD,#93C5FD);-webkit-background-clip:text;background-clip:text;color:transparent}
.lede{font-size:16px;color:var(--slate);max-width:760px}.dark .lede{color:#D6DBEA}
.sub{font-size:12.5px;color:var(--muted)}.note{font-size:12.5px;color:var(--muted);margin-top:8px}
.badge{display:inline-block;border:1px solid;border-radius:999px;padding:3px 12px;font-size:13px;font-weight:700}
.pill{display:inline-block;border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:700}.pill.gray{background:#EEF0F6;color:#6B7280}
.grid{display:grid;gap:16px}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}
.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px 22px;box-shadow:3px 4px 12px rgba(0,0,0,.05)}.dark .card{color:var(--ink)}
.rings{display:flex;gap:28px;align-items:flex-start;flex-wrap:wrap}.ring{display:flex;flex-direction:column;align-items:center;gap:8px}
.tbl{width:100%;border-collapse:collapse;font-size:13px;background:#fff;border-radius:12px;overflow:hidden;border:1px solid var(--line)}.tbl th{background:#F1F3FA;text-align:left;padding:9px 11px;font-size:12px;color:var(--slate);border-bottom:1px solid var(--line)}.tbl td{padding:9px 11px;border-bottom:1px solid #EEF0F6;vertical-align:top}.tbl tr:last-child td{border-bottom:0}.mono{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--accent);font-weight:700}
.lv{display:inline-block;min-width:26px;text-align:center;border-radius:6px;padding:1px 6px;font-weight:700;font-size:12px}.lv3{background:#E9F7EF;color:#2E7D4F}.lv2{background:#EEF3FF;color:#2F4FBF}.lv1{background:#FFF4E5;color:#B26A00}.lv0{background:#FDECEF;color:#B84C5F}.lvu{background:#EEF0F6;color:#6B7280}
.find{border-left:5px solid;padding-left:16px}.find .tag{font-size:11.5px;font-weight:700;letter-spacing:.08em}
.act .pri{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;color:var(--accent)}.act .eff{float:right}
.kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.kpi .k{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:14px;padding:14px 16px}.kpi b{font-family:'Playfair Display',serif;font-size:30px;color:#AF90FF;display:block;line-height:1}.kpi span{font-size:12.5px;color:#C7CDE0}
a{color:var(--accent)}ul{margin:6px 0 0 18px;padding:0}li{margin:3px 0}
footer{padding:28px 56px;font-size:12px;color:var(--muted);border-top:1px solid var(--line)}
@media print{@page{size:A4;margin:12mm}body{font-size:12.5px}.page{padding:22px 10px;max-width:none}.pb{page-break-before:always}h1{font-size:34px}h2{font-size:24px}.dark{-webkit-print-color-adjust:exact;print-color-adjust:exact}.card,.tbl,.lv,.badge,.pill,.kpi .k{-webkit-print-color-adjust:exact;print-color-adjust:exact}tr,.card{page-break-inside:avoid}}
</style></head><body>
<section class="dark"><div class="page" style="padding-top:64px;padding-bottom:56px">
<div class="eyebrow">INFINITH AI Discovery · AEO / GEO Audit v2.0</div>
<h1 class="serif"><span class="accent">AI Answer Readiness</span></h1>
<div style="font-size:26px;font-weight:700;margin:4px 0 2px">원진성형외과</div>
<div class="sub" style="color:#C4B5FD">성형외과 (강남역) · <a href="https://www.k-wonjin.co.kr" style="color:#C4B5FD">https://www.k-wonjin.co.kr</a></div>
<p class="lede" style="margin-top:18px">AI 답변엔진(ChatGPT·Perplexity·Gemini·네이버 AI 브리핑)이 이 병원을 얼마나 읽고, 믿고, 인용할 수 있는지를 실측 신호로 채점한 리포트입니다. 답변 준비도(AEO)와 출처 준비도(GEO)를 각각 100점으로 보고, 확인하지 못한 항목은 점수에서 뺍니다.</p>
<div style="display:flex;gap:32px;align-items:center;flex-wrap:wrap;margin-top:26px">
<div class="card" style="display:flex;gap:26px;padding:22px 30px"><div class="ring"><svg viewBox="0 0 120 120" width="132" height="132"><circle cx="60" cy="60" r="52" fill="none" stroke="#E8ECF7" stroke-width="10"/><circle cx="60" cy="60" r="52" fill="none" stroke="#6C5CE7" stroke-width="10" stroke-linecap="round" stroke-dasharray="326.7" stroke-dashoffset="277.7" transform="rotate(-90 60 60)"/><text x="60" y="66" text-anchor="middle" font-family="Playfair Display, serif" font-weight="700" font-size="30" fill="#0A1128">15</text><text x="60" y="84" text-anchor="middle" font-size="10" fill="#7A8399">/ 100</text></svg><span class="badge" style="background:#FDECEF;color:#B84C5F;border-color:#F7C3CD">AEO 등급 D</span></div><div class="ring"><svg viewBox="0 0 120 120" width="132" height="132"><circle cx="60" cy="60" r="52" fill="none" stroke="#E8ECF7" stroke-width="10"/><circle cx="60" cy="60" r="52" fill="none" stroke="#6C5CE7" stroke-width="10" stroke-linecap="round" stroke-dasharray="326.7" stroke-dashoffset="179.7" transform="rotate(-90 60 60)"/><text x="60" y="66" text-anchor="middle" font-family="Playfair Display, serif" font-weight="700" font-size="30" fill="#0A1128">45</text><text x="60" y="84" text-anchor="middle" font-size="10" fill="#7A8399">/ 100</text></svg><span class="badge" style="background:#FFF4E5;color:#B26A00;border-color:#FFD9A8">GEO 등급 C</span></div></div>
<div class="kpi" style="flex:1;min-width:420px">
<div class="k"><b>25</b><span>실측 항목 / 36</span></div>
<div class="k"><b>49</b><span>v1.0 종합 (C)</span></div>
<div class="k"><b>5</b><span>핵심 발견</span></div>
<div class="k"><b>6</b><span>실행 항목</span></div>
</div>
</div>
<p class="note" style="margin-top:22px">실측일 2026-09-08 · 리포트 작성 2026-09-08 · 미검증 11개 항목은 분모에서 제외했습니다. 조건은 마지막 장에 적었습니다.</p>
</div></section>
<section class="light pb"><div class="page">
<div class="eyebrow">Findings</div><h2>AI가 지금 원진성형외과를 어떻게 읽는지 정리했습니다</h2>
<div class="grid g2" style="margin-top:14px">
<div class="card find" style="border-left-color:#9B8AD4"><div class="tag" style="color:#9B8AD4">강점</div><h3>크롤러 접근은 열려 있습니다. 서버 렌더링이라 AI가 본문을 읽습니다</h3><p style="margin:0;color:var(--slate)">robots.txt가 AI 검색봇 12종을 모두 허용하고, IIS가 본문을 서버에서 렌더링해 JS 없이도 14,079자를 읽을 수 있습니다. TTFB 0.09초, 초기 HTML 153KB로 가볍습니다. 다만 www 유무에 따라 최종 URL이 갈라지고(정본 미수렴), sitemap이 robots.txt에 선언돼 있지 않습니다.</p></div><div class="card find" style="border-left-color:#D4889A"><div class="tag" style="color:#D4889A">핵심 과제</div><h3>연결은 됐지만 병원 자체가 스키마로 정의돼 있지 않습니다</h3><p style="margin:0;color:var(--slate)">Organization.sameAs 10개로 SNS·지도·버티컬을 잘 묶었고 주소 표기도 한 가지입니다. 그러나 MedicalClinic·Physician 스키마가 없어 주소·전화·진료시간·의료진 17명이 구조화돼 있지 않고, 전화번호는 6종이 섞여 있습니다. 영문 사이트(wonjinbeauty.com)는 hreflang으로 연결되지 않았습니다.</p></div><div class="card find" style="border-left-color:#D4889A"><div class="tag" style="color:#D4889A">핵심 과제</div><h3>인용할 문장이 부족합니다. H1도 표도 정의문도 없습니다</h3><p style="margin:0;color:var(--slate)">메인·시술 페이지에 H1이 없고 HTML 표가 없으며 병원 정의문도 없습니다. 눈매교정(CFS)·트임 페이지에는 수술 시간·마취·실밥·일상 복귀 수치가 텍스트로 있어 인용 구조의 출발점이 될 수 있지만, 쌍꺼풀·눈매교정 나머지 페이지는 수치가 없습니다. 최신 갱신 신호가 2025-02-18(sitemap)로 18개월 전입니다.</p></div><div class="card find" style="border-left-color:#D4A872"><div class="tag" style="color:#D4A872">보완</div><h3>유튜브는 강합니다. 736편·누적 3,113만 회</h3><p style="margin:0;color:var(--slate)">설명형 롱폼(눈성형 관리법·중년 눈성형 비교·지방흡입 QnA 등)이 있어 글의 근거 영상으로 쓸 수 있습니다. 다만 상위 조회 영상의 다수가 브랜드 필름·연예인·전후 형식이라 인용용 정보형 영상은 10편 안팎입니다. 이 채널이 원진의 가장 큰 오픈웹 자산입니다.</p></div><div class="card find" style="border-left-color:#D4A872"><div class="tag" style="color:#D4A872">보완</div><h3>이미지 alt 62% 누락, 의료진 경력은 텍스트지만 구조화는 안 됨</h3><p style="margin:0;color:var(--slate)">메인 이미지 45개 중 28개가 alt 없이 실려 AI가 이미지 내용을 읽지 못합니다. 의료진 17명의 경력은 텍스트로 있어(원장당 12~23줄) Physician 스키마만 붙이면 바로 엔티티가 됩니다. 강남언니·GBP·네이버 플레이스는 이번 자동 채점 범위 밖이라 수동 실측이 남아 있습니다.</p></div>
</div>
</div></section>
<section class="pb"><div class="page">
<div class="eyebrow">AEO · Answer Readiness</div><h2>답변 준비도 8개 항목</h2>
<p class="lede">질문을 고르고, 답을 먼저 쓰고, 한 단락으로 완결하고, 결정에 필요한 정보와 다음 행동까지 닿게 하는가.</p>
<table class="tbl"><thead><tr><th style="width:52px">항목</th><th>무엇을 보는가</th><th style="width:70px">점수</th><th style="width:72px">근거</th><th>파생된 실측 항목</th></tr></thead><tbody>
<tr><td class="mono">AEO1</td><td><b>질문 수요 충족</b><div class="sub">사람들이 실제로 묻는 질문에 답하는 페이지가 있는가</div></td><td><b>0</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">C2 L0</td></tr><tr><td class="mono">AEO2</td><td><b>답변의 직접성</b><div class="sub">페이지 첫 단락에 답이 먼저 나오는가</div></td><td><b>0</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">C1 L0</td></tr><tr><td class="mono">AEO3</td><td><b>답변 단위의 자기완결성</b><div class="sub">한 단락만 떼어내도 누가·어디서·무엇을이 들어 있는가</div></td><td><span class="pill gray">미검증</span></td><td>미검증</td><td class="sub">C8 미검증</td></tr><tr><td class="mono">AEO4</td><td><b>의사결정에 필요한 정보</b><div class="sub">가격대·시간·회복·조건처럼 결정에 쓰는 정보가 텍스트로 있는가</div></td><td><b>40</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">C4 L2 · C5 L0</td></tr><tr><td class="mono">AEO5</td><td><b>정보 구조와 가독성</b><div class="sub">제목이 주제를 서술하고 계층이 논리적인가</div></td><td><b>0</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">C3 L0</td></tr><tr><td class="mono">AEO6</td><td><b>다음 행동의 명확성</b><div class="sub">답을 읽은 사람이 무엇을 하면 되는지(예약·전화·방문) 바로 보이는가</div></td><td><span class="pill gray">미검증</span></td><td>미검증</td><td class="sub"></td></tr><tr><td class="mono">AEO7</td><td><b>핵심 답변의 텍스트 추출</b><div class="sub">답이 이미지가 아니라 텍스트로 존재하고 서버가 렌더하는가</div></td><td><b>60</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">A3 L3 · F1 L0</td></tr><tr><td class="mono">AEO8</td><td><b>사이트 내 답변 발견</b><div class="sub">크롤러가 답이 있는 페이지를 찾아갈 수 있는가</div></td><td><b>47</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">A5 L1 · B6 L2</td></tr>
</tbody></table>
<div class="eyebrow" style="margin-top:34px">GEO · Source Readiness</div><h2>출처 준비도 8개 항목</h2>
<p class="lede">주장에 근거가 붙어 있고, 누가 책임지는지 보이고, 병원 사실이 표면마다 같고, 갱신·정정 기록이 있으며, 기계가 인용 식별자를 읽을 수 있는가.</p>
<table class="tbl"><thead><tr><th style="width:52px">항목</th><th>무엇을 보는가</th><th style="width:70px">점수</th><th style="width:72px">근거</th><th>파생된 실측 항목</th></tr></thead><tbody>
<tr><td class="mono">GEO1</td><td><b>주장과 근거의 일치</b><div class="sub">수치·수상·효과 주장마다 근거(원문·출처·조건)가 붙어 있는가</div></td><td><span class="pill gray">미검증</span></td><td>미검증</td><td class="sub"></td></tr><tr><td class="mono">GEO2</td><td><b>출처의 적합성과 추적성</b><div class="sub">인용된 URL이 정본으로 수렴하고 시간이 지나도 같은 곳을 가리키는가</div></td><td><b>33</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">A4 L1</td></tr><tr><td class="mono">GEO3</td><td><b>전문성과 책임 주체</b><div class="sub">누가 썼고 누가 의학적으로 책임지는지 텍스트와 스키마로 보이는가</div></td><td><b>40</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">C7 L2 · B3 L0</td></tr><tr><td class="mono">GEO4</td><td><b>병원 엔티티와 사실의 정합성</b><div class="sub">이 병원이 누구인지 사이트 안과 밖(강남언니·GBP·플레이스)에서 같은 사실로 확정되는가</div></td><td><b>63</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">B2 L1 · B4 L3 · B5 L3 · D1 미검증 · D2 미검증 · D4 미검증 · D5 미검증 · D6 L0</td></tr><tr><td class="mono">GEO5</td><td><b>사실의 최신성과 정정</b><div class="sub">언제 확인한 사실인지 적혀 있고, 틀린 것을 고친 기록이 있는가</div></td><td><b>33</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">C6 L1</td></tr><tr><td class="mono">GEO6</td><td><b>원천 대비 추가 가치</b><div class="sub">다른 곳에 있는 문장을 옮긴 것이 아니라 여기서만 얻는 정보(체크리스트·조건 표·실측)가 있는가</div></td><td><span class="pill gray">미검증</span></td><td>미검증</td><td class="sub"></td></tr><tr><td class="mono">GEO7</td><td><b>발행 관계와 투명성</b><div class="sub">누가 운영하고 누구의 지원을 받는지, 광고와 정보가 구분되는지 밝히는가</div></td><td><span class="pill gray">미검증</span></td><td>미검증</td><td class="sub"></td></tr><tr><td class="mono">GEO8</td><td><b>인용 식별자와 메타데이터 정합성</b><div class="sub">기계가 읽는 식별자(JSON-LD·메타)가 유효하고 화면 내용과 같은가</div></td><td><b>67</b><span class="sub"> / 100</span></td><td>실측 파생</td><td class="sub">B1 L2</td></tr>
</tbody></table>
</div></section>
<section class="pb dark"><div class="page">
<div class="eyebrow">Category Detail</div><h2>카테고리별 실측 36개 항목</h2>
<div class="grid g3" style="margin-top:12px">
<div class="card"><div class="sub">A · Access &amp; Crawlability</div><h3 style="margin-top:2px">AI 크롤러 접근성</h3><div><span class="serif" style="font-size:28px;font-weight:700;color:var(--accent)">80</span><span class="sub"> / 100 · 실측 6/7</span></div></div><div class="card"><div class="sub">B · Entity &amp; Structured Data</div><h3 style="margin-top:2px">엔티티 식별·구조화</h3><div><span class="serif" style="font-size:28px;font-weight:700;color:var(--accent)">50</span><span class="sub"> / 100 · 실측 7/7</span></div></div><div class="card"><div class="sub">C · Answer-Ready Content</div><h3 style="margin-top:2px">답변 인용 가능 콘텐츠</h3><div><span class="serif" style="font-size:28px;font-weight:700;color:var(--accent)">25</span><span class="sub"> / 100 · 실측 7/8</span></div></div><div class="card"><div class="sub">D · Off-site Surfaces</div><h3 style="margin-top:2px">AI 인용 표면 확보</h3><div><span class="serif" style="font-size:28px;font-weight:700;color:var(--accent)">53</span><span class="sub"> / 100 · 실측 2/6</span></div></div><div class="card"><div class="sub">E · Measurement</div><h3 style="margin-top:2px">AI 가시성 측정 인프라</h3><div><span class="serif" style="font-size:28px;font-weight:700;color:var(--accent)">0</span><span class="sub"> / 100 · 실측 0/4</span></div></div><div class="card"><div class="sub">F · Technical Hygiene</div><h3 style="margin-top:2px">기술 위생</h3><div><span class="serif" style="font-size:28px;font-weight:700;color:var(--accent)">42</span><span class="sub"> / 100 · 실측 3/4</span></div></div>
</div>
</div></section>
<section><div class="page">
<h3 style="margin-top:22px;font-size:18px">A · AI 크롤러 접근성 <span class="sub">AI 검색엔진이 사이트를 읽을 수 있는가. 크롤러 접근이 막히면 나머지 항목은 전부 무효다.</span></h3>
<table class="tbl"><thead><tr><th style="width:44px">ID</th><th style="width:22%">항목</th><th style="width:88px">판정</th><th>실측 근거</th></tr></thead><tbody>
<tr><td class="mono">A1</td><td><b>검색용 AI 봇 허용</b><div class="sub">배점 5</div></td><td><span class="lv lv3">L3</span><div class="sub">검색봇 전부 허용 + 200 응답</div></td><td class="sub" style="color:var(--slate)">12개 AI 봇 전부 허용. OAI-SearchBot·PerplexityBot·GPTBot UA로 GET → 전부 200</td></tr><tr><td class="mono">A2</td><td><b>CDN/WAF AI 차단 없음</b><div class="sub">배점 3</div></td><td><span class="lv lv3">L3</span><div class="sub">CDN 차단 없음 확인</div></td><td class="sub" style="color:var(--slate)">Server: Microsoft-IIS/10.0 직접 응답, Cloudflare 헤더 없음, AI UA 챌린지 없음</td></tr><tr><td class="mono">A3</td><td><b>서버 렌더링 본문</b><div class="sub">배점 3</div></td><td><span class="lv lv3">L3</span><div class="sub">80% 이상 (SSR/정적)</div></td><td class="sub" style="color:var(--slate)">서버 렌더링. JS 미실행 HTML에서 본문 텍스트 14,079자 추출</td></tr><tr><td class="mono">A4</td><td><b>HTTPS·리다이렉트 정합</b><div class="sub">배점 2</div></td><td><span class="lv lv1">L1</span><div class="sub">변형 간 200 중복</div></td><td class="sub" style="color:var(--slate)">변형 간 최종 URL 불일치(중복 콘텐츠 위험): ['https://k-wonjin.co.kr', 'https://www.k-wonjin.co.kr']</td></tr><tr><td class="mono">A5</td><td><b>sitemap.xml 제공</b><div class="sub">배점 3</div></td><td><span class="lv lv1">L1</span><div class="sub">있으나 robots 미선언</div></td><td class="sub" style="color:var(--slate)">/sitemap.xml 200이나 robots.txt에 Sitemap 미선언. URL 132개</td></tr><tr><td class="mono">A6</td><td><b>Bing 색인 (ChatGPT 검색 경로)</b><div class="sub">배점 3</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">[manual] Bing Webmaster Tools 등록 여부는 오너 계정 접근 필요 (또는 site: 검색 수동 확인)</td></tr><tr><td class="mono">A7</td><td><b>응답 속도·크롤 예산</b><div class="sub">배점 1</div></td><td><span class="lv lv3">L3</span><div class="sub">TTFB &lt; 0.5s, HTML &lt; 300KB</div></td><td class="sub" style="color:var(--slate)">TTFB 0.094s / 초기 HTML 153KB. 시술 페이지 145KB. 모두 기준 이내</td></tr>
</tbody></table><h3 style="margin-top:22px;font-size:18px">B · 엔티티 식별·구조화 <span class="sub">AI가 &quot;이 병원이 누구인지&quot;를 기계적으로 확정할 수 있는가. NAP 일관성과 스키마 위생.</span></h3>
<table class="tbl"><thead><tr><th style="width:44px">ID</th><th style="width:22%">항목</th><th style="width:88px">판정</th><th>실측 근거</th></tr></thead><tbody>
<tr><td class="mono">B1</td><td><b>JSON-LD 문법 유효성</b><div class="sub">배점 3</div></td><td><span class="lv lv2">L2</span><div class="sub">전부 유효</div></td><td class="sub" style="color:var(--slate)">JSON-LD 4블록 전부 유효 (@graph 미사용)</td></tr><tr><td class="mono">B2</td><td><b>업종 엔티티 스키마 (MedicalClinic / LegalService / LocalBusiness)</b><div class="sub">배점 5</div></td><td><span class="lv lv1">L1</span><div class="sub">Organization만</div></td><td class="sub" style="color:var(--slate)">ItemList + Organization만 존재. MedicalClinic/LocalBusiness 없음 → 주소·전화·진료시간이 구조화되어 있지 않음</td></tr><tr><td class="mono">B3</td><td><b>전문가 스키마 (Physician / Attorney)</b><div class="sub">배점 3</div></td><td><span class="lv lv0">L0</span><div class="sub">없음</div></td><td class="sub" style="color:var(--slate)">Physician/Attorney 스키마 없음. 전문가 정보는 HTML 텍스트·이미지로만 존재</td></tr><tr><td class="mono">B4</td><td><b>NAP 사이트 내 일관성</b><div class="sub">배점 3</div></td><td><span class="lv lv3">L3</span><div class="sub">단일 표기</div></td><td class="sub" style="color:var(--slate)">주소 단일 표기: &quot;서울시 서초구 강남대로 419 파고다타워 12&quot;. 전화 6종: 02-3477-3300, 023480-3573, 02392-0330</td></tr><tr><td class="mono">B5</td><td><b>sameAs 연결</b><div class="sub">배점 2</div></td><td><span class="lv lv3">L3</span><div class="sub">5개 이상 (SNS + 버티컬 + 지도)</div></td><td class="sub" style="color:var(--slate)">sameAs 10개 (SNS·버티컬·지도 연결)</td></tr><tr><td class="mono">B6</td><td><b>canonical·중복 제거</b><div class="sub">배점 2</div></td><td><span class="lv lv2">L2</span><div class="sub">있음</div></td><td class="sub" style="color:var(--slate)">rel=canonical self-referencing 존재</td></tr><tr><td class="mono">B7</td><td><b>다국어 hreflang</b><div class="sub">배점 2</div></td><td><span class="lv lv0">L0</span><div class="sub">다국어 페이지 있으나 미연결</div></td><td class="sub" style="color:var(--slate)">다국어 페이지 흔적(https://www.wonjinbeauty.com/en/) 있으나 hreflang 없음. 미연결</td></tr>
</tbody></table><h3 style="margin-top:22px;font-size:18px">C · 답변 인용 가능 콘텐츠 <span class="sub">패시지 단위로 잘라내도 자기완결적인 사실 덩어리가 있는가. 정의문·FAQ·수치·표·의료진 근거.</span></h3>
<table class="tbl"><thead><tr><th style="width:44px">ID</th><th style="width:22%">항목</th><th style="width:88px">판정</th><th>실측 근거</th></tr></thead><tbody>
<tr><td class="mono">C1</td><td><b>정의문형 첫 문단</b><div class="sub">배점 4</div></td><td><span class="lv lv0">L0</span><div class="sub">없음 (슬로건·이미지만)</div></td><td class="sub" style="color:var(--slate)">홈 본문 1,999자에 &quot;원진성형외과는 …에 있는 … 병원입니다&quot; 형태의 정의문 없음. 소개 문구(25년 헤리티지·강남역)는 메인 비주얼 이미지 alt 에만 있고, 소개 페이지(/hospitalinfo/about) 첫 단락도 슬로건형</td></tr><tr><td class="mono">C2</td><td><b>FAQ 섹션</b><div class="sub">배점 4</div></td><td><span class="lv lv0">L0</span><div class="sub">없음</div></td><td class="sub" style="color:var(--slate)">FAQ·자주 묻는 질문·Q&amp;A 섹션 탐지 안 됨 (메인·시술 페이지)</td></tr><tr><td class="mono">C3</td><td><b>제목 계층 의미성</b><div class="sub">배점 3</div></td><td><span class="lv lv0">L0</span><div class="sub">H1 없음 또는 5개 이상</div></td><td class="sub" style="color:var(--slate)">메인 H1 0개: 없음. 시술 페이지 H1 없음</td></tr><tr><td class="mono">C4</td><td><b>구체 수치 (가격·시간·회복)</b><div class="sub">배점 4</div></td><td><span class="lv lv2">L2</span><div class="sub">시술별 일부 수치</div></td><td class="sub" style="color:var(--slate)">눈매교정(CFS) 페이지에 수술 시간 2시간·단기 수면 또는 부분 마취·실밥 제거 7일·일상생활 3일 텍스트 존재. 트임(오픈아이) 40분·5~7일. 쌍꺼풀·눈매교정(글램아이·더블유착) 페이지는 수치 없음. 가격 표기 0회(비급여 안내 페이지는 별도)</td></tr><tr><td class="mono">C5</td><td><b>표·비교 구조</b><div class="sub">배점 2</div></td><td><span class="lv lv0">L0</span><div class="sub">없음</div></td><td class="sub" style="color:var(--slate)">HTML &lt;table&gt; 없음. 비교 정보는 이미지로 추정 (이미지 표 여부는 수동 확인)</td></tr><tr><td class="mono">C6</td><td><b>신선도 신호</b><div class="sub">배점 3</div></td><td><span class="lv lv1">L1</span><div class="sub">1년 이상</div></td><td class="sub" style="color:var(--slate)">최신 갱신 신호 2025-02-18 (sitemap lastmod 2025-02-18). 18개월 전. dateModified 마크업 없음</td></tr><tr><td class="mono">C7</td><td><b>전문가 E-E-A-T (의료진 / 변호사)</b><div class="sub">배점 3</div></td><td><span class="lv lv2">L2</span><div class="sub">자격·경력 텍스트</div></td><td class="sub" style="color:var(--slate)">의료진 상세 페이지 17명의 직함·전문의 여부·경력(원장당 12~23줄)이 HTML 텍스트로 존재. 학술 활동 페이지 3,760자. 단 Physician 스키마·저자 표기는 없어 구조화되지 않음</td></tr><tr><td class="mono">C8</td><td><b>패시지 자기완결성</b><div class="sub">배점 2</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">[manual] 핵심 페이지 단락 샘플 10개의 상호·시술명 포함 비율 수동 채점 필요</td></tr>
</tbody></table><h3 style="margin-top:22px;font-size:18px">D · AI 인용 표면 확보 <span class="sub">실제로 AI가 인용하는 외부 표면(강남언니·GBP·오픈웹)에 존재하는가. 네이버 자산은 글로벌 AI에 기여도 0.</span></h3>
<table class="tbl"><thead><tr><th style="width:44px">ID</th><th style="width:22%">항목</th><th style="width:88px">판정</th><th>실측 근거</th></tr></thead><tbody>
<tr><td class="mono">D1</td><td><b>업종 버티컬 프로필 (병의원: 강남언니 / 법률: 로톡)</b><div class="sub">배점 6</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">강남언니 프로필은 공개 페이지 수동 실측 필요 (후기 수·의료진·이벤트·갱신일). 홈페이지 sameAs 에 버티컬 링크 포함 여부는 확인됨(10개 중)</td></tr><tr><td class="mono">D2</td><td><b>Google 비즈니스 프로필</b><div class="sub">배점 4</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">[manual] Google Maps 검색으로 GBP 소유·리뷰·NAP 수동 실측 필요</td></tr><tr><td class="mono">D3</td><td><b>오픈웹 언급 (티스토리·유튜브·언론)</b><div class="sub">배점 4</div></td><td><span class="lv lv2">L2</span><div class="sub">유튜브 + 언론/티스토리</div></td><td class="sub" style="color:var(--slate)">자체 YouTube 채널 @wjwonjin 영상 736편·구독 1.5만·누적 조회 3,113만(2026-09-08 API 집계). 인스타그램 3계정·페이스북·네이버 블로그(popokpop) 존재. 채널 sameAs 10개로 홈페이지와 연결됨. 단 홈페이지 내 외부 링크는 JS 렌더라 HTML에서 미노출</td></tr><tr><td class="mono">D4</td><td><b>표면 간 NAP 완전 일치</b><div class="sub">배점 3</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">[manual] 홈페이지·버티컬·GBP·플레이스 NAP 대조표 수동 작성 필요</td></tr><tr><td class="mono">D5</td><td><b>네이버 플레이스 (AI 브리핑 전용)</b><div class="sub">배점 2</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">[semi·사람 판정 필요] 사이트에 네이버 플레이스 링크 없음. 플레이스 존재·홈페이지 역연결·리뷰 수 수동 확인</td></tr><tr><td class="mono">D6</td><td><b>위키데이터/위키백과 엔티티</b><div class="sub">배점 1</div></td><td><span class="lv lv0">L0</span><div class="sub">없음</div></td><td class="sub" style="color:var(--slate)">Wikidata에서 &quot;원진성형외과&quot; 검색 결과 없음</td></tr>
</tbody></table><h3 style="margin-top:22px;font-size:18px">E · AI 가시성 측정 인프라 <span class="sub">개선을 증명할 수 있는가. 소유 신호(크롤러 로그·GA4 AI 유입) 계측 여부.</span></h3>
<table class="tbl"><thead><tr><th style="width:44px">ID</th><th style="width:22%">항목</th><th style="width:88px">판정</th><th>실측 근거</th></tr></thead><tbody>
<tr><td class="mono">E1</td><td><b>AI 크롤러 로그 (IP 검증)</b><div class="sub">배점 3</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">[manual] 서버 로그 접근 필요 (AI 크롤러 히트 + IP 검증)</td></tr><tr><td class="mono">E2</td><td><b>GA4 AI 유입 채널</b><div class="sub">배점 3</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">[manual] GA4 접근 필요 (AI 유입 커스텀 채널그룹 여부)</td></tr><tr><td class="mono">E3</td><td><b>GSC AI Overviews 노출</b><div class="sub">배점 2</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">[manual] GSC 접근 필요 (AI Overviews 노출)</td></tr><tr><td class="mono">E4</td><td><b>기준선 스팟체크</b><div class="sub">배점 2</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">[manual] 기준선 스팟체크 미실시 (질의 10개 × 5회 반복은 별도 단계)</td></tr>
</tbody></table><h3 style="margin-top:22px;font-size:18px">F · 기술 위생 <span class="sub">이미지 대체텍스트·CMS 보안·페이지 무게·모바일. 보조 지표.</span></h3>
<table class="tbl"><thead><tr><th style="width:44px">ID</th><th style="width:22%">항목</th><th style="width:88px">판정</th><th>실측 근거</th></tr></thead><tbody>
<tr><td class="mono">F1</td><td><b>이미지 대체텍스트</b><div class="sub">배점 2</div></td><td><span class="lv lv0">L0</span><div class="sub">50% 이상 누락</div></td><td class="sub" style="color:var(--slate)">메인 페이지 이미지 45개 중 28개(62%) alt 누락 또는 빈 값</td></tr><tr><td class="mono">F2</td><td><b>CMS 보안·최신성</b><div class="sub">배점 1</div></td><td><span class="lv lvu">미검증</span><div class="sub">미검증</div></td><td class="sub" style="color:var(--slate)">Server: Microsoft-IIS/10.0, ASP.NET 계열 자체 제작 추정(meta generator 없음). CMS 버전·보안 패치 여부 판정 불가</td></tr><tr><td class="mono">F3</td><td><b>페이지 무게</b><div class="sub">배점 1</div></td><td><span class="lv lv3">L3</span><div class="sub">&lt; 300KB</div></td><td class="sub" style="color:var(--slate)">초기 HTML 153KB (300KB 미만)</td></tr><tr><td class="mono">F4</td><td><b>모바일 대응</b><div class="sub">배점 1</div></td><td><span class="lv lv2">L2</span><div class="sub">반응형</div></td><td class="sub" style="color:var(--slate)">viewport meta 존재, 반응형. CWV 미측정</td></tr>
</tbody></table>
</div></section>
<section class="pb light"><div class="page">
<div class="eyebrow">Action Plan</div><h2>지금 고칠 것과 4주 안에 만들 것을 나눴습니다</h2>
<h3 style="margin-top:20px">P0 · 지금 고칠 것 (1주 안)</h3><div class="grid g2"><div class="card act"><span class="pill gray eff">1일</span><div class="pri">P0</div><h3>정본 URL 수렴 + sitemap 선언</h3><p style="margin:0 0 8px;color:var(--slate)">k-wonjin.co.kr → www.k-wonjin.co.kr 로 301 통일, robots.txt 에 Sitemap: 선언, sitemap lastmod 갱신. 전화번호를 대표번호 1개로 통일.</p><div class="sub">연결 항목 <span class="mono">A4</span> <span class="mono">A5</span> <span class="mono">B4</span></div></div><div class="card act"><span class="pill gray eff">1주</span><div class="pri">P0</div><h3>MedicalClinic + Physician 스키마</h3><p style="margin:0 0 8px;color:var(--slate)">Organization 을 MedicalClinic 으로 승격(address·telephone·openingHoursSpecification·medicalSpecialty). 의료진 17명 Physician 스키마(이름·직함·전문의·프로필 URL). 영문 사이트와 hreflang 상호 연결.</p><div class="sub">연결 항목 <span class="mono">B2</span> <span class="mono">B3</span> <span class="mono">B7</span></div></div></div><h3 style="margin-top:20px">P1 · 4주 안에 만들 것</h3><div class="grid g2"><div class="card act"><span class="pill gray eff">2~4주</span><div class="pri">P1</div><h3>시술 페이지 인용 구조: H1·표·FAQ</h3><p style="margin:0 0 8px;color:var(--slate)">시술 페이지마다 H1 1개, 수술 시간·마취·실밥·일상 복귀를 HTML 표로, FAQ 5문항 + FAQPage 스키마. CFS·트임 페이지의 수치 형식을 다른 눈·코·윤곽 페이지로 확산. 메인에 병원 정의문 한 단락.</p><div class="sub">연결 항목 <span class="mono">C1</span> <span class="mono">C2</span> <span class="mono">C3</span> <span class="mono">C4</span> <span class="mono">C5</span></div></div><div class="card act"><span class="pill gray eff">1주</span><div class="pri">P1</div><h3>이미지 alt 일괄 정비 + 갱신 신호</h3><p style="margin:0 0 8px;color:var(--slate)">메인 28개 이미지 alt 작성(무엇을 찍은 사진인지 사실만). 페이지에 dateModified 마크업, sitemap lastmod 를 실제 수정일로.</p><div class="sub">연결 항목 <span class="mono">F1</span> <span class="mono">C6</span></div></div><div class="card act"><span class="pill gray eff">2~4주</span><div class="pri">P1</div><h3>서포터즈 사이트로 오픈웹 원문 공급</h3><p style="margin:0 0 8px;color:var(--slate)">자동 빌드 미리보기(supporters-wonjin.vercel.app)의 글 6편을 병원이 검토·승인하면 색인 허용 도메인으로 발행. 유튜브 설명 영상 10편을 글에 연결. 이후 질문 뱅크 기준으로 편집 캘린더 운영.</p><div class="sub">연결 항목 <span class="mono">C2</span> <span class="mono">C4</span> <span class="mono">C5</span> <span class="mono">D3</span></div></div></div><h3 style="margin-top:20px">P2 · 이어서 할 것</h3><div class="grid g2"><div class="card act"><span class="pill gray eff">지속</span><div class="pri">P2</div><h3>표면 실측과 측정 인프라</h3><p style="margin:0 0 8px;color:var(--slate)">강남언니·GBP·네이버 플레이스 NAP 대조표 작성, GA4 AI 유입 채널그룹, GSC AI Overviews 확인, 서버 로그의 AI 크롤러 히트 계측. Bing Webmaster 등록.</p><div class="sub">연결 항목 <span class="mono">D1</span> <span class="mono">D2</span> <span class="mono">D4</span> <span class="mono">D5</span> <span class="mono">E1</span> <span class="mono">E2</span> <span class="mono">E3</span> <span class="mono">A6</span></div></div></div>
</div></section>
<section class="pb dark"><div class="page">
<div class="eyebrow">Supporters Preview</div><h2>홈페이지 자료만으로 서포터즈 사이트 초안을 만들었습니다</h2>
<p class="lede">병원 URL 하나로 근거 수집, 글 생성, 발행 게이트, 미리보기 배포까지 자동으로 돌렸습니다. 모든 글은 의학 검토 대기 상태이고 색인은 막혀 있습니다. 병원이 확인 항목을 입력하고 검토·승인하면 코드 수정 없이 발행됩니다.</p>
<div class="kpi" style="margin-top:18px">
<div class="k"><b>6</b><span>글 (게이트 통과)</span></div>
<div class="k"><b>736</b><span>유튜브 영상 집계</span></div>
<div class="k"><b>66</b><span>사용 가능 이미지 (전후·사례 제외)</span></div>
<div class="k"><b>17</b><span>의료진 프로필</span></div>
</div>
<p class="note" style="margin-top:14px">미리보기 <a href="https://supporters-wonjin.vercel.app" style="color:#C4B5FD">https://supporters-wonjin.vercel.app</a> · 병원 확인 항목 입력 <a href="https://infinith-demo.vercel.app/supporters/wonjin" style="color:#C4B5FD">infinith-demo.vercel.app/supporters/wonjin</a></p>
</div></section>
<section><div class="page">
<h3 style="font-size:18px">자동 생성한 글 6편</h3>
<table class="tbl"><thead><tr><th style="width:54px">분류</th><th>제목</th><th style="width:70px">근거 영상</th><th style="width:86px">병원 확인 대기</th><th style="width:90px">상태</th></tr></thead><tbody>
<tr><td class="mono">A</td><td><b>원진성형외과는 어떤 병원인가요? 진료 분야·의료진 구성·위치</b><div class="sub"><a href="https://supporters-wonjin.vercel.app/posts/what-is-clinic">https://supporters-wonjin.vercel.app/posts/what-is-clinic</a></div></td><td>0편</td><td>5건</td><td><span class="pill gray">의학 검토 대기</span></td></tr><tr><td class="mono">B</td><td><b>원진성형외과 방문 안내: 위치·진료시간·주차·예약은 어떻게 하나요?</b><div class="sub"><a href="https://supporters-wonjin.vercel.app/posts/visit-guide">https://supporters-wonjin.vercel.app/posts/visit-guide</a></div></td><td>0편</td><td>3건</td><td><span class="pill gray">의학 검토 대기</span></td></tr><tr><td class="mono">D</td><td><b>원진성형외과 윤곽은 어떤 방법이 있고 시술 시간·마취·회복은 어떻게 되나요?</b><div class="sub"><a href="https://supporters-wonjin.vercel.app/posts/procedure-facial">https://supporters-wonjin.vercel.app/posts/procedure-facial</a></div></td><td>0편</td><td>5건</td><td><span class="pill gray">의학 검토 대기</span></td></tr><tr><td class="mono">D</td><td><b>원진성형외과 눈성형은 어떤 방법이 있고 시술 시간·마취·회복은 어떻게 되나요?</b><div class="sub"><a href="https://supporters-wonjin.vercel.app/posts/procedure-eye">https://supporters-wonjin.vercel.app/posts/procedure-eye</a></div></td><td>3편</td><td>5건</td><td><span class="pill gray">의학 검토 대기</span></td></tr><tr><td class="mono">D</td><td><b>원진성형외과 레이저안티에이징은 어떤 방법이 있고 시술 시간·마취·회복은 어떻게 되나요?</b><div class="sub"><a href="https://supporters-wonjin.vercel.app/posts/procedure-skin">https://supporters-wonjin.vercel.app/posts/procedure-skin</a></div></td><td>0편</td><td>6건</td><td><span class="pill gray">의학 검토 대기</span></td></tr><tr><td class="mono">C</td><td><b>상담에서 꼭 물어봐야 할 질문은 무엇인가요?</b><div class="sub"><a href="https://supporters-wonjin.vercel.app/posts/consult-questions">https://supporters-wonjin.vercel.app/posts/consult-questions</a></div></td><td>3편</td><td>3건</td><td><span class="pill gray">의학 검토 대기</span></td></tr>
</tbody></table>
<h3 style="font-size:18px;margin-top:26px">발견한 채널과 확인 결과</h3>
<p class="sub" style="color:var(--slate)">홈페이지 역링크, 프로필 제목·설명, 등록부, 검색 결과를 근거로 병원 것인지 판정했습니다. "확인 필요"는 병원이 맞다고 알려 주시면 연결합니다.</p>
<table class="tbl"><thead><tr><th style="width:110px">플랫폼</th><th>확인됨</th><th>확인 필요</th></tr></thead><tbody>
<tr><td><b>유튜브</b></td><td><a href="https://www.youtube.com/channel/UCNBaQBCok5xIViCnrGdisoQ">WJ원진성형외과</a> <span class="sub">(구독 28,300)</span><br><a href="https://www.youtube.com/@wjwonjin">WJ원진성형외과</a> <span class="sub">(구독 14,700)</span></td><td class="sub"><a href="https://www.youtube.com/channel/UCNmTm4UubrscPczrAfGhUvQ" style="color:var(--muted)">Wonjin Plastic Surgery Korea</a><br><a href="https://www.youtube.com/channel/UCk2UbMID_NjYZe7-WBLQXRw" style="color:var(--muted)">유세윤의 광고100 X 원진성형외과</a><br><a href="https://www.youtube.com/channel/UCEC21_7WvRx8cWlje4sLVlw" style="color:var(--muted)">WONJINPS</a><br><a href="https://www.youtube.com/channel/UC8PY7tOsvoaV_z8Rlp_it0Q" style="color:var(--muted)">Wonjin Aesthetics Centre</a><br><a href="https://www.youtube.com/channel/UCJuM0rYynWd9xAXmOf-dl9A" style="color:var(--muted)">WONJIN_OFFICIAL - KOREA No.1 PLASTIC SURGERY</a><br><a href="https://www.youtube.com/channel/UChnJVIjdmUeZkA40cRFMzFA" style="color:var(--muted)">원트성형외과</a></td></tr><tr><td><b>인스타그램</b></td><td><a href="https://www.instagram.com/wonjin_official/">Instagram</a><br><a href="https://www.instagram.com/wonjin_ps/">Instagram</a><br><a href="https://www.instagram.com/wj_cosmetic/">Instagram</a></td><td class="sub"><a href="https://www.instagram.com/wj_plasticsurgery/" style="color:var(--muted)">Instagram</a><br><a href="https://www.instagram.com/hamdust_/" style="color:var(--muted)">Instagram</a><br><a href="https://www.instagram.com/bjwnjn/" style="color:var(--muted)">Instagram</a><br><a href="https://www.instagram.com/wonjin_sunnywon/" style="color:var(--muted)">Instagram</a><br><a href="https://www.instagram.com/wonjinire/" style="color:var(--muted)">Instagram</a><br><a href="https://www.instagram.com/wxxnzin/" style="color:var(--muted)">Instagram</a><br><a href="https://www.instagram.com/wj_1j_/" style="color:var(--muted)">Instagram</a><br><a href="https://www.instagram.com/wonjin/" style="color:var(--muted)">Instagram</a><br><a href="https://www.instagram.com/wonjinps/" style="color:var(--muted)">Instagram</a></td></tr><tr><td><b>페이스북</b></td><td><a href="https://www.facebook.com/KwonjinPS">KwonjinPS</a></td><td class="sub"></td></tr><tr><td><b>네이버 블로그</b></td><td><a href="https://blog.naver.com/popokpop">popokpop</a></td><td class="sub"><a href="https://blog.naver.com/naramalssami1" style="color:var(--muted)">naramalssami1</a><br><a href="https://blog.naver.com/qeqe0420" style="color:var(--muted)">qeqe0420</a><br><a href="https://blog.naver.com/vpepwxormtfo" style="color:var(--muted)">vpepwxormtfo</a></td></tr><tr><td><b>틱톡</b></td><td><a href="https://www.tiktok.com/@wonjin_official">wonjin_official</a></td><td class="sub"></td></tr><tr><td><b>카카오톡 채널</b></td><td><a href="https://pf.kakao.com/_bxflzE">원진성형외과의원</a></td><td class="sub"></td></tr><tr><td><b>강남언니</b></td><td><a href="https://www.gangnamunni.com/hospitals/2500">원진성형외과의원 | 강남언니 - 내 선택에 확신을</a></td><td class="sub"></td></tr><tr><td><b>네이버 플레이스</b></td><td><span class="sub">찾지 못함</span></td><td class="sub"></td></tr><tr><td><b>바비톡</b></td><td><a href="https://babitalk.com/hospitals/3143">원진성형외과의원 | 후기∙가격∙이벤트 정보 - 바비톡</a></td><td class="sub"></td></tr>
</tbody></table>
<h3 style="font-size:18px;margin-top:26px">병원이 확인해 주실 것 9가지</h3>
<p class="sub" style="color:var(--slate)">홈페이지 공개 자료에 없어 병원만 답할 수 있는 값입니다. 입력 전까지 사이트에는 "확인 대기"로 표시됩니다.</p>
<div class="grid g3" style="margin-top:10px"><div class="card" style="padding:14px 16px"><span class="mono">1</span> <b>작성자 실명·직함·공개 프로필</b></div><div class="card" style="padding:14px 16px"><span class="mono">2</span> <b>글별 의학 검토 원장과 검토일</b></div><div class="card" style="padding:14px 16px"><span class="mono">3</span> <b>지원 관계 문구</b></div><div class="card" style="padding:14px 16px"><span class="mono">4</span> <b>견적 기본 포함 항목·결제 방식</b></div><div class="card" style="padding:14px 16px"><span class="mono">5</span> <b>회복 일정표의 병원 확정값</b></div><div class="card" style="padding:14px 16px"><span class="mono">6</span> <b>재수술 정책</b></div><div class="card" style="padding:14px 16px"><span class="mono">7</span> <b>페이지 간 표기 불일치의 정답</b></div><div class="card" style="padding:14px 16px"><span class="mono">8</span> <b>진료 분야별 담당 원장</b></div><div class="card" style="padding:14px 16px"><span class="mono">9</span> <b>정식 도메인·색인 허용 시점·홈페이지 링크 위치</b></div></div>
<p class="note">싣지 않는 것: 전후 사진, 환자 경험담, 다른 병원과의 비교, 효과 보장, 가격 금액. 이미지는 의료법 기준 규칙에 따라 전후·사례·모델·수술 장면·인증 마크를 자동 제외했습니다.</p>
</div></section>
<section class="pb light"><div class="page">
<div class="eyebrow">Integrity</div><h2>근거 없는 것은 약속하지 않습니다</h2>
<table class="tbl" style="margin-top:12px"><thead><tr><th style="width:30%">하지 않는 것</th><th>이유</th></tr></thead><tbody>
<tr><td><b>llms.txt 제작</b></td><td style="color:var(--slate)">Google 공식(2026-06) 효과 0, 채택률 0.13%, 서버 로그에 요청 자체가 없음. 위약이다.</td></tr><tr><td><b>&quot;스키마 넣으면 AI가 인용합니다&quot; 약속</b></td><td style="color:var(--slate)">인과 증거 없음. 스키마는 엔티티 식별을 돕는 위생 조치로만 설명한다.</td></tr><tr><td><b>단발 조회로 순위·노출 보고</b></td><td style="color:var(--slate)">LLM 답변 분산 10~34%. 반복 측정 + 신뢰구간으로만 보고한다.</td></tr><tr><td><b>답변엔진 UI 자동 조회</b></td><td style="color:var(--slate)">OpenAI·Perplexity 약관 위반. 주력 측정은 오너가 소유한 신호(로그·GA4)로 한다.</td></tr><tr><td><b>네이버 블로그 증량</b></td><td style="color:var(--slate)">blog.naver.com robots.txt가 AI 크롤링을 전면 금지. 글로벌 AI 답변 기여도 0. 네이버 AI 브리핑은 별도 트랙.</td></tr>
</tbody></table>
<h3 style="margin-top:26px;font-size:18px">측정 조건</h3>
<ul style="color:var(--slate)"><li>실측 대상: 메인 페이지 + /contents/eye/cfs 2개 URL, JS 미실행 HTML 기준</li><li>크롤러 접근성: robots.txt 파싱 + 12개 AI 봇 UA 실제 GET 요청</li><li>semi/manual 항목은 자동 수집 증거만 첨부하고 미검증 처리, 분모 제외 (사람 보정 후 확정)</li><li>답변엔진 언급률은 측정하지 않았다 (단발 조회는 무효, 반복 측정은 별도 기준선 단계에서 수행)</li></ul>
<h3 style="margin-top:26px;font-size:18px">채점 방법</h3>
<p style="color:var(--slate);margin:0">기준표 v1.0 36개 실측 항목(A 접근성 · B 엔티티 · C 콘텐츠 · D 표면 · E 측정 · F 위생)을 0~3 레벨로 판정하고, v2.0은 그 항목을 답변 준비도(AEO) 8개와 출처 준비도(GEO) 8개로 묶어 각 100점으로 정규화합니다. 미검증 항목은 분모에서 빼고, 치명 게이트(크롤러 차단 등)에 걸리면 상한을 둡니다. 답변엔진 언급률은 단발 조회로는 재지 않습니다.</p>
</div></section>
<footer>INFINITH · AI오투오 · 문의 o2oteam@o2o.kr · 이 리포트는 공개 페이지 실측에 근거하며, 오너 계정(GA4·GSC·서버 로그)이 필요한 항목은 미검증으로 두었습니다. 법률 자문이 아닙니다.</footer>
</body></html>

View File

@ -0,0 +1,192 @@
{
"_meta": {
"sampleUrls": [
"https://www.k-wonjin.co.kr",
"https://www.k-wonjin.co.kr/contents/eye/cfs"
],
"sampleWarning": "표본 URL 2개 (<5). 판정은 홈·대표 시술 페이지 기준이며 사이트 전체로 일반화하지 말 것. 시술 상세 3개·오시는길·블로그를 curl+파서로 추가 확인할 것 (2026-08-28 뷰성형외과 오판 3건의 원인)"
},
"results": [
{
"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 — 모두 기준 이내"
},
{
"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 없음 — 미연결"
},
{
"criterionId": "C1",
"level": "unverified",
"evidence": "[semi·사람 판정 필요] 메인 첫 200자: \"당신만 봅니다 - WJ 원진성형외과 Ai 상담 카카오톡 상담 빠른 비용 상담 빠른 비용 상담 바로 예약 피부과 안녕하세요, WJ 원진 성형외과입니다 :-) 빠른 비용 상담 이름 연…\" / 시술 페이지 첫 200자: \"눈매교정(고도안검하수)-당신만 봅니다-원진성형외과 Ai 상담 카카오톡 상담 빠른 비용 상담 빠른 비용 상담 바로 예약 피부과 안녕하세요, WJ …\" (첫 200자 내 상호 있음)"
},
{
"criterionId": "C2",
"level": 0,
"evidence": "FAQ·자주 묻는 질문·Q&A 섹션 탐지 안 됨 (메인·시술 페이지)"
},
{
"criterionId": "C3",
"level": 0,
"evidence": "메인 H1 0개: 없음. 시술 페이지 H1 없음"
},
{
"criterionId": "C4",
"level": "unverified",
"evidence": "[semi·사람 판정 필요] 시술 페이지 수치 밀도: 가격표기 0회, 시간 2회, 일/주 14회, % 0회, 가격/비용/회복 단어 8회 — 표기 맥락(마케팅 문구 vs 실제 표) 확인 필요"
},
{
"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": "unverified",
"evidence": "[semi·사람 판정 필요] 전문가 언급 22회, 권위 키워드 15회 (논문, 인증, 학회) — 자격·경력이 텍스트인지 이미지인지 확인 필요"
},
{
"criterionId": "C8",
"level": "unverified",
"evidence": "[manual] 핵심 페이지 단락 샘플 10개의 상호·시술명 포함 비율 수동 채점 필요"
},
{
"criterionId": "D1",
"level": "unverified",
"evidence": "[manual] 업종 버티컬(병의원: 강남언니 / 법률: 로톡) 프로필 수동 실측 필요 — 후기 수·의료진·이벤트·갱신일"
},
{
"criterionId": "D2",
"level": "unverified",
"evidence": "[manual] Google Maps 검색으로 GBP 소유·리뷰·NAP 수동 실측 필요"
},
{
"criterionId": "D3",
"level": "unverified",
"evidence": "[semi·사람 판정 필요] 검색 그라운딩 미실시. 사이트에서 발견된 외부 채널: pf.kakao.com(2), www.facebook.com(2), www.instagram.com(2), blog.naver.com(2), www.youtube.com(2) — naver.com 제외 오픈웹 언급(티스토리·언론)은 검색으로 별도 집계 필요"
},
{
"criterionId": "D4",
"level": "unverified",
"evidence": "[manual] 홈페이지·버티컬·GBP·플레이스 NAP 대조표 수동 작성 필요"
},
{
"criterionId": "D5",
"level": "unverified",
"evidence": "[semi·사람 판정 필요] 사이트에 네이버 플레이스 링크 없음 — 플레이스 존재·홈페이지 역연결·리뷰 수 수동 확인"
},
{
"criterionId": "D6",
"level": 0,
"evidence": "Wikidata에서 \"원진성형외과\" 검색 결과 없음"
},
{
"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회 반복은 별도 단계)"
},
{
"criterionId": "F1",
"level": 0,
"evidence": "메인 페이지 이미지 45개 중 28개(62%) alt 누락 또는 빈 값"
},
{
"criterionId": "F2",
"level": "unverified",
"evidence": "meta generator 없음 — CMS 종류·버전 판정 근거 없음 (수동 확인 필요)"
},
{
"criterionId": "F3",
"level": 3,
"evidence": "초기 HTML 153KB (300KB 미만)"
},
{
"criterionId": "F4",
"level": 2,
"evidence": "viewport meta 존재, 반응형. CWV 미측정"
}
]
}

View File

@ -0,0 +1,877 @@
{
"clinic": "wonjin",
"name": "원진성형외과",
"url": "https://www.k-wonjin.co.kr",
"checkedAt": "2026-09-08",
"phone": "02-3477-3300",
"branches": {
"sitePages": [
"/",
"/service/private",
"/service/terms",
"/hospitalinfo/about",
"/sitemap.xml"
],
"searchQueries": [
"\"원진성형외과\" 인스타그램",
"\"원진성형외과\" 유튜브",
"\"원진성형외과\" 페이스북",
"\"원진성형외과\" 블로그",
"원진성형외과 강남언니",
"원진성형외과 네이버 플레이스",
"site:instagram.com 원진",
"site:youtube.com 원진성형외과",
"site:facebook.com 원진성형외과",
"naver:원진성형외과 인스타그램",
"naver:원진성형외과 유튜브",
"naver:원진성형외과 페이스북",
"naver:원진성형외과 블로그"
],
"variantsTried": [
"instagram:wonjin",
"instagram:wonjinofficial",
"instagram:wonjin.official",
"instagram:wonjin-official",
"instagram:wonjinps",
"instagram:wonjin.ps",
"instagram:wonjin-ps",
"instagram:wonjinclinic",
"instagram:wonjin.clinic",
"instagram:wonjin_clinic",
"instagram:wonjin-clinic",
"instagram:wonjinplasticsurgery",
"instagram:wonjin.plasticsurgery",
"instagram:wonjin_plasticsurgery",
"instagram:wonjin-plasticsurgery",
"instagram:wonjinkr",
"instagram:wonjin.kr",
"instagram:wonjin_kr",
"instagram:wonjin-kr",
"instagram:wonjinkorea",
"instagram:wonjin.korea",
"instagram:wonjin_korea",
"instagram:wonjin-korea",
"instagram:wonjinseoul",
"instagram:wonjin.seoul",
"instagram:wonjin_seoul",
"instagram:wonjin-seoul",
"youtube:wonjin",
"youtube:wonjinofficial",
"youtube:wonjin.official",
"youtube:wonjin_official",
"youtube:wonjin-official",
"youtube:wonjinps",
"youtube:wonjin.ps",
"youtube:wonjin_ps",
"youtube:wonjin-ps",
"youtube:wonjinclinic",
"youtube:wonjin.clinic",
"youtube:wonjin_clinic",
"youtube:wonjin-clinic",
"youtube:wonjinplasticsurgery"
],
"registry": true,
"allBranches": true
},
"inventory": [
{
"platform": "youtube",
"state": "CONFIRMED",
"confirmed": 2,
"candidates": 6,
"tried": "사이트 5면 · 검색 13건 · 변형 14"
},
{
"platform": "instagram",
"state": "CONFIRMED",
"confirmed": 3,
"candidates": 9,
"tried": "사이트 5면 · 검색 13건 · 변형 27"
},
{
"platform": "facebook",
"state": "CONFIRMED",
"confirmed": 1,
"candidates": 0,
"tried": "사이트 5면 · 검색 13건 · 변형 0"
},
{
"platform": "naverBlog",
"state": "CONFIRMED",
"confirmed": 1,
"candidates": 3,
"tried": "사이트 5면 · 검색 13건 · 변형 0"
},
{
"platform": "tiktok",
"state": "CONFIRMED",
"confirmed": 1,
"candidates": 0,
"tried": "사이트 5면 · 검색 13건 · 변형 0"
},
{
"platform": "kakao",
"state": "CONFIRMED",
"confirmed": 1,
"candidates": 0,
"tried": "사이트 5면 · 검색 13건 · 변형 0"
},
{
"platform": "gangnamunni",
"state": "CONFIRMED",
"confirmed": 1,
"candidates": 0,
"tried": "사이트 5면 · 검색 13건 · 변형 0"
},
{
"platform": "naverPlace",
"state": "NOT_FOUND",
"confirmed": 0,
"candidates": 0,
"tried": "사이트 5면 · 검색 13건 · 변형 0"
},
{
"platform": "babitalk",
"state": "CONFIRMED",
"confirmed": 1,
"candidates": 0,
"tried": "사이트 5면 · 검색 13건 · 변형 0"
}
],
"platforms": {
"youtube": [
{
"platform": "youtube",
"key": "UCNBaQBCok5xIViCnrGdisoQ",
"url": "https://www.youtube.com/channel/UCNBaQBCok5xIViCnrGdisoQ",
"status": "CONFIRMED",
"score": 9,
"evidence": [
"홈페이지에서 역링크",
"레지스트리 등재",
"프로필 제목에 상호: \"WJ원진성형외과\"",
"프로필 설명에 홈페이지 도메인"
],
"sources": [
"site",
"site:sameAs",
"registry",
"youtube:search",
"search"
],
"title": "WJ원진성형외과",
"handle": "@wj2541",
"channelId": "UCNBaQBCok5xIViCnrGdisoQ",
"subscribers": 28300,
"videos": 62,
"views": 33899424
},
{
"platform": "youtube",
"key": "@wjwonjin",
"url": "https://www.youtube.com/@wjwonjin",
"status": "CONFIRMED",
"score": 9,
"evidence": [
"홈페이지에서 역링크",
"레지스트리 등재",
"프로필 제목에 상호: \"WJ원진성형외과\"",
"프로필 설명에 홈페이지 도메인"
],
"sources": [
"site",
"site:sameAs",
"registry",
"search",
"youtube:search"
],
"title": "WJ원진성형외과",
"handle": "@wjwonjin",
"channelId": "UC-EBM4e0VST1W_PQ0NzFMQg",
"subscribers": 14700,
"videos": 736,
"views": 31128302
},
{
"platform": "youtube",
"key": "UCNmTm4UubrscPczrAfGhUvQ",
"url": "https://www.youtube.com/channel/UCNmTm4UubrscPczrAfGhUvQ",
"status": "CANDIDATE",
"score": 2,
"evidence": [
"프로필 제목에 상호: \"Wonjin Plastic Surgery Korea\""
],
"sources": [
"youtube:search"
],
"title": "Wonjin Plastic Surgery Korea",
"handle": "@wonjinplasticsurgerykorea9746",
"channelId": "UCNmTm4UubrscPczrAfGhUvQ",
"subscribers": 146000,
"videos": 50,
"views": 8590
},
{
"platform": "youtube",
"key": "UCk2UbMID_NjYZe7-WBLQXRw",
"url": "https://www.youtube.com/channel/UCk2UbMID_NjYZe7-WBLQXRw",
"status": "CANDIDATE",
"score": 2,
"evidence": [
"프로필 제목에 상호: \"유세윤의 광고100 X 원진성형외과\""
],
"sources": [
"youtube:search"
],
"title": "유세윤의 광고100 X 원진성형외과",
"handle": "@유세윤의광고100x원진",
"channelId": "UCk2UbMID_NjYZe7-WBLQXRw",
"subscribers": 736,
"videos": 4,
"views": 220740
},
{
"platform": "youtube",
"key": "UCEC21_7WvRx8cWlje4sLVlw",
"url": "https://www.youtube.com/channel/UCEC21_7WvRx8cWlje4sLVlw",
"status": "CANDIDATE",
"score": 2,
"evidence": [
"프로필 제목에 상호: \"WONJINPS\""
],
"sources": [
"youtube:search",
"variant"
],
"title": "WONJINPS",
"handle": "@wonjinps",
"channelId": "UCEC21_7WvRx8cWlje4sLVlw",
"subscribers": 40,
"videos": 14,
"views": 28223
},
{
"platform": "youtube",
"key": "UC8PY7tOsvoaV_z8Rlp_it0Q",
"url": "https://www.youtube.com/channel/UC8PY7tOsvoaV_z8Rlp_it0Q",
"status": "CANDIDATE",
"score": 2,
"evidence": [
"프로필 제목에 상호: \"Wonjin Aesthetics Centre\""
],
"sources": [
"youtube:search"
],
"title": "Wonjin Aesthetics Centre",
"handle": "@wonjinaestheticscentre3458",
"channelId": "UC8PY7tOsvoaV_z8Rlp_it0Q",
"subscribers": 5,
"videos": 11,
"views": 2831
},
{
"platform": "youtube",
"key": "UCJuM0rYynWd9xAXmOf-dl9A",
"url": "https://www.youtube.com/channel/UCJuM0rYynWd9xAXmOf-dl9A",
"status": "CANDIDATE",
"score": 2,
"evidence": [
"프로필 제목에 상호: \"WONJIN_OFFICIAL - KOREA No.1 PLASTIC SUR\""
],
"sources": [
"variant"
],
"title": "WONJIN_OFFICIAL - KOREA No.1 PLASTIC SURGERY",
"handle": "@wonjin_official",
"channelId": "UCJuM0rYynWd9xAXmOf-dl9A",
"subscribers": 3,
"videos": 1,
"views": 28
},
{
"platform": "youtube",
"key": "UChnJVIjdmUeZkA40cRFMzFA",
"url": "https://www.youtube.com/channel/UChnJVIjdmUeZkA40cRFMzFA",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (naver:원진성형외과 유튜브)"
],
"sources": [
"search"
],
"title": "원트성형외과",
"handle": "@want_2025",
"channelId": "UChnJVIjdmUeZkA40cRFMzFA",
"subscribers": 79,
"videos": 58,
"views": 98233
}
],
"instagram": [
{
"platform": "instagram",
"key": "wonjin_official",
"url": "https://www.instagram.com/wonjin_official/",
"status": "CONFIRMED",
"score": 6,
"evidence": [
"홈페이지에서 역링크",
"레지스트리 등재",
"검색 결과 제목/요약에 상호 (\"원진성형외과\" 인스타그램)"
],
"sources": [
"site",
"site:sameAs",
"registry",
"search"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin_ps",
"url": "https://www.instagram.com/wonjin_ps/",
"status": "CONFIRMED",
"score": 6,
"evidence": [
"홈페이지에서 역링크",
"레지스트리 등재",
"검색 결과 제목/요약에 상호 (\"원진성형외과\" 인스타그램)"
],
"sources": [
"site",
"site:sameAs",
"registry",
"search"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wj_cosmetic",
"url": "https://www.instagram.com/wj_cosmetic/",
"status": "CONFIRMED",
"score": 5,
"evidence": [
"홈페이지에서 역링크",
"레지스트리 등재"
],
"sources": [
"site",
"site:sameAs",
"registry"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wj_plasticsurgery",
"url": "https://www.instagram.com/wj_plasticsurgery/",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (\"원진성형외과\" 인스타그램)"
],
"sources": [
"search"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "hamdust_",
"url": "https://www.instagram.com/hamdust_/",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (site:instagram.com 원진)"
],
"sources": [
"search"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "bjwnjn",
"url": "https://www.instagram.com/bjwnjn/",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (site:instagram.com 원진)"
],
"sources": [
"search"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin_sunnywon",
"url": "https://www.instagram.com/wonjin_sunnywon/",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (site:instagram.com 원진)"
],
"sources": [
"search"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjinire",
"url": "https://www.instagram.com/wonjinire/",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (site:instagram.com 원진)"
],
"sources": [
"search"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wxxnzin",
"url": "https://www.instagram.com/wxxnzin/",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (site:instagram.com 원진)"
],
"sources": [
"search"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wj_1j_",
"url": "https://www.instagram.com/wj_1j_/",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (site:instagram.com 원진)"
],
"sources": [
"search"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin",
"url": "https://www.instagram.com/wonjin/",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (\"원진성형외과\" 인스타그램)"
],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjinps",
"url": "https://www.instagram.com/wonjinps/",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (\"원진성형외과\" 페이스북)"
],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjinofficial",
"url": "https://www.instagram.com/wonjinofficial/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin.official",
"url": "https://www.instagram.com/wonjin.official/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin.ps",
"url": "https://www.instagram.com/wonjin.ps/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjinclinic",
"url": "https://www.instagram.com/wonjinclinic/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin.clinic",
"url": "https://www.instagram.com/wonjin.clinic/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin_clinic",
"url": "https://www.instagram.com/wonjin_clinic/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjinplasticsurgery",
"url": "https://www.instagram.com/wonjinplasticsurgery/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin.plasticsurgery",
"url": "https://www.instagram.com/wonjin.plasticsurgery/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin_plasticsurgery",
"url": "https://www.instagram.com/wonjin_plasticsurgery/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjinkr",
"url": "https://www.instagram.com/wonjinkr/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin.kr",
"url": "https://www.instagram.com/wonjin.kr/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin_kr",
"url": "https://www.instagram.com/wonjin_kr/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjinkorea",
"url": "https://www.instagram.com/wonjinkorea/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin.korea",
"url": "https://www.instagram.com/wonjin.korea/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin_korea",
"url": "https://www.instagram.com/wonjin_korea/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjinseoul",
"url": "https://www.instagram.com/wonjinseoul/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin.seoul",
"url": "https://www.instagram.com/wonjin.seoul/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
},
{
"platform": "instagram",
"key": "wonjin_seoul",
"url": "https://www.instagram.com/wonjin_seoul/",
"status": "UNRELATED",
"score": 0,
"evidence": [],
"sources": [
"variant"
],
"title": "Instagram"
}
],
"facebook": [
{
"platform": "facebook",
"key": "KwonjinPS",
"url": "https://www.facebook.com/KwonjinPS",
"status": "CONFIRMED",
"score": 6,
"evidence": [
"홈페이지에서 역링크",
"레지스트리 등재",
"검색 결과 제목/요약에 상호 (\"원진성형외과\" 페이스북)"
],
"sources": [
"site",
"site:sameAs",
"registry",
"search"
]
},
{
"platform": "facebook",
"key": "photo.php",
"url": "https://www.facebook.com/photo.php",
"status": "HANDLE_DEAD",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (\"원진성형외과\" 페이스북)"
],
"sources": [
"search"
]
}
],
"naverBlog": [
{
"platform": "naverBlog",
"key": "popokpop",
"url": "https://blog.naver.com/popokpop",
"status": "CONFIRMED",
"score": 6,
"evidence": [
"홈페이지에서 역링크",
"레지스트리 등재",
"검색 결과 제목/요약에 상호 (원진성형외과 네이버 플레이스)"
],
"sources": [
"site",
"site:sameAs",
"registry",
"search"
],
"title": ""
},
{
"platform": "naverBlog",
"key": "naramalssami1",
"url": "https://blog.naver.com/naramalssami1",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (\"원진성형외과\" 블로그)"
],
"sources": [
"search"
],
"title": ""
},
{
"platform": "naverBlog",
"key": "qeqe0420",
"url": "https://blog.naver.com/qeqe0420",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (\"원진성형외과\" 블로그)"
],
"sources": [
"search"
],
"title": ""
},
{
"platform": "naverBlog",
"key": "vpepwxormtfo",
"url": "https://blog.naver.com/vpepwxormtfo",
"status": "CANDIDATE",
"score": 1,
"evidence": [
"검색 결과 제목/요약에 상호 (원진성형외과 네이버 플레이스)"
],
"sources": [
"search"
],
"title": ""
}
],
"tiktok": [
{
"platform": "tiktok",
"key": "wonjin_official",
"url": "https://www.tiktok.com/@wonjin_official",
"status": "CONFIRMED",
"score": 4,
"evidence": [
"홈페이지에서 역링크",
"검색 결과 제목/요약에 상호 (\"원진성형외과\" 인스타그램)"
],
"sources": [
"site",
"site:sameAs"
],
"title": ""
}
],
"kakao": [
{
"platform": "kakao",
"key": "_bxflzE",
"url": "https://pf.kakao.com/_bxflzE",
"status": "CONFIRMED",
"score": 5,
"evidence": [
"홈페이지에서 역링크",
"프로필 제목에 상호: \"원진성형외과의원\""
],
"sources": [
"site",
"search"
],
"title": "원진성형외과의원"
}
],
"gangnamunni": [
{
"platform": "gangnamunni",
"key": "2500",
"url": "https://www.gangnamunni.com/hospitals/2500",
"status": "CONFIRMED",
"score": 3,
"evidence": [
"프로필 제목에 상호: \"원진성형외과의원 | 강남언니 - 내 선택에 확신을\""
],
"sources": [
"search"
],
"title": "원진성형외과의원 | 강남언니 - 내 선택에 확신을"
}
],
"naverPlace": [],
"babitalk": [
{
"platform": "babitalk",
"key": "3143",
"url": "https://babitalk.com/hospitals/3143",
"status": "CONFIRMED",
"score": 3,
"evidence": [
"프로필 제목에 상호: \"원진성형외과의원 | 후기∙가격∙이벤트 정보 - 바비톡\""
],
"sources": [
"search"
],
"title": "원진성형외과의원 | 후기∙가격∙이벤트 정보 - 바비톡"
}
]
},
"rules": "datacrawling 스킬 §1~§2. CONFIRMED=근거 점수 3 이상, CANDIDATE=사람 확인, NOT_FOUND 는 다섯 갈래 전부 실행 시에만"
}

View File

@ -0,0 +1,632 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"note": "textInImages=true 인 약력은 이미지 글자라 본문에 없다. authors.json에 옮기기 전에 사람이 확인한다.",
"doctors": [
{
"id": "dr-choisoonwoo",
"url": "https://www.viewclinic.com/viewis/doctors/dr-choisoonwoo/",
"name": "최순우",
"title": "대표원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/01_%EC%B5%9C%EC%88%9C%EC%9A%B0%EC%9B%90%EC%9E%A5%EB%8B%98.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/01_%EC%B5%9C%EC%88%9C%EC%9A%B0%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2026/07/%EC%A7%88%EB%AC%B8%EB%8C%93%EA%B8%80-%ED%95%B4%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4-%EA%B0%80%EC%8A%B4%EC%84%B1%ED%98%95.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/dr_csw_video_02.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2026/07/%EA%B0%80%EC%8A%B4%EB%B3%B4%ED%98%95%EB%AC%BC-%EB%A6%AC%ED%94%8C%EB%A7%81%EC%9D%B4-%EC%97%86%EB%8B%A4.jpg",
"alt": ""
}
],
"textInImages": true,
"status": "약력 이미지 글자 · 확인 대기"
},
{
"id": "dr-yunchangwoon",
"url": "https://www.viewclinic.com/viewis/doctors/dr-yunchangwoon/",
"name": "윤창운",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/02_%EC%9C%A4%EC%B0%BD%EC%9A%B4%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/02_%EC%9C%A4%EC%B0%BD%EC%9A%B4%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/yunchangwoon_y.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/yunchangwoon_y2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/yunchangwoon_y3.jpg",
"alt": ""
}
],
"textInImages": true,
"status": "약력 이미지 글자 · 확인 대기"
},
{
"id": "dr-kimjeongmin",
"url": "https://www.viewclinic.com/viewis/doctors/dr-kimjeongmin/",
"name": "김정민",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/03_%EA%B9%80%EC%A0%95%EB%AF%BC%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/03_%EA%B9%80%EC%A0%95%EB%AF%BC%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/kimjeongmin_y.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/kimjeongmin_y2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/kimjeongmin_y3.jpg",
"alt": ""
}
],
"textInImages": true,
"status": "약력 이미지 글자 · 확인 대기"
},
{
"id": "dr-kimdohyung",
"url": "https://www.viewclinic.com/viewis/doctors/dr-kimdohyung/",
"name": "김도형",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/04_%EA%B9%80%EB%8F%84%ED%98%95%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/04_%EA%B9%80%EB%8F%84%ED%98%95%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-chungjaehyun",
"url": "https://www.viewclinic.com/viewis/doctors/dr-chungjaehyun/",
"name": "정재현",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2025/06/jjh-kr.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2025/06/jjh-kr.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/chungjaehyun_y.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/chungjaehyun_y2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/chungjaehyun_y3.jpg",
"alt": ""
}
],
"textInImages": true,
"status": "약력 이미지 글자 · 확인 대기"
},
{
"id": "dr-chojinwoo",
"url": "https://www.viewclinic.com/viewis/doctors/dr-chojinwoo/",
"name": "조진우",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/10_%EC%A1%B0%EC%A7%84%EC%9A%B0%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/10_%EC%A1%B0%EC%A7%84%EC%9A%B0%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/chojinwoo_y.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/chojinwoo_y2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/chojinwoo_y3.jpg",
"alt": ""
}
],
"textInImages": true,
"status": "약력 이미지 글자 · 확인 대기"
},
{
"id": "dr-sonyoosung",
"url": "https://www.viewclinic.com/viewis/doctors/dr-sonyoosung/",
"name": "손유성",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/12_%EC%86%90%EC%9C%A0%EC%84%B1%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/12_%EC%86%90%EC%9C%A0%EC%84%B1%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-koheunseok",
"url": "https://www.viewclinic.com/viewis/doctors/dr-koheunseok/",
"name": "고은석",
"title": "원장 · 이비인후과전문의",
"credentials": [
"이비인후과 전문의"
],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/13_%EA%B3%A0%EC%9D%80%EC%84%9D%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/13_%EA%B3%A0%EC%9D%80%EC%84%9D%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/koheunseok_y.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/koheunseok_y2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/koheunseok_y3.jpg",
"alt": ""
}
],
"textInImages": true,
"status": "약력 이미지 글자 · 확인 대기"
},
{
"id": "dr-kimminsoo",
"url": "https://www.viewclinic.com/viewis/doctors/dr-kimminsoo/",
"name": "김민수",
"title": "원장 · 외과전문의",
"credentials": [
"외과 전문의 (유방검진 초음파/맘모톰)"
],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/16_%EA%B9%80%EB%AF%BC%EC%88%98%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/16_%EA%B9%80%EB%AF%BC%EC%88%98%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/kimminsoo_y.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/kimminsoo_y2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/kimminsoo_y3.jpg",
"alt": ""
}
],
"textInImages": true,
"status": "약력 이미지 글자 · 확인 대기"
},
{
"id": "dr-kimyoungmin",
"url": "https://www.viewclinic.com/viewis/doctors/dr-kimyoungmin/",
"name": "김영민",
"title": "원장 · 영상의학과 전문의",
"credentials": [
"이화여자대학교 의과대학 국립의료원 영상의학과 전공의 대한영상의학회 정회원"
],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/17_%EA%B9%80%EC%98%81%EB%AF%BC%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/17_%EA%B9%80%EC%98%81%EB%AF%BC%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-leeseunghyun",
"url": "https://www.viewclinic.com/viewis/doctors/dr-leeseunghyun/",
"name": "이승현",
"title": "원장",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/18_%EC%9D%B4%EC%8A%B9%ED%98%84%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/18_%EC%9D%B4%EC%8A%B9%ED%98%84%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/leeseunghyun_y.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/leeseunghyun_y2.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/leeseunghyun_y3.jpg",
"alt": ""
}
],
"textInImages": true,
"status": "약력 이미지 글자 · 확인 대기"
},
{
"id": "dr-leejihyun",
"url": "https://www.viewclinic.com/viewis/doctors/dr-leejihyun/",
"name": "이지현",
"title": "원장",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/19_%EC%9D%B4%EC%A7%80%ED%98%84%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/19_%EC%9D%B4%EC%A7%80%ED%98%84%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-ohhyemi",
"url": "https://www.viewclinic.com/viewis/doctors/dr-ohhyemi/",
"name": "오혜미",
"title": "원장",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/20_%EC%98%A4%ED%96%AC%EB%AF%B8%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/20_%EC%98%A4%ED%96%AC%EB%AF%B8%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-sungbohyun",
"url": "https://www.viewclinic.com/viewis/doctors/dr-sungbohyun/",
"name": "성보현",
"title": "원장 · 마취통증의학과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/26_%EC%84%B1%EB%B3%B4%ED%98%84%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2022/12/26_%EC%84%B1%EB%B3%B4%ED%98%84%EC%9B%90%EC%9E%A5%EB%8B%98-2.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-choijinhwa",
"url": "https://www.viewclinic.com/viewis/doctors/dr-choijinhwa/",
"name": "최진화",
"title": "원장 · 마취통증의학과 전문의",
"credentials": [
"경희대학교 의학과 졸업 경희의료원 인턴 한양대학교병원 마취통증의학과 수련의 마취통증의학과 전문의 대한 마취통증의학회 평생회원 CPR 수료"
],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2023/02/Dr.%EC%B5%9C%EC%A7%84%ED%99%94-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2023/02/Dr.%EC%B5%9C%EC%A7%84%ED%99%94-2.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-songgyuyeong",
"url": "https://www.viewclinic.com/viewis/doctors/dr-songgyuyeong/",
"name": "송규영",
"title": "원장 · 마취통증의학과 전문의",
"credentials": [
"서울대학교 의학전문대학원 졸업 서울대학교병원 마취통증의학과 전문의 대한마취통증의학회 정회원"
],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2023/02/dr_songgyuyeong.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2023/02/dr_songgyuyeong.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-leedongkyu",
"url": "https://www.viewclinic.com/viewis/doctors/dr-leedongkyu/",
"name": "이동규",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2025/06/ldg-kr.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2025/06/ldg-kr.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-kimsoyoung",
"url": "https://www.viewclinic.com/viewis/doctors/dr-kimsoyoung/",
"name": "김소영",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2023/04/33_%EA%B9%80%EC%86%8C%EC%98%81%EC%9B%90%EC%9E%A5%EB%8B%9802.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2023/04/33_%EA%B9%80%EC%86%8C%EC%98%81%EC%9B%90%EC%9E%A5%EB%8B%9802.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-kimyoona",
"url": "https://www.viewclinic.com/viewis/doctors/dr-kimyoona/",
"name": "김유나",
"title": "원장 · 마취통증의학과 전문의",
"credentials": [
"가톨릭중앙의료원 수련의 가톨릭중앙의료원 서울성모병원 전임의 대한마취통증의학회 정회원 대한통증학회 정회원"
],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2023/03/37_%EA%B9%80%EC%9C%A0%EB%82%98%EC%9B%90%EC%9E%A5%EB%8B%98.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2023/03/37_%EA%B9%80%EC%9C%A0%EB%82%98%EC%9B%90%EC%9E%A5%EB%8B%98.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-anhyena",
"url": "https://www.viewclinic.com/viewis/doctors/dr-anhyena/",
"name": "안예나",
"title": "원장 · 마취통증의학과 전문의",
"credentials": [
"경희대학교 의학전문대학원 졸업 경희의료원 인턴 경희의료원 마취통증의학과 전공의 마취통증의학과 전문의 대한마취통증의학회 정회원"
],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2024/08/40_anhyena1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2024/08/40_anhyena1.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-ohwonseok",
"url": "https://www.viewclinic.com/viewis/doctors/dr-ohwonseok/",
"name": "오원석",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2024/12/Oh-Won-Seok.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2024/12/Oh-Won-Seok.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-parkgunwook",
"url": "https://www.viewclinic.com/viewis/doctors/dr-parkgunwook/",
"name": "박건욱",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2025/04/Park-Gun-wook.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2025/04/Park-Gun-wook.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-kwakjisoo",
"url": "https://www.viewclinic.com/viewis/doctors/dr-kwakjisoo/",
"name": "곽지수",
"title": "원장 · 마취통증의학과 전문의",
"credentials": [
"고려대학교 의과대학 졸업 고려대학교 안암병원 수련의 고려대학교 안암병원 마취통증의학과 전공의 마취통증의학과 전문의"
],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2025/04/gwakjisu.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2025/04/gwakjisu.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-kimkyoungrim",
"url": "https://www.viewclinic.com/viewis/doctors/dr-kimkyoungrim/",
"name": "김경림",
"title": "원장 · 마취통증의학과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2026/02/dr_kimkr_big.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2026/02/dr_kimkr_big.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-parkjinwoo",
"url": "https://www.viewclinic.com/viewis/doctors/dr-parkjinwoo/",
"name": "박진우",
"title": "대표원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2026/03/dr_parkjinwoo.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2026/03/dr_parkjinwoo.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-ohjeongseok",
"url": "https://www.viewclinic.com/viewis/doctors/dr-ohjeongseok/",
"name": "오정석",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2026/07/%EA%B5%AD%EB%AC%B850_%EC%98%A4%EC%A0%95%EC%84%9D_%EC%9B%90%EC%9E%A5%EB%8B%98-1.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2026/07/%EA%B5%AD%EB%AC%B850_%EC%98%A4%EC%A0%95%EC%84%9D_%EC%9B%90%EC%9E%A5%EB%8B%98.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
},
{
"id": "dr-ohjunseok",
"url": "https://www.viewclinic.com/viewis/doctors/dr-ohjunseok/",
"name": "오준석",
"title": "원장 · 성형외과 전문의",
"credentials": [],
"images": [
{
"src": "https://www.viewclinic.com/wp-content/uploads/2026/05/doc-ohjunsk_photo.jpg",
"alt": ""
},
{
"src": "https://www.viewclinic.com/wp-content/uploads/2026/05/doc-ohjunsk_photo.jpg",
"alt": ""
}
],
"textInImages": false,
"status": "약력 본문 없음 · 확인 대기"
}
]
}

View File

@ -0,0 +1,89 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"note": "정규식 후보. 값마다 출처 URL. factSheet.json에 넣기 전에 사람이 홈페이지 표기와 대조한다. 후보가 없으면 \"확인 대기\".",
"candidates": {
"phone": {
"02.539.1177": [
"https://www.viewclinic.com/viewis/direction/",
"https://www.viewclinic.com/viewis/direction3/",
"https://www.viewclinic.com/special-view-intro/",
"https://www.viewclinic.com/counsel/",
"https://www.viewclinic.com/reservation-submit/",
"https://www.viewclinic.com/reservation-complete/",
"https://www.viewclinic.com/counsel/online-consultation/",
"https://www.viewclinic.com/counsel/reservation/"
],
"02-539-1177": [
"https://www.viewclinic.com/viewis/direction/",
"https://www.viewclinic.com/viewis/direction3/",
"https://www.viewclinic.com/special-view-intro/",
"https://www.viewclinic.com/counsel/",
"https://www.viewclinic.com/reservation-submit/",
"https://www.viewclinic.com/reservation-complete/",
"https://www.viewclinic.com/counsel/online-consultation/",
"https://www.viewclinic.com/counsel/reservation/"
],
"02-539-1132": [
"https://www.viewclinic.com/viewis/direction/",
"https://www.viewclinic.com/viewis/direction3/",
"https://www.viewclinic.com/special-view-intro/",
"https://www.viewclinic.com/counsel/",
"https://www.viewclinic.com/reservation-submit/",
"https://www.viewclinic.com/reservation-complete/",
"https://www.viewclinic.com/counsel/online-consultation/",
"https://www.viewclinic.com/counsel/reservation/"
]
},
"address": {
"서울시 강남구 봉은사로 107": [
"https://www.viewclinic.com/viewis/direction/",
"https://www.viewclinic.com/viewis/direction3/"
],
"서울시 강남구 봉은사로 1": [
"https://www.viewclinic.com/viewis/direction/"
],
"서울터미널 출발 강변역(2호": [
"https://www.viewclinic.com/viewis/direction/",
"https://www.viewclinic.com/viewis/direction3/"
],
"서울특별시 강남구 봉은사로 107": [
"https://www.viewclinic.com/viewis/direction/",
"https://www.viewclinic.com/viewis/direction3/",
"https://www.viewclinic.com/special-view-intro/",
"https://www.viewclinic.com/counsel/",
"https://www.viewclinic.com/reservation-submit/",
"https://www.viewclinic.com/reservation-complete/",
"https://www.viewclinic.com/counsel/online-consultation/",
"https://www.viewclinic.com/counsel/reservation/"
]
},
"businessNo": {
"220-08-86777": [
"https://www.viewclinic.com/viewis/direction/",
"https://www.viewclinic.com/viewis/direction3/",
"https://www.viewclinic.com/special-view-intro/",
"https://www.viewclinic.com/counsel/",
"https://www.viewclinic.com/reservation-submit/",
"https://www.viewclinic.com/reservation-complete/",
"https://www.viewclinic.com/counsel/online-consultation/",
"https://www.viewclinic.com/counsel/reservation/"
]
},
"representative": {
"최순우": [
"https://www.viewclinic.com/viewis/direction/",
"https://www.viewclinic.com/viewis/direction3/",
"https://www.viewclinic.com/special-view-intro/",
"https://www.viewclinic.com/counsel/",
"https://www.viewclinic.com/reservation-submit/",
"https://www.viewclinic.com/reservation-complete/",
"https://www.viewclinic.com/counsel/online-consultation/",
"https://www.viewclinic.com/counsel/reservation/"
],
"전화": [
"https://www.viewclinic.com/viewis/direction3/"
]
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,96 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4%F0%9F%92%96-%EC%B2%AD%EC%88%9C-2/",
"requestedUrl": "https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4%F0%9F%92%96-%EC%B2%AD%EC%88%9C-2/",
"slug": "-E2-80-BB-EB-88-88-EB-AC-BC-EC-A3-BC-EC-9D-98-F0-9F-98-AD-make-over-EB-9D-BC-EC-93-B0-EA-B3-A0-EB-A0-88-EC-A0-84-EB-93-9C-EB-9D-BC-EC-9D-BD-EB-8A-94-EB-8B-A4-F0-9F-92-96-EC-B2-AD-EC-88-9C-2",
"type": "other",
"anchor": "",
"status": 200,
"title": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형] | 뷰성형외과",
"metaDesc": "",
"h1": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]"
},
{
"kind": "p",
"text": "By 오픈컴2022년 2월 14일No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]"
},
{
"kind": "h",
"level": 3,
"text": "Next Post청순글래머가 되어 돌아왔어요!! 눈물없이 볼수 없었던 1편과는 다른 모습으로!![눈코성형+얼굴지방이식+안면윤곽+모티바가슴성형] 앞으로는 꽃길만🌺"
},
{
"kind": "h",
"level": 3,
"text": "Leave a Reply Cancel Reply"
},
{
"kind": "p",
"text": "You must be logged in to post a comment."
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/rhinoplasty/",
"https://www.viewclinic.com/author/opencom/",
"https://www.viewclinic.com/%e2%80%bb%eb%88%88%eb%ac%bc%ec%a3%bc%ec%9d%98%f0%9f%98%ad-make-over-%eb%9d%bc-%ec%93%b0%ea%b3%a0-%eb%a0%88%ec%a0%84%eb%93%9c%eb%9d%bc-%ec%9d%bd%eb%8a%94%eb%8b%a4%f0%9f%92%96-%ec%b2%ad%ec%88%9c-2/",
"https://www.viewclinic.com/%e2%80%bb%eb%88%88%eb%ac%bc%ec%a3%bc%ec%9d%98%f0%9f%98%ad-make-over-%eb%9d%bc-%ec%93%b0%ea%b3%a0-%eb%a0%88%ec%a0%84%eb%93%9c%eb%9d%bc-%ec%9d%bd%eb%8a%94%eb%8b%a4%f0%9f%92%96-%ec%b2%ad%ec%88%9c/",
"https://www.viewclinic.com/%ec%b2%ad%ec%88%9c%ea%b8%80%eb%9e%98%eb%a8%b8%ea%b0%80-%eb%90%98%ec%96%b4-%eb%8f%8c%ec%95%84%ec%99%94%ec%96%b4%ec%9a%94-%eb%88%88%eb%ac%bc%ec%97%86%ec%9d%b4-%eb%b3%bc%ec%88%98-%ec%97%86%ec%97%88-3/",
"https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4%F0%9F%92%96-%EC%B2%AD%EC%88%9C-2/",
"https://www.viewclinic.com/member/login/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]",
"level": 1,
"paragraphs": [
"By 오픈컴2022년 2월 14일No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post청순글래머가 되어 돌아왔어요!! 눈물없이 볼수 없었던 1편과는 다른 모습으로!![눈코성형+얼굴지방이식+안면윤곽+모티바가슴성형] 앞으로는 꽃길만🌺",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Leave a Reply Cancel Reply",
"level": 3,
"paragraphs": [
"You must be logged in to post a comment."
],
"lists": [],
"tables": []
}
],
"text": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]\nBy 오픈컴2022년 2월 14일No Comments\nPrevious Post(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]\nNext Post청순글래머가 되어 돌아왔어요!! 눈물없이 볼수 없었던 1편과는 다른 모습으로!![눈코성형+얼굴지방이식+안면윤곽+모티바가슴성형] 앞으로는 꽃길만🌺\nLeave a Reply Cancel Reply\nYou must be logged in to post a comment.",
"chars": 312
}

View File

@ -0,0 +1,96 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4%F0%9F%92%96-%EC%B2%AD%EC%88%9C-3/",
"requestedUrl": "https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4%F0%9F%92%96-%EC%B2%AD%EC%88%9C-3/",
"slug": "-E2-80-BB-EB-88-88-EB-AC-BC-EC-A3-BC-EC-9D-98-F0-9F-98-AD-make-over-EB-9D-BC-EC-93-B0-EA-B3-A0-EB-A0-88-EC-A0-84-EB-93-9C-EB-9D-BC-EC-9D-BD-EB-8A-94-EB-8B-A4-F0-9F-92-96-EC-B2-AD-EC-88-9C-3",
"type": "other",
"anchor": "",
"status": 200,
"title": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형] | 뷰성형외과",
"metaDesc": "",
"h1": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]"
},
{
"kind": "p",
"text": "By 오픈컴2022년 2월 14일3월 4th, 2022No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post💘 다음 생에 기대했던 미모득템!! 💘"
},
{
"kind": "h",
"level": 3,
"text": "Next Post저랑 사궈주실래요~~?🤩🤩 흔남에서 훈남으로 변신✨"
},
{
"kind": "h",
"level": 3,
"text": "Leave a Reply Cancel Reply"
},
{
"kind": "p",
"text": "You must be logged in to post a comment."
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/facial/",
"https://www.viewclinic.com/author/opencom/",
"https://www.viewclinic.com/%e2%80%bb%eb%88%88%eb%ac%bc%ec%a3%bc%ec%9d%98%f0%9f%98%ad-make-over-%eb%9d%bc-%ec%93%b0%ea%b3%a0-%eb%a0%88%ec%a0%84%eb%93%9c%eb%9d%bc-%ec%9d%bd%eb%8a%94%eb%8b%a4%f0%9f%92%96-%ec%b2%ad%ec%88%9c-3/",
"https://www.viewclinic.com/%f0%9f%92%98-%eb%8b%a4%ec%9d%8c-%ec%83%9d%ec%97%90-%ea%b8%b0%eb%8c%80%ed%96%88%eb%8d%98-%eb%af%b8%eb%aa%a8%eb%93%9d%ed%85%9c-%f0%9f%92%98-2/",
"https://www.viewclinic.com/%ec%a0%80%eb%9e%91-%ec%82%ac%ea%b6%88%ec%a3%bc%ec%8b%a4%eb%9e%98%ec%9a%94%f0%9f%a4%a9%f0%9f%a4%a9-%ed%9d%94%eb%82%a8%ec%97%90%ec%84%9c-%ed%9b%88%eb%82%a8%ec%9c%bc%eb%a1%9c-%eb%b3%80%ec%8b%a0-2/",
"https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4%F0%9F%92%96-%EC%B2%AD%EC%88%9C-3/",
"https://www.viewclinic.com/member/login/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]",
"level": 1,
"paragraphs": [
"By 오픈컴2022년 2월 14일3월 4th, 2022No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post💘 다음 생에 기대했던 미모득템!! 💘",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post저랑 사궈주실래요~~?🤩🤩 흔남에서 훈남으로 변신✨",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Leave a Reply Cancel Reply",
"level": 3,
"paragraphs": [
"You must be logged in to post a comment."
],
"lists": [],
"tables": []
}
],
"text": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]\nBy 오픈컴2022년 2월 14일3월 4th, 2022No Comments\nPrevious Post💘 다음 생에 기대했던 미모득템!! 💘\nNext Post저랑 사궈주실래요~~?🤩🤩 흔남에서 훈남으로 변신✨\nLeave a Reply Cancel Reply\nYou must be logged in to post a comment.",
"chars": 224
}

View File

@ -0,0 +1,96 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4%F0%9F%92%96-%EC%B2%AD%EC%88%9C/",
"requestedUrl": "https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4%F0%9F%92%96-%EC%B2%AD%EC%88%9C/",
"slug": "-E2-80-BB-EB-88-88-EB-AC-BC-EC-A3-BC-EC-9D-98-F0-9F-98-AD-make-over-EB-9D-BC-EC-93-B0-EA-B3-A0-EB-A0-88-EC-A0-84-EB-93-9C-EB-9D-BC-EC-9D-BD-EB-8A-94-EB-8B-A4-F0-9F-92-96-EC-B2-AD-EC-88-9C",
"type": "other",
"anchor": "",
"status": 200,
"title": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형] | 뷰성형외과",
"metaDesc": "",
"h1": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]"
},
{
"kind": "p",
"text": "By 오픈컴2022년 2월 14일3월 2nd, 2022No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post[Q&A] [눈성형] 눈꺼풀 처짐은 무조건 눈매교정 진행각?! │눈꺼풀처짐수술, 눈꺼풀처짐원인, 안검하수눈매교정"
},
{
"kind": "h",
"level": 3,
"text": "Next Post(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]"
},
{
"kind": "h",
"level": 3,
"text": "Leave a Reply Cancel Reply"
},
{
"kind": "p",
"text": "You must be logged in to post a comment."
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/eyes/",
"https://www.viewclinic.com/author/opencom/",
"https://www.viewclinic.com/%e2%80%bb%eb%88%88%eb%ac%bc%ec%a3%bc%ec%9d%98%f0%9f%98%ad-make-over-%eb%9d%bc-%ec%93%b0%ea%b3%a0-%eb%a0%88%ec%a0%84%eb%93%9c%eb%9d%bc-%ec%9d%bd%eb%8a%94%eb%8b%a4%f0%9f%92%96-%ec%b2%ad%ec%88%9c/",
"https://www.viewclinic.com/qa-%eb%88%88%ec%84%b1%ed%98%95-%eb%88%88%ea%ba%bc%ed%92%80-%ec%b2%98%ec%a7%90%ec%9d%80-%eb%ac%b4%ec%a1%b0%ea%b1%b4-%eb%88%88%eb%a7%a4%ea%b5%90%ec%a0%95-%ec%a7%84%ed%96%89%ea%b0%81-%e2%94%82/",
"https://www.viewclinic.com/%e2%80%bb%eb%88%88%eb%ac%bc%ec%a3%bc%ec%9d%98%f0%9f%98%ad-make-over-%eb%9d%bc-%ec%93%b0%ea%b3%a0-%eb%a0%88%ec%a0%84%eb%93%9c%eb%9d%bc-%ec%9d%bd%eb%8a%94%eb%8b%a4%f0%9f%92%96-%ec%b2%ad%ec%88%9c-2/",
"https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4%F0%9F%92%96-%EC%B2%AD%EC%88%9C/",
"https://www.viewclinic.com/member/login/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]",
"level": 1,
"paragraphs": [
"By 오픈컴2022년 2월 14일3월 2nd, 2022No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post[Q&A] [눈성형] 눈꺼풀 처짐은 무조건 눈매교정 진행각?! │눈꺼풀처짐수술, 눈꺼풀처짐원인, 안검하수눈매교정",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Leave a Reply Cancel Reply",
"level": 3,
"paragraphs": [
"You must be logged in to post a comment."
],
"lists": [],
"tables": []
}
],
"text": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]\nBy 오픈컴2022년 2월 14일3월 2nd, 2022No Comments\nPrevious Post[Q&A] [눈성형] 눈꺼풀 처짐은 무조건 눈매교정 진행각?! │눈꺼풀처짐수술, 눈꺼풀처짐원인, 안검하수눈매교정\nNext Post(※눈물주의😭) make over 라 쓰고 레전드라 읽는다💖 청순글래머로 돌아온 미경님의 수술후기✨ [눈코성형+지방이식+안면윤곽+모티바가슴성형]\nLeave a Reply Cancel Reply\nYou must be logged in to post a comment.",
"chars": 304
}

View File

@ -0,0 +1,96 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4/",
"requestedUrl": "https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4/",
"slug": "-E2-80-BB-EB-88-88-EB-AC-BC-EC-A3-BC-EC-9D-98-F0-9F-98-AD-make-over-EB-9D-BC-EC-93-B0-EA-B3-A0-EB-A0-88-EC-A0-84-EB-93-9C-EB-9D-BC-EC-9D-BD-EB-8A-94-EB-8B-A4",
"type": "other",
"anchor": "",
"status": 200,
"title": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다 | 뷰성형외과",
"metaDesc": "",
"h1": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다"
},
{
"kind": "p",
"text": "By 오픈컴2022년 3월 1일3월 2nd, 2022No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post식약처의 벨라젤 이슈 결과 알려드립니다"
},
{
"kind": "h",
"level": 3,
"text": "Next Post벨라젤 이슈, 현재까지의 상황 정리해드립니다"
},
{
"kind": "h",
"level": 3,
"text": "Leave a Reply Cancel Reply"
},
{
"kind": "p",
"text": "You must be logged in to post a comment."
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/breast/",
"https://www.viewclinic.com/author/opencom/",
"https://www.viewclinic.com/%e2%80%bb%eb%88%88%eb%ac%bc%ec%a3%bc%ec%9d%98%f0%9f%98%ad-make-over-%eb%9d%bc-%ec%93%b0%ea%b3%a0-%eb%a0%88%ec%a0%84%eb%93%9c%eb%9d%bc-%ec%9d%bd%eb%8a%94%eb%8b%a4/",
"https://www.viewclinic.com/%ec%8b%9d%ec%95%bd%ec%b2%98%ec%9d%98-%eb%b2%a8%eb%9d%bc%ec%a0%a4-%ec%9d%b4%ec%8a%88-%ea%b2%b0%ea%b3%bc-%ec%95%8c%eb%a0%a4%eb%93%9c%eb%a6%bd%eb%8b%88%eb%8b%a4/",
"https://www.viewclinic.com/%eb%b2%a8%eb%9d%bc%ec%a0%a4-%ec%9d%b4%ec%8a%88-%ed%98%84%ec%9e%ac%ea%b9%8c%ec%a7%80%ec%9d%98-%ec%83%81%ed%99%a9-%ec%a0%95%eb%a6%ac%ed%95%b4%eb%93%9c%eb%a6%bd%eb%8b%88%eb%8b%a4/",
"https://www.viewclinic.com/%E2%80%BB%EB%88%88%EB%AC%BC%EC%A3%BC%EC%9D%98%F0%9F%98%AD-make-over-%EB%9D%BC-%EC%93%B0%EA%B3%A0-%EB%A0%88%EC%A0%84%EB%93%9C%EB%9D%BC-%EC%9D%BD%EB%8A%94%EB%8B%A4/",
"https://www.viewclinic.com/member/login/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다",
"level": 1,
"paragraphs": [
"By 오픈컴2022년 3월 1일3월 2nd, 2022No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post식약처의 벨라젤 이슈 결과 알려드립니다",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post벨라젤 이슈, 현재까지의 상황 정리해드립니다",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Leave a Reply Cancel Reply",
"level": 3,
"paragraphs": [
"You must be logged in to post a comment."
],
"lists": [],
"tables": []
}
],
"text": "(※눈물주의😭) make over 라 쓰고 레전드라 읽는다\nBy 오픈컴2022년 3월 1일3월 2nd, 2022No Comments\nPrevious Post식약처의 벨라젤 이슈 결과 알려드립니다\nNext Post벨라젤 이슈, 현재까지의 상황 정리해드립니다\nLeave a Reply Cancel Reply\nYou must be logged in to post a comment.",
"chars": 172
}

View File

@ -0,0 +1,77 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%80%BB-%EC%8B%A4%EC%A0%9C-%EA%B0%80%EC%8A%B4%EC%88%98%EC%88%A0-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%A7%84%ED%96%89%EB%90%A9%EB%8B%88%EB%8B%A4/",
"requestedUrl": "https://www.viewclinic.com/%E2%80%BB-%EC%8B%A4%EC%A0%9C-%EA%B0%80%EC%8A%B4%EC%88%98%EC%88%A0-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%A7%84%ED%96%89%EB%90%A9%EB%8B%88%EB%8B%A4/",
"slug": "-E2-80-BB-EC-8B-A4-EC-A0-9C-EA-B0-80-EC-8A-B4-EC-88-98-EC-88-A0-EC-9D-B4-EB-A0-87-EA-B2-8C-EC-A7-84-ED-96-89-EB-90-A9-EB-8B-88-EB-8B-A4",
"type": "other",
"anchor": "",
"status": 200,
"title": "※ 실제 가슴수술 이렇게 진행됩니다! | 뷰성형외과",
"metaDesc": "",
"h1": "※ 실제 가슴수술 이렇게 진행됩니다!",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "※ 실제 가슴수술 이렇게 진행됩니다!"
},
{
"kind": "p",
"text": "By viewadmin2022년 7월 18일No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post눈재수술,코재수술,지방이식 이후 갓생사는 중❣️🎇"
},
{
"kind": "h",
"level": 3,
"text": "Next Post윤곽3종, 코재수술하고 미모 성수기 START! 🥰🥰✨"
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/breast/",
"https://www.viewclinic.com/author/viewadmin/",
"https://www.viewclinic.com/%e2%80%bb-%ec%8b%a4%ec%a0%9c-%ea%b0%80%ec%8a%b4%ec%88%98%ec%88%a0-%ec%9d%b4%eb%a0%87%ea%b2%8c-%ec%a7%84%ed%96%89%eb%90%a9%eb%8b%88%eb%8b%a4/",
"https://www.viewclinic.com/%eb%88%88%ec%9e%ac%ec%88%98%ec%88%a0%ec%bd%94%ec%9e%ac%ec%88%98%ec%88%a0%ec%a7%80%eb%b0%a9%ec%9d%b4%ec%8b%9d-%ec%9d%b4%ed%9b%84-%ea%b0%93%ec%83%9d%ec%82%ac%eb%8a%94-%ec%a4%91%e2%9d%a3%ef%b8%8f/",
"https://www.viewclinic.com/%ec%9c%a4%ea%b3%bd3%ec%a2%85-%ec%bd%94%ec%9e%ac%ec%88%98%ec%88%a0%ed%95%98%ea%b3%a0-%eb%af%b8%eb%aa%a8-%ec%84%b1%ec%88%98%ea%b8%b0-start-%f0%9f%a5%b0%f0%9f%a5%b0%e2%9c%a8/",
"https://www.viewclinic.com/%E2%80%BB-%EC%8B%A4%EC%A0%9C-%EA%B0%80%EC%8A%B4%EC%88%98%EC%88%A0-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%A7%84%ED%96%89%EB%90%A9%EB%8B%88%EB%8B%A4/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "※ 실제 가슴수술 이렇게 진행됩니다!",
"level": 1,
"paragraphs": [
"By viewadmin2022년 7월 18일No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post눈재수술,코재수술,지방이식 이후 갓생사는 중❣️🎇",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post윤곽3종, 코재수술하고 미모 성수기 START! 🥰🥰✨",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
}
],
"text": "※ 실제 가슴수술 이렇게 진행됩니다!\nBy viewadmin2022년 7월 18일No Comments\nPrevious Post눈재수술,코재수술,지방이식 이후 갓생사는 중❣️🎇\nNext Post윤곽3종, 코재수술하고 미모 성수기 START! 🥰🥰✨",
"chars": 119
}

View File

@ -0,0 +1,96 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%9A%A0-%EC%96%91%EC%95%85-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0-%E2%94%82%EC%96%91%EC%95%85%EC%88%98%EC%88%A0%EB%B9%84%EC%9A%A9-%EC%96%91%EC%95%85%EC%88%98/",
"requestedUrl": "https://www.viewclinic.com/%E2%9A%A0-%EC%96%91%EC%95%85-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0-%E2%94%82%EC%96%91%EC%95%85%EC%88%98%EC%88%A0%EB%B9%84%EC%9A%A9-%EC%96%91%EC%95%85%EC%88%98/",
"slug": "-E2-9A-A0-EC-96-91-EC-95-85-EC-88-98-EC-88-A0-ED-9B-84-EC-A3-BC-EC-9D-98-EC-82-AC-ED-95-AD-E2-9A-A0-E2-94-82-EC-96-91-EC-95-85-EC-88-98-EC-88-A0-EB-B9-84-EC-9A-A9-EC-96-91-EC-95-85-EC-88-98",
"type": "other",
"anchor": "",
"status": 200,
"title": "⚠ 양악 수술 후 주의사항 ⚠ │양악수술비용, 양악수술후기, 양악브이로그, 얼굴뼈수술 | 뷰성형외과",
"metaDesc": "",
"h1": "⚠ 양악 수술 후 주의사항 ⚠ │양악수술비용, 양악수술후기, 양악브이로그, 얼굴뼈수술",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "⚠ 양악 수술 후 주의사항 ⚠ │양악수술비용, 양악수술후기, 양악브이로그, 얼굴뼈수술"
},
{
"kind": "p",
"text": "By 오픈컴2022년 2월 14일3월 4th, 2022No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post[슬의생2 5화 리뷰] 물 엎은 익순이 건강악화설? 전문서적까지 대동한 찐의사들의 날카로운 추리, 나의닥터가 보는 슬기로운 의사생활! -닥터 김지민,최순우"
},
{
"kind": "h",
"level": 3,
"text": "Next Post[리얼리뷰] 양악+윤곽+귀족수술로 입체적인 볼륨페이스 탄생기! 👸"
},
{
"kind": "h",
"level": 3,
"text": "Leave a Reply Cancel Reply"
},
{
"kind": "p",
"text": "You must be logged in to post a comment."
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/etc/",
"https://www.viewclinic.com/author/opencom/",
"https://www.viewclinic.com/%e2%9a%a0-%ec%96%91%ec%95%85-%ec%88%98%ec%88%a0-%ed%9b%84-%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%e2%9a%a0-%e2%94%82%ec%96%91%ec%95%85%ec%88%98%ec%88%a0%eb%b9%84%ec%9a%a9-%ec%96%91%ec%95%85%ec%88%98/",
"https://www.viewclinic.com/%ec%8a%ac%ec%9d%98%ec%83%9d2-5%ed%99%94-%eb%a6%ac%eb%b7%b0-%eb%ac%bc-%ec%97%8e%ec%9d%80-%ec%9d%b5%ec%88%9c%ec%9d%b4-%ea%b1%b4%ea%b0%95%ec%95%85%ed%99%94%ec%84%a4-%ec%a0%84%eb%ac%b8%ec%84%9c/",
"https://www.viewclinic.com/%eb%a6%ac%ec%96%bc%eb%a6%ac%eb%b7%b0-%ec%96%91%ec%95%85%ec%9c%a4%ea%b3%bd%ea%b7%80%ec%a1%b1%ec%88%98%ec%88%a0%eb%a1%9c-%ec%9e%85%ec%b2%b4%ec%a0%81%ec%9d%b8-%eb%b3%bc%eb%a5%a8%ed%8e%98%ec%9d%b4/",
"https://www.viewclinic.com/%E2%9A%A0-%EC%96%91%EC%95%85-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0-%E2%94%82%EC%96%91%EC%95%85%EC%88%98%EC%88%A0%EB%B9%84%EC%9A%A9-%EC%96%91%EC%95%85%EC%88%98/",
"https://www.viewclinic.com/member/login/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "⚠ 양악 수술 후 주의사항 ⚠ │양악수술비용, 양악수술후기, 양악브이로그, 얼굴뼈수술",
"level": 1,
"paragraphs": [
"By 오픈컴2022년 2월 14일3월 4th, 2022No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post[슬의생2 5화 리뷰] 물 엎은 익순이 건강악화설? 전문서적까지 대동한 찐의사들의 날카로운 추리, 나의닥터가 보는 슬기로운 의사생활! -닥터 김지민,최순우",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post[리얼리뷰] 양악+윤곽+귀족수술로 입체적인 볼륨페이스 탄생기! 👸",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Leave a Reply Cancel Reply",
"level": 3,
"paragraphs": [
"You must be logged in to post a comment."
],
"lists": [],
"tables": []
}
],
"text": "⚠ 양악 수술 후 주의사항 ⚠ │양악수술비용, 양악수술후기, 양악브이로그, 얼굴뼈수술\nBy 오픈컴2022년 2월 14일3월 4th, 2022No Comments\nPrevious Post[슬의생2 5화 리뷰] 물 엎은 익순이 건강악화설? 전문서적까지 대동한 찐의사들의 날카로운 추리, 나의닥터가 보는 슬기로운 의사생활! -닥터 김지민,최순우\nNext Post[리얼리뷰] 양악+윤곽+귀족수술로 입체적인 볼륨페이스 탄생기! 👸\nLeave a Reply Cancel Reply\nYou must be logged in to post a comment.",
"chars": 248
}

View File

@ -0,0 +1,96 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EA%B0%80%EC%8A%B4-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EB%AA%A8%ED%8B%B0%EB%B0%94%EB%B3%B4%ED%98%95%EB%AC%BC-%EA%B0%80/",
"requestedUrl": "https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EA%B0%80%EC%8A%B4-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EB%AA%A8%ED%8B%B0%EB%B0%94%EB%B3%B4%ED%98%95%EB%AC%BC-%EA%B0%80/",
"slug": "-E2-9A-A0-EF-B8-8F-EA-B0-80-EC-8A-B4-EC-88-98-EC-88-A0-ED-9B-84-EC-A3-BC-EC-9D-98-EC-82-AC-ED-95-AD-E2-9A-A0-EF-B8-8F-E2-94-82-EB-AA-A8-ED-8B-B0-EB-B0-94-EB-B3-B4-ED-98-95-EB-AC-BC-EA-B0-80",
"type": "other",
"anchor": "",
"status": 200,
"title": "⚠️ 가슴 수술 후 주의사항 ⚠️ │모티바보형물, 가슴수술후기, 가슴확대, 가슴보형물 | 뷰성형외과",
"metaDesc": "",
"h1": "⚠️ 가슴 수술 후 주의사항 ⚠️ │모티바보형물, 가슴수술후기, 가슴확대, 가슴보형물",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "⚠️ 가슴 수술 후 주의사항 ⚠️ │모티바보형물, 가슴수술후기, 가슴확대, 가슴보형물"
},
{
"kind": "p",
"text": "By 오픈컴2022년 2월 14일No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post(눈코재수술+윤곽 3종)한 번 사는 인생 예쁘게 살아보자! 세연의 성형 브이로그 1탄 -나닥 뷰티로그"
},
{
"kind": "h",
"level": 3,
"text": "Next Post⚠️ 눈 수술 후 주의사항 ⚠️ │눈수술후주의사항, 눈수술잘하는곳, 코수술비용, 쌍수가격"
},
{
"kind": "h",
"level": 3,
"text": "Leave a Reply Cancel Reply"
},
{
"kind": "p",
"text": "You must be logged in to post a comment."
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/etc/",
"https://www.viewclinic.com/author/opencom/",
"https://www.viewclinic.com/%e2%9a%a0%ef%b8%8f-%ea%b0%80%ec%8a%b4-%ec%88%98%ec%88%a0-%ed%9b%84-%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%e2%9a%a0%ef%b8%8f-%e2%94%82%eb%aa%a8%ed%8b%b0%eb%b0%94%eb%b3%b4%ed%98%95%eb%ac%bc-%ea%b0%80/",
"https://www.viewclinic.com/%eb%88%88%ec%bd%94%ec%9e%ac%ec%88%98%ec%88%a0%ec%9c%a4%ea%b3%bd-3%ec%a2%85%ed%95%9c-%eb%b2%88-%ec%82%ac%eb%8a%94-%ec%9d%b8%ec%83%9d-%ec%98%88%ec%81%98%ea%b2%8c-%ec%82%b4%ec%95%84%eb%b3%b4%ec%9e%90-3/",
"https://www.viewclinic.com/%eb%88%88-%ec%88%98%ec%88%a0-%ed%9b%84-%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%e2%9a%a0%ef%b8%8f-%e2%94%82%eb%88%88%ec%88%98%ec%88%a0%ed%9b%84%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%eb%88%88%ec%88%98/",
"https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EA%B0%80%EC%8A%B4-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EB%AA%A8%ED%8B%B0%EB%B0%94%EB%B3%B4%ED%98%95%EB%AC%BC-%EA%B0%80/",
"https://www.viewclinic.com/member/login/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "⚠️ 가슴 수술 후 주의사항 ⚠️ │모티바보형물, 가슴수술후기, 가슴확대, 가슴보형물",
"level": 1,
"paragraphs": [
"By 오픈컴2022년 2월 14일No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post(눈코재수술+윤곽 3종)한 번 사는 인생 예쁘게 살아보자! 세연의 성형 브이로그 1탄 -나닥 뷰티로그",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post⚠️ 눈 수술 후 주의사항 ⚠️ │눈수술후주의사항, 눈수술잘하는곳, 코수술비용, 쌍수가격",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Leave a Reply Cancel Reply",
"level": 3,
"paragraphs": [
"You must be logged in to post a comment."
],
"lists": [],
"tables": []
}
],
"text": "⚠️ 가슴 수술 후 주의사항 ⚠️ │모티바보형물, 가슴수술후기, 가슴확대, 가슴보형물\nBy 오픈컴2022년 2월 14일No Comments\nPrevious Post(눈코재수술+윤곽 3종)한 번 사는 인생 예쁘게 살아보자! 세연의 성형 브이로그 1탄 -나닥 뷰티로그\nNext Post⚠️ 눈 수술 후 주의사항 ⚠️ │눈수술후주의사항, 눈수술잘하는곳, 코수술비용, 쌍수가격\nLeave a Reply Cancel Reply\nYou must be logged in to post a comment.",
"chars": 221
}

View File

@ -0,0 +1,96 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%88%98%EC%88%A0-%EC%A0%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%84%B1%ED%98%95%EC%88%98%EC%88%A0%EC%A0%84%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD/",
"requestedUrl": "https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%88%98%EC%88%A0-%EC%A0%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%84%B1%ED%98%95%EC%88%98%EC%88%A0%EC%A0%84%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD/",
"slug": "-E2-9A-A0-EF-B8-8F-EC-88-98-EC-88-A0-EC-A0-84-EC-A3-BC-EC-9D-98-EC-82-AC-ED-95-AD-E2-9A-A0-EF-B8-8F-E2-94-82-EC-84-B1-ED-98-95-EC-88-98-EC-88-A0-EC-A0-84-EC-A3-BC-EC-9D-98-EC-82-AC-ED-95-AD",
"type": "other",
"anchor": "",
"status": 200,
"title": "⚠️ 수술 전 주의사항 ⚠️ │성형수술전주의사항, 눈수술잘하는곳, 코수술비용, 쌍수가격 | 뷰성형외과",
"metaDesc": "",
"h1": "⚠️ 수술 전 주의사항 ⚠️ │성형수술전주의사항, 눈수술잘하는곳, 코수술비용, 쌍수가격",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "⚠️ 수술 전 주의사항 ⚠️ │성형수술전주의사항, 눈수술잘하는곳, 코수술비용, 쌍수가격"
},
{
"kind": "p",
"text": "By 오픈컴2022년 2월 14일3월 4th, 2022No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post[리얼리뷰] 양악+윤곽+귀족수술로 입체적인 볼륨페이스 탄생기! 👸"
},
{
"kind": "h",
"level": 3,
"text": "Next Post⚠️ 페이스리프팅 후 주의사항 ⚠️ │연예인피부관리, 피부리프팅시술, 얼굴리프팅후기, 피부좋아지는법"
},
{
"kind": "h",
"level": 3,
"text": "Leave a Reply Cancel Reply"
},
{
"kind": "p",
"text": "You must be logged in to post a comment."
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/etc/",
"https://www.viewclinic.com/author/opencom/",
"https://www.viewclinic.com/%e2%9a%a0%ef%b8%8f-%ec%88%98%ec%88%a0-%ec%a0%84-%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%e2%9a%a0%ef%b8%8f-%e2%94%82%ec%84%b1%ed%98%95%ec%88%98%ec%88%a0%ec%a0%84%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad/",
"https://www.viewclinic.com/%eb%a6%ac%ec%96%bc%eb%a6%ac%eb%b7%b0-%ec%96%91%ec%95%85%ec%9c%a4%ea%b3%bd%ea%b7%80%ec%a1%b1%ec%88%98%ec%88%a0%eb%a1%9c-%ec%9e%85%ec%b2%b4%ec%a0%81%ec%9d%b8-%eb%b3%bc%eb%a5%a8%ed%8e%98%ec%9d%b4/",
"https://www.viewclinic.com/%ed%8e%98%ec%9d%b4%ec%8a%a4%eb%a6%ac%ed%94%84%ed%8c%85-%ed%9b%84-%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%e2%9a%a0%ef%b8%8f-%e2%94%82%ec%97%b0%ec%98%88%ec%9d%b8%ed%94%bc%eb%b6%80%ea%b4%80%eb%a6%ac/",
"https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%88%98%EC%88%A0-%EC%A0%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%84%B1%ED%98%95%EC%88%98%EC%88%A0%EC%A0%84%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD/",
"https://www.viewclinic.com/member/login/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "⚠️ 수술 전 주의사항 ⚠️ │성형수술전주의사항, 눈수술잘하는곳, 코수술비용, 쌍수가격",
"level": 1,
"paragraphs": [
"By 오픈컴2022년 2월 14일3월 4th, 2022No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post[리얼리뷰] 양악+윤곽+귀족수술로 입체적인 볼륨페이스 탄생기! 👸",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post⚠️ 페이스리프팅 후 주의사항 ⚠️ │연예인피부관리, 피부리프팅시술, 얼굴리프팅후기, 피부좋아지는법",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Leave a Reply Cancel Reply",
"level": 3,
"paragraphs": [
"You must be logged in to post a comment."
],
"lists": [],
"tables": []
}
],
"text": "⚠️ 수술 전 주의사항 ⚠️ │성형수술전주의사항, 눈수술잘하는곳, 코수술비용, 쌍수가격\nBy 오픈컴2022년 2월 14일3월 4th, 2022No Comments\nPrevious Post[리얼리뷰] 양악+윤곽+귀족수술로 입체적인 볼륨페이스 탄생기! 👸\nNext Post⚠️ 페이스리프팅 후 주의사항 ⚠️ │연예인피부관리, 피부리프팅시술, 얼굴리프팅후기, 피부좋아지는법\nLeave a Reply Cancel Reply\nYou must be logged in to post a comment.",
"chars": 228
}

View File

@ -0,0 +1,96 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%8B%A4%EB%A6%AC%ED%94%84%ED%8C%85-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%8B%A4%EB%A6%AC%ED%94%84%ED%8C%85%EC%9C%A0/",
"requestedUrl": "https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%8B%A4%EB%A6%AC%ED%94%84%ED%8C%85-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%8B%A4%EB%A6%AC%ED%94%84%ED%8C%85%EC%9C%A0/",
"slug": "-E2-9A-A0-EF-B8-8F-EC-8B-A4-EB-A6-AC-ED-94-84-ED-8C-85-EC-88-98-EC-88-A0-ED-9B-84-EC-A3-BC-EC-9D-98-EC-82-AC-ED-95-AD-E2-9A-A0-EF-B8-8F-E2-94-82-EC-8B-A4-EB-A6-AC-ED-94-84-ED-8C-85-EC-9C-A0",
"type": "other",
"anchor": "",
"status": 200,
"title": "⚠️ 실리프팅 수술 후 주의사항 ⚠️ │실리프팅유지기간, 실리프팅시술, 실리프팅종류 | 뷰성형외과",
"metaDesc": "",
"h1": "⚠️ 실리프팅 수술 후 주의사항 ⚠️ │실리프팅유지기간, 실리프팅시술, 실리프팅종류",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "⚠️ 실리프팅 수술 후 주의사항 ⚠️ │실리프팅유지기간, 실리프팅시술, 실리프팅종류"
},
{
"kind": "p",
"text": "By 오픈컴2022년 2월 14일3월 4th, 2022No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post⚠️ 페이스리프팅 후 주의사항 ⚠️ │연예인피부관리, 피부리프팅시술, 얼굴리프팅후기, 피부좋아지는법"
},
{
"kind": "h",
"level": 3,
"text": "Next Post[뱃살 타파 리얼후기] 운동은 싫지만 뱃살은 삭제하고 싶어!│지방흡입후기 지방흡입후관리 지흡브이로그"
},
{
"kind": "h",
"level": 3,
"text": "Leave a Reply Cancel Reply"
},
{
"kind": "p",
"text": "You must be logged in to post a comment."
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/etc/",
"https://www.viewclinic.com/author/opencom/",
"https://www.viewclinic.com/%e2%9a%a0%ef%b8%8f-%ec%8b%a4%eb%a6%ac%ed%94%84%ed%8c%85-%ec%88%98%ec%88%a0-%ed%9b%84-%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%e2%9a%a0%ef%b8%8f-%e2%94%82%ec%8b%a4%eb%a6%ac%ed%94%84%ed%8c%85%ec%9c%a0/",
"https://www.viewclinic.com/%ed%8e%98%ec%9d%b4%ec%8a%a4%eb%a6%ac%ed%94%84%ed%8c%85-%ed%9b%84-%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%e2%9a%a0%ef%b8%8f-%e2%94%82%ec%97%b0%ec%98%88%ec%9d%b8%ed%94%bc%eb%b6%80%ea%b4%80%eb%a6%ac/",
"https://www.viewclinic.com/%eb%b1%83%ec%82%b4-%ed%83%80%ed%8c%8c-%eb%a6%ac%ec%96%bc%ed%9b%84%ea%b8%b0-%ec%9a%b4%eb%8f%99%ec%9d%80-%ec%8b%ab%ec%a7%80%eb%a7%8c-%eb%b1%83%ec%82%b4%ec%9d%80-%ec%82%ad%ec%a0%9c%ed%95%98%ea%b3%a0/",
"https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%8B%A4%EB%A6%AC%ED%94%84%ED%8C%85-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%8B%A4%EB%A6%AC%ED%94%84%ED%8C%85%EC%9C%A0/",
"https://www.viewclinic.com/member/login/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "⚠️ 실리프팅 수술 후 주의사항 ⚠️ │실리프팅유지기간, 실리프팅시술, 실리프팅종류",
"level": 1,
"paragraphs": [
"By 오픈컴2022년 2월 14일3월 4th, 2022No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post⚠️ 페이스리프팅 후 주의사항 ⚠️ │연예인피부관리, 피부리프팅시술, 얼굴리프팅후기, 피부좋아지는법",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post[뱃살 타파 리얼후기] 운동은 싫지만 뱃살은 삭제하고 싶어!│지방흡입후기 지방흡입후관리 지흡브이로그",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Leave a Reply Cancel Reply",
"level": 3,
"paragraphs": [
"You must be logged in to post a comment."
],
"lists": [],
"tables": []
}
],
"text": "⚠️ 실리프팅 수술 후 주의사항 ⚠️ │실리프팅유지기간, 실리프팅시술, 실리프팅종류\nBy 오픈컴2022년 2월 14일3월 4th, 2022No Comments\nPrevious Post⚠️ 페이스리프팅 후 주의사항 ⚠️ │연예인피부관리, 피부리프팅시술, 얼굴리프팅후기, 피부좋아지는법\nNext Post[뱃살 타파 리얼후기] 운동은 싫지만 뱃살은 삭제하고 싶어!│지방흡입후기 지방흡입후관리 지흡브이로그\nLeave a Reply Cancel Reply\nYou must be logged in to post a comment.",
"chars": 240
}

View File

@ -0,0 +1,96 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%95%88%EB%A9%B4%EC%9C%A4%EA%B3%BD-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%95%88%EB%A9%B4%EC%9C%A4%EA%B3%BD%EC%A0%84/",
"requestedUrl": "https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%95%88%EB%A9%B4%EC%9C%A4%EA%B3%BD-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%95%88%EB%A9%B4%EC%9C%A4%EA%B3%BD%EC%A0%84/",
"slug": "-E2-9A-A0-EF-B8-8F-EC-95-88-EB-A9-B4-EC-9C-A4-EA-B3-BD-EC-88-98-EC-88-A0-ED-9B-84-EC-A3-BC-EC-9D-98-EC-82-AC-ED-95-AD-E2-9A-A0-EF-B8-8F-E2-94-82-EC-95-88-EB-A9-B4-EC-9C-A4-EA-B3-BD-EC-A0-84",
"type": "other",
"anchor": "",
"status": 200,
"title": "⚠️ 안면윤곽 수술 후 주의사항 ⚠️ │안면윤곽전후, 안면윤곽수술비용, 안면윤곽살처짐 | 뷰성형외과",
"metaDesc": "",
"h1": "⚠️ 안면윤곽 수술 후 주의사항 ⚠️ │안면윤곽전후, 안면윤곽수술비용, 안면윤곽살처짐",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "⚠️ 안면윤곽 수술 후 주의사항 ⚠️ │안면윤곽전후, 안면윤곽수술비용, 안면윤곽살처짐"
},
{
"kind": "p",
"text": "By 오픈컴2022년 2월 14일No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post⚠️ 코 수술 후 주의사항 ⚠️ │코수술후주의사항, 코수술잘하는곳, 코수술비용, 코수술후관리"
},
{
"kind": "h",
"level": 3,
"text": "Next Post[슬의생2 4화 리뷰] 나의닥터가 보는 슬기로운 의사생활! 깜짝 노래 실력부터 애잔한 롱디썰까지 대방출 - 닥터 정진우, 최순우"
},
{
"kind": "h",
"level": 3,
"text": "Leave a Reply Cancel Reply"
},
{
"kind": "p",
"text": "You must be logged in to post a comment."
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/etc/",
"https://www.viewclinic.com/author/opencom/",
"https://www.viewclinic.com/%e2%9a%a0%ef%b8%8f-%ec%95%88%eb%a9%b4%ec%9c%a4%ea%b3%bd-%ec%88%98%ec%88%a0-%ed%9b%84-%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%e2%9a%a0%ef%b8%8f-%e2%94%82%ec%95%88%eb%a9%b4%ec%9c%a4%ea%b3%bd%ec%a0%84/",
"https://www.viewclinic.com/%e2%9a%a0%ef%b8%8f-%ec%bd%94-%ec%88%98%ec%88%a0-%ed%9b%84-%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%e2%9a%a0%ef%b8%8f-%e2%94%82%ec%bd%94%ec%88%98%ec%88%a0%ed%9b%84%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad/",
"https://www.viewclinic.com/%ec%8a%ac%ec%9d%98%ec%83%9d2-4%ed%99%94-%eb%a6%ac%eb%b7%b0-%eb%82%98%ec%9d%98%eb%8b%a5%ed%84%b0%ea%b0%80-%eb%b3%b4%eb%8a%94-%ec%8a%ac%ea%b8%b0%eb%a1%9c%ec%9a%b4-%ec%9d%98%ec%82%ac%ec%83%9d%ed%99%9c/",
"https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%95%88%EB%A9%B4%EC%9C%A4%EA%B3%BD-%EC%88%98%EC%88%A0-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%95%88%EB%A9%B4%EC%9C%A4%EA%B3%BD%EC%A0%84/",
"https://www.viewclinic.com/member/login/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "⚠️ 안면윤곽 수술 후 주의사항 ⚠️ │안면윤곽전후, 안면윤곽수술비용, 안면윤곽살처짐",
"level": 1,
"paragraphs": [
"By 오픈컴2022년 2월 14일No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post⚠️ 코 수술 후 주의사항 ⚠️ │코수술후주의사항, 코수술잘하는곳, 코수술비용, 코수술후관리",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post[슬의생2 4화 리뷰] 나의닥터가 보는 슬기로운 의사생활! 깜짝 노래 실력부터 애잔한 롱디썰까지 대방출 - 닥터 정진우, 최순우",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Leave a Reply Cancel Reply",
"level": 3,
"paragraphs": [
"You must be logged in to post a comment."
],
"lists": [],
"tables": []
}
],
"text": "⚠️ 안면윤곽 수술 후 주의사항 ⚠️ │안면윤곽전후, 안면윤곽수술비용, 안면윤곽살처짐\nBy 오픈컴2022년 2월 14일No Comments\nPrevious Post⚠️ 코 수술 후 주의사항 ⚠️ │코수술후주의사항, 코수술잘하는곳, 코수술비용, 코수술후관리\nNext Post[슬의생2 4화 리뷰] 나의닥터가 보는 슬기로운 의사생활! 깜짝 노래 실력부터 애잔한 롱디썰까지 대방출 - 닥터 정진우, 최순우\nLeave a Reply Cancel Reply\nYou must be logged in to post a comment.",
"chars": 235
}

View File

@ -0,0 +1,96 @@
{
"clinic": "viewclinic",
"fetchedAt": "2026-09-07",
"url": "https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%A7%80%EB%B0%A9%EC%9D%B4%EC%8B%9D-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%A7%80%EB%B0%A9%EC%9D%B4%EC%8B%9D%ED%9B%84%EA%B8%B0-%EC%A7%80/",
"requestedUrl": "https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%A7%80%EB%B0%A9%EC%9D%B4%EC%8B%9D-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%A7%80%EB%B0%A9%EC%9D%B4%EC%8B%9D%ED%9B%84%EA%B8%B0-%EC%A7%80/",
"slug": "-E2-9A-A0-EF-B8-8F-EC-A7-80-EB-B0-A9-EC-9D-B4-EC-8B-9D-ED-9B-84-EC-A3-BC-EC-9D-98-EC-82-AC-ED-95-AD-E2-9A-A0-EF-B8-8F-E2-94-82-EC-A7-80-EB-B0-A9-EC-9D-B4-EC-8B-9D-ED-9B-84-EA-B8-B0-EC-A7-80",
"type": "procedure",
"anchor": "",
"status": 200,
"title": "⚠️ 지방이식 후 주의사항 ⚠️ │지방이식후기, 지방이식처짐, 지방이식붓기, 지방이식다이어트 | 뷰성형외과",
"metaDesc": "",
"h1": "⚠️ 지방이식 후 주의사항 ⚠️ │지방이식후기, 지방이식처짐, 지방이식붓기, 지방이식다이어트",
"mainSelector": "#ajax-content-wrap",
"items": [
{
"kind": "h",
"level": 1,
"text": "⚠️ 지방이식 후 주의사항 ⚠️ │지방이식후기, 지방이식처짐, 지방이식붓기, 지방이식다이어트"
},
{
"kind": "p",
"text": "By 오픈컴2022년 2월 14일No Comments"
},
{
"kind": "h",
"level": 3,
"text": "Previous Post[VIEW 레시피] 안면윤곽 수술 황금 레시피 전격 공개"
},
{
"kind": "h",
"level": 3,
"text": "Next Post같은 얼굴인데 다른 느낌...인데?? 훨씬 예뻐졌어!! 안면윤곽수술+눈코수술+가슴성형후기😍"
},
{
"kind": "h",
"level": 3,
"text": "Leave a Reply Cancel Reply"
},
{
"kind": "p",
"text": "You must be logged in to post a comment."
}
],
"images": [],
"links": [
"https://www.viewclinic.com/category/viewtv/etc/",
"https://www.viewclinic.com/author/opencom/",
"https://www.viewclinic.com/%e2%9a%a0%ef%b8%8f-%ec%a7%80%eb%b0%a9%ec%9d%b4%ec%8b%9d-%ed%9b%84-%ec%a3%bc%ec%9d%98%ec%82%ac%ed%95%ad-%e2%9a%a0%ef%b8%8f-%e2%94%82%ec%a7%80%eb%b0%a9%ec%9d%b4%ec%8b%9d%ed%9b%84%ea%b8%b0-%ec%a7%80/",
"https://www.viewclinic.com/view-%eb%a0%88%ec%8b%9c%ed%94%bc-%ec%95%88%eb%a9%b4%ec%9c%a4%ea%b3%bd-%ec%88%98%ec%88%a0-%ed%99%a9%ea%b8%88-%eb%a0%88%ec%8b%9c%ed%94%bc-%ec%a0%84%ea%b2%a9-%ea%b3%b5%ea%b0%9c/",
"https://www.viewclinic.com/%ea%b0%99%ec%9d%80-%ec%96%bc%ea%b5%b4%ec%9d%b8%eb%8d%b0-%eb%8b%a4%eb%a5%b8-%eb%8a%90%eb%82%8c-%ec%9d%b8%eb%8d%b0-%ed%9b%a8%ec%94%ac-%ec%98%88%eb%bb%90%ec%a1%8c%ec%96%b4-%ec%95%88%eb%a9%b4-4/",
"https://www.viewclinic.com/%E2%9A%A0%EF%B8%8F-%EC%A7%80%EB%B0%A9%EC%9D%B4%EC%8B%9D-%ED%9B%84-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%E2%9A%A0%EF%B8%8F-%E2%94%82%EC%A7%80%EB%B0%A9%EC%9D%B4%EC%8B%9D%ED%9B%84%EA%B8%B0-%EC%A7%80/",
"https://www.viewclinic.com/member/login/"
],
"flags": {
"textInImages": false,
"noText": false,
"boilerplateRemoved": 0,
"tables": 0
},
"sections": [
{
"heading": "⚠️ 지방이식 후 주의사항 ⚠️ │지방이식후기, 지방이식처짐, 지방이식붓기, 지방이식다이어트",
"level": 1,
"paragraphs": [
"By 오픈컴2022년 2월 14일No Comments"
],
"lists": [],
"tables": []
},
{
"heading": "Previous Post[VIEW 레시피] 안면윤곽 수술 황금 레시피 전격 공개",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Next Post같은 얼굴인데 다른 느낌...인데?? 훨씬 예뻐졌어!! 안면윤곽수술+눈코수술+가슴성형후기😍",
"level": 3,
"paragraphs": [],
"lists": [],
"tables": []
},
{
"heading": "Leave a Reply Cancel Reply",
"level": 3,
"paragraphs": [
"You must be logged in to post a comment."
],
"lists": [],
"tables": []
}
],
"text": "⚠️ 지방이식 후 주의사항 ⚠️ │지방이식후기, 지방이식처짐, 지방이식붓기, 지방이식다이어트\nBy 오픈컴2022년 2월 14일No Comments\nPrevious Post[VIEW 레시피] 안면윤곽 수술 황금 레시피 전격 공개\nNext Post같은 얼굴인데 다른 느낌...인데?? 훨씬 예뻐졌어!! 안면윤곽수술+눈코수술+가슴성형후기😍\nLeave a Reply Cancel Reply\nYou must be logged in to post a comment.",
"chars": 211
}

Some files were not shown because too many files have changed in this diff Show More