o2o-infinith-demo/docs/business/patch_aeo_geo_competition_docx.py
Haewon Kam 216b2c4217 docs(business): 뷰성형외과 MOU·POC 범위 검토와 의료관광 허브 경쟁분석
2026-09-15 회의록 검토, Global Medical Hub PRD v0.2 검토, 경쟁 플랫폼·규제·시장 딥리서치,
병원 AEO/GEO 서비스 경쟁분석(4-10), 현재 조직으로의 사업 가능성, MOU·POC 권고 범위.

- 워드 보고서는 haewon 편집본이다. 초기 빌더(build_mou_hub_competition_docx.py)는
  결과 파일이 있으면 멈추고, 이후 변경은 patch_aeo_geo_competition_docx.py 처럼 제자리 삽입한다
- MD 초안 동봉

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 16:55:59 +09:00

191 lines
19 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

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

#!/usr/bin/env python3
"""haewon 편집본에 '4-10. 병원·의료 AEO/GEO 서비스 경쟁분석'과 부록 출처를 제자리 삽입한다.
문서를 다시 만들지 않는다. 기존 문단·표·서식은 그대로 두고, '5. 현재 조직으로 가능한 사업인가' 제목 앞에
새 절을, 문서 끝(부록 출처 마지막)에 출처 묶음을 끼워 넣는다. '4-10.' 제목이 이미 있으면 아무것도 하지 않는다.
조사 기준일 2026-09-15.
python3 docs/business/patch_aeo_geo_competition_docx.py
"""
import copy
import sys
from pathlib import Path
HERE = Path(__file__).resolve().parent
sys.path.insert(0, str(HERE.parent / "reports" / "answer_engines"))
from build_engine_review_docx import Document, Pt, GRAY, bullets, heading, para, set_font, table # noqa: E402
TARGET = HERE / "INFINITH_의료관광허브_경쟁분석_및_뷰성형외과_MOU범위_2026-09-15.docx"
ANCHOR = "5. 현재 조직으로 가능한 사업인가"
MARK = "4-10. 병원·의료 AEO/GEO 서비스 경쟁분석"
def text_of(el):
return "".join(x.text or "" for x in el.iter() if x.tag.endswith("}t"))
def h3(doc, t):
heading(doc, t, 2)
def note(doc, t):
para(doc, t, 10, False, GRAY)
def section(doc):
h3(doc, MARK)
para(doc, "플랫폼이 아니라 INFINITH가 지금 팔 수 있는 제품(AI Discovery 진단 + 서포터즈 사이트)이 실제로 경쟁하는 시장입니다. 국내 병원 특화 대행, 국내 범용 GEO SaaS, 해외 SaaS, 해외 의료 마케팅 에이전시를 각 사이트·보도자료에서 직접 확인했습니다. '미확인'은 공개 페이지에서 찾지 못했다는 뜻이며 기능이 없다는 뜻이 아닙니다.", 10.5)
h3(doc, "4-10-1. 시장 구도")
table(doc, ["유형", "대표 사업자", "측정 방식", "가격대"], [
["설문형 무료 진단", "이움코퍼레이션", "병원 담당자 설문 7문항, AI 엔진 질의 없음", "진단 무료, 대행 상담 후 제안"],
["국내 병원 특화 대행", "마하닥-GEO, 아워마케팅, 크리앤서, 지오랭크, 와이더뷰티, BizSpring GEO Care for Clinic", "사이트 감사 + AI 엔진 질의(방식·문항 수 공개 수준이 업체마다 다름)", "월 29만~500만 원"],
["국내 병원 대상 SaaS", "NATANA, 온더AI", "주간 또는 상시 AI 질의, 지표 정의 공개", "월 24만~250만 원"],
["국내 범용 GEO", "서치폴라리스, 에이넥트, 팀하이, 블루닷, NNT Insights, RanketAI, FrostAI, 오픈타임, ZESTCOMPANY, Anymorph", "대행형은 진단+실행, SaaS는 프롬프트 추적", "월 7.9만~2,430만 원"],
["해외 SaaS", "OtterlyAI, Profound, Peec AI, HubSpot AEO, Semrush, Ahrefs Brand Radar", "프롬프트 일간 추적, 일부 사이트 감사. 의료 특화 기능 미확인", "월 $29~$489"],
["해외 의료 마케팅 에이전시", "Fuel Online, ADvance Media, Percepture, Specialist Practice Excellence, Plastic SEO", "코성형 등 시술별 AI visibility audit, 무료 프롬프트 배포", "월 $3,000~20,000+(Percepture)"],
], widths=[3.0, 5.4, 5.2, 3.4], size=9)
h3(doc, "4-10-2. 국내 병원 특화 사업자")
table(doc, ["사업자", "진단·측정", "방법론 공개", "국내 표면·의료법", "실행 범위", "가격", "성과 주장과 근거"], [
["이움코퍼레이션", "설문 7문항(14점). AI 질의 없음", "문항만", "미확인", "FAQ·Schema·권위도", "상담 후", "AI 검색 이용 +68%, 재계약률 98%. 출처 없음. '200+ 병원' 실명 없음"],
["마하닥-GEO", "AI 노출 지수 무료 진단. 항목 수 미확인", "미공개", "미확인", "JSON-LD, EEAT 콘텐츠, 홈페이지 제작", "미확인", "소아청소년과 인용 0→월 15회+, 피부과 객단가 +35%. 측정 방법 없음. '한국 1위' 근거 없음. FAQ에 자사 추천 문구"],
["아워마케팅", "12개국 × 7개 플랫폼(ChatGPT·Claude·Gemini·Perplexity·AI Overview·AI Mode). 'API가 아닌 실제 Chrome + ISP 프록시' 화면 수집", "샘플 리포트만", "의료광고심의 가이드 메뉴", "다국어 콘텐츠, 전환 페이지, PR", "미확인", "한방 클리닉 SOV 90%+, 한의원 AI 봇 방문 462회. 레퍼런스 비공개"],
["크리앤서", "공개 체크리스트 7항목. 진단 방식 미공개", "체크리스트만", "네이버 큐 포함. FAQ에 의료법·심의 이해 명시", "블로그, 검색광고, 플레이스, 홈페이지", "미확인", "성형외과 AI 노출 12%→78%. 측정 방법 미공개. 블로그 사례는 '가상 예시' 명시"],
["지오랭크", "사이트 감사 7항목 0~100점 + 4개 LLM 매일 5회 새 세션", "항목·주기 공개", "미확인", "자사 도메인 발행, JSON-LD", "병의원 월 500만 원, 3개월 내 개선 없으면 50% 환불", "강남 S 피부과 ChatGPT 인용률 +280%, 예약 +42%. '자체 측정' 명시, 익명"],
["NATANA", "ChatGPT·Gemini 매주. 페르소나 5~10명, 프롬프트 50~100개 반복. 무료 진단 5문항", "지표 6종·원문 보관 공개", "의료 표현은 고객 확인 후 실행", "수정안·초안. 발행은 Managed만", "월 24만·49만(출시 예정), Managed 250만부터", "해외 사례 인용 후 '동일 성과 보장 안 함' 명시"],
["온더AI", "ChatGPT·Gemini·Perplexity 모니터링", "지표만", "블로그에 효과 단정·경험담 금지 안내", "콘텐츠 자동 생성, 서브도메인 자동 발행", "월 50만(50 프롬프트)·150만(200), 3개월 결제", "성모치과의원 SoV 26%→52%. 산출 방법 미공개. 실명 1곳"],
["와이더뷰티", "미확인", "미확인", "의료광고 법률 자문 지원", "GEO·SEO, 브랜딩, 숏폼, 광고", "미확인", "미확인"],
["BizSpring GEO Care for Clinic", "ChatGPT·Perplexity 기준 SoM", "미확인", "네이버 블로그·카카오채널 배포, 원장 승인 절차", "블로그·카카오 배포", "초기 49만+월 29만 / 초기 150만+월 100~150만", "'의료 사례 데이터 축적 중', 피부과 사례는 '예시 시나리오' 명시"],
], widths=[2.2, 3.2, 1.6, 2.4, 2.4, 2.2, 3.0], size=7.5)
h3(doc, "4-10-3. 국내 범용 GEO 사업자")
table(doc, ["사업자", "유형", "측정 방식", "국내 표면·의료법", "가격", "성과 주장 / 병원 사례"], [
["서치폴라리스", "대행", "진단 '200개 항목'(목록 미공개). 4개 AI 엔진 + Google·Bing·Naver 검색", "브리핑 명시 없음", "스프린트 890만(4주), 월 890만, 엔터프라이즈 월 2,430만", "평균 언급률 +300% 산출법 미공개. 밝은눈안과 ChatGPT Top 3. 자사 1위 순위 글 게시"],
["에이넥트", "진단 컨설팅", "4개 엔진 SoA·인용률·AVI, AID-Q 질문 설계", "미확인", "미확인", "병원 사례 미확인"],
["팀하이", "SaaS", "ChatGPT·Gemini 감성 분석, GA4 연동", "미확인", "월 9.9만·49.5만", "병원 사례 미확인"],
["블루닷", "SaaS+컨설팅", "DUCA 프레임워크, 문항 수 미확인", "미확인", "온보딩 490만부터, 3개월 3,000만부터", "평균 AI 인용 +65% 근거 미공개. 삼성서울병원 진단 글은 본문 404"],
["NNT Insights", "SaaS", "ChatGPT·Gemini·Perplexity(Claude 옵션). 사용량 공식 공개", "네이버 AI 브리핑·AI Overview 스크린샷 수집(주 1회)", "월 50만·125만·250만", "병원 사례 미확인"],
["오픈타임", "진단+대행", "기술 감사 배점 공개(robots 10, JSON-LD 15, llms.txt 5 등), 5개 엔진", "네이버 AI 브리핑 관측 베타", "미확인", "병원 사례 미확인"],
["ZESTCOMPANY", "대행", "4개 엔진 + 네이버 AI 비교", "식약처·의료법 API로 주의 표현 점검", "3개월 단위, 금액 미확인", "안과 글은 현황 분석, 고객 성과 아님"],
["RanketAI · FrostAI · Anymorph", "SaaS", "RanketAI 페이지 구조 5기준+3엔진, FrostAI 3엔진(월 7.9만부터), Anymorph 8엔진(월 110만부터)", "Anymorph 'Naver AI' 표기, 세부 미확인", "위 기재", "병원 사례 미확인"],
], widths=[2.4, 1.6, 4.2, 3.0, 2.8, 3.0], size=8)
h3(doc, "4-10-4. 해외 SaaS와 의료 마케팅 에이전시")
table(doc, ["사업자", "측정 방식", "의료·규제", "가격"], [
["OtterlyAI", "ChatGPT·AI Overview·Perplexity·Copilot. GEO Audit 25+ 요인(크롤링·콘텐츠·Query Fan-Out)", "의료 특화 미확인", "$29(15)·$189(100)·$489(400 프롬프트)"],
["Profound", "매일 추적. Starter는 ChatGPT만, Growth는 3엔진", "미확인", "$99·$399(연간)"],
["Peec AI", "6엔진 중 3개 선택, 매일", "미확인", "€70·€180·€360(리뷰 사이트 기준)"],
["HubSpot AEO", "ChatGPT·Gemini·Perplexity, 무료 Grader 1회 진단", "미확인", "$50/월(25 프롬프트)"],
["Semrush · Ahrefs", "Semrush AI Visibility Toolkit(AI Mode·ChatGPT 등), Ahrefs 457M+ 프롬프트 DB", "미확인", "Semrush $99/월, Ahrefs $50~199/월"],
["Fuel Online", "코성형 전용 AI visibility audit. mention rate·citation share(본문 403, 검색 스니펫 기준)", "미확인", "미확인"],
["ADvance Media", "5개 AI 표면, 월 약 1,000단어 콘텐츠 + 소수 AI 질의 재확인", "HIPAA 준수 CRM 언급", "미공개"],
["Percepture", "진단에 AI 인용 여부 포함(GSC·Screaming Frog·Semrush)", "'compliance awareness' 수준", "성형 SEO 월 $3,000~5,500, SEO+GEO+PR 월 $8,000~20,000+, 기술 감사 $2,500부터"],
["Specialist Practice Excellence", "무료 마스터 프롬프트 공개(판매형 audit 아님)", "프롬프트에 AHPRA·FTC 등 규제 검토 지시", "해당 없음"],
], widths=[3.2, 7.0, 3.2, 3.6], size=8.5)
h3(doc, "4-10-5. 비교 축별 INFINITH 위치")
table(doc, ["비교 축", "경쟁사 수준 (대표 사례)", "INFINITH", "평가"], [
["진단 기준 공개", "서치폴라리스 200항목 목록 비공개, 지오랭크 7항목, 오픈타임 배점 일부, Otterly 25+ 요인", "36항목, 항목별 0~3 레벨 기준과 판정 근거 URL 공개", "우위"],
["자동·수동 구분, 미검증 처리", "공개 사례 없음", "자동 22·반자동 5·수동 9, 미검증은 분모 제외", "우위"],
["답변 실측 방식", "NATANA 주간 50~100문항 반복, 지오랭크 4엔진 매일 5회, 아워마케팅 12개국×7플랫폼 브라우저 수집, NNT 브리핑 스크린샷", "120문항(국문)·60문항(영문) × ChatGPT·Perplexity 공식 API, 현재 1회", "엔진 수·빈도 열위. 공식 API 방식은 약관 측면에서 보수적"],
["답변 품질 판정", "NATANA 정확률, 팀하이·HubSpot 감성", "gpt-4.1 어조 판정(기준표 v0.3)", "동등"],
["국내 표면", "네이버 AI 브리핑 측정: NNT, 오픈타임(베타), ZEST. 강남언니 언급: 조사 대상 0곳", "강남언니·네이버 플레이스·GBP를 진단 항목(D1·D2·D5)으로 실측. 네이버 AI 브리핑 답변은 측정 안 함", "강남언니 우위, 브리핑 열위"],
["의료법 56조 처리 위치", "안내문(온더AI), 법률 자문(와이더뷰티), API 표현 점검(ZEST), 원장 승인 절차(BizSpring)", "발행 게이트가 금지 유형을 코드로 차단, 원장 의학 검토·개설자 승인 기록이 있어야 공개", "우위"],
["실행 산출물", "초안 전달(NATANA), 서브도메인 자동 발행(온더AI), 블로그·카카오 배포(BizSpring), 홈페이지 제작(마하닥)", "병원 승인 원문 기반 서포터즈 사이트 자동 빌드(병원당 약 30분·$0.6). URL만으로는 60~70% 품질 구간 존재", "우위(품질 보완 필요)"],
["성과 검증 가능성", "익명·가상 예시·자체 측정이 대부분. 실명은 성모치과의원(온더AI), 밝은눈안과(서치폴라리스) 정도", "뷰성형외과 실명 기준선(같은 질문 세트로 전후 비교 설계). 재측정 전", "잠재 우위(POC 결과 필요)"],
["일간 대시보드·셀프서브", "SaaS 대부분 제공", "없음", "열위"],
["가격 구조", "월 7.9만~890만 원, 환불 조건(지오랭크 50%)", "미확정(9/8 제안 초안: 진단 49만, 서포터즈 월 99만·199만)", "결정 필요"],
], widths=[2.8, 6.0, 5.6, 2.6], size=8.5)
h3(doc, "4-10-6. 이 시장의 공통 패턴")
bullets(doc, [
("성과 수치는 공개하고 산출 방법은 공개하지 않습니다. ", "크리앤서 12%→78%, 서치폴라리스 +300%, 블루닷 +65%, 마하닥 사례가 해당합니다. 사용량 공식이나 원문 보관을 공개한 곳은 NNT Insights와 NATANA 두 곳입니다."),
("무료 진단의 다음 단계가 연락처 수집입니다. ", "설문형(이움)과 사이트 감사형(지오랭크 Scanner) 무료 진단은 실제 AI 답변을 측정하지 않습니다."),
("자사를 추천하는 콘텐츠를 스스로 게시합니다. ", "마하닥 FAQ, 서치폴라리스·Anymorph의 업체 순위 글, 지오랭크 홈의 ChatGPT 답변 캡처가 해당합니다."),
("국내 표면 반영이 약합니다. ", "강남언니를 언급한 곳은 없고, 네이버 AI 브리핑을 측정하는 곳은 범용 SaaS 3곳뿐입니다. 병원 특화 업체에서는 확인되지 않았습니다."),
("의료법 대응은 선언 수준입니다. ", "56조나 사전심의를 발행 공정에 넣었다고 밝힌 곳은 없습니다. 병원 레퍼런스는 대부분 익명이거나 예시입니다."),
], size=10)
h3(doc, "4-10-7. 시사점")
bullets(doc, [
("INFINITH가 실제로 경쟁하는 곳은 이 시장입니다. ", "사업자는 많지만, 기준·방법론 공개와 의료법의 공정 반영에서 INFINITH보다 앞선 곳을 찾지 못했습니다. 플랫폼 경쟁(4-1~4-9)과 달리 출발점이 앞서 있습니다."),
("뷰성형외과 POC의 가치는 실명 전후 측정 사례입니다. ", "경쟁사 레퍼런스가 대부분 익명·예시인 시장에서, 같은 질문 세트로 측정한 실명 결과는 드뭅니다. MOU 홍보 포인트를 '실측 기준선과 8주 재측정'으로 잡을 것을 권고합니다."),
("보완할 약점은 세 가지입니다. ", "① 네이버 AI 브리핑 답변 측정(국내 병원이 먼저 묻는 표면), ② 반복 측정(현재 1회, 5회 반복으로 신뢰구간 보고), ③ 가격 확정."),
("비교 광고 표현에 주의합니다. ", "브라우저 수집 방식이나 성과 산출법을 문제로 삼아 경쟁사를 지목하면 표시광고법상 비교·비방 광고 문제가 될 수 있습니다. 외부 자료에는 'INFINITH는 공식 API로 측정하고 기준을 공개합니다'처럼 우리 방식만 서술합니다."),
("랜딩 문구 방향과 일치합니다. ", "'36개 항목, 항목마다 측정 근거를 붙여 진단'이 이 시장에서 확인된 차별점(기준 공개)과 맞습니다."),
], size=10)
note(doc, "조회일 2026-09-15. 가격·기능은 각 사 공개 페이지 기준이며 변경될 수 있습니다. Fuel Online은 본문 403, 블루닷 삼성서울병원 글은 404로 제목만 확인했습니다. MindScope GEO는 공식 사이트를 찾지 못했습니다.")
SOURCES = [
"이움코퍼레이션 https://www.eumcorporation.com/aeo-geo/",
"마하닥-GEO https://hospitalgeo.com",
"아워마케팅 GEO 진단 https://ourmarketing.co.kr/geo-diagnosis · https://ourmarketing.co.kr/service/expertise/geo · 출시 기사 http://www.bogunuilyo.com/news/503413 (2026-07-10)",
"와이더뷰티 https://mdtoday.co.kr/news/view/1065602577857715 (2026-05-28)",
"크리앤서 https://www.creanswer.com · 병원 GEO 체크리스트 https://creanswer.com/blog/geo-checklist-7/ (2026-05-04)",
"NATANA https://natana-ai.com/clinic",
"온더AI https://onthe.ai/pricing · 병원 GEO 가이드 https://blog.onthe.ai/geo-ai-search-hospital-marketing (2026-04-02)",
"지오랭크 https://georank.co.kr · 병원 사례 https://georank.co.kr/case/hospital-clinic-geo · 비용 https://georank.co.kr/geo/geo-cost-pricing",
"BizSpring GEO Care for Clinic https://blog.bizspring.co.kr (2026-05-28, 수정 2026-08-27)",
"서치폴라리스 https://searchpolaris.com · 가격 https://searchpolaris.com/pricing",
"에이넥트 https://ainnect.co.kr",
"팀하이 https://teamhai.co.kr",
"블루닷 https://bi.bluedot.so/consulting",
"NNT Insights https://nnt-insights.com/pricing",
"RanketAI https://www.ranketai.com/ko/faq · AI 가시성 측정 도구 비교 https://www.ranketai.com/ko/blog/ai-visibility-tools-comparison-2026-05-16",
"FrostAI https://www.frostai.co",
"오픈타임 https://ai.idearabbit.co.kr",
"ZESTCOMPANY https://zestcompany.co.kr",
"Anymorph https://anymorph.ai · 한국 GEO·AEO 서비스 TOP 5 https://anymorph.ai/contents/best/korea-geo-aeo-services-top-5-2026 (2026-08-18)",
"OtterlyAI https://otterly.ai/pricing · GEO Audit https://otterly.ai/blog/generative-engine-optimization-audit/ (2025-08-04) · https://help.otterly.ai/what-does-the-geo-audit-do (2026-08-18)",
"Profound https://www.tryprofound.com/pricing",
"Peec AI https://peec.ai/pricing · 리뷰 https://generatemore.ai/blog/peec-ai-review (2026-08-28)",
"HubSpot AEO https://www.hubspot.com/products/aeo · 대안 비교 https://blog.hubspot.com/marketing/peec-ai-alternatives",
"Semrush AI Toolkit https://www.semrush.com/kb/1493-ai-toolkit · Ahrefs Brand Radar https://ahrefs.com/brand-radar",
"AI Search Visibility Tools 비교 https://www.surmado.com/blog/best-ai-visibility-tools-2026",
"Fuel Online https://fuelonline.com/plastic-surgery-marketing/rhinoplasty/ai-visibility-audit/",
"ADvance Media https://advancemedia.com/services/ai-visibility-aeo-geo/",
"Specialist Practice Excellence https://specialistpracticeexcellence.com/blog/prompt-to-audit-aeo-ai-visibility-for-plastic-surgeons/ (2026-07-25)",
"Plastic SEO https://www.plasticseo.com/how-ai-search-is-changing-plastic-surgery-seo/ (2026-07-01)",
"Percepture https://percepture.com/healthcare-insights/plastic-surgery-seo-services/ (2026-06-11)",
]
def main():
doc = Document(TARGET)
body = doc.element.body
children = list(body.iterchildren())
if any(c.tag.endswith("}p") and text_of(c).strip().startswith("4-10.") for c in children):
print("이미 4-10 절이 있어 아무것도 하지 않았습니다.")
return
anchor = next((c for c in children if c.tag.endswith("}p") and text_of(c).strip() == ANCHOR), None)
if anchor is None:
sys.exit(f"기준 제목을 찾지 못했습니다: {ANCHOR}")
tmp = Document()
section(tmp)
for el in [e for e in tmp.element.body.iterchildren() if not e.tag.endswith("}sectPr")]:
anchor.addprevious(copy.deepcopy(el))
src = Document()
heading(src, "병원·의료 AEO/GEO 서비스 (4-10, 조회일 2026-09-15)", 2)
for s in SOURCES:
p = src.add_paragraph()
p.paragraph_format.space_after = Pt(2)
set_font(p.add_run(s), 9, False, GRAY)
sect = body.find("{http://schemas.openxmlformats.org/wordprocessingml/2006/main}sectPr")
for el in [e for e in src.element.body.iterchildren() if not e.tag.endswith("}sectPr")]:
new = copy.deepcopy(el)
if sect is not None:
sect.addprevious(new)
else:
body.append(new)
doc.save(TARGET)
print(f"삽입 완료: {TARGET.name}")
if __name__ == "__main__":
main()