191 lines
19 KiB
Python
191 lines
19 KiB
Python
#!/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()
|