docs(reports): 뷰성형외과 영문 사이트 외국인 관점 AEO/GEO 진단 보고서 2026-09-10

- 영문 60문항 질문뱅크(7군) + Perplexity/OpenAI(뉴욕) 실측 러너 scripts/run_question_bank_en.py
- 자동 채점 + 사람 보정 → v1.0 64/B · AEO 65/B · GEO 72/B (국문 54/C · 42/C · 56/C)
- HTML/PDF 보고서 빌더(Playwright), 서술 narrative_ko.json, README 폴더 안내 추가

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Haewon Kam 2026-09-11 09:50:33 +09:00
parent e47c5e2fc6
commit 24dbe03471
17 changed files with 3930 additions and 1 deletions

View File

@ -8,7 +8,8 @@ docs/reports/
│ ├── 01_readiness_report/ AI Answer Readiness 진단 덱 (v1.0 정본 · v2_표준캔버스 · v1.1 정정판) + 빌더 │ ├── 01_readiness_report/ AI Answer Readiness 진단 덱 (v1.0 정본 · v2_표준캔버스 · v1.1 정정판) + 빌더
│ ├── 02_poc_proposal/ POC 제안서 덱 (정본 · v3 · v3_표준캔버스) + 빌더 │ ├── 02_poc_proposal/ POC 제안서 덱 (정본 · v3 · v3_표준캔버스) + 빌더
│ ├── 03_question_bank/ 질문 뱅크 120문항 · ChatGPT/Perplexity 실측 결과 · TOP50 엑셀 │ ├── 03_question_bank/ 질문 뱅크 120문항 · ChatGPT/Perplexity 실측 결과 · TOP50 엑셀
│ └── 04_supporters/ 서포터즈 GEO 개선 계획 · 2단계 콘텐츠 기획 · 서포터즈 vs 공식 AEO 감사 엑셀 │ ├── 04_supporters/ 서포터즈 GEO 개선 계획 · 2단계 콘텐츠 기획 · 서포터즈 vs 공식 AEO 감사 엑셀
│ └── 05_global_en/ 영문 사이트(viewplasticsurgery.com) 외국인 관점 AEO/GEO 진단 (2026-09-10) · 영문 60문항 뱅크 · Perplexity/OpenAI(뉴욕) 실측 · HTML/PDF 보고서 + 빌더
├── taeha/ 태하 AI Answer Readiness 리포트 (html · pdf · pptx) + 빌더 ├── taeha/ 태하 AI Answer Readiness 리포트 (html · pdf · pptx) + 빌더
├── ibk/ 기업은행 블로그 AEO/GEO 감사 ├── ibk/ 기업은행 블로그 AEO/GEO 감사
└── landing/ AI Discovery 랜딩 시안 (픽셀 정답 HTML) · 스크린샷 · 리포트 페이지 HTML 내보내기 스크립트 └── landing/ AI Discovery 랜딩 시안 (픽셀 정답 HTML) · 스크린샷 · 리포트 페이지 HTML 내보내기 스크립트

View File

@ -0,0 +1,135 @@
# VIEW Plastic Surgery EN Question Bank results: openai
Measured 2026-09-10 / 60 questions
| # | Question | VIEW mentioned | Rank | Sentiment | Clinics (in order) | Cited domains |
|---|---|---|---|---|---|---|
| A-01 | Is VIEW Plastic Surgery in Seoul legit? Is it a trustworthy clinic for foreigners? | O | 1 | positive | VIEW Plastic Surgery | forum.purseblog.com, gangnamclinicindex.com, medtraveling.com, realself.com, reddit.com, seoulclinics.io |
| A-02 | Tell me about VIEW Plastic Surgery in Gangnam, Korea. What are they known for? | O | 1 | positive | VIEW Plastic Surgery | english.visitkorea.or.kr, medicaltour.gangnam.go.kr, realself.com, reddit.com, viewplasticsurgery.com, youtube.com |
| A-03 | What procedures does VIEW Plastic Surgery Korea specialize in? | O | 1 | positive | VIEW Plastic Surgery | english.visitkorea.or.kr, kmhglobal.com, viewplasticsurgery.com |
| A-04 | Who is Dr. Choi Soon Woo of VIEW Plastic Surgery? Is he board certified? | O | 1 | positive | VIEW Plastic Surgery | khunkim.com, viewplasticsurgery.com |
| A-05 | How many surgeons does VIEW Plastic Surgery have and are they all board-certified plastic surgeons? | O | 1 | positive | VIEW Plastic Surgery | assets.website-files.com, khunkim.com, reddit.com, viewplasticsurgery.com |
| A-06 | Does VIEW Plastic Surgery have English-speaking staff or interpreters? | O | 1 | positive | VIEW Plastic Surgery | assets.website-files.com, docentpro.com, forum.purseblog.com, khunkim.com, viewplasticsurgery.com |
| A-07 | How long has VIEW Plastic Surgery been operating and how big is the clinic? | O | 1 | neutral | VIEW Plastic Surgery | assets.website-files.com, english.visitkorea.or.kr, experts-beauty.com, icloudhospital.com, inflo.kr, viewplasticsurgery.com |
| A-08 | VIEW Plastic Surgery Korea reviews from international patients: what do foreigners say? | O | 1 | positive | VIEW Plastic Surgery, Girin Plastic Surgery, AB Plastic Surgery | inkoreanow.com, kclinichelp.com, patients.community, realself.com, reddit.com, viewplasticsurgery.com |
| B-01 | Where is VIEW Plastic Surgery located and how do I get there from Incheon Airport? | O | 1 | - | VIEW Plastic Surgery | english.seoul.go.kr, incheon.go.kr, ivisitkorea.com, jusofind.kr, origin.viewplasticsurgery.com, reddit.com |
| B-02 | Does VIEW Plastic Surgery offer airport pickup for international patients? | O | 1 | positive | VIEW Plastic Surgery | viewplasticsurgery.com |
| B-03 | What are VIEW Plastic Surgery's opening hours and can I book a consultation online from abroad? | O | 1 | positive | VIEW Plastic Surgery | jp.viewplasticsurgery.com, reddit.com, stmstyle.com, viewplasticsurgery.com |
| B-04 | Can I contact VIEW Plastic Surgery via WhatsApp or LINE for a consultation? | O | 1 | - | VIEW Plastic Surgery | 10mag.com, reddit.com, viewplasticsurgery.com, x.com |
| B-05 | Does VIEW Plastic Surgery provide accommodation or hotel partnerships for foreign patients? | O | 1 | positive | VIEW Plastic Surgery | medicaltour.gangnam.go.kr, reddit.com, viewplasticsurgery.com |
| B-06 | How long should I stay in Seoul after plastic surgery before flying home? | X | - | - | (none) | |
| B-07 | Do I need a medical visa for plastic surgery in Korea as a tourist? | X | - | - | (none) | |
| B-08 | Which Gangnam plastic surgery clinics are closest to Sinnonhyeon Station? | O | 6 | neutral | JUST Plastic Surgery Clinic, 1 mm Plastic Surgery Clinic, 345 Plastic Surgery Clinic, Thank You Plastic Surgery Clinic, BETWEEN Plastic Surgery, VIEW Plastic Surgery, Noonopi Plastic Surgery, IK Plastic Surgery | en.ikplastic.com, eng.btwps.com, medi-spec.com, noonopiclinic.com, reddit.com, rightme.kr |
| C-01 | Best plastic surgery clinic in Seoul for foreigners | X | - | - | JK Plastic Surgery Center, ID Hospital, Banobagi Plastic Surgery, SAERO Plastic Surgery, AB Plastic Surgery, NANA Plastic Surgery Hospital, SNUPS Clinic, JW Plastic Surgery Center | clinicseoul.net, english.visitkorea.or.kr, kclinichelp.com, koreaexperience.com, reddit.com, seoulmedicalinsider.com |
| C-02 | Best breast augmentation clinic in Korea for international patients | X | - | - | SAERO Plastic Surgery, JW Plastic Surgery Center, The Plus Plastic Surgery, AB Plastic Surgery, UNE Plastic Surgery, Global Plastic Surgery, Opera Plastic Surgery, JK Plastic Surgery Centre | clinicrankingkorea.com, kclinichelp.com, medicaldepartures.com, medicaltravelkorea.com, my1health.com, realself.com |
| C-03 | Top facial contouring and V-line surgery clinics in Gangnam | O | 3 | positive | JK Plastic Surgery, Banobagi Plastic Surgery, VIEW Plastic Surgery, BRAUN Plastic Surgery, GIRIN Plastic Surgery, 345 Plastic Surgery, Ipche Plastic Surgery, Made Young Plastic Surgery Clinic | gangnambeautyguide.com, gangnamdrk.com, medtraveling.com, misooda.com, plasticsurgeryko.com, topclinicseoul.com |
| C-04 | Best rhinoplasty surgeon in Seoul for foreigners | O | 7 | positive | AB Plastic Surgery, ONYX Plastic Surgery, WOOA Plastic Surgery & Skin Clinic, Banobagi Plastic Surgery, Girin Plastic Surgery, Onlif Plastic Surgery, Sketch Plastic Surgery, VIEW Plastic Surgery | deesseclinic.com, drsamrizk.com, gangnambeautyguide.com, gangnamwomenshealth.com, kclinichelp.com, koreabeautyclinicrating.com |
| C-05 | Best double jaw surgery clinic in Korea | X | - | - | TJ Plastic Surgery, Sinsang Plastic and Reconstructive Surgery, Brown Eye Medical Clinic, Hannaeve Plastic Surgery, SoonPlus Plastic Surgery, Severance Hospital, Seoul National University Hospital (SNUH), Asan Medical Center | gangnam.dentist, jawsurgerykorea.com, koreaclinicguide.com, plasticsurgeryko.com, us-uk.bookimed.com |
| C-06 | Top 5 plastic surgery clinics in Gangnam, Seoul | O | 5 | positive | 4Ever Plastic Surgery, DA Plastic Surgery, ARC Plastic Surgery, Noselab Clinic, VIEW Plastic Surgery, JW Plastic Surgery, ID Hospital, Lienjang Plastic Surgery | gangnambeautyguide.com, gangnamclinicindex.com, plasticsurgeryko.com |
| C-07 | Compare VIEW Plastic Surgery vs ID Hospital vs Banobagi for facial contouring | O | 1 | positive | VIEW Plastic Surgery, ID Hospital, Banobagi | |
| C-08 | Which Korean plastic surgery clinics use Motiva implants and have the most experience with them? | O | 2 | positive | U&U Plastic Surgery Clinic, VIEW Plastic Surgery, Ryan Plastic Surgery, V Clinic Gangnam, ARC Plastic Surgery Clinic, Verygood Plastic Surgery, NANA Plastic Surgery, Golden Diamant Plastic Surgery | en.nanahospital.com, goldendiamant.com, goodbyeacup.com, realself.com, reddit.com, unupskorea.com |
| C-09 | Safest plastic surgery clinic in Korea with anesthesiologists on staff | X | - | - | AB Plastic Surgery Clinic, JK Plastic Surgery Center, Hannaeve Plastic Surgery Clinic, Faceline Plastic Surgery, Braun Plastic Surgery, Respect Plastic Surgery | braunps.com, hannaeveglobal.com, healthdailysouthkorea.com, icloudhospital.com, jkplastic.com, medicalkorea.or.kr |
| C-10 | Which Seoul plastic surgery clinics are officially recognized for medical tourism by the Korean government? | O | 4 | positive | JK Plastic Surgery Center, HER SHE (HERSHE) Plastic Surgery, Hyundai Aesthetics Plastic Surgery, VIEW Plastic Surgery, HERSHE | data.edmgr.kr, english.visitkorea.or.kr, medical.visitseoul.net, medicalkorea.or.kr, medicaltour.gangnam.go.kr, news.seoul.go.kr |
| C-11 | Best clinic in Korea for double eyelid surgery revision for foreigners | X | - | - | 1MM Plastic Surgery, Etonne Plastic Surgery, Wanna Plastic Surgery, Gangnam Seoyeon Clinic, Symphony Plastic Surgery, Link Plastic Surgery, Motive Plastic Surgery, Ahn Sung Min Plastic Surgery | bookkoreamedical.com, gangnamobgyn.com, gangnamwomenshealth.com, kclinichelp.com, plasticsurgeryko.com, reddit.com |
| C-12 | Large plastic surgery hospitals in Seoul with in-house recovery wards | X | - | - | Banobagi Plastic Surgery Clinic, ID Hospital, JW Plastic Surgery, Dream Medical Group, Grand Plastic Surgery | |
| D-01 | Motiva breast augmentation in Korea: what should I know before booking? | X | - | - | (none) | |
| D-02 | What is Motiva Preserve and which clinics in Korea offer it? | X | - | - | U&U Plastic Surgery Clinic, Ryan Plastic Surgery, Golden Diamant Plastic Surgery, Wooa Medical | goldendiamant.com, goodbyeacup.com, imagepreserve.kr, motiva.health, unupskorea.com, wooamedical.com |
| D-03 | How long is recovery after breast augmentation in Korea before I can fly? | X | - | - | (none) | |
| D-04 | What is the difference between V-line surgery and square jaw reduction? | X | - | - | (none) | |
| D-05 | Double jaw surgery in Korea: recovery timeline and risks for international patients | X | - | - | (none) | |
| D-06 | Incisional vs non-incisional double eyelid surgery in Korea: which is better? | X | - | - | (none) | |
| D-07 | Rhinoplasty in Korea with rib cartilage vs silicone: pros and cons | X | - | - | (none) | |
| D-08 | How is revision rhinoplasty done in Korea and how long do I need to stay? | X | - | - | (none) | |
| D-09 | Facelift in Korea for a 50-year-old: what techniques are used? | X | - | - | (none) | |
| D-10 | Is liposuction in Korea safe and how many days of downtime should I expect? | X | - | - | (none) | |
| D-11 | What does VIEW Plastic Surgery's breast surgery process look like from consultation to aftercare? | O | 1 | positive | VIEW Plastic Surgery | id.viewplasticsurgery.com, viewplasticsurgery.com |
| D-12 | Does VIEW Plastic Surgery do a breast ultrasound or examination before augmentation? | O | 1 | positive | VIEW Plastic Surgery | origin.viewplasticsurgery.com |
| D-13 | Subbrow lift vs upper blepharoplasty: which should I get in Korea? | X | - | - | (none) | |
| D-14 | Mini lift vs full facelift in Korea: cost and recovery | O | 7 | - | SeoulFaceliftClinic, Gangnam.Health, medisou, seoulclinics, Korea Surgeon Hub, Arke Clinic, VIEW Plastic Surgery, arkeplasticsurgery | arkeplasticsurgery.com, gangnam.health, koreaplasticsurgery.org, medisou.com, misooda.com, seoulclinics.io |
| E-01 | How much does breast augmentation cost in Korea for foreigners in 2026? | X | - | - | MISOODA, Medisou, Clinicsoncall, ClinicSeoul.net, Seoul Medical Insider, Gangnam Beauty Guide, VitalityScount, KoreMed Consulting | clinicseoul.net, clinicsoncall.com, gangnambeautyguide.com, koremedconsulting.com, medisou.com, misooda.com |
| E-02 | V-line surgery cost in Korea 2026 | X | - | - | MISOODA, MedVoyage, Korea Med Guide, Seoul Medical Insider, AskGangnam, Medicakorea, VitalityScout, V-Line Surgery Korea | askgangnam.com, koreamedguide.com, medicakorea.blogspot.com, medvoyage.app, misooda.com, seoulmedicalinsider.com |
| E-03 | How much does double jaw surgery cost in Seoul? | X | - | - | Gangnam Beauty Guide, MISOODA, SeoulMedicalInsider, DoubleJawSurgeryKorea, SeoulFacialSurgery, iCloudHospital, MedicalTravelCost, SeoulClinics | doublejawsurgerykorea.com, gangnambeautyguide.com, koreacliniccost.com, medicaltravelcost.com, medvoyage.app, misooda.com |
| E-04 | Is plastic surgery in Korea cheaper than in the US? How much can I save? | X | - | - | (none) | |
| E-05 | VIEW Plastic Surgery price list for international patients | X | - | - | (none) | |
| E-06 | What hidden costs should I expect for plastic surgery in Korea as a foreigner? | X | - | - | (none) | |
| E-07 | Can foreigners get a tax refund on plastic surgery in Korea? | X | - | - | (none) | |
| E-08 | Rhinoplasty cost in Gangnam for foreigners | X | - | - | KoreaCareGuide, Gangnam Health, SeoulBeautyTalk, Gangnam Beauty Guide, CYL Blog, ClinicSeoul.net, PlacidWay, SeoulPlasticSurgeon.com | clinicseoul.net, cyl.co.kr, gangnam.health, gangnam.placidway.com, gangnambeauty.guide, gangnambeautyguide.com |
| F-01 | Is plastic surgery in Korea safe for foreigners? What safety standards should I look for? | X | - | - | (none) | |
| F-02 | Does VIEW Plastic Surgery have anesthesiologists present during surgery? | O | 1 | positive | VIEW Plastic Surgery | plasticsurgery.org, reddit.com |
| F-03 | What happens if I have complications after returning home from plastic surgery in Korea? | X | - | - | (none) | |
| F-04 | How do I verify a Korean plastic surgeon is board certified? | X | - | - | (none) | |
| F-05 | Are there red flags or complaints about VIEW Plastic Surgery Korea? | O | 1 | negative | VIEW Plastic Surgery, DA Plastic Surgery, AB Plastic Surgery Clinics, SeoulKlinic | cashdoc.me, cerd.com, clinics.seoulklinic.com, clinicseoul.net, cyl.co.kr, korea.verabeauty.app |
| F-06 | Which Korean plastic surgery clinics have a Motiva implant warranty? | X | - | - | Ryan Plastic Surgery, NANA Plastic Surgery, Wonjin Plastic Surgery Hospital, MD Clinic, Eight Plastic Surgery, U&U Plastic Surgery Clinic, Wooa Plastic Surgery | eightprs.co.kr, en.nanahospital.com, goodbyeacup.com, mdclinic.co.kr, motiva.health, motivakorea.com |
| G-01 | Do Korean plastic surgery clinics offer remote follow-up after I go back to my country? | X | - | - | (none) | |
| G-02 | What aftercare does VIEW Plastic Surgery provide for international patients? | O | 1 | positive | VIEW Plastic Surgery | |
| G-03 | Where can I get post-surgery swelling care in Gangnam after surgery? | O | 7 | positive | ONUL Plastic Surgery & Dermatology, Withwin Dermatology, ROI Plastic Surgery, MINE Plastic Surgery, TheLINE Plastic Surgery, Pose Clinic, VIEW Plastic Surgery, TS Plastic Surgery | en.onulps.com, global.poseclinic.co.kr, hoev.net, mineclinic.com, reddit.com, roisurgery.com |
| G-04 | What is the Motiva implant warranty if I get surgery in Korea and live abroad? | X | - | - | Motiva Korea, breastsurgerykorea.com | breastsurgerykorea.com, motiva.health, motivakorea.com, mtoz.motivaimplants.co.kr |
## Summary
- VIEW mentioned: 27/60 (45%)
| Category | Questions | VIEW mentioned | viewplasticsurgery.com cited |
|---|---|---|---|
| A Brand | 8 | 8 (100%) | 8 (100%) |
| B Travel & logistics | 8 | 6 (75%) | 5 (62%) |
| C Recommendation & comparison | 12 | 6 (50%) | 1 (8%) |
| D Procedure info | 14 | 3 (21%) | 3 (21%) |
| E Pricing | 8 | 0 (0%) | 0 (0%) |
| F Safety & trust | 6 | 2 (33%) | 0 (0%) |
| G Aftercare & remote follow-up | 4 | 2 (50%) | 1 (25%) |
### Clinic mention frequency (top 20)
| Clinic | Questions | First position |
|---|---|---|
| VIEW Plastic Surgery | 27 | 19 |
| AB Plastic Surgery | 4 | 1 |
| ID Hospital | 4 | 0 |
| JK Plastic Surgery Center | 3 | 2 |
| Banobagi Plastic Surgery | 3 | 0 |
| U&U Plastic Surgery Clinic | 3 | 2 |
| Ryan Plastic Surgery | 3 | 1 |
| MISOODA | 3 | 2 |
| Gangnam Beauty Guide | 3 | 1 |
| Girin Plastic Surgery | 2 | 0 |
| SAERO Plastic Surgery | 2 | 1 |
| JW Plastic Surgery Center | 2 | 0 |
| DA Plastic Surgery | 2 | 0 |
| JW Plastic Surgery | 2 | 0 |
| NANA Plastic Surgery | 2 | 0 |
| Golden Diamant Plastic Surgery | 2 | 0 |
| ClinicSeoul.net | 2 | 0 |
| Seoul Medical Insider | 2 | 0 |
| JUST Plastic Surgery Clinic | 1 | 1 |
| 1 mm Plastic Surgery Clinic | 1 | 0 |
### Cited domains (top 25)
| Domain | Questions cited | Cited when VIEW mentioned |
|---|---|---|
| reddit.com | 16 | 13 |
| viewplasticsurgery.com | 16 | 16 |
| gangnambeautyguide.com | 6 | 3 |
| misooda.com | 6 | 2 |
| realself.com | 5 | 4 |
| english.visitkorea.or.kr | 5 | 4 |
| kclinichelp.com | 5 | 2 |
| clinicseoul.net | 4 | 1 |
| seoulmedicalinsider.com | 4 | 0 |
| us-uk.bookimed.com | 4 | 0 |
| plasticsurgeryko.com | 4 | 2 |
| seoulclinics.io | 3 | 2 |
| medicaltour.gangnam.go.kr | 3 | 3 |
| khunkim.com | 3 | 3 |
| assets.website-files.com | 3 | 3 |
| goodbyeacup.com | 3 | 1 |
| unupskorea.com | 3 | 1 |
| motiva.health | 3 | 0 |
| forum.purseblog.com | 2 | 2 |
| gangnamclinicindex.com | 2 | 2 |
| medtraveling.com | 2 | 2 |
| icloudhospital.com | 2 | 1 |
| origin.viewplasticsurgery.com | 2 | 2 |
| seoulplasticsurgeon.com | 2 | 0 |
| wuneprs.com | 2 | 0 |

View File

@ -0,0 +1,736 @@
{
"per_cat": {
"A": [
8,
8,
8
],
"B": [
8,
6,
5
],
"C": [
12,
6,
1
],
"D": [
14,
3,
3
],
"E": [
8,
0,
0
],
"F": [
6,
2,
0
],
"G": [
4,
2,
1
]
},
"freq": {
"VIEW Plastic Surgery": [
27,
19
],
"Girin Plastic Surgery": [
2,
0
],
"AB Plastic Surgery": [
4,
1
],
"JUST Plastic Surgery Clinic": [
1,
1
],
"1 mm Plastic Surgery Clinic": [
1,
0
],
"345 Plastic Surgery Clinic": [
1,
0
],
"Thank You Plastic Surgery Clinic": [
1,
0
],
"BETWEEN Plastic Surgery": [
1,
0
],
"Noonopi Plastic Surgery": [
1,
0
],
"IK Plastic Surgery": [
1,
0
],
"JK Plastic Surgery Center": [
3,
2
],
"ID Hospital": [
4,
0
],
"Banobagi Plastic Surgery": [
3,
0
],
"SAERO Plastic Surgery": [
2,
1
],
"NANA Plastic Surgery Hospital": [
1,
0
],
"SNUPS Clinic": [
1,
0
],
"JW Plastic Surgery Center": [
2,
0
],
"The Plus Plastic Surgery": [
1,
0
],
"UNE Plastic Surgery": [
1,
0
],
"Global Plastic Surgery": [
1,
0
],
"Opera Plastic Surgery": [
1,
0
],
"JK Plastic Surgery Centre": [
1,
0
],
"JK Plastic Surgery": [
1,
1
],
"BRAUN Plastic Surgery": [
1,
0
],
"GIRIN Plastic Surgery": [
1,
0
],
"345 Plastic Surgery": [
1,
0
],
"Ipche Plastic Surgery": [
1,
0
],
"Made Young Plastic Surgery Clinic": [
1,
0
],
"ONYX Plastic Surgery": [
1,
0
],
"WOOA Plastic Surgery & Skin Clinic": [
1,
0
],
"Onlif Plastic Surgery": [
1,
0
],
"Sketch Plastic Surgery": [
1,
0
],
"TJ Plastic Surgery": [
1,
1
],
"Sinsang Plastic and Reconstructive Surgery": [
1,
0
],
"Brown Eye Medical Clinic": [
1,
0
],
"Hannaeve Plastic Surgery": [
1,
0
],
"SoonPlus Plastic Surgery": [
1,
0
],
"Severance Hospital": [
1,
0
],
"Seoul National University Hospital (SNUH)": [
1,
0
],
"Asan Medical Center": [
1,
0
],
"4Ever Plastic Surgery": [
1,
1
],
"DA Plastic Surgery": [
2,
0
],
"ARC Plastic Surgery": [
1,
0
],
"Noselab Clinic": [
1,
0
],
"JW Plastic Surgery": [
2,
0
],
"Lienjang Plastic Surgery": [
1,
0
],
"Banobagi": [
1,
0
],
"U&U Plastic Surgery Clinic": [
3,
2
],
"Ryan Plastic Surgery": [
3,
1
],
"V Clinic Gangnam": [
1,
0
],
"ARC Plastic Surgery Clinic": [
1,
0
],
"Verygood Plastic Surgery": [
1,
0
],
"NANA Plastic Surgery": [
2,
0
],
"Golden Diamant Plastic Surgery": [
2,
0
],
"AB Plastic Surgery Clinic": [
1,
1
],
"Hannaeve Plastic Surgery Clinic": [
1,
0
],
"Faceline Plastic Surgery": [
1,
0
],
"Braun Plastic Surgery": [
1,
0
],
"Respect Plastic Surgery": [
1,
0
],
"HER SHE (HERSHE) Plastic Surgery": [
1,
0
],
"Hyundai Aesthetics Plastic Surgery": [
1,
0
],
"HERSHE": [
1,
0
],
"1MM Plastic Surgery": [
1,
1
],
"Etonne Plastic Surgery": [
1,
0
],
"Wanna Plastic Surgery": [
1,
0
],
"Gangnam Seoyeon Clinic": [
1,
0
],
"Symphony Plastic Surgery": [
1,
0
],
"Link Plastic Surgery": [
1,
0
],
"Motive Plastic Surgery": [
1,
0
],
"Ahn Sung Min Plastic Surgery": [
1,
0
],
"Banobagi Plastic Surgery Clinic": [
1,
1
],
"Dream Medical Group": [
1,
0
],
"Grand Plastic Surgery": [
1,
0
],
"Wooa Medical": [
1,
0
],
"SeoulFaceliftClinic": [
1,
1
],
"Gangnam.Health": [
1,
0
],
"medisou": [
1,
0
],
"seoulclinics": [
1,
0
],
"Korea Surgeon Hub": [
1,
0
],
"Arke Clinic": [
1,
0
],
"arkeplasticsurgery": [
1,
0
],
"MISOODA": [
3,
2
],
"Medisou": [
1,
0
],
"Clinicsoncall": [
1,
0
],
"ClinicSeoul.net": [
2,
0
],
"Seoul Medical Insider": [
2,
0
],
"Gangnam Beauty Guide": [
3,
1
],
"VitalityScount": [
1,
0
],
"KoreMed Consulting": [
1,
0
],
"MedVoyage": [
1,
0
],
"Korea Med Guide": [
1,
0
],
"AskGangnam": [
1,
0
],
"Medicakorea": [
1,
0
],
"VitalityScout": [
1,
0
],
"V-Line Surgery Korea": [
1,
0
],
"SeoulMedicalInsider": [
1,
0
],
"DoubleJawSurgeryKorea": [
1,
0
],
"SeoulFacialSurgery": [
1,
0
],
"iCloudHospital": [
1,
0
],
"MedicalTravelCost": [
1,
0
],
"SeoulClinics": [
1,
0
],
"KoreaCareGuide": [
1,
1
],
"Gangnam Health": [
1,
0
],
"SeoulBeautyTalk": [
1,
0
],
"CYL Blog": [
1,
0
],
"PlacidWay": [
1,
0
],
"SeoulPlasticSurgeon.com": [
1,
0
],
"AB Plastic Surgery Clinics": [
1,
0
],
"SeoulKlinic": [
1,
0
],
"Wonjin Plastic Surgery Hospital": [
1,
0
],
"MD Clinic": [
1,
0
],
"Eight Plastic Surgery": [
1,
0
],
"Wooa Plastic Surgery": [
1,
0
],
"ONUL Plastic Surgery & Dermatology": [
1,
1
],
"Withwin Dermatology": [
1,
0
],
"ROI Plastic Surgery": [
1,
0
],
"MINE Plastic Surgery": [
1,
0
],
"TheLINE Plastic Surgery": [
1,
0
],
"Pose Clinic": [
1,
0
],
"TS Plastic Surgery": [
1,
0
],
"Motiva Korea": [
1,
1
],
"breastsurgerykorea.com": [
1,
0
]
},
"dom_freq": {
"forum.purseblog.com": 2,
"gangnamclinicindex.com": 2,
"medtraveling.com": 2,
"realself.com": 5,
"reddit.com": 16,
"seoulclinics.io": 3,
"viewplasticsurgery.com": 16,
"english.visitkorea.or.kr": 5,
"medicaltour.gangnam.go.kr": 3,
"youtube.com": 1,
"kmhglobal.com": 1,
"khunkim.com": 3,
"assets.website-files.com": 3,
"docentpro.com": 1,
"experts-beauty.com": 1,
"icloudhospital.com": 2,
"inflo.kr": 1,
"inkoreanow.com": 1,
"kclinichelp.com": 5,
"patients.community": 1,
"english.seoul.go.kr": 1,
"incheon.go.kr": 1,
"ivisitkorea.com": 1,
"jusofind.kr": 1,
"origin.viewplasticsurgery.com": 2,
"rome2rio.com": 1,
"jp.viewplasticsurgery.com": 1,
"stmstyle.com": 1,
"10mag.com": 1,
"x.com": 1,
"en.ikplastic.com": 1,
"eng.btwps.com": 1,
"medi-spec.com": 1,
"noonopiclinic.com": 1,
"rightme.kr": 1,
"clinicseoul.net": 4,
"koreaexperience.com": 1,
"seoulmedicalinsider.com": 4,
"seoulplasticsurgeon.com": 2,
"us-uk.bookimed.com": 4,
"wellmap.co": 1,
"clinicrankingkorea.com": 1,
"medicaldepartures.com": 1,
"medicaltravelkorea.com": 1,
"my1health.com": 1,
"wuneprs.com": 2,
"gangnambeautyguide.com": 6,
"gangnamdrk.com": 1,
"misooda.com": 6,
"plasticsurgeryko.com": 4,
"topclinicseoul.com": 1,
"deesseclinic.com": 1,
"drsamrizk.com": 1,
"gangnamwomenshealth.com": 2,
"koreabeautyclinicrating.com": 1,
"medicaltourismchat.com": 1,
"seoulvera.com": 2,
"gangnam.dentist": 1,
"jawsurgerykorea.com": 1,
"koreaclinicguide.com": 1,
"en.nanahospital.com": 2,
"goldendiamant.com": 2,
"goodbyeacup.com": 3,
"unupskorea.com": 3,
"vclinicglobal.kr": 1,
"verygoodaesthetics.com": 1,
"braunps.com": 1,
"hannaeveglobal.com": 1,
"healthdailysouthkorea.com": 1,
"jkplastic.com": 1,
"medicalkorea.or.kr": 2,
"respectps.clinic": 1,
"data.edmgr.kr": 1,
"medical.visitseoul.net": 1,
"news.seoul.go.kr": 1,
"bookkoreamedical.com": 1,
"gangnamobgyn.com": 1,
"imagepreserve.kr": 1,
"motiva.health": 3,
"wooamedical.com": 1,
"id.viewplasticsurgery.com": 1,
"arkeplasticsurgery.com": 1,
"gangnam.health": 2,
"koreaplasticsurgery.org": 1,
"medisou.com": 2,
"seoulfaceliftclinic.com": 1,
"clinicsoncall.com": 1,
"koremedconsulting.com": 1,
"vitalityscout.com": 2,
"askgangnam.com": 1,
"koreamedguide.com": 1,
"medicakorea.blogspot.com": 1,
"medvoyage.app": 2,
"vlinesurgerykorea.com": 1,
"doublejawsurgerykorea.com": 1,
"koreacliniccost.com": 1,
"medicaltravelcost.com": 1,
"mowatool.com": 1,
"seoulfacialsurgery.com": 1,
"cyl.co.kr": 2,
"gangnam.placidway.com": 1,
"gangnambeauty.guide": 1,
"koreacareguide.com": 1,
"seoulbeautytalk.com": 2,
"plasticsurgery.org": 1,
"cashdoc.me": 1,
"cerd.com": 1,
"clinics.seoulklinic.com": 1,
"korea.verabeauty.app": 1,
"eightprs.co.kr": 1,
"mdclinic.co.kr": 1,
"motivakorea.com": 2,
"wonjinbeauty.com": 1,
"en.onulps.com": 1,
"global.poseclinic.co.kr": 1,
"hoev.net": 1,
"mineclinic.com": 1,
"roisurgery.com": 1,
"thelineclinic.com": 1,
"tsplasticsurgery.com": 1,
"widwinskin.com": 1,
"breastsurgerykorea.com": 1,
"mtoz.motivaimplants.co.kr": 1
},
"view_dom": {
"forum.purseblog.com": 2,
"gangnamclinicindex.com": 2,
"medtraveling.com": 2,
"realself.com": 4,
"reddit.com": 13,
"seoulclinics.io": 2,
"viewplasticsurgery.com": 16,
"english.visitkorea.or.kr": 4,
"medicaltour.gangnam.go.kr": 3,
"youtube.com": 1,
"kmhglobal.com": 1,
"khunkim.com": 3,
"assets.website-files.com": 3,
"docentpro.com": 1,
"experts-beauty.com": 1,
"icloudhospital.com": 1,
"inflo.kr": 1,
"inkoreanow.com": 1,
"kclinichelp.com": 2,
"patients.community": 1,
"english.seoul.go.kr": 1,
"incheon.go.kr": 1,
"ivisitkorea.com": 1,
"jusofind.kr": 1,
"origin.viewplasticsurgery.com": 2,
"rome2rio.com": 1,
"jp.viewplasticsurgery.com": 1,
"stmstyle.com": 1,
"10mag.com": 1,
"x.com": 1,
"en.ikplastic.com": 1,
"eng.btwps.com": 1,
"medi-spec.com": 1,
"noonopiclinic.com": 1,
"rightme.kr": 1,
"gangnambeautyguide.com": 3,
"gangnamdrk.com": 1,
"misooda.com": 2,
"plasticsurgeryko.com": 2,
"topclinicseoul.com": 1,
"deesseclinic.com": 1,
"drsamrizk.com": 1,
"gangnamwomenshealth.com": 1,
"koreabeautyclinicrating.com": 1,
"medicaltourismchat.com": 1,
"seoulvera.com": 1,
"en.nanahospital.com": 1,
"goldendiamant.com": 1,
"goodbyeacup.com": 1,
"unupskorea.com": 1,
"vclinicglobal.kr": 1,
"verygoodaesthetics.com": 1,
"data.edmgr.kr": 1,
"medical.visitseoul.net": 1,
"medicalkorea.or.kr": 1,
"news.seoul.go.kr": 1,
"id.viewplasticsurgery.com": 1,
"arkeplasticsurgery.com": 1,
"gangnam.health": 1,
"koreaplasticsurgery.org": 1,
"medisou.com": 1,
"seoulfaceliftclinic.com": 1,
"plasticsurgery.org": 1,
"cashdoc.me": 1,
"cerd.com": 1,
"clinics.seoulklinic.com": 1,
"clinicseoul.net": 1,
"cyl.co.kr": 1,
"korea.verabeauty.app": 1,
"seoulbeautytalk.com": 1,
"en.onulps.com": 1,
"global.poseclinic.co.kr": 1,
"hoev.net": 1,
"mineclinic.com": 1,
"roisurgery.com": 1,
"thelineclinic.com": 1,
"tsplasticsurgery.com": 1,
"widwinskin.com": 1
},
"n": 60,
"mentioned": 27
}

View File

@ -0,0 +1,135 @@
# VIEW Plastic Surgery EN Question Bank results: perplexity
Measured 2026-09-10 / 60 questions
| # | Question | VIEW mentioned | Rank | Sentiment | Clinics (in order) | Cited domains |
|---|---|---|---|---|---|---|
| A-01 | Is VIEW Plastic Surgery in Seoul legit? Is it a trustworthy clinic for foreigners? | O | 1 | neutral | VIEW Plastic Surgery | clinicsoncall.com, curemeabroad.com, forum.purseblog.com, khunkim.com, koreaplasticsurgery.tistory.com, medtraveling.com |
| A-02 | Tell me about VIEW Plastic Surgery in Gangnam, Korea. What are they known for? | O | 1 | positive | VIEW Plastic Surgery | 10mag.com, clinicsoncall.com, curemeabroad.com, english.visitkorea.or.kr, id.viewplasticsurgery.com, khunkim.com |
| A-03 | What procedures does VIEW Plastic Surgery Korea specialize in? | O | 1 | - | VIEW Plastic Surgery | clinicsoncall.com, curemeabroad.com, english.visitkorea.or.kr, experts-medical.com, forum.purseblog.com, khunkim.com |
| A-04 | Who is Dr. Choi Soon Woo of VIEW Plastic Surgery? Is he board certified? | O | 1 | positive | VIEW Plastic Surgery | cashdoc.me, clinicsoncall.com, id.viewplasticsurgery.com, khunkim.com, olden.viewplasticsurgery.com, us-uk.bookimed.com |
| A-05 | How many surgeons does VIEW Plastic Surgery have and are they all board-certified plastic surgeons? | O | 1 | neutral | VIEW Plastic Surgery | academic.oup.com, clinicsoncall.com, ibisworld.com, khunkim.com, kmhglobal.com, madisonps.com |
| A-06 | Does VIEW Plastic Surgery have English-speaking staff or interpreters? | O | 1 | positive | VIEW Plastic Surgery | clinicsoncall.com, curemeabroad.com, en.uniclinics.com, experts-medical.com, khunkim.com, linkedin.com |
| A-07 | How long has VIEW Plastic Surgery been operating and how big is the clinic? | O | 1 | positive | VIEW Plastic Surgery | aeysurgery.com, curemeabroad.com, elclinics.com, english.visitkorea.or.kr, hospitals-travel.ru, id.viewplasticsurgery.com |
| A-08 | VIEW Plastic Surgery Korea reviews from international patients: what do foreigners say? | O | - | - | (none) | abplasticsurgerykorea.com, aljazeera.com, clinicreviewkorea.com, clinicsoncall.com, community.icloudhospital.com, linkpskorea.com |
| B-01 | Where is VIEW Plastic Surgery located and how do I get there from Incheon Airport? | O | 1 | - | VIEW Plastic Surgery | 10mag.com, clinicsoncall.com, curemeabroad.com, en.uniclinics.com, english.visitkorea.or.kr, id.viewplasticsurgery.com |
| B-02 | Does VIEW Plastic Surgery offer airport pickup for international patients? | O | 1 | positive | VIEW Plastic Surgery | abplasticsurgerykorea.com, curemeabroad.com, en.uniclinics.com, forum.purseblog.com, medicalkorea.or.kr, medtour.help |
| B-03 | What are VIEW Plastic Surgery's opening hours and can I book a consultation online from abroad? | O | 1 | - | VIEW Plastic Surgery | 152harleystreet.com, english.visitkorea.or.kr, healthgrades.com, id.viewplasticsurgery.com, khunkim.com, kmhglobal.com |
| B-04 | Can I contact VIEW Plastic Surgery via WhatsApp or LINE for a consultation? | O | 1 | - | VIEW Plastic Surgery | experts-medical.com, facebook.com, instagram.com, medicalavenuekorea.com, reddit.com, viewplasticsurgery.com |
| B-05 | Does VIEW Plastic Surgery provide accommodation or hotel partnerships for foreign patients? | O | 1 | positive | VIEW Plastic Surgery | abplasticsurgerykorea.com, clinicsoncall.com, curemeabroad.com, en.uniclinics.com, medicaltour.gangnam.go.kr, reddit.com |
| B-06 | How long should I stay in Seoul after plastic surgery before flying home? | X | - | - | (none) | ava-ps.com, beautybutlerthailand.com, globalbeautyspot.com, hugo-ps-global.com, jivaka.kr, jwbeauty.net |
| B-07 | Do I need a medical visa for plastic surgery in Korea as a tourist? | X | - | - | (none) | 365plasticsurgerykorea.com, better.medicaltourism.com, clinicseoul.net, clinicsoncall.com, cyl.co.kr, djmeditour.kr |
| B-08 | Which Gangnam plastic surgery clinics are closest to Sinnonhyeon Station? | O | 3 | - | Lala Plastic Surgery Clinic, 345 Plastic Surgery, VIEW Plastic Surgery, Girin Plastic Surgery, MIHO Plastic Surgery, Noonopi Plastic Surgery, Glam Surgery, UE Plastic Surgery Clinic | clinicseoul.net, en.345-ps.com, en.nanahospital.com, gangnam.health, gangnamdrk.com, korea-clinics.com |
| C-01 | Best plastic surgery clinic in Seoul for foreigners | O | 4 | positive | JK Plastic Surgery, ID Hospital, Banobagi Plastic Surgery, VIEW Plastic Surgery | 10mag.com, abplasticsurgerykorea.com, english.visitkorea.or.kr, expatguidekorea.com, gangnamwomenshealth.com, girinpsen.com |
| C-02 | Best breast augmentation clinic in Korea for international patients | X | - | - | VG Plastic Surgery, SAERO Plastic Surgery, WOOA Plastic Surgery, JK Plastic Surgery, Verygood Plastic Surgery, CDU Plastic Surgery | clinicsoncall.com, experts-beauty.com, gangnamwomenshealth.com, jkplastic.com, koreaclinicguide.com, medicaldepartures.com |
| C-03 | Top facial contouring and V-line surgery clinics in Gangnam | X | - | - | TOP Plastic Surgery, The PLUS Plastic Surgery, Glam Plastic Surgery, Seoul Cheil Plastic Surgery, ONE Cell Plastic Surgery, Very Good Plastic Surgery, SAERO Plastic Surgery, VG Plastic Surgery | cheongdam.skin, facialcontouringkorea.com, gangnam.health, gangnambeautyguide.com, gangnamdrk.com, gangnamwomenshealth.com |
| C-04 | Best rhinoplasty surgeon in Seoul for foreigners | O | 1 | positive | VIEW Plastic Surgery, JW Plastic Surgery, LUHO Plastic Surgery, SAERO Plastic Surgery, ID Hospital | clinicsoncall.com, experts-beauty.com, experts-medical.com, gangnamrhinoplasty.com, gangnamwomenshealth.com, kowonplasticsurgery.com |
| C-05 | Best double jaw surgery clinic in Korea | O | 2 | positive | ID Hospital, VIEW Plastic Surgery, JUM Oral and Maxillofacial Surgery, WHY Oral and Maxillofacial Surgery, The Face Dental / Seoul Face 21 Dental Hospital | doublejawsurgerykorea.com, en.whydental.co.kr, eng.idhospital.com, gangnam.dental, idhospital.com, koreaclinicguide.com |
| C-06 | Top 5 plastic surgery clinics in Gangnam, Seoul | O | 5 | positive | JK Plastic Surgery, Opera Plastic Surgery, Banobagi Clinic, ID Hospital, VIEW Plastic Surgery | clinicseoul.net, en-ggps.com, en.chiups.com, experts-beauty.com, gangnambeautyguide.com, gangnamdrk.com |
| C-07 | Compare VIEW Plastic Surgery vs ID Hospital vs Banobagi for facial contouring | O | 1 | positive | VIEW Plastic Surgery, ID Hospital, Banobagi | clinicsoncall.com, drspiegel.com, english.visitkorea.or.kr, id.viewplasticsurgery.com, khunkim.com, viewplasticsurgery.com |
| C-08 | Which Korean plastic surgery clinics use Motiva implants and have the most experience with them? | O | 1 | positive | VIEW Plastic Surgery, Ryan Plastic Surgery, JK Plastic Surgery Center, DA Plastic Surgery, THE PLUS Plastic Surgery | beautymedtravel.com, daprseng.com, girinpsen.com, goodbyeacup.com, idhospital.com, jkplastic.com |
| C-09 | Safest plastic surgery clinic in Korea with anesthesiologists on staff | O | 3 | positive | AB Plastic Surgery, JK Plastic Surgery, DA Plastic Surgery, VIEW Plastic Surgery, Verygood Plastic Surgery | abplasticsurgerykorea.com, daprseng.com, english.visitkorea.or.kr, experts-beauty.com, girinpsen.com, icloudhospital.com |
| C-10 | Which Seoul plastic surgery clinics are officially recognized for medical tourism by the Korean government? | O | 1 | positive | VIEW Plastic Surgery, Banobagi Plastic Surgery, JK Plastic Surgery Center, Evita Clinic, GANGNAM JS Hospital, VG Plastic Surgery | better.medicaltourism.com, english.visitkorea.or.kr, evitaclinic.com, gangnamwomenshealth.com, koreaexperience.com, kr-webmagazine.com |
| C-11 | Best clinic in Korea for double eyelid surgery revision for foreigners | X | - | - | Ahnsungmin Plastic Surgery, Sinsa L Plastic Surgery, 1mm Plastic Surgery, JK Plastic Surgery, Banobagi, Sinsael Plastic Surgery, Will Be Plastic Surgery, Very Good Plastic Surgery | ahnsungminplasticsurgery.com, clinicseoul.net, eng.banobagi.com, gangnamobgyn.com, lowerblepharoplastykorea.com, my1health.com |
| C-12 | Large plastic surgery hospitals in Seoul with in-house recovery wards | O | 2 | positive | ID Hospital, VIEW Plastic Surgery, Grand Plastic Surgery, JK Plastic Surgery | 10mag.com, cmcseoul.or.kr, en.nanahospital.com, english.visitkorea.or.kr, experts-beauty.com, experts-medical.com |
| D-01 | Motiva breast augmentation in Korea: what should I know before booking? | X | - | - | (none) | abplasticsurgerykorea.com, daprseng.com, girinpsen.com, graceclinic.co.kr, idhospital.com, jkplastic.com |
| D-02 | What is Motiva Preserve and which clinics in Korea offer it? | X | - | - | (none) | agulloplasticsurgery.com, bodybyravi.com, bostoncenterforplasticsurgery.com, caloaesthetics.com, clnq.com, dallasplasticsurgery.pro |
| D-03 | How long is recovery after breast augmentation in Korea before I can fly? | X | - | - | (none) | afittingexperience.com, gangnambreastreductionsurgery.com, globalbeautyspot.com, hayatmed.com, korea-clinics.com, koreaclinicguide.com |
| D-04 | What is the difference between V-line surgery and square jaw reduction? | X | - | - | (none) | abplasticsurgerykorea.com, april31.com, cinderellaplasticsurgery.com, cyl.co.kr, deschamps-braly.com, docfinderkorea.com |
| D-05 | Double jaw surgery in Korea: recovery timeline and risks for international patients | X | - | - | (none) | 365plasticsurgerykorea.com, advancedreconstruction.com, daprseng.com, docfinderkorea.com, eng.banobagi.com, eng.idhospital.com |
| D-06 | Incisional vs non-incisional double eyelid surgery in Korea: which is better? | X | - | - | (none) | abplasticsurgerykorea.com, allaboutmei.com, clinicseoul.net, docfinderkorea.com, en.marbleps.com, eng.banobagi.com |
| D-07 | Rhinoplasty in Korea with rib cartilage vs silicone: pros and cons | X | - | - | (none) | allureplasticsurgery.sg, answerplasticsurgery.com, asiancosmeticsurgery.com, braunps.com, clinicseoul.net, cyl.co.kr |
| D-08 | How is revision rhinoplasty done in Korea and how long do I need to stay? | X | - | - | (none) | clinicsoncall.com, editionps.com, en.nanahospital.com, eng.banobagi.com, gangnamplastic.surgery, inkoreanow.com |
| D-09 | Facelift in Korea for a 50-year-old: what techniques are used? | X | - | - | (none) | clinicseoul.net, docfinderkorea.com, en.nanahospital.com, gangnammedicalconcierge.com, gangnammedspa.com, gangnamskin.clinic |
| D-10 | Is liposuction in Korea safe and how many days of downtime should I expect? | X | - | - | (none) | canvassresearch.com, clinicsoncall.com, diteplasticsurgery.com, evitaclinic.com, gangnamskin.clinic, jivaka.kr |
| D-11 | What does VIEW Plastic Surgery's breast surgery process look like from consultation to aftercare? | O | 1 | positive | VIEW Plastic Surgery | kmhglobal.com, mayoclinic.org, medicalavenuekorea.com, plasticsurgery.org, viewplasticsurgery.com |
| D-12 | Does VIEW Plastic Surgery do a breast ultrasound or examination before augmentation? | O | 1 | positive | VIEW Plastic Surgery | associationofbreastsurgery.org.uk, clinicsoncall.com, khunkim.com, mja.com.au, myguideseoul.com, plasticsurgery.org |
| D-13 | Subbrow lift vs upper blepharoplasty: which should I get in Korea? | X | - | - | (none) | andps-global.co.kr, cdubeauty.co.kr, docfinderkorea.com, e-aaps.org, gangnamplastic.surgery, korea-plastic-surgery.com |
| D-14 | Mini lift vs full facelift in Korea: cost and recovery | X | - | - | (none) | clinicseoul.net, cyl.co.kr, faceliftingseoul.com, gangnamdermatologyclinic.com, gangnamfaceliftsurgery.com, gangnammedicalconcierge.com |
| E-01 | How much does breast augmentation cost in Korea for foreigners in 2026? | X | - | - | (none) | abplasticsurgerykorea.com, breastimplantkorea.com, clinicseoul.net, clinicsoncall.com, docfinderkorea.com, koreaclinicguide.com |
| E-02 | V-line surgery cost in Korea 2026 | X | - | - | (none) | abplasticsurgerykorea.com, askgangnam.com, clinicseoul.net, docfinderkorea.com, dojagi-clinic.com, jivaka.kr |
| E-03 | How much does double jaw surgery cost in Seoul? | X | - | - | ID Hospital | clinicseoul.net, dentistgangnam.com, docfinderkorea.com, eng.idhospital.com, icloudhospital.com, koreaclinicguide.com |
| E-04 | Is plastic surgery in Korea cheaper than in the US? How much can I save? | X | - | - | (none) | aristocratps.com, clinicseoul.net, clinicsoncall.com, gangnamplastic.surgery, go.medicalavenuekorea.com, guide.kmedtour.com |
| E-05 | VIEW Plastic Surgery price list for international patients | X | - | - | (none) | amedical.az, clinicadelrey.com, clinicseoul.net, clinicsoncall.com, deepplane.com, europesurgery.co.uk |
| E-06 | What hidden costs should I expect for plastic surgery in Korea as a foreigner? | X | - | - | (none) | clinicseoul.net, clinicsoncall.com, koreaexperience.com, koreaplasticsurgerycost.com, my1health.com, reddit.com |
| E-07 | Can foreigners get a tax refund on plastic surgery in Korea? | X | - | - | (none) | beautipin.com, blog.yeoshin.co.kr, eng.dsmc.or.kr:49910, english.visitkorea.or.kr, evitaclinic.com, forenaclinic.com |
| E-08 | Rhinoplasty cost in Gangnam for foreigners | X | - | - | (none) | clinicseoul.net, gangnam.health, gangnambeautyguide.com, gangnamplastic.surgery, gangnamplasticsurgery.clinic, gangnamrhinoplasty.com |
| F-01 | Is plastic surgery in Korea safe for foreigners? What safety standards should I look for? | X | - | - | (none) | abplasticsurgerykorea.com, aljazeera.com, canvassresearch.com, clinicseoul.net, clinicsoncall.com, gangnamplastics.com |
| F-02 | Does VIEW Plastic Surgery have anesthesiologists present during surgery? | O | 1 | positive | VIEW Plastic Surgery | blog.viewclinic.com, clinicsoncall.com, id.viewplasticsurgery.com, khunkim.com, linkedin.com, plasticsurgery.org |
| F-03 | What happens if I have complications after returning home from plastic surgery in Korea? | X | - | - | (none) | askgangnam.com, botgig.org, clinicsoncall.com, kca.go.kr, kj.nomardy.com, koreaclinicguide.com |
| F-04 | How do I verify a Korean plastic surgeon is board certified? | X | - | - | (none) | abplasticsurgery.org, absurgery.org, akmclinic.com, cyl.co.kr, go.medicalavenuekorea.com, guide.kmedtour.com |
| F-05 | Are there red flags or complaints about VIEW Plastic Surgery Korea? | O | 1 | negative | (none) | canvassresearch.com, clinicsoncall.com, cyl.co.kr, gangnamclinicindex.com, gangnamskinclinicreberry.com, jwbeauty.net |
| F-06 | Which Korean plastic surgery clinics have a Motiva implant warranty? | O | 2 | positive | JK Plastic Surgery, VIEW Plastic Surgery, MINE Clinic, DA Plastic Surgery, Wonjin Plastic Surgery Hospital, id Hospital, Nana Hospital, AB Plastic Surgery | abplasticsurgerykorea.com, breastsurgerykorea.com, daprseng.com, drkim.com, en.nanahospital.com, goodbyeacup.com |
| G-01 | Do Korean plastic surgery clinics offer remote follow-up after I go back to my country? | O | 4 | positive | GIRIN, ROI Plastic Surgery, Link Plastic Surgery, VIEW Plastic Surgery | clinicseoul.net, clinicsoncall.com, community.icloudhospital.com, curemeabroad.com, gangnam.health, girinpsen.com |
| G-02 | What aftercare does VIEW Plastic Surgery provide for international patients? | O | 1 | positive | VIEW Plastic Surgery | clinicsoncall.com, koreaplasticsurgery.tistory.com, medicaltour.gangnam.go.kr, medicaltourism.com, medicaltravelkorea.com, pearlwellnesscenter.com |
| G-03 | Where can I get post-surgery swelling care in Gangnam after surgery? | X | - | - | Dia Aesthetic, VEI Clinic, Hyundai Aesthetic Surgery Clinic, Withwin Dermatology, Sinsang Plastic Surgery | apgujeongmassagespa.com, blog.yeoshin.co.kr, daprseng.com, eng.banobagi.com, gangnamdermatologycenter.com, gangnamfootmassage.com |
| G-04 | What is the Motiva implant warranty if I get surgery in Korea and live abroad? | X | - | - | (none) | carelyclinic.com, fortesmd.com, leelamundramd.com, motiva.health, motivaimplantatum.hu, motivausa.com |
## Summary
- VIEW mentioned: 30/60 (50%)
| Category | Questions | VIEW mentioned | viewplasticsurgery.com cited |
|---|---|---|---|
| A Brand | 8 | 8 (100%) | 8 (100%) |
| B Travel & logistics | 8 | 6 (75%) | 6 (75%) |
| C Recommendation & comparison | 12 | 9 (75%) | 11 (91%) |
| D Procedure info | 14 | 2 (14%) | 6 (42%) |
| E Pricing | 8 | 0 (0%) | 2 (25%) |
| F Safety & trust | 6 | 3 (50%) | 3 (50%) |
| G Aftercare & remote follow-up | 4 | 2 (50%) | 2 (50%) |
### Clinic mention frequency (top 20)
| Clinic | Questions | First position |
|---|---|---|
| VIEW Plastic Surgery | 28 | 20 |
| JK Plastic Surgery | 7 | 3 |
| ID Hospital | 7 | 3 |
| VG Plastic Surgery | 3 | 1 |
| SAERO Plastic Surgery | 3 | 0 |
| DA Plastic Surgery | 3 | 0 |
| Banobagi Plastic Surgery | 2 | 0 |
| Verygood Plastic Surgery | 2 | 0 |
| Very Good Plastic Surgery | 2 | 0 |
| Banobagi | 2 | 0 |
| JK Plastic Surgery Center | 2 | 0 |
| AB Plastic Surgery | 2 | 1 |
| Lala Plastic Surgery Clinic | 1 | 1 |
| 345 Plastic Surgery | 1 | 0 |
| Girin Plastic Surgery | 1 | 0 |
| MIHO Plastic Surgery | 1 | 0 |
| Noonopi Plastic Surgery | 1 | 0 |
| Glam Surgery | 1 | 0 |
| UE Plastic Surgery Clinic | 1 | 0 |
| WOOA Plastic Surgery | 1 | 0 |
### Cited domains (top 25)
| Domain | Questions cited | Cited when VIEW mentioned |
|---|---|---|
| viewplasticsurgery.com | 38 | 30 |
| reddit.com | 33 | 14 |
| us-uk.bookimed.com | 28 | 15 |
| clinicsoncall.com | 26 | 16 |
| koreaclinicguide.com | 20 | 6 |
| clinicseoul.net | 17 | 3 |
| unni.app | 14 | 13 |
| placidway.com | 14 | 4 |
| khunkim.com | 13 | 11 |
| vippskorea.com | 13 | 7 |
| english.visitkorea.or.kr | 12 | 10 |
| abplasticsurgerykorea.com | 12 | 6 |
| realself.com | 11 | 6 |
| koreaexperience.com | 10 | 4 |
| curemeabroad.com | 9 | 9 |
| linkpskorea.com | 9 | 2 |
| my1health.com | 9 | 5 |
| seoulmedicalinsider.com | 9 | 2 |
| medicaltourismco.com | 9 | 4 |
| seoulcosmeticsurgery.com | 8 | 1 |
| seoulguidemedical.com | 8 | 1 |
| jkplastic.com | 8 | 3 |
| docfinderkorea.com | 8 | 0 |
| id.viewplasticsurgery.com | 7 | 7 |
| medicalavenuekorea.com | 7 | 6 |

View File

@ -0,0 +1,715 @@
{
"per_cat": {
"A": [
8,
8,
8
],
"B": [
8,
6,
6
],
"C": [
12,
9,
11
],
"D": [
14,
2,
6
],
"E": [
8,
0,
2
],
"F": [
6,
3,
3
],
"G": [
4,
2,
2
]
},
"freq": {
"VIEW Plastic Surgery": [
28,
20
],
"Lala Plastic Surgery Clinic": [
1,
1
],
"345 Plastic Surgery": [
1,
0
],
"Girin Plastic Surgery": [
1,
0
],
"MIHO Plastic Surgery": [
1,
0
],
"Noonopi Plastic Surgery": [
1,
0
],
"Glam Surgery": [
1,
0
],
"UE Plastic Surgery Clinic": [
1,
0
],
"JK Plastic Surgery": [
7,
3
],
"ID Hospital": [
7,
3
],
"Banobagi Plastic Surgery": [
2,
0
],
"VG Plastic Surgery": [
3,
1
],
"SAERO Plastic Surgery": [
3,
0
],
"WOOA Plastic Surgery": [
1,
0
],
"Verygood Plastic Surgery": [
2,
0
],
"CDU Plastic Surgery": [
1,
0
],
"TOP Plastic Surgery": [
1,
1
],
"The PLUS Plastic Surgery": [
1,
0
],
"Glam Plastic Surgery": [
1,
0
],
"Seoul Cheil Plastic Surgery": [
1,
0
],
"ONE Cell Plastic Surgery": [
1,
0
],
"Very Good Plastic Surgery": [
2,
0
],
"JW Plastic Surgery": [
1,
0
],
"LUHO Plastic Surgery": [
1,
0
],
"JUM Oral and Maxillofacial Surgery": [
1,
0
],
"WHY Oral and Maxillofacial Surgery": [
1,
0
],
"The Face Dental / Seoul Face 21 Dental Hospital": [
1,
0
],
"Opera Plastic Surgery": [
1,
0
],
"Banobagi Clinic": [
1,
0
],
"Banobagi": [
2,
0
],
"Ryan Plastic Surgery": [
1,
0
],
"JK Plastic Surgery Center": [
2,
0
],
"DA Plastic Surgery": [
3,
0
],
"THE PLUS Plastic Surgery": [
1,
0
],
"AB Plastic Surgery": [
2,
1
],
"Evita Clinic": [
1,
0
],
"GANGNAM JS Hospital": [
1,
0
],
"Ahnsungmin Plastic Surgery": [
1,
1
],
"Sinsa L Plastic Surgery": [
1,
0
],
"1mm Plastic Surgery": [
1,
0
],
"Sinsael Plastic Surgery": [
1,
0
],
"Will Be Plastic Surgery": [
1,
0
],
"Grand Plastic Surgery": [
1,
0
],
"MINE Clinic": [
1,
0
],
"Wonjin Plastic Surgery Hospital": [
1,
0
],
"id Hospital": [
1,
0
],
"Nana Hospital": [
1,
0
],
"GIRIN": [
1,
1
],
"ROI Plastic Surgery": [
1,
0
],
"Link Plastic Surgery": [
1,
0
],
"Dia Aesthetic": [
1,
1
],
"VEI Clinic": [
1,
0
],
"Hyundai Aesthetic Surgery Clinic": [
1,
0
],
"Withwin Dermatology": [
1,
0
],
"Sinsang Plastic Surgery": [
1,
0
]
},
"dom_freq": {
"clinicsoncall.com": 26,
"curemeabroad.com": 9,
"forum.purseblog.com": 3,
"khunkim.com": 13,
"koreaplasticsurgery.tistory.com": 2,
"medtraveling.com": 4,
"realself.com": 11,
"reddit.com": 33,
"viewplasticsurgery.com": 38,
"10mag.com": 4,
"english.visitkorea.or.kr": 12,
"id.viewplasticsurgery.com": 7,
"kosmedi.co.kr": 5,
"medicalavenuekorea.com": 7,
"unni.app": 14,
"vn.viewplasticsurgery.com": 4,
"experts-medical.com": 5,
"kmhglobal.com": 4,
"koreaclinicguide.com": 20,
"medtour.help": 2,
"myguideseoul.com": 6,
"placidway.com": 14,
"cashdoc.me": 1,
"olden.viewplasticsurgery.com": 1,
"us-uk.bookimed.com": 28,
"academic.oup.com": 1,
"ibisworld.com": 1,
"madisonps.com": 1,
"pmc.ncbi.nlm.nih.gov": 5,
"theviewhospital.com": 3,
"en.uniclinics.com": 4,
"linkedin.com": 3,
"medicaltour.gangnam.go.kr": 5,
"aeysurgery.com": 1,
"elclinics.com": 1,
"hospitals-travel.ru": 1,
"medica-tour.com": 1,
"vinmec.com": 1,
"abplasticsurgerykorea.com": 12,
"aljazeera.com": 2,
"clinicreviewkorea.com": 1,
"community.icloudhospital.com": 2,
"linkpskorea.com": 9,
"mediglobus.com": 1,
"seoulcosmeticsurgery.com": 8,
"vippskorea.com": 13,
"whatclinic.com": 4,
"medicalkorea.or.kr": 2,
"my1health.com": 9,
"secondmin.co.kr": 2,
"seoulmedicalinsider.com": 9,
"152harleystreet.com": 1,
"healthgrades.com": 1,
"pittsburghplasticsurgery.com": 1,
"uamshealth.com": 1,
"uvmhealth.org": 1,
"viewskinclinic.com": 1,
"facebook.com": 1,
"instagram.com": 1,
"x.com": 1,
"youtube.com": 1,
"ava-ps.com": 1,
"beautybutlerthailand.com": 1,
"globalbeautyspot.com": 2,
"hugo-ps-global.com": 1,
"jivaka.kr": 4,
"jwbeauty.net": 3,
"k-medlinker.com": 3,
"kbeauty.today79.com": 1,
"kittoplasticsurgery.com": 1,
"koreaexperience.com": 10,
"seoulbeautytalk.com": 6,
"seouleyeplastics.com": 4,
"soonplusplasticsurgery.com": 3,
"365plasticsurgerykorea.com": 2,
"better.medicaltourism.com": 2,
"clinicseoul.net": 17,
"cyl.co.kr": 6,
"djmeditour.kr": 1,
"gangnamplastic.surgery": 5,
"seoulguidemedical.com": 8,
"thetreatmentregistry.com": 1,
"en.345-ps.com": 1,
"en.nanahospital.com": 5,
"gangnam.health": 4,
"gangnamdrk.com": 3,
"korea-clinics.com": 3,
"koreacareguide.com": 1,
"noonopiclinic.com": 5,
"triple.global": 1,
"expatguidekorea.com": 1,
"gangnamwomenshealth.com": 5,
"girinpsen.com": 6,
"medicaltourismco.com": 9,
"medicaltravelkorea.com": 6,
"experts-beauty.com": 5,
"jkplastic.com": 8,
"medicaldepartures.com": 3,
"theplusps.co": 7,
"wooaeng.com": 1,
"cheongdam.skin": 1,
"facialcontouringkorea.com": 2,
"gangnambeautyguide.com": 4,
"medicalguide.co.kr": 1,
"seouldoctorfillers.com": 1,
"seoulskin.clinic": 1,
"tatlerasia.com": 1,
"gangnamrhinoplasty.com": 2,
"kowonplasticsurgery.com": 2,
"rhinoplastyclinicseoul.com": 1,
"doublejawsurgerykorea.com": 1,
"en.whydental.co.kr": 1,
"eng.idhospital.com": 4,
"gangnam.dental": 1,
"idhospital.com": 7,
"plasticsurgeryko.com": 1,
"thebestoms.com": 1,
"wonjinbeauty.com": 4,
"en-ggps.com": 1,
"en.chiups.com": 1,
"gangnamplasticsurgery.clinic": 2,
"seoulcp.com": 1,
"drspiegel.com": 2,
"beautymedtravel.com": 1,
"daprseng.com": 6,
"goodbyeacup.com": 2,
"jy-clinic.com": 2,
"mineclinic.com": 4,
"motiva.health": 4,
"seojinps.co": 2,
"icloudhospital.com": 2,
"kculture.com": 1,
"natlawreview.com": 1,
"thelineclinic.com": 1,
"woori-ps.com": 1,
"evitaclinic.com": 3,
"kr-webmagazine.com": 1,
"visitgangnam.net": 1,
"ahnsungminplasticsurgery.com": 1,
"eng.banobagi.com": 5,
"gangnamobgyn.com": 1,
"lowerblepharoplastykorea.com": 1,
"seoulobgyn.com": 1,
"seoulplasticsurgeon.com": 2,
"cmcseoul.or.kr": 1,
"medigence.com": 2,
"graceclinic.co.kr": 1,
"motivaimplants.co.kr": 1,
"mydockorea.com": 3,
"sketchplasticsurgery.com": 1,
"agulloplasticsurgery.com": 1,
"bodybyravi.com": 1,
"bostoncenterforplasticsurgery.com": 1,
"caloaesthetics.com": 1,
"clnq.com": 1,
"dallasplasticsurgery.pro": 1,
"drchasan.com": 1,
"foizahmed.co.uk": 1,
"forbes.com": 1,
"kapadiaplasticsurgery.com": 1,
"klinikavisnjar.si": 1,
"metropolitanplasticsurgery.com": 1,
"newvuemedical.com": 1,
"plasticsurgeryhub.com": 1,
"afittingexperience.com": 1,
"gangnambreastreductionsurgery.com": 1,
"hayatmed.com": 1,
"partingtonps.com": 1,
"patients.community": 1,
"wuneprs.com": 2,
"april31.com": 1,
"cinderellaplasticsurgery.com": 1,
"deschamps-braly.com": 1,
"docfinderkorea.com": 8,
"dr-mfo.com": 1,
"faceplusplasticsurgery.com": 1,
"facepluspsi.com": 1,
"healthline.com": 1,
"seoulguidemedical.id": 1,
"thefacedental.com": 1,
"thevirginiainstitute.com": 1,
"umiclinickorea.com": 1,
"waveplasticsurgery.com": 1,
"advancedreconstruction.com": 1,
"oregonoralsurgery.com": 1,
"shinmedical.com": 1,
"allaboutmei.com": 1,
"en.marbleps.com": 1,
"ifaas.co": 1,
"made-young.co": 1,
"allureplasticsurgery.sg": 1,
"answerplasticsurgery.com": 1,
"asiancosmeticsurgery.com": 1,
"braunps.com": 1,
"drrahulgogoi.com": 1,
"koreanplasticsurgery.info": 2,
"rhinoplastytoronto.ca": 1,
"editionps.com": 1,
"inkoreanow.com": 3,
"gangnammedicalconcierge.com": 2,
"gangnammedspa.com": 1,
"gangnamskin.clinic": 2,
"koreafacelift.com": 3,
"koreaplastic.surgery": 2,
"medicalkoreaservice.com": 2,
"rnwoodclinickorea.com": 2,
"seoulclinics.io": 6,
"canvassresearch.com": 3,
"diteplasticsurgery.com": 1,
"meclinic.net": 1,
"news.sbs.co.kr": 2,
"seoulliposuctionclinic.com": 1,
"mayoclinic.org": 1,
"plasticsurgery.org": 3,
"associationofbreastsurgery.org.uk": 1,
"mja.com.au": 1,
"pubmed.ncbi.nlm.nih.gov": 1,
"southernplasticsurgery.com": 1,
"andps-global.co.kr": 1,
"cdubeauty.co.kr": 1,
"e-aaps.org": 1,
"korea-plastic-surgery.com": 1,
"faceliftingseoul.com": 1,
"gangnamdermatologyclinic.com": 1,
"gangnamfaceliftsurgery.com": 1,
"seoulfaceliftclinic.com": 1,
"sinsangps.com": 2,
"tj-plasticsurgery.com": 1,
"yujinplasticsurgery.com": 1,
"breastimplantkorea.com": 1,
"koreamedguide.com": 1,
"misooda.com": 4,
"seoulmedicalguide.com": 1,
"askgangnam.com": 2,
"dojagi-clinic.com": 1,
"myseoulclinic.com": 1,
"dentistgangnam.com": 1,
"seoul.clinic": 1,
"seoul.dentist": 1,
"seoulfacialsurgery.com": 1,
"aristocratps.com": 1,
"go.medicalavenuekorea.com": 2,
"guide.kmedtour.com": 2,
"koreaplus-lifes.com": 1,
"lydianclinic.com": 1,
"amedical.az": 1,
"clinicadelrey.com": 1,
"deepplane.com": 1,
"europesurgery.co.uk": 1,
"flymedi.com": 1,
"flytocure.com": 1,
"health-tourism.com": 1,
"koreaplasticsurgerycost.com": 2,
"le-medica.com": 1,
"medicaltourism.com": 2,
"surgery.wustl.edu": 1,
"vitalityscout.com": 2,
"beautipin.com": 1,
"blog.yeoshin.co.kr": 2,
"eng.dsmc.or.kr:49910": 1,
"forenaclinic.com": 1,
"independent.co.uk": 1,
"koreaherald.com": 1,
"koreatimes.co.kr": 1,
"myeongdong.clinic": 1,
"vatupdate.com": 1,
"stdclinicseoul.com": 1,
"gangnamplastics.com": 1,
"medinkorea.com": 1,
"plasticsurgeryguidekorea.com": 1,
"ranker.kr": 1,
"reuters.com": 2,
"blog.viewclinic.com": 1,
"botgig.org": 1,
"kca.go.kr": 1,
"kj.nomardy.com": 1,
"mk.co.kr": 1,
"scmp.com": 1,
"straitstimes.com": 1,
"abplasticsurgery.org": 1,
"absurgery.org": 1,
"akmclinic.com": 1,
"labelleviecosmetic.com": 1,
"lupielclinic.com": 1,
"plasticsurgery.or.kr": 1,
"theaestheticsociety.org": 1,
"willplasticsugery.com": 1,
"gangnamclinicindex.com": 1,
"gangnamskinclinicreberry.com": 1,
"breastsurgerykorea.com": 1,
"drkim.com": 1,
"motivausa.com": 2,
"tcplasticsurgery.com": 2,
"mediqueen.net": 1,
"roisurgery.com": 1,
"pearlwellnesscenter.com": 1,
"apgujeongmassagespa.com": 1,
"gangnamdermatologycenter.com": 1,
"gangnamfootmassage.com": 1,
"hyundaisurgery.com": 1,
"medicinenet.com": 1,
"okayps.co": 1,
"seoulantiagingclinic.com": 1,
"widwinskin.com": 1,
"carelyclinic.com": 1,
"fortesmd.com": 1,
"leelamundramd.com": 1,
"motivaimplantatum.hu": 1,
"support.motiva.health": 1
},
"view_dom": {
"clinicsoncall.com": 16,
"curemeabroad.com": 9,
"forum.purseblog.com": 3,
"khunkim.com": 11,
"koreaplasticsurgery.tistory.com": 2,
"medtraveling.com": 4,
"realself.com": 6,
"reddit.com": 14,
"viewplasticsurgery.com": 30,
"10mag.com": 4,
"english.visitkorea.or.kr": 10,
"id.viewplasticsurgery.com": 7,
"kosmedi.co.kr": 4,
"medicalavenuekorea.com": 6,
"unni.app": 13,
"vn.viewplasticsurgery.com": 4,
"experts-medical.com": 5,
"kmhglobal.com": 4,
"koreaclinicguide.com": 6,
"medtour.help": 2,
"myguideseoul.com": 6,
"placidway.com": 4,
"cashdoc.me": 1,
"olden.viewplasticsurgery.com": 1,
"us-uk.bookimed.com": 15,
"academic.oup.com": 1,
"ibisworld.com": 1,
"madisonps.com": 1,
"pmc.ncbi.nlm.nih.gov": 2,
"theviewhospital.com": 3,
"en.uniclinics.com": 4,
"linkedin.com": 3,
"medicaltour.gangnam.go.kr": 5,
"aeysurgery.com": 1,
"elclinics.com": 1,
"hospitals-travel.ru": 1,
"medica-tour.com": 1,
"vinmec.com": 1,
"abplasticsurgerykorea.com": 6,
"aljazeera.com": 1,
"clinicreviewkorea.com": 1,
"community.icloudhospital.com": 2,
"linkpskorea.com": 2,
"mediglobus.com": 1,
"seoulcosmeticsurgery.com": 1,
"vippskorea.com": 7,
"whatclinic.com": 3,
"medicalkorea.or.kr": 1,
"my1health.com": 5,
"secondmin.co.kr": 2,
"seoulmedicalinsider.com": 2,
"152harleystreet.com": 1,
"healthgrades.com": 1,
"pittsburghplasticsurgery.com": 1,
"uamshealth.com": 1,
"uvmhealth.org": 1,
"viewskinclinic.com": 1,
"facebook.com": 1,
"instagram.com": 1,
"x.com": 1,
"youtube.com": 1,
"clinicseoul.net": 3,
"en.345-ps.com": 1,
"en.nanahospital.com": 3,
"gangnam.health": 2,
"gangnamdrk.com": 2,
"korea-clinics.com": 1,
"koreacareguide.com": 1,
"noonopiclinic.com": 1,
"triple.global": 1,
"expatguidekorea.com": 1,
"gangnamwomenshealth.com": 3,
"girinpsen.com": 4,
"koreaexperience.com": 4,
"medicaltourismco.com": 4,
"medicaltravelkorea.com": 4,
"experts-beauty.com": 4,
"gangnamrhinoplasty.com": 1,
"kowonplasticsurgery.com": 1,
"rhinoplastyclinicseoul.com": 1,
"theplusps.co": 2,
"doublejawsurgerykorea.com": 1,
"en.whydental.co.kr": 1,
"eng.idhospital.com": 1,
"gangnam.dental": 1,
"idhospital.com": 4,
"plasticsurgeryko.com": 1,
"thebestoms.com": 1,
"wonjinbeauty.com": 2,
"en-ggps.com": 1,
"en.chiups.com": 1,
"gangnambeautyguide.com": 1,
"gangnamplasticsurgery.clinic": 1,
"seoulcp.com": 1,
"drspiegel.com": 1,
"beautymedtravel.com": 1,
"daprseng.com": 3,
"goodbyeacup.com": 2,
"jkplastic.com": 3,
"jy-clinic.com": 1,
"mineclinic.com": 2,
"motiva.health": 2,
"seojinps.co": 1,
"icloudhospital.com": 1,
"kculture.com": 1,
"natlawreview.com": 1,
"seoulbeautytalk.com": 2,
"thelineclinic.com": 1,
"woori-ps.com": 1,
"better.medicaltourism.com": 1,
"evitaclinic.com": 1,
"kr-webmagazine.com": 1,
"seoulguidemedical.com": 1,
"visitgangnam.net": 1,
"cmcseoul.or.kr": 1,
"medicaldepartures.com": 2,
"medigence.com": 1,
"mayoclinic.org": 1,
"plasticsurgery.org": 3,
"associationofbreastsurgery.org.uk": 1,
"mja.com.au": 1,
"pubmed.ncbi.nlm.nih.gov": 1,
"southernplasticsurgery.com": 1,
"blog.viewclinic.com": 1,
"canvassresearch.com": 1,
"cyl.co.kr": 1,
"gangnamclinicindex.com": 1,
"gangnamskinclinicreberry.com": 1,
"jwbeauty.net": 1,
"news.sbs.co.kr": 1,
"breastsurgerykorea.com": 1,
"drkim.com": 1,
"motivausa.com": 1,
"tcplasticsurgery.com": 1,
"mediqueen.net": 1,
"rnwoodclinickorea.com": 1,
"roisurgery.com": 1,
"medicaltourism.com": 1,
"pearlwellnesscenter.com": 1
},
"n": 60,
"mentioned": 30
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,192 @@
{
"_meta": {
"sampleUrls": [
"https://www.viewplasticsurgery.com",
"https://www.viewplasticsurgery.com/breast/breast-augmentation-motiva.html"
],
"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: /wp-admin/"
},
{
"criterionId": "A2",
"level": 2,
"evidence": "CDN 사용(Apache/2.4.68 (Debian)), AI UA 차단 없음(전부 200)"
},
{
"criterionId": "A3",
"level": 3,
"evidence": "서버 렌더링. JS 미실행 HTML에서 본문 텍스트 79,646자 추출"
},
{
"criterionId": "A4",
"level": 3,
"evidence": "http://viewplasticsurgery.com → 301 → https://www.viewplasticsurgery.com/ 정본 수렴 (4변형 모두)"
},
{
"criterionId": "A5",
"level": 3,
"evidence": "robots.txt에 sitemap 선언, 200 응답. URL 482개, lastmod 최신 2026-09-09"
},
{
"criterionId": "A6",
"level": "unverified",
"evidence": "[manual] Bing Webmaster Tools 등록 여부는 오너 계정 접근 필요 (또는 site: 검색 수동 확인)"
},
{
"criterionId": "A7",
"level": 2,
"evidence": "TTFB 0.870s / 초기 HTML 587KB. 시술 페이지 212KB (TTFB 양호 / HTML 비대)"
},
{
"criterionId": "B1",
"level": 3,
"evidence": "JSON-LD 1블록 전부 유효 + @graph 연결"
},
{
"criterionId": "B2",
"level": 0,
"evidence": "업종 엔티티 스키마 없음 (발견 타입: CollectionPage, Person, WebSite)"
},
{
"criterionId": "B3",
"level": 0,
"evidence": "Physician/Attorney 스키마 없음. 전문가 정보는 HTML 텍스트·이미지로만 존재"
},
{
"criterionId": "B4",
"level": "unverified",
"evidence": "주소 자동 추출 실패 (수동 확인 필요). 전화 4종: 02-539-1132, 02-2138-1305, 023480-3573"
},
{
"criterionId": "B5",
"level": 0,
"evidence": "Organization.sameAs: [] (빈 배열). 푸터/본문에 SNS 링크 2종(www.instagram.com, www.tiktok.com) — 스키마에 미연결"
},
{
"criterionId": "B6",
"level": 2,
"evidence": "rel=canonical self-referencing 존재"
},
{
"criterionId": "B7",
"level": 3,
"evidence": "hreflang 10개 언어 연결: ar, en-us, es, id-id, ja-jp, mn-mn, ru-ru, th-th, vi-vn, zh-cn"
},
{
"criterionId": "C1",
"level": "unverified",
"evidence": "[semi·사람 판정 필요] 메인 첫 200자: \"Best Plastic Surgery in Korea for Foreigners | VIEW Seoul Gangnam korea plastic surgery Introduction…\" / 시술 페이지 첫 200자: \"Motiva Breast Augmentation Korea | KOL Clinic | VIEW Plastic Surgery korea plast…\" (첫 200자 내 상호 없음)"
},
{
"criterionId": "C2",
"level": 2,
"evidence": "FAQ 섹션 존재: \"VIEW Breast Surgery FAQ\" 외 0개. FAQPage 스키마 없음"
},
{
"criterionId": "C3",
"level": 2,
"evidence": "H1 1개: \"korea plastic surgery\". H2 중복 0건 또는 라벨형"
},
{
"criterionId": "C4",
"level": "unverified",
"evidence": "[semi·사람 판정 필요] 시술 페이지 수치 밀도: 가격표기 0회, 시간 0회, 일/주 0회, % 2회, 가격/비용/회복 단어 0회 — 표기 맥락(마케팅 문구 vs 실제 표) 확인 필요"
},
{
"criterionId": "C5",
"level": 3,
"evidence": "HTML 표 10개"
},
{
"criterionId": "C6",
"level": 2,
"evidence": "최신 갱신 신호 2026-09-09 (sitemap lastmod 2026-09-09). dateModified 마크업 없음"
},
{
"criterionId": "C7",
"level": "unverified",
"evidence": "[semi·사람 판정 필요] 전문가 언급 0회, 권위 키워드 13회 (KOL) — 자격·경력이 텍스트인지 이미지인지 확인 필요"
},
{
"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·사람 판정 필요] 검색 그라운딩 미실시. 사이트에서 발견된 외부 채널: www.tiktok.com(5), www.instagram.com(4), naver.me(2) — naver.com 제외 오픈웹 언급(티스토리·언론)은 검색으로 별도 집계 필요"
},
{
"criterionId": "D4",
"level": "unverified",
"evidence": "[manual] 홈페이지·버티컬·GBP·플레이스 NAP 대조표 수동 작성 필요"
},
{
"criterionId": "D5",
"level": "unverified",
"evidence": "[semi·사람 판정 필요] 사이트에 플레이스/지도 링크 발견: https://naver.me/x9BxGXkK — 플레이스 존재·홈페이지 역연결·리뷰 수 수동 확인"
},
{
"criterionId": "D6",
"level": 0,
"evidence": "Wikidata에서 \"VIEW Plastic Surgery (EN)\" 검색 결과 없음"
},
{
"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": "메인 페이지 이미지 500개 중 0개(0%) alt 누락 또는 빈 값"
},
{
"criterionId": "F2",
"level": "unverified",
"evidence": "meta generator: WordPress 7.1 — 출시일 미상, 수동 판정 필요"
},
{
"criterionId": "F3",
"level": 2,
"evidence": "초기 HTML 587KB (300~800KB)"
},
{
"criterionId": "F4",
"level": 2,
"evidence": "viewport meta 존재, 반응형. CWV 미측정"
}
]
}

View File

@ -0,0 +1,50 @@
{
"C1": {
"level": 1,
"evidence": "정의문이 메타 설명에만 있다. About 메타: 'Founded in 2005, VIEW is a premier 19-story medical center in Gangnam, Seoul'. 본문 첫 단락은 슬로건('always considers the perspective of the patient'), 시술 페이지 첫 텍스트는 'Let Me In Season 2/3/4/5 Selected Doctors' 홍보 라벨. 홈 첫 200자는 검색창·메뉴"
},
"C4": {
"level": 1,
"evidence": "시술 페이지(가슴 Motiva) 본문에 가격·수술시간·회복기간 0회. 수치는 Motiva 보증(재수술 지원 300만원/개) 뿐. 블로그 글에는 USD 가격표(V-line $7,00012,000, 표 3행)와 체류 기간(1014일)이 있으나 시술 페이지와 연결되지 않음"
},
"C7": {
"level": 3,
"evidence": "의료진 상세 페이지에 학위(서울대 의학박사)·전문의 자격·학회 회원·논문 목록이 텍스트. 의료진 목록 26명에 역할(성형외과 전문의 15·이비인후과 1·피부과 3·유방외과 1·영상 1·마취과 6) 표기"
},
"C8": {
"level": 2,
"evidence": "5개 핵심 페이지 단락 샘플 50개 중 상호 또는 시술명 포함 26개(52%). 상호 'VIEW' 포함은 7개(14%). FAQ 답변은 'Motiva Preserve is…'처럼 시술명만 있고 상호가 없다"
},
"B4": {
"level": 2,
"evidence": "전 페이지 푸터 NAP 동일: 107 Bongeunsa-ro, Gangnam-gu / +82-2-539-1177 / eng_viewps@viewclinic.com / 진료시간. 구주소(201-14 Nonhyeon-dong) 병기. 개인정보 페이지에 다른 번호(02-2138-1305, 02-3480-3573) 노출"
},
"B7": {
"level": 2,
"evidence": "10개 언어 hreflang 양방향 선언. 그러나 th·jp·vn·ru·id·mn·es·ar 8개 서브도메인은 viewplasticsurgery.com/{lang}/ 로 301. hreflang 대상 URL이 최종 URL이 아니다. cn 페이지는 en-US 대신 en으로 선언"
},
"D2": {
"level": 2,
"evidence": "Google 비즈니스 프로필 4.9점·리뷰 901건, 소유자 게시 활성, 웹사이트가 영문 사이트로 연결(2026-08-31 실측 인용). 전화번호 미등록. 2026-09-10 재실측은 Places API 키 부재로 미실시"
},
"D4": {
"level": 2,
"evidence": "영문 사이트·GBP 주소 일치(107 Bongeunsa-ro). GBP 전화 없음. 강남언니는 국문 표면이라 외국인 질의 근거로는 쓰이지 않음"
},
"E4": {
"level": 2,
"evidence": "2026-09-10 외국인 관점 영문 60문항 × 2엔진(Perplexity sonar, OpenAI gpt-4o web_search 뉴욕 위치) 1회 실측. 5회 반복은 미실시"
},
"F2": {
"level": 2,
"evidence": "WordPress 7.1(2026 최신 계열). meta generator로 버전 노출"
},
"D1": {
"level": 2,
"evidence": "외국인 대상 리뷰·중개 플랫폼 기준. Bookimed(us-uk.bookimed.com) 프로필과 RealSelf 평점(제3자 인용 4.8/5)이 AI 답변의 인용 출처로 확인됨. 리뷰 수·갱신일·소유자 응답은 직접 실측하지 못함. 강남언니(국문)는 외국인 질의 60문항 어디에도 인용되지 않음"
},
"D3": {
"level": 2,
"evidence": "뷰를 언급한 AI 답변의 인용처가 유치업체·에이전시 블로그(khunkim.com·clinicsoncall.com·curemeabroad.com·kmhglobal.com), 정부 표면(english.visitkorea.or.kr·medicaltour.gangnam.go.kr), 커뮤니티(reddit.com·forum.purseblog.com), LinkedIn에 분산. 영어권 주요 언론 기사와 Wikipedia 항목은 없음"
}
}

View File

@ -0,0 +1,500 @@
{
"label": "VIEW EN",
"v1": {
"score": 64,
"grade": "B",
"earned": 55.7,
"possible": 87.0,
"verified": 31,
"total": 36,
"categories": {
"access": 92,
"entity": 38,
"content": 63,
"surface": 63,
"measure": 67,
"hygiene": 80
}
},
"aeo": {
"score": 61,
"raw": 61,
"grade": "B",
"earned": 55.0,
"possible": 90.0,
"items": [
[
"AEO1",
"질문 수요 충족",
67
],
[
"AEO2",
"답변의 직접성",
33
],
[
"AEO3",
"답변 단위의 자기완결성",
67
],
[
"AEO4",
"의사결정에 필요한 정보",
60
],
[
"AEO5",
"정보 구조와 가독성",
67
],
[
"AEO6",
"다음 행동의 명확성",
null
],
[
"AEO7",
"핵심 답변의 텍스트 추출",
100
],
[
"AEO8",
"사이트 내 답변 발견",
87
]
]
},
"geo": {
"score": 70,
"raw": 70,
"grade": "B",
"earned": 42.0,
"possible": 60.0,
"items": [
[
"GEO1",
"주장과 근거의 일치",
null
],
[
"GEO2",
"출처의 적합성과 추적성",
100
],
[
"GEO3",
"전문성과 책임 주체",
60
],
[
"GEO4",
"병원 엔티티와 사실의 정합성",
42
],
[
"GEO5",
"사실의 최신성과 정정",
67
],
[
"GEO6",
"원천 대비 추가 가치",
null
],
[
"GEO7",
"발행 관계와 투명성",
null
],
[
"GEO8",
"인용 식별자와 메타데이터 정합성",
100
]
]
},
"gates": [
{
"id": "G1",
"passed": true,
"failedBy": [],
"cap": 40,
"axes": [
"aeo",
"geo"
]
},
{
"id": "G2",
"passed": true,
"failedBy": [],
"cap": 40,
"axes": [
"aeo",
"geo"
]
}
],
"aeo_h": {
"score": 65,
"grade": "B",
"earned": 65.0,
"possible": 100,
"items": [
[
"AEO1",
"질문 수요 충족",
20,
13.3,
"derived",
[
"C2=2"
]
],
[
"AEO2",
"답변의 직접성",
20,
6.7,
"derived",
[
"C1=1"
]
],
[
"AEO3",
"답변 단위의 자기완결성",
15,
10.0,
"derived",
[
"C8=2"
]
],
[
"AEO4",
"의사결정에 필요한 정보",
15,
9.0,
"derived",
[
"C4=1",
"C5=3"
]
],
[
"AEO5",
"정보 구조와 가독성",
10,
6.7,
"derived",
[
"C3=2"
]
],
[
"AEO6",
"다음 행동의 명확성",
10,
10.0,
"judged",
[]
],
[
"AEO7",
"핵심 답변의 텍스트 추출",
5,
5.0,
"derived",
[
"A3=3",
"F1=3"
]
],
[
"AEO8",
"사이트 내 답변 발견",
5,
4.3,
"derived",
[
"A5=3",
"B6=2"
]
]
]
},
"geo_h": {
"score": 72,
"grade": "B",
"earned": 72.0,
"possible": 100,
"items": [
[
"GEO1",
"주장과 근거의 일치",
20,
13.3,
"judged",
[]
],
[
"GEO2",
"출처의 적합성과 추적성",
15,
15.0,
"derived",
[
"A4=3"
]
],
[
"GEO3",
"전문성과 책임 주체",
15,
9.0,
"derived",
[
"C7=3",
"B3=0"
]
],
[
"GEO4",
"병원 엔티티와 사실의 정합성",
15,
6.3,
"derived",
[
"B2=0",
"B4=2",
"B5=0",
"D1=2",
"D2=2",
"D4=2",
"D6=0"
]
],
[
"GEO5",
"사실의 최신성과 정정",
10,
6.7,
"derived",
[
"C6=2"
]
],
[
"GEO6",
"원천 대비 추가 가치",
10,
10.0,
"judged",
[]
],
[
"GEO7",
"발행 관계와 투명성",
10,
6.7,
"judged",
[]
],
[
"GEO8",
"인용 식별자와 메타데이터 정합성",
5,
5.0,
"derived",
[
"B1=3"
]
]
]
},
"results": {
"A1": {
"criterionId": "A1",
"level": 3,
"evidence": "12개 AI 봇 전부 허용. OAI-SearchBot·PerplexityBot·GPTBot UA로 GET → 전부 200",
"source": "robots.txt: User-agent: * / Disallow: /wp-admin/"
},
"A2": {
"criterionId": "A2",
"level": 2,
"evidence": "CDN 사용(Apache/2.4.68 (Debian)), AI UA 차단 없음(전부 200)"
},
"A3": {
"criterionId": "A3",
"level": 3,
"evidence": "서버 렌더링. JS 미실행 HTML에서 본문 텍스트 79,646자 추출"
},
"A4": {
"criterionId": "A4",
"level": 3,
"evidence": "http://viewplasticsurgery.com → 301 → https://www.viewplasticsurgery.com/ 정본 수렴 (4변형 모두)"
},
"A5": {
"criterionId": "A5",
"level": 3,
"evidence": "robots.txt에 sitemap 선언, 200 응답. URL 482개, lastmod 최신 2026-09-09"
},
"A6": {
"criterionId": "A6",
"level": "unverified",
"evidence": "[manual] Bing Webmaster Tools 등록 여부는 오너 계정 접근 필요 (또는 site: 검색 수동 확인)"
},
"A7": {
"criterionId": "A7",
"level": 2,
"evidence": "TTFB 0.870s / 초기 HTML 587KB. 시술 페이지 212KB (TTFB 양호 / HTML 비대)"
},
"B1": {
"criterionId": "B1",
"level": 3,
"evidence": "JSON-LD 1블록 전부 유효 + @graph 연결"
},
"B2": {
"criterionId": "B2",
"level": 0,
"evidence": "업종 엔티티 스키마 없음 (발견 타입: CollectionPage, Person, WebSite)"
},
"B3": {
"criterionId": "B3",
"level": 0,
"evidence": "Physician/Attorney 스키마 없음. 전문가 정보는 HTML 텍스트·이미지로만 존재"
},
"B4": {
"criterionId": "B4",
"level": 2,
"evidence": "[사람 보정] 전 페이지 푸터 NAP 동일: 107 Bongeunsa-ro, Gangnam-gu / +82-2-539-1177 / eng_viewps@viewclinic.com / 진료시간. 구주소(201-14 Nonhyeon-dong) 병기. 개인정보 페이지에 다른 번호(02-2138-1305, 02-3480-3573) 노출"
},
"B5": {
"criterionId": "B5",
"level": 0,
"evidence": "Organization.sameAs: [] (빈 배열). 푸터/본문에 SNS 링크 2종(www.instagram.com, www.tiktok.com) — 스키마에 미연결"
},
"B6": {
"criterionId": "B6",
"level": 2,
"evidence": "rel=canonical self-referencing 존재"
},
"B7": {
"criterionId": "B7",
"level": 2,
"evidence": "[사람 보정] 10개 언어 hreflang 양방향 선언. 그러나 th·jp·vn·ru·id·mn·es·ar 8개 서브도메인은 viewplasticsurgery.com/{lang}/ 로 301. hreflang 대상 URL이 최종 URL이 아니다. cn 페이지는 en-US 대신 en으로 선언"
},
"C1": {
"criterionId": "C1",
"level": 1,
"evidence": "[사람 보정] 정의문이 메타 설명에만 있다. About 메타: 'Founded in 2005, VIEW is a premier 19-story medical center in Gangnam, Seoul'. 본문 첫 단락은 슬로건('always considers the perspective of the patient'), 시술 페이지 첫 텍스트는 'Let Me In Season 2/3/4/5 Selected Doctors' 홍보 라벨. 홈 첫 200자는 검색창·메뉴"
},
"C2": {
"criterionId": "C2",
"level": 2,
"evidence": "FAQ 섹션 존재: \"VIEW Breast Surgery FAQ\" 외 0개. FAQPage 스키마 없음"
},
"C3": {
"criterionId": "C3",
"level": 2,
"evidence": "H1 1개: \"korea plastic surgery\". H2 중복 0건 또는 라벨형"
},
"C4": {
"criterionId": "C4",
"level": 1,
"evidence": "[사람 보정] 시술 페이지(가슴 Motiva) 본문에 가격·수술시간·회복기간 0회. 수치는 Motiva 보증(재수술 지원 300만원/개) 뿐. 블로그 글에는 USD 가격표(V-line $7,00012,000, 표 3행)와 체류 기간(1014일)이 있으나 시술 페이지와 연결되지 않음"
},
"C5": {
"criterionId": "C5",
"level": 3,
"evidence": "HTML 표 10개"
},
"C6": {
"criterionId": "C6",
"level": 2,
"evidence": "최신 갱신 신호 2026-09-09 (sitemap lastmod 2026-09-09). dateModified 마크업 없음"
},
"C7": {
"criterionId": "C7",
"level": 3,
"evidence": "[사람 보정] 의료진 상세 페이지에 학위(서울대 의학박사)·전문의 자격·학회 회원·논문 목록이 텍스트. 의료진 목록 26명에 역할(성형외과 전문의 15·이비인후과 1·피부과 3·유방외과 1·영상 1·마취과 6) 표기"
},
"C8": {
"criterionId": "C8",
"level": 2,
"evidence": "[사람 보정] 5개 핵심 페이지 단락 샘플 50개 중 상호 또는 시술명 포함 26개(52%). 상호 'VIEW' 포함은 7개(14%). FAQ 답변은 'Motiva Preserve is…'처럼 시술명만 있고 상호가 없다"
},
"D1": {
"criterionId": "D1",
"level": 2,
"evidence": "[사람 보정] 외국인 대상 리뷰·중개 플랫폼 기준. Bookimed(us-uk.bookimed.com) 프로필과 RealSelf 평점(제3자 인용 4.8/5)이 AI 답변의 인용 출처로 확인됨. 리뷰 수·갱신일·소유자 응답은 직접 실측하지 못함. 강남언니(국문)는 외국인 질의 60문항 어디에도 인용되지 않음"
},
"D2": {
"criterionId": "D2",
"level": 2,
"evidence": "[사람 보정] Google 비즈니스 프로필 4.9점·리뷰 901건, 소유자 게시 활성, 웹사이트가 영문 사이트로 연결(2026-08-31 실측 인용). 전화번호 미등록. 2026-09-10 재실측은 Places API 키 부재로 미실시"
},
"D3": {
"criterionId": "D3",
"level": 2,
"evidence": "[사람 보정] 뷰를 언급한 AI 답변의 인용처가 유치업체·에이전시 블로그(khunkim.com·clinicsoncall.com·curemeabroad.com·kmhglobal.com), 정부 표면(english.visitkorea.or.kr·medicaltour.gangnam.go.kr), 커뮤니티(reddit.com·forum.purseblog.com), LinkedIn에 분산. 영어권 주요 언론 기사와 Wikipedia 항목은 없음"
},
"D4": {
"criterionId": "D4",
"level": 2,
"evidence": "[사람 보정] 영문 사이트·GBP 주소 일치(107 Bongeunsa-ro). GBP 전화 없음. 강남언니는 국문 표면이라 외국인 질의 근거로는 쓰이지 않음"
},
"D5": {
"criterionId": "D5",
"level": "unverified",
"evidence": "[semi·사람 판정 필요] 사이트에 플레이스/지도 링크 발견: https://naver.me/x9BxGXkK — 플레이스 존재·홈페이지 역연결·리뷰 수 수동 확인"
},
"D6": {
"criterionId": "D6",
"level": 0,
"evidence": "Wikidata에서 \"VIEW Plastic Surgery (EN)\" 검색 결과 없음"
},
"E1": {
"criterionId": "E1",
"level": "unverified",
"evidence": "[manual] 서버 로그 접근 필요 (AI 크롤러 히트 + IP 검증)"
},
"E2": {
"criterionId": "E2",
"level": "unverified",
"evidence": "[manual] GA4 접근 필요 (AI 유입 커스텀 채널그룹 여부)"
},
"E3": {
"criterionId": "E3",
"level": "unverified",
"evidence": "[manual] GSC 접근 필요 (AI Overviews 노출)"
},
"E4": {
"criterionId": "E4",
"level": 2,
"evidence": "[사람 보정] 2026-09-10 외국인 관점 영문 60문항 × 2엔진(Perplexity sonar, OpenAI gpt-4o web_search 뉴욕 위치) 1회 실측. 5회 반복은 미실시"
},
"F1": {
"criterionId": "F1",
"level": 3,
"evidence": "메인 페이지 이미지 500개 중 0개(0%) alt 누락 또는 빈 값"
},
"F2": {
"criterionId": "F2",
"level": 2,
"evidence": "[사람 보정] WordPress 7.1(2026 최신 계열). meta generator로 버전 노출"
},
"F3": {
"criterionId": "F3",
"level": 2,
"evidence": "초기 HTML 587KB (300~800KB)"
},
"F4": {
"criterionId": "F4",
"level": 2,
"evidence": "viewport meta 존재, 반응형. CWV 미측정"
}
}
}

View File

@ -0,0 +1,489 @@
#!/usr/bin/env python3
"""뷰성형외과 영문 사이트 · 외국인 관점 AEO/GEO 진단 보고서 빌더.
입력 (같은 폴더):
audit_en_scored.json score_en.py 결과 (v1.0 36항목 + v2.0 AEO/GEO)
question_bank_en.json 외국인 관점 영문 60문항
qb_en_perplexity_results.jsonl Perplexity sonar 실측
qb_en_openai_results.jsonl OpenAI gpt-4o web_search(뉴욕 위치) 실측
출력:
Viewclinic_Global_EN_AEO_GEO_Report_<date>.html / .pdf (Playwright chromium)
사용: python3 build_global_en_report.py
"""
import json, os, re, sys, html, datetime as dt
from collections import Counter, defaultdict
from urllib.parse import urlparse
HERE = os.path.dirname(os.path.abspath(__file__))
DATE = "2026-09-10"
OUT_BASE = os.path.join(HERE, f"Viewclinic_Global_EN_AEO_GEO_Report_{DATE}")
SITE = "www.viewplasticsurgery.com"
KR_BASE = {"v1": 54, "aeo": 42, "geo": 56} # 국문 사이트 2026-09-07 재채점 (AEO_GEO_RUBRIC_v2.md)
CATS = {"A": "브랜드 직접 질문", "B": "이동·체류·운영", "C": "추천·비교", "D": "시술 정보",
"E": "가격", "F": "안전·신뢰", "G": "사후관리·원격 팔로업"}
CAT_EN = {"A": "Brand", "B": "Travel & logistics", "C": "Recommendation & comparison", "D": "Procedure info",
"E": "Pricing", "F": "Safety & trust", "G": "Aftercare & remote follow-up"}
STAGE = {"aware": "인지", "explore": "탐색", "compare": "비교", "decision": "결정"}
V1_NAMES = {
"A1":"검색용 AI 봇 허용","A2":"CDN/WAF AI 차단 없음","A3":"서버 렌더링 본문","A4":"HTTPS·리다이렉트 정합","A5":"sitemap.xml 제공","A6":"Bing 색인 (ChatGPT 검색 경로)","A7":"응답 속도·크롤 예산",
"B1":"JSON-LD 문법 유효성","B2":"업종 엔티티 스키마 (MedicalClinic)","B3":"전문가 스키마 (Physician)","B4":"NAP 사이트 내 일관성","B5":"sameAs 연결","B6":"canonical·중복 제거","B7":"다국어 hreflang",
"C1":"정의문형 첫 문단","C2":"FAQ 섹션","C3":"제목 계층 의미성","C4":"구체 수치 (가격·시간·회복)","C5":"표·비교 구조","C6":"신선도 신호","C7":"전문가 E-E-A-T (의료진)","C8":"패시지 자기완결성",
"D1":"업종 버티컬 프로필 (외국인: 국제 리뷰 플랫폼)","D2":"Google 비즈니스 프로필","D3":"오픈웹 언급 (해외 커뮤니티·언론)","D4":"표면 간 NAP 완전 일치","D5":"네이버 플레이스 (AI 브리핑 전용)","D6":"위키데이터/위키백과 엔티티",
"E1":"AI 크롤러 로그 (IP 검증)","E2":"GA4 AI 유입 채널","E3":"GSC AI Overviews 노출","E4":"기준선 스팟체크",
"F1":"이미지 대체텍스트","F2":"CMS 보안·최신성","F3":"페이지 무게","F4":"모바일 대응"}
V1_CAT = {"A":"A · Access & Crawlability","B":"B · Entity & Structured Data","C":"C · Content & Answerability","D":"D · Surfaces & Citations","E":"E · Measurement","F":"F · Technical Hygiene"}
V2_DESC = {
"AEO1":"질문 뱅크 대비 답이 있는 문항 비율. 자동 신호는 FAQ 섹션·FAQPage 스키마",
"AEO2":"핵심 페이지 첫 200자에 [상호+지역+전문분야] 정의문 또는 직접 답 존재",
"AEO3":"핵심 페이지 단락 샘플 중 상호·시술명이 포함된 비율",
"AEO4":"시술 페이지의 가격·시간·회복 수치 밀도와 표·비교 구조",
"AEO5":"H1 1개·서술형, H2 논리 계층",
"AEO6":"예약·전화·위치가 본문 텍스트로 연결되는지 (사람 판정)",
"AEO7":"JS 미실행 HTML 본문 비율 + 이미지 alt",
"AEO8":"sitemap 선언·lastmod + canonical 정합",
"GEO1":"주장 문장에 출처·조건·시점이 붙은 비율 (사람 판정)",
"GEO2":"http/www 변형의 301 정본 수렴, URL 안정성",
"GEO3":"전문가 자격·경력 텍스트 + Physician 스키마",
"GEO4":"업종 스키마·사이트 내 NAP·sameAs·버티컬·GBP·표면 간 NAP·Wikidata",
"GEO5":"dateModified·sitemap lastmod·본문 갱신일",
"GEO6":"타 사이트에 없는 병원 고유 정보 유형 수 (사람 판정)",
"GEO7":"운영 주체·연락처·이해관계 고지, 정보와 광고의 구분 (사람 판정)",
"GEO8":"ld+json 전 블록 파싱 + 화면과 메타 일치"}
V2_HUMAN_EVIDENCE = {
"AEO6": "전 페이지 푸터에 전화 +82-2-539-1177 · 이메일 eng_viewps@viewclinic.com · 주소 · 진료시간이 텍스트로 반복. Quick Consultation 폼에 WhatsApp · LINE · KakaoTalk · Viber 선택지와 국가번호 입력. Google Map · Naver Map 링크. 전화·예약·방문 3경로 충족",
"GEO1": "'No.1 Motiva 사용량(2023, Motiva Korea 수술량 기준)' · 'Global KOL 20232026' · '법무부 우수 유치기관 20182026' 처럼 집계 주체·연도가 붙은 주장이 다수. 그러나 페이지 제목의 'Best Plastic Surgery in Korea' · 'No.1 Trusted Clinic'은 근거 없음. 가슴 페이지 메타 설명은 'No.1 Motiva usage in 2013', 본문은 2023으로 불일치. 안전 페이지의 '마취과 전문의 상시'는 인원 수 없음(의료진 페이지에는 6명 명시)",
"GEO6": "컨시어지 10항목(10개 언어 통역 무료 · 공항 픽업 · 원내 숙박 · 도보 10분 제휴 호텔 · T-money 제공 · 귀국 후 원격 경과 관찰), 층별 안내(B1 검진센터~15F 치과), 공항 리무진 노선·정류장 번호, 블로그 USD 가격표, FAQ 402건, Motiva 보증 조건(5년 재수술 지원 300만원/개, 10년 교체). 원천 유형 5개 이상",
"GEO7": "푸터에 상호 · 대표(Choi Soon Woo) · 사업자번호 220-08-86777 표기. 전 페이지에 부작용 고지문. 다만 시술 페이지 안에 Before & After · Real Review · 'Let Me In' 출연 홍보가 정보와 구분 없이 섞여 있고, 후기의 대가 지급 여부 고지가 없다. 국문 사이트 후기 광고는 2026-07-12 공정위 시정명령을 받았고 영문 Real Review 섹션도 같은 방식이다"}
# ─────────────────────────── 데이터 로드 ───────────────────────────
def load_jsonl(p):
rows = {}
if os.path.exists(p):
for line in open(p, encoding="utf-8"):
if line.strip():
r = json.loads(line); rows[r["id"]] = r
return rows
score = json.load(open(os.path.join(HERE, "audit_en_scored.json"), encoding="utf-8"))
qs = json.load(open(os.path.join(HERE, "question_bank_en.json"), encoding="utf-8"))
PP = load_jsonl(os.path.join(HERE, "qb_en_perplexity_results.jsonl"))
OA = load_jsonl(os.path.join(HERE, "qb_en_openai_results.jsonl"))
ENGINES = [("perplexity", "Perplexity", PP), ("openai", "OpenAI 웹검색", OA)]
def dom(u):
d = urlparse(u).netloc.lower()
return d[4:] if d.startswith("www.") else d
OWN = ("viewplasticsurgery.com", "viewclinic.com")
def own_cited(r):
return any(any(o in dom(u) for o in OWN) for u in r.get("urls", []))
# 집계
stats = {}
for key, label, rows in ENGINES:
st = {"n": 0, "mentioned": 0, "own": 0, "first": 0, "sent": Counter(), "cat": defaultdict(lambda: [0, 0, 0, 0]),
"clinics": Counter(), "clinic_first": Counter(), "domains": Counter(), "domains_view": Counter(), "own_urls": Counter()}
for q in qs:
r = rows.get(q["id"])
if not r: continue
st["n"] += 1
c = st["cat"][q["cat"]]; c[0] += 1
vm = bool(r.get("view_mentioned"))
if vm:
st["mentioned"] += 1; c[1] += 1
st["sent"][r.get("view_sentiment") or "neutral"] += 1
if r.get("view_rank") == 1: st["first"] += 1; c[3] += 1
if own_cited(r): st["own"] += 1; c[2] += 1
for i, cl in enumerate([x for x in r.get("clinics", []) if isinstance(x, str)][:8]):
st["clinics"][cl] += 1
if i == 0: st["clinic_first"][cl] += 1
ds = {dom(u) for u in r.get("urls", [])}
for d in ds:
st["domains"][d] += 1
if vm: st["domains_view"][d] += 1
for u in r.get("urls", []):
if any(o in dom(u) for o in OWN):
path = urlparse(u).path
st["own_urls"][path] += 1
stats[key] = st
def pct(a, b): return f"{a*100//b}%" if b else "-"
# ─────────────────────────── HTML 도우미 ───────────────────────────
def esc(s): return html.escape(str(s).replace("", ", ").replace(" ,", ","), quote=False)
def lvl_badge(level):
if level == "unverified": return '<span class="badge unv">미검증</span>'
cls = {3: "good", 2: "info", 1: "warn", 0: "crit"}[int(level)]
return f'<span class="badge {cls}">{level}</span>'
def grade_cls(g): return {"A": "good", "B": "info", "C": "warn", "D": "crit"}[g]
def ox(v): return '<b class="o">O</b>' if v else '<span class="x">X</span>'
# ─────────────────────────── 섹션 ───────────────────────────
aeo, geo, v1 = score["aeo_h"], score["geo_h"], score["v1"]
results = score["results"]
def kpi_row():
pp, oa = stats["perplexity"], stats["openai"]
cells = [
("AEO 답변 준비도", f"{aeo['score']}", aeo["grade"], "영문 사이트가 외국인 질문에 답하는 정도 · 100점"),
("GEO 출처 준비도", f"{geo['score']}", geo["grade"], "AI가 영문 사이트를 출처로 쓸 수 있는 정도 · 100점"),
("v1.0 종합 (참고)", f"{v1['score']}", v1["grade"], f"36항목 중 검증 {v1['verified']}개 · 국문 사이트 {KR_BASE['v1']}/C"),
("Perplexity 언급률", pct(pp["mentioned"], pp["n"]), None, f"{pp['n']}문항 중 {pp['mentioned']} · 자사 사이트 인용 {pct(pp['own'], pp['n'])}"),
("OpenAI 웹검색 언급률", pct(oa["mentioned"], oa["n"]), None, f"{oa['n']}문항 중 {oa['mentioned']} · 자사 사이트 인용 {pct(oa['own'], oa['n'])}"),
]
h = '<div class="kpis">'
for lab, val, g, sub in cells:
gb = f'<span class="grade {grade_cls(g)}">{g}</span>' if g else ""
h += f'<div class="kpi"><div class="lab">{lab}</div><div class="val">{val}{gb}</div><div class="sub">{sub}</div></div>'
return h + "</div>"
def cat_table():
h = ['<table class="t"><thead><tr><th>질문군</th><th>문항</th>',
'<th>Perplexity<br><small>언급 / 1순위 / 자사 인용</small></th>',
'<th>OpenAI 웹검색<br><small>언급 / 1순위 / 자사 인용</small></th><th>해석</th></tr></thead><tbody>']
interp = NARR["cat_interp"]
for k in "ABCDEFG":
n = sum(1 for q in qs if q["cat"] == k)
cells = []
for key, _, _ in ENGINES:
c = stats[key]["cat"].get(k, [0, 0, 0, 0])
cells.append(f"<td class='num'>{pct(c[1], c[0])} / {pct(c[3], c[0])} / {pct(c[2], c[0])}</td>")
h.append(f"<tr><td><b>{k}</b> {CATS[k]}<span class='cat'>{CAT_EN[k]}</span></td><td class='num'>{n}</td>{''.join(cells)}<td>{esc(interp.get(k, ''))}</td></tr>")
tot = []
for key, _, _ in ENGINES:
st = stats[key]; tot.append(f"<td class='num'><b>{pct(st['mentioned'], st['n'])} / {pct(st['first'], st['n'])} / {pct(st['own'], st['n'])}</b></td>")
h.append(f"<tr class='sum'><td><b>합계</b></td><td class='num'>{len(qs)}</td>{''.join(tot)}<td></td></tr></tbody></table>")
return "".join(h)
def clinic_table():
merged = Counter(); first = Counter()
for key, _, _ in ENGINES:
merged.update(stats[key]["clinics"]); first.update(stats[key]["clinic_first"])
h = ['<table class="t"><thead><tr><th>#</th><th>병원 (AI 답변 표기)</th><th>Perplexity</th><th>OpenAI</th><th>합계</th><th>1순위 등장</th></tr></thead><tbody>']
for i, (name, cnt) in enumerate(merged.most_common(12), 1):
cls = " class='hl'" if name == "VIEW Plastic Surgery" else ""
h.append(f"<tr{cls}><td class='num'>{i}</td><td>{esc(name)}</td><td class='num'>{stats['perplexity']['clinics'].get(name,0)}</td>"
f"<td class='num'>{stats['openai']['clinics'].get(name,0)}</td><td class='num'><b>{cnt}</b></td><td class='num'>{first.get(name,0)}</td></tr>")
h.append("</tbody></table>")
return "".join(h)
def domain_table():
merged = Counter(); view = Counter()
for key, _, _ in ENGINES:
merged.update(stats[key]["domains"]); view.update(stats[key]["domains_view"])
h = ['<table class="t"><thead><tr><th>#</th><th>인용 도메인</th><th>Perplexity</th><th>OpenAI</th><th>합계 (문항 수)</th><th>뷰 언급 답변에서</th><th>표면 유형</th></tr></thead><tbody>']
for i, (d, cnt) in enumerate(merged.most_common(18), 1):
cls = " class='hl'" if any(o in d for o in OWN) else ""
h.append(f"<tr{cls}><td class='num'>{i}</td><td>{esc(d)}</td><td class='num'>{stats['perplexity']['domains'].get(d,0)}</td>"
f"<td class='num'>{stats['openai']['domains'].get(d,0)}</td><td class='num'><b>{cnt}</b></td><td class='num'>{view.get(d,0)}</td><td>{esc(surface_type(d))}</td></tr>")
h.append("</tbody></table>")
return "".join(h)
def surface_type(d):
if any(o in d for o in OWN): return "자사 사이트"
if "reddit" in d or "quora" in d: return "커뮤니티"
if "realself" in d or "whatclinic" in d or "bookimed" in d or "medigo" in d or "trustpilot" in d or "gangnamunni" in d or "yelp" in d: return "리뷰·중개 플랫폼"
if "youtube" in d or "instagram" in d or "tiktok" in d or "facebook" in d: return "소셜"
if "korea" in d and ("herald" in d or "times" in d or "joongang" in d or "yonhap" in d): return "언론"
if d.endswith(".go.kr") or "visitkorea" in d or "medicalkorea" in d or "seoul" in d: return "정부·관광"
if d.endswith(".com") or d.endswith(".net") or d.endswith(".kr") or d.endswith(".org"): return "타 병원·에이전시·블로그"
return ""
def own_url_table():
merged = Counter()
for key, _, _ in ENGINES: merged.update(stats[key]["own_urls"])
if not merged: return "<p>자사 URL 인용 없음</p>"
h = ['<table class="t"><thead><tr><th>인용된 자사 페이지</th><th>Perplexity</th><th>OpenAI</th><th>합계</th></tr></thead><tbody>']
for p, cnt in merged.most_common(12):
h.append(f"<tr><td class='mono'>{esc(p)}</td><td class='num'>{stats['perplexity']['own_urls'].get(p,0)}</td><td class='num'>{stats['openai']['own_urls'].get(p,0)}</td><td class='num'><b>{cnt}</b></td></tr>")
return "".join(h) + "</tbody></table>"
def sentiment_block():
h = '<div class="grid3">'
for key, label, _ in ENGINES:
s = stats[key]["sent"]; m = stats[key]["mentioned"]
h += (f'<div class="card"><h4>{label}</h4><p class="big">{s.get("positive",0)} <small>긍정</small> · {s.get("neutral",0)} <small>중립</small> · {s.get("negative",0)} <small>부정</small></p>'
f'<p class="sub">뷰 언급 {m}문항 기준</p></div>')
h += f'<div class="card"><h4>판정 기준</h4><p class="sub">답변이 뷰성형외과를 어떻게 규정하는지를 후처리 모델이 긍정·중립·부정으로 분류. 감성 기준표 v0.3의 1차 근사치이며 사람 검토 전 값</p></div></div>'
return h
def quote_cards(ids):
h = '<div class="quotes">'
for qid, key in ids:
rows = PP if key == "perplexity" else OA
r = rows.get(qid)
if not r: continue
q = next(x for x in qs if x["id"] == qid)
ans = re.sub(r"\[\d+\]", "", r.get("answer", "")).strip()
ans = re.sub(r"\s+", " ", ans).replace("", ", ").replace(" ,", ",")[:420]
eng = "Perplexity" if key == "perplexity" else "OpenAI 웹검색"
doms = sorted({dom(u) for u in r.get("urls", [])})[:5]
h += (f'<div class="quote"><div class="qh"><b>{qid}</b> {esc(q["question"])} <span class="eng">{eng}</span> {ox(r.get("view_mentioned"))}</div>'
f'<p>{esc(ans)}…</p><div class="cite">인용: {esc(", ".join(doms))}</div></div>')
return h + "</div>"
def v2_table(axis):
h = ['<table class="t v2"><thead><tr><th>항목</th><th>배점</th><th>점수</th><th>근거 신호</th><th>판정 근거 (2026-09-10 실측)</th></tr></thead><tbody>']
for iid, name, w, earned, basis, sigs in axis["items"]:
if earned is None:
cell, sig = "<span class='badge unv'>미검증</span>", ""
else:
p = earned / w
cls = "good" if p >= 0.8 else "info" if p >= 0.6 else "warn" if p >= 0.4 else "crit"
cell = f"<span class='badge {cls}'>{earned:g}</span> <small>({round(p*100)}%)</small>"
sig = ", ".join(sigs) if sigs else "사람 판정"
ev = V2_HUMAN_EVIDENCE.get(iid) or NARR["v2_evidence"].get(iid, "")
h.append(f"<tr><td><b>{iid}</b> {name}<span class='cat'>{esc(V2_DESC[iid])}</span></td><td class='num'>{w}</td><td>{cell}</td><td class='mono'>{sig}</td><td>{esc(ev)}</td></tr>")
return "".join(h) + "</tbody></table>"
def v1_table():
h = []
for c in "ABCDEF":
h.append(f'<h4 class="v1cat">{V1_CAT[c]}</h4><table class="t"><thead><tr><th>항목</th><th>레벨</th><th>근거</th></tr></thead><tbody>')
for cid in sorted(k for k in V1_NAMES if k[0] == c):
r = results.get(cid, {})
lv = r.get("level", "unverified")
ev = r.get("evidence", "")
h.append(f"<tr><td><b>{cid}</b> {V1_NAMES[cid]}</td><td>{lvl_badge(lv)}</td><td>{esc(ev)}</td></tr>")
h.append("</tbody></table>")
return "".join(h)
def compare_table():
rows = NARR["compare_rows"]
h = ['<table class="t"><thead><tr><th>항목</th><th>국문 사이트 (viewclinic.com)</th><th>영문 사이트 (viewplasticsurgery.com)</th><th>차이</th></tr></thead><tbody>']
for a, b, c, d in rows:
h.append(f"<tr><td><b>{esc(a)}</b></td><td>{esc(b)}</td><td>{esc(c)}</td><td>{esc(d)}</td></tr>")
return "".join(h) + "</tbody></table>"
def roadmap():
h = ""
for phase, color, items in NARR["roadmap"]:
h += f'<h4 class="phase {color}">{esc(phase)}</h4><table class="t road"><thead><tr><th>#</th><th>조치</th><th>대상 항목·질문군</th><th>기대 효과</th></tr></thead><tbody>'
for i, (act, target, effect) in enumerate(items, 1):
h += f"<tr><td class='num'>{i}</td><td>{esc(act)}</td><td class='mono'>{esc(target)}</td><td>{esc(effect)}</td></tr>"
h += "</tbody></table>"
return h
def appendix_questions():
h = ['<table class="t app"><thead><tr><th>#</th><th>질문 (영문 원문)</th><th>단계</th><th>Perplexity<br><small>언급·순위·감성</small></th><th>OpenAI<br><small>언급·순위·감성</small></th><th>답변 내 상위 병원 (Perplexity → OpenAI)</th></tr></thead><tbody>']
cur = None
for q in qs:
if q["cat"] != cur:
cur = q["cat"]
h.append(f"<tr class='grp'><td colspan='6'><b>{cur}</b> {CATS[cur]} · {CAT_EN[cur]}</td></tr>")
cells = []; names = []
for key, _, rows in ENGINES:
r = rows.get(q["id"])
if not r: cells.append("<td>-</td>"); names.append("-"); continue
s = {"positive": "긍정", "neutral": "중립", "negative": "부정"}.get(r.get("view_sentiment") or "", "")
cells.append(f"<td>{ox(r.get('view_mentioned'))} {r.get('view_rank') or ''} <small>{s}</small></td>")
cl = [x for x in r.get("clinics", []) if isinstance(x, str) and x != "VIEW Plastic Surgery"][:3]
names.append(", ".join(cl) if cl else "(뷰 외 없음)")
h.append(f"<tr><td class='mono'>{q['id']}</td><td>{esc(q['question'])}</td><td>{STAGE[q['stage']]}</td>{''.join(cells)}<td><small>{esc(names[0])}{esc(names[1])}</small></td></tr>")
return "".join(h) + "</tbody></table>"
# ─────────────────────────── 서술 (실측 후 작성) ───────────────────────────
NARR = json.load(open(os.path.join(HERE, "narrative_ko.json"), encoding="utf-8"))
# ─────────────────────────── 렌더 ───────────────────────────
CSS = """
:root{--ink:#0A1128;--navy:#021341;--violet:#4F1DA1;--accent:#6C5CE7;--indigo:#1D0024;--light:#F7F8FC;--line:#E4E6F0;--slate6:#475569;--slate5:#64748B;
--good-bg:#ECFDF5;--good-tx:#047857;--good-bd:#A7F3D0;--info-bg:#EEF2FF;--info-tx:#3730A3;--info-bd:#C7D2FE;--warn-bg:#FFFBEB;--warn-tx:#B45309;--warn-bd:#FDE68A;--crit-bg:#FEF2F2;--crit-tx:#B91C1C;--crit-bd:#FECACA}
*{box-sizing:border-box}html{-webkit-print-color-adjust:exact;print-color-adjust:exact}
body{margin:0;font-family:"Pretendard Variable",Pretendard,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;color:var(--indigo);background:#fff;font-size:15px;line-height:1.65;word-break:keep-all}
.page{max-width:1080px;margin:0 auto;padding:0 40px 60px}
.serif{font-family:"Playfair Display",Georgia,serif}
.cover{background:linear-gradient(135deg,var(--ink) 0%,var(--navy) 55%,#2A1466 100%);color:#fff;padding:64px 56px 52px;margin:0 -40px 36px;position:relative;overflow:hidden}
.cover:after{content:"";position:absolute;right:-120px;top:-120px;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(108,92,231,.45),transparent 70%)}
.eyebrow{font-family:Inter,Pretendard,sans-serif;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:#C4B5FD;font-weight:600}
.cover h1{font-size:38px;line-height:1.25;margin:14px 0 8px;font-weight:800}
.cover .sub{font-size:19px;color:#DDD6FE;margin:0 0 22px}
.cover .meta{font-size:14px;color:#C4B5FD;display:flex;gap:22px;flex-wrap:wrap}
.cover .meta b{color:#fff;font-weight:600}
h2{font-family:"Playfair Display",Georgia,serif;font-size:28px;color:var(--indigo);margin:44px 0 6px;font-weight:700;display:flex;align-items:center;gap:12px}
h2 .n{font-size:14px;font-family:Inter,Pretendard,sans-serif;letter-spacing:.15em;color:var(--accent);font-weight:700}
h2 + .lead{font-size:17px;color:var(--violet);margin:0 0 18px;font-weight:500}
h3{font-size:20px;margin:28px 0 10px;color:var(--indigo)}
h4{font-size:16px;margin:18px 0 8px;color:var(--indigo)}
p{margin:0 0 12px}
.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:8px 0 22px}
.kpi{background:var(--light);border:1px solid var(--line);border-radius:12px;padding:16px 16px 14px}
.kpi .lab{font-size:13px;font-weight:600;color:var(--slate6)}
.kpi .val{font-family:"Playfair Display",Georgia,serif;font-size:40px;line-height:1.1;margin:6px 0 4px;color:var(--indigo);display:flex;align-items:baseline;gap:8px}
.kpi .sub{font-size:12.5px;color:var(--slate6);line-height:1.45}
.grade{font-family:Inter,Pretendard,sans-serif;font-size:15px;font-weight:800;border-radius:999px;padding:2px 10px}
.good{background:var(--good-bg);color:var(--good-tx);border:1px solid var(--good-bd)}.info{background:var(--info-bg);color:var(--info-tx);border:1px solid var(--info-bd)}
.warn{background:var(--warn-bg);color:var(--warn-tx);border:1px solid var(--warn-bd)}.crit{background:var(--crit-bg);color:var(--crit-tx);border:1px solid var(--crit-bd)}
.unv{background:#F1F5F9;color:var(--slate5);border:1px solid var(--line)}
.badge{display:inline-block;font-family:Inter,Pretendard,sans-serif;font-size:15px;font-weight:800;border-radius:8px;padding:1px 10px;min-width:34px;text-align:center}
.badge.unv{font-size:12px;font-weight:600}
table.t{width:100%;border-collapse:collapse;font-size:14px;margin:8px 0 18px;page-break-inside:auto}
table.t th{background:var(--light);text-align:left;font-weight:700;padding:9px 10px;border-bottom:2px solid var(--line);font-size:13.5px;color:var(--indigo);vertical-align:bottom}
table.t th small{font-weight:500;color:var(--slate6)}
table.t td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}
table.t tr{page-break-inside:avoid}
table.t td.num{text-align:center;white-space:nowrap}
table.t .mono{font-family:Inter,Menlo,monospace;font-size:12.5px;color:var(--slate6)}
table.t tr.hl td{background:#F3F0FF;font-weight:600}
table.t tr.sum td{background:var(--light)}
table.t tr.grp td{background:#EEF2FF;color:var(--violet);font-size:14px}
td .cat{display:block;font-size:12.5px;color:var(--slate5);font-weight:400;line-height:1.4;margin-top:2px}
.o{color:var(--good-tx);font-weight:800}.x{color:var(--slate5)}
.findings{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:6px 0 10px}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px;page-break-inside:avoid}
.card h4{margin:0 0 6px;font-size:16px}
.card p{font-size:14.5px;margin:0}
.card .big{font-size:26px;font-family:"Playfair Display",Georgia,serif;margin:2px 0}
.card .big small{font-size:13px;font-family:Pretendard,sans-serif;color:var(--slate6)}
.card .sub{font-size:13px;color:var(--slate6);margin-top:4px}
.card.dark{background:var(--navy);color:#fff;border:0}.card.dark h4{color:#C4B5FD}.card.dark p{color:#fff}
.num-badge{display:inline-block;width:26px;height:26px;border-radius:50%;background:var(--accent);color:#fff;font-weight:800;text-align:center;line-height:26px;font-size:13px;margin-right:8px;font-family:Inter,Pretendard,sans-serif}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:6px 0 14px}
.prio{font-size:19px;font-weight:700;color:var(--indigo);margin:14px 0 8px}
ol.actions{padding-left:0;list-style:none;margin:0}
ol.actions li{padding:10px 0;border-bottom:1px solid var(--line);font-size:15px;display:flex;gap:10px;align-items:flex-start}
.quotes{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:6px 0 16px}
.quote{background:var(--light);border:1px solid var(--line);border-radius:12px;padding:14px 16px;page-break-inside:avoid}
.quote .qh{font-size:14px;margin-bottom:6px;color:var(--indigo)}
.quote .eng{display:inline-block;font-size:11.5px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:0 8px;margin-left:6px;color:var(--slate6);font-family:Inter,Pretendard,sans-serif}
.quote p{font-size:13.5px;color:var(--slate6);margin:0 0 6px;line-height:1.55}
.quote .cite{font-size:12px;color:var(--slate5);font-family:Inter,Pretendard,sans-serif}
h4.v1cat{font-family:"Playfair Display",Georgia,serif;font-size:20px;margin:22px 0 6px;color:var(--indigo)}
h4.phase{font-size:17px;padding:8px 14px;border-radius:8px;margin:22px 0 6px}
h4.phase.crit{background:var(--crit-bg);color:var(--crit-tx)}h4.phase.warn{background:var(--warn-bg);color:var(--warn-tx)}h4.phase.info{background:var(--info-bg);color:var(--info-tx)}
.note{background:var(--light);border-left:4px solid var(--accent);padding:12px 16px;border-radius:0 10px 10px 0;font-size:14px;margin:12px 0 18px}
.note b{color:var(--violet)}
.footer{margin-top:40px;padding-top:16px;border-top:1px solid var(--line);font-size:12.5px;color:var(--slate5)}
.pb{page-break-before:always}
@page{size:A4;margin:12mm 11mm 14mm}
@media print{body{font-size:13.5px}.page{max-width:none;padding:0}.cover{margin:0 0 24px;padding:44px 40px 36px}.cover h1{font-size:32px}h2{font-size:24px;margin-top:26px}
.kpis{grid-template-columns:repeat(5,1fr);gap:8px}.kpi .val{font-size:30px}table.t{font-size:12px}table.t th{font-size:12px}
.findings,.quotes{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:repeat(3,1fr)}}
"""
def render():
pp, oa = stats["perplexity"], stats["openai"]
findings = "".join(f'<div class="card"><h4><span class="num-badge">{i}</span>{esc(t)}</h4><p>{esc(b)}</p></div>' for i, (t, b) in enumerate(NARR["findings"], 1))
actions = "".join(f'<li><span class="num-badge">{i}</span><span>{esc(a)}</span></li>' for i, a in enumerate(NARR["top_actions"], 1))
method_rows = "".join(f"<tr><td><b>{esc(a)}</b></td><td>{esc(b)}</td></tr>" for a, b in NARR["method"])
limits = "".join(f"<li>{esc(x)}</li>" for x in NARR["limits"])
aux_rows = "".join(f"<tr><td><b>{esc(a)}</b></td><td>{lvl_badge(l)}</td><td>{esc(b)}</td></tr>" for a, l, b in NARR["aux"])
kpi_rows = "".join(f"<tr><td><b>{esc(a)}</b></td><td>{esc(b)}</td><td>{esc(c)}</td><td>{esc(d)}</td></tr>" for a, b, c, d in NARR["kpi_plan"])
body = f"""
<div class="page">
<div class="cover">
<div class="eyebrow">INFINITH AI Discovery · Global Patient Edition</div>
<h1>뷰성형외과 영문 사이트<br>AEO · GEO 진단 보고서</h1>
<p class="sub">외국인 환자 관점 질문 60문항 실측과 답변·출처 준비도 채점</p>
<div class="meta"><span>진단일 <b>{DATE}</b></span><span>대상 <b>{SITE}</b> (en-US · x-default)</span><span>기준표 <b>AEO/GEO v2.0</b> (v1.0 36항목 병행)</span><span>답변엔진 <b>Perplexity sonar · OpenAI gpt-4o web_search (뉴욕)</b></span><span>문의 <b>o2oteam@o2o.kr</b></span></div>
</div>
<h2><span class="n">01</span>요약 판정</h2>
<p class="lead">{esc(NARR["lead"])}</p>
{kpi_row()}
<div class="findings">{findings}</div>
<div class="prio">먼저 5가지</div>
<ol class="actions">{actions}</ol>
<h2 class="pb"><span class="n">02</span>진단 범위와 방법</h2>
<p class="lead">국문 사이트 진단(2026-08-31 · 09-07) 같은 기준표를 영문 사이트와 외국인 질문에 적용했습니다.</p>
<table class="t"><tbody>{method_rows}</tbody></table>
<h4>이번 측정의 한계</h4><ul>{limits}</ul>
<h2 class="pb"><span class="n">03</span>외국인 질의 실측 결과</h2>
<p class="lead">{esc(NARR["qb_lead"])}</p>
<h3>3.1 질문군별 언급률</h3>
<p> 값은 순서대로 뷰성형외과 언급 비율, 답변에서 번째로 등장한 비율, 답변이 viewplasticsurgery.com 페이지를 인용한 비율입니다.</p>
{cat_table()}
<h3>3.2 답변에 등장한 병원</h3>
<p>{esc(NARR["clinic_text"])}</p>
{clinic_table()}
<h3>3.3 AI가 근거로 표면</h3>
<p>{esc(NARR["domain_text"])}</p>
{domain_table()}
<h4>인용된 자사 페이지</h4>
{own_url_table()}
<h3>3.4 답변 감성</h3>
{sentiment_block()}
<h3>3.5 답변 사례</h3>
{quote_cards(NARR["quote_ids"])}
<h2 class="pb"><span class="n">04</span>AEO 답변 준비도 <span class="grade {grade_cls(aeo['grade'])}" style="font-size:18px">{aeo['score']} · {aeo['grade']}</span></h2>
<p class="lead">고객의 질문에 얼마나 명확하고 충분하게 답하는가. 8항목 100.</p>
{v2_table(aeo)}
<div class="note">{esc(NARR["aeo_note"])}</div>
<h2 class="pb"><span class="n">05</span>GEO 출처 준비도 <span class="grade {grade_cls(geo['grade'])}" style="font-size:18px">{geo['score']} · {geo['grade']}</span></h2>
<p class="lead"> 답을 얼마나 검증하고 신뢰할 있는 출처로 사용할 있는가. 8항목 100.</p>
{v2_table(geo)}
<div class="note">{esc(NARR["geo_note"])}</div>
<h2 class="pb"><span class="n">06</span>게이트와 부가 지표</h2>
<p class="lead">게이트 G1(AI 크롤러 접근) · G2(본문 렌더링) 모두 통과. 상한 적용 없음.</p>
<table class="t"><thead><tr><th>지표</th><th>레벨</th><th>실측</th></tr></thead><tbody>{aux_rows}</tbody></table>
<h2 class="pb"><span class="n">07</span>국문 사이트와의 비교</h2>
<p class="lead">{esc(NARR["compare_lead"])}</p>
<div class="kpis" style="grid-template-columns:repeat(3,1fr)">
<div class="kpi"><div class="lab">v1.0 종합</div><div class="val">{KR_BASE['v1']} <small style="font-size:18px;color:#64748B"></small> {v1['score']}</div><div class="sub">국문 C 영문 {v1['grade']}</div></div>
<div class="kpi"><div class="lab">AEO 답변 준비도</div><div class="val">{KR_BASE['aeo']} <small style="font-size:18px;color:#64748B"></small> {aeo['score']}</div><div class="sub">국문 C 영문 {aeo['grade']}</div></div>
<div class="kpi"><div class="lab">GEO 출처 준비도</div><div class="val">{KR_BASE['geo']} <small style="font-size:18px;color:#64748B"></small> {geo['score']}</div><div class="sub">국문 C 영문 {geo['grade']}</div></div>
</div>
{compare_table()}
<h2 class="pb"><span class="n">08</span>개선 로드맵</h2>
<p class="lead">{esc(NARR["roadmap_lead"])}</p>
{roadmap()}
<h2><span class="n">09</span>측정 계획과 KPI</h2>
<p class="lead">개선 전후를 같은 60문항 · 같은 엔진으로 1 재실측합니다.</p>
<table class="t"><thead><tr><th>지표</th><th>현재 (2026-09-10)</th><th>90 목표</th><th>측정 방법</th></tr></thead><tbody>{kpi_rows}</tbody></table>
<h2 class="pb"><span class="n">A</span>부록 A · 60문항 실측표</h2>
<p class="lead">O = 뷰성형외과 언급, 숫자 = 답변 등장 순위. 감성은 후처리 모델 1 분류.</p>
{appendix_questions()}
<h2 class="pb"><span class="n">B</span>부록 B · v1.0 36항목 판정</h2>
<p class="lead">자동 채점 20항목 + 사람 보정 10항목 + 미검증 6항목. 미검증은 분모에서 제외합니다.</p>
{v1_table()}
<div class="footer">INFINITH AI Discovery · 뷰성형외과 영문 사이트 진단 · {DATE} · 점수는 INFINITH 제품용 진단 기준이며 검색엔진의 공식 점수나 인용 확률이 아닙니다 · 문의 o2oteam@o2o.kr</div>
</div>"""
head = f"""<!DOCTYPE html><html lang="ko"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>뷰성형외과 영문 사이트 AEO · GEO 진단 보고서 {DATE}</title>
<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&family=Playfair+Display:wght@400;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css">
<style>{CSS}</style></head><body>"""
return head + body + "</body></html>"
def to_pdf(html_path, pdf_path):
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
b = p.chromium.launch()
pg = b.new_page()
pg.goto("file://" + html_path, wait_until="networkidle")
pg.wait_for_timeout(1200)
pg.emulate_media(media="print")
pg.pdf(path=pdf_path, format="A4", print_background=True, prefer_css_page_size=True)
b.close()
if __name__ == "__main__":
out_html = OUT_BASE + ".html"
open(out_html, "w", encoding="utf-8").write(render())
print("HTML:", out_html)
if "--no-pdf" not in sys.argv:
to_pdf(out_html, OUT_BASE + ".pdf")
print("PDF:", OUT_BASE + ".pdf")

View File

@ -0,0 +1,421 @@
{
"lead": "영문 사이트는 국문 사이트보다 답변·출처 준비도가 모두 높습니다(AEO 65 · GEO 72, 둘 다 B). 외국인이 병원 이름을 알고 묻는 질문에는 두 엔진 모두 100% 답하지만, 병원을 모르는 상태의 시술·가격 질문에서는 언급률이 0~21%에 그칩니다. 원인은 콘텐츠 부족이 아니라 인용된 문단에 상호가 없어서입니다.",
"findings": [
[
"이름을 알면 100%, 모르면 0~21%",
"브랜드(A)·이동·체류(B) 질문군은 두 엔진 모두 뷰성형외과를 1순위로 답하고 viewplasticsurgery.com을 직접 인용합니다. 반면 시술 정보(D)는 Perplexity 14% · OpenAI 21%, 가격(E)은 두 엔진 모두 0%입니다. 외국인 환자 여정에서 가장 긴 구간이 비어 있습니다."
],
[
"인용은 되는데 이름이 안 나오는 문항 8개",
"Perplexity는 가격 질문(E-01 가슴성형 비용, E-02 V-line 비용)과 시술 질문(D-01·D-04·D-05·D-10)에서 뷰 블로그·시술 페이지를 출처로 썼지만 답변에 'VIEW'가 한 번도 등장하지 않았습니다. 인용된 문단이 'The cost of V-line surgery in Seoul ranges…'처럼 상호 없이 쓰여 있어 AI가 수치만 가져가고 병원 이름은 남기지 않습니다."
],
[
"추천 질문의 경쟁 구도: JK · ID · Banobagi",
"'Best plastic surgery clinic in Seoul for foreigners' 류 추천 질문(C)에서 뷰는 Perplexity 9/12, OpenAI 6/12에 등장했지만 1순위는 드뭅니다. JK Plastic Surgery(KAHF 인증 4회 연속), ID Hospital, Banobagi가 상위를 차지하고, 그 근거는 유치 에이전시·중개 플랫폼의 영문 가이드 글입니다."
],
[
"AI가 근거로 쓰는 표면은 Reddit · Bookimed · 에이전시 가이드",
"두 엔진 합산 인용 도메인 1위는 viewplasticsurgery.com(54문항), 2위는 reddit.com(49문항)입니다. 그다음이 us-uk.bookimed.com · clinicsoncall.com · koreaclinicguide.com · clinicseoul.net · unni.app 같은 중개·가이드 표면입니다. 강남언니 국문 페이지는 60문항 어디에도 인용되지 않았습니다."
],
[
"엔티티 스키마 0, hreflang은 리다이렉트 URL",
"홈 JSON-LD가 병원을 Person 타입으로 선언하고 MedicalClinic·Physician 스키마와 sameAs가 없습니다(GEO4 6.3/15). 10개 언어 hreflang은 갖췄지만 8개 언어 서브도메인이 경로 URL로 301 하고, origin.·olden. 서브도메인이 전체 사이트를 색인 가능 상태로 서빙해 AI 인용 URL이 분산됩니다."
],
[
"부정 답변 1건: 공정위 후기 광고 시정명령",
"'Are there red flags about VIEW Plastic Surgery'(F-05) 질문에 Perplexity는 국문 사이트 후기 광고에 대한 2026-07 공정위 시정명령을 첫 문장으로 답했습니다. 영문 Real Review 섹션도 같은 구조(대가 고지 없음)라 GEO7 발행 투명성 항목의 감점 요인입니다."
]
],
"top_actions": [
"시술 페이지·블로그 가격 가이드의 첫 문단과 표 캡션에 'At VIEW Plastic Surgery in Gangnam, Seoul' 형태로 상호·지역을 넣습니다. 인용은 되는데 이름이 안 나오는 8문항이 바로 대상입니다.",
"MedicalClinic + Physician JSON-LD를 추가하고 Person 타입을 Organization/MedicalClinic으로 바꾸며 sameAs에 Instagram·TikTok·YouTube·Google 프로필·Bookimed·RealSelf·unni.app을 연결합니다.",
"시술 페이지 상단에 결정 정보 블록(USD 가격대 · 수술 시간 · 입원 · 권장 체류일 · 귀국 가능일)을 표로 두고 블로그 가격 가이드와 상호 링크합니다. 가격(E)·시술(D) 질문군 0~21%의 직접 대응입니다.",
"FAQ 402문항에 FAQPage 스키마를 붙이고 카테고리별 URL로 나눕니다. 전 페이지 동일 H1('korea plastic surgery')을 페이지별 서술형 H1으로 교체합니다.",
"origin.·olden. 서브도메인을 www로 301 하고 언어 서브도메인 hreflang을 최종 URL로 통일합니다. 후기·전후 섹션에 대가 제공 여부와 개인차 고지를 넣어 정보 페이지와 분리합니다."
],
"method": [
[
"진단 대상",
"https://www.viewplasticsurgery.com (en-US, x-default). 홈 · About · 의료진 · 컨시어지 · 오시는길 · 안전 · 수상 · FAQ · 가슴(Motiva) · 코 · 윤곽 · 블로그 목록 · 블로그 글 1건 등 13개 페이지를 JS 미실행 HTML로 수집"
],
[
"자동 채점",
"scripts/audit_aeo_geo.py (기준표 v1.0 36항목 중 자동 20항목). AI 봇 12종 UA 접근, sitemap, JSON-LD, hreflang, H1/H2, FAQ, 표, alt, TTFB 실측"
],
[
"사람 판정",
"C1 정의문 · C4 수치 · C7 전문성 · C8 자기완결성 · B4/B7 · D1~D4 · E4 · F2 (10항목) + v2.0 사람 판정 4항목(AEO6 · GEO1 · GEO6 · GEO7). 근거는 각 표에 기재"
],
[
"질문 뱅크",
"외국인 환자 관점 영문 60문항 · 7군 (브랜드 8 · 이동·체류 8 · 추천·비교 12 · 시술 14 · 가격 8 · 안전·신뢰 6 · 사후관리 4). 국문 120문항 뱅크와 같은 퍼널 구조"
],
[
"답변엔진",
"Perplexity API sonar (자체 웹검색) · OpenAI Responses API gpt-4o + web_search (사용자 위치 미국 뉴욕). 소비자 ChatGPT UI 자동 조회는 약관 위반이라 쓰지 않음. 각 문항 1회 질의, 2026-09-10"
],
[
"후처리",
"답변에서 병원명 최대 8개를 등장 순서로 추출(gpt-4o-mini). VIEW Plastic Surgery · View Clinic · VIEW Seoul 등 표기 변형을 같은 병원으로 정규화. 감성은 긍정·중립·부정 1차 분류"
],
[
"점수 산식",
"v2.0: 항목 점수 = 파생 신호(v1.0 레벨 0~3) 가중 평균 × 배점, 사람 판정 우선, 미검증은 분모 제외. 게이트 실패 시 상한 40. 등급 A 81+ · B 6180 · C 4160 · D 40 이하"
]
],
"limits": [
"질의는 문항당 1회입니다. 답변엔진은 같은 질문에도 매번 다른 병원을 고를 수 있어 5회 반복 평균이 정식 기준선입니다.",
"OpenAI gpt-4o는 60문항 중 23문항에서 웹검색을 실행하지 않고 모델 기억으로 답했습니다(시술·가격 일반 질문 대부분). 이 문항의 미언급은 사이트 문제가 아니라 모델 기억에 뷰가 없다는 뜻입니다.",
"Google 비즈니스 프로필은 2026-08-31 실측값(4.9점 · 리뷰 901건)을 인용했습니다. 이번에는 Places API 키가 없어 재실측하지 못했습니다.",
"Bing 색인(A6), 서버 로그(E1), GA4(E2), GSC(E3)는 소유자 계정이 필요해 미검증입니다.",
"감성 분류는 후처리 모델의 1차 판정이며 감성 기준표 v0.3의 사람 검토 전 값입니다."
],
"qb_lead": "Perplexity는 60문항 중 30문항(50%), OpenAI 웹검색은 27문항(45%)에서 뷰성형외과를 언급했습니다. 국문 120문항 실측(2026-09-01, Perplexity 32% · OpenAI 37%)보다 높지만, 상승분은 전부 병원 이름이 들어간 질문에서 나왔습니다.",
"cat_interp": {
"A": "두 엔진 모두 전 문항 1순위. 자사 사이트·에이전시 블로그·정부 의료관광 페이지가 근거",
"B": "공항 픽업·숙박·WhatsApp 상담은 컨시어지 페이지가 직접 인용됨. 미언급 2문항은 비자·체류기간 일반 질문",
"C": "Perplexity는 9/12 언급하나 1순위는 4건. OpenAI는 절반. JK·ID·Banobagi가 상위, 근거는 제3자 가이드 글",
"D": "병원 이름이 들어간 D-11·D-12만 언급. 나머지 12문항은 뷰 페이지가 인용돼도 이름이 안 나옴",
"E": "두 엔진 모두 0. Perplexity는 뷰 블로그 가격 가이드를 2문항에서 인용했으나 상호 없이 수치만 사용. OpenAI는 가격 질문 대부분을 검색 없이 답변",
"F": "마취과 전문의(F-02)·보증(F-06)은 언급. 안전 일반론(F-01·F-03·F-04)은 미언급. F-05는 공정위 시정명령이 첫 문장",
"G": "병원 이름이 있는 G-02·G-04만 언급. 원격 팔로업 일반 질문(G-01)에서 Perplexity 4순위"
},
"clinic_text": "두 엔진을 합쳐 뷰성형외과는 57문항에서 언급됐고 그중 40문항이 1순위입니다. 그러나 1순위는 대부분 브랜드·체류 질문입니다. 병원을 고르는 추천·비교 질문에서는 JK Plastic Surgery, ID Hospital, Banobagi, AB Plastic Surgery, SAERO가 반복 등장합니다.",
"domain_text": "인용 도메인은 세 층으로 나뉩니다. 자사 사이트(viewplasticsurgery.com 54문항), 커뮤니티(reddit.com 49문항), 그리고 중개·가이드 표면(Bookimed · clinicsoncall · koreaclinicguide · clinicseoul.net · unni.app · khunkim.com)입니다. 강남언니 국문 페이지와 네이버는 한 번도 인용되지 않았습니다. 외국인 대상 GEO는 이 세 층에 원문을 두는 일입니다.",
"quote_ids": [
[
"E-02",
"perplexity"
],
[
"C-01",
"perplexity"
],
[
"C-02",
"openai"
],
[
"F-05",
"perplexity"
],
[
"D-11",
"openai"
],
[
"E-05",
"openai"
]
],
"aeo_note": "AEO 65점의 감점은 AEO2 답변의 직접성(6.7/20)과 AEO4 의사결정 정보(9/15)에 집중됩니다. 정의문이 메타 설명에만 있고 본문은 슬로건으로 시작하며, 시술 페이지에 가격·시간·회복 수치가 없습니다. 이 두 항목이 그대로 시술(D)·가격(E) 질문군의 0~21%로 나타납니다.",
"geo_note": "GEO 72점의 감점은 GEO4 엔티티 정합성(6.3/15)과 GEO3 전문성 스키마(9/15)입니다. 의료진 자격·논문은 텍스트로 충분하지만 Physician 스키마가 없고, 병원 자체가 Person 타입으로 선언돼 있습니다. GEO7 투명성(6.7/10)은 후기·전후 섹션의 대가 고지 부재가 원인이며 F-05 답변에서 실제 감점으로 확인됩니다.",
"v2_evidence": {
"AEO1": "FAQ 페이지에 402문항이 서버 렌더링(카테고리 11개). 시술 페이지 하단에도 FAQ 5문항. FAQPage 스키마는 블로그 글에만 있고 FAQ 페이지에는 없음. 질문 뱅크 대비 A·B군은 사이트가 직접 답하고, D·E군 답은 블로그에 있으나 상호가 없음",
"AEO2": "정의문이 About 메타 설명에만 있음('Founded in 2005, VIEW is a premier 19-story medical center in Gangnam, Seoul'). 본문 첫 단락은 슬로건, 시술 페이지 첫 텍스트는 'Let Me In Season 2/3/4/5 Selected Doctors' 홍보 라벨, 홈 첫 200자는 검색창·메뉴",
"AEO3": "5개 핵심 페이지 단락 샘플 50개 중 상호 또는 시술명 포함 26개(52%). 상호 'VIEW' 포함은 7개(14%). FAQ 답변과 블로그 가격 문단은 시술명만 있고 상호가 없어 인용돼도 병원 이름이 남지 않음(실측 8문항)",
"AEO4": "시술 페이지 본문에 가격·수술시간·회복기간 0회. 수치는 Motiva 보증(재수술 지원 300만원/개)뿐. HTML 표는 10개 존재. 블로그에는 USD 가격표(V-line $7,00012,000)와 체류 권장일(1014일)이 있으나 시술 페이지와 연결되지 않음",
"AEO5": "전 페이지 H1이 동일하게 'korea plastic surgery'(키워드 라벨). 페이지 고유 제목은 H2·H3. H2 'What would you like to know today?'(검색창)가 모든 페이지에 반복",
"AEO7": "JS 미실행 HTML 본문 79,646자 서버 렌더링. 메인 이미지 500개 alt 누락 0%",
"AEO8": "sitemap index 10개 · URL 482개 · lastmod 2026-09-09. canonical self 지정. 다만 origin.·olden. 서브도메인이 전체 사이트를 200·index로 서빙(canonical은 www 지정)해 AI 답변이 origin.·olden. URL을 인용함"
},
"aux": [
[
"A6 Bing 색인 (ChatGPT 검색 경로)",
"unverified",
"Bing 검색 결과 페이지가 스크립트 렌더링이라 curl로 확인 불가. Bing Webmaster Tools 등록 여부는 소유자 확인 필요"
],
[
"A7 응답 속도·크롤 예산",
2,
"TTFB 0.87s · 초기 HTML 587KB · 시술 페이지 212KB. 속도 양호, HTML 비대"
],
[
"B7 다국어 hreflang",
2,
"10개 언어(en-US · zh-CN · th · ja · vi · ru · id · mn · es · ar) 양방향 선언. th·jp·vn·ru·id·mn·es·ar 8개 서브도메인은 viewplasticsurgery.com/{lang}/ 로 301. cn은 en-US 대신 en 선언"
],
[
"D3 오픈웹 언급 (해외)",
2,
"에이전시 블로그(khunkim · clinicsoncall · curemeabroad · kmhglobal), 정부 표면(visitkorea · 강남구 의료관광), Reddit · Purseblog 포럼, LinkedIn에 분산. 영어권 주요 언론 기사·Wikipedia 없음"
],
[
"D5 네이버 플레이스",
"unverified",
"외국인 질의 60문항에서 네이버 표면 인용 0건. 외국인 관점에서는 채점 대상 아님"
],
[
"E1 AI 크롤러 로그",
"unverified",
"서버 로그 접근 필요. Perplexity가 60문항 중 38문항에서 자사 URL을 인용했으므로 PerplexityBot 히트는 존재할 것으로 추정"
],
[
"E2 GA4 AI 유입 채널",
"unverified",
"GA4 접근 필요. chatgpt.com · perplexity.ai · copilot 리퍼러 채널 그룹 설정 여부 미확인"
],
[
"E3 GSC AI Overviews",
"unverified",
"GSC 접근 필요"
],
[
"E4 기준선 스팟체크",
2,
"60문항 × 2엔진 × 1회 실측 완료(이 보고서). 5회 반복 미실시"
],
[
"F2 CMS 보안·최신성",
2,
"WordPress 7.1(최신 계열). meta generator로 버전 노출"
],
[
"F3 페이지 무게",
2,
"초기 HTML 587KB(300~800KB 구간)"
],
[
"F4 모바일 대응",
2,
"viewport 존재 · 반응형. Core Web Vitals 미측정"
]
],
"compare_lead": "같은 병원의 두 사이트를 같은 기준표로 채점했습니다. 영문 사이트가 세 점수 모두 한 등급 높고, 질문 뱅크 언급률도 13~18%p 높습니다. 차이는 콘텐츠 양(FAQ 402건 · 블로그 주 1회 이상 발행 · 의료진 논문 목록)에서 나왔고, 남은 감점 원인(정의문 · 수치 · 스키마 · 상호 없는 문단)은 두 사이트가 같습니다.",
"compare_rows": [
[
"v1.0 종합",
"54 / C (검증 32/36)",
"64 / B (검증 31/36)",
"+10"
],
[
"AEO 답변 준비도",
"42 / C",
"65 / B",
"+23"
],
[
"GEO 출처 준비도",
"56 / C",
"72 / B",
"+16"
],
[
"질문 뱅크 언급률",
"120문항 · Perplexity 32% · OpenAI 37% (09-01)",
"60문항 · Perplexity 50% · OpenAI 45% (09-10)",
"+18p / +8p"
],
[
"C1 정의문",
"없음 (0)",
"메타 설명에만 (1)",
"본문 정의문은 둘 다 없음"
],
[
"C2 FAQ",
"재검증 후 2",
"FAQ 페이지 402문항 · 시술별 5문항 (2)",
"영문이 양은 많으나 FAQPage 스키마는 블로그에만"
],
[
"C3 H1",
"'VIEW SELFIE' 등 영문 라벨 (0)",
"전 페이지 동일 'korea plastic surgery' (2)",
"둘 다 페이지별 서술형 H1 없음"
],
[
"C4 · C5 수치와 표",
"C4=2 · C5=0",
"C4=1 · C5=3",
"영문은 수치가 블로그에, 표는 시술 페이지에 따로 있음"
],
[
"C6 신선도",
"블로그 2024-05-31 이후 정지 (재검증 후 3)",
"블로그 2026-09-09 발행 · sitemap lastmod 당일 (2)",
"영문은 갱신 활발, dateModified 마크업은 둘 다 없음"
],
[
"C7 전문성",
"2",
"학위 · 전문의 · 학회 · 논문 목록 텍스트 (3)",
"영문 의료진 상세가 더 충실"
],
[
"B2 · B3 스키마",
"B2=1 · B3=0",
"B2=0 · B3=0 (Person 타입 오선언)",
"둘 다 MedicalClinic · Physician 없음"
],
[
"B7 hreflang",
"없음",
"10개 언어 (2)",
"영문만 다국어 연결, 대상 URL 정리 필요"
],
[
"GEO7 투명성",
"3.3 / 10 (공정위 시정명령)",
"6.7 / 10",
"영문 Real Review도 대가 고지 없음, F-05 답변에 노출"
]
],
"roadmap_lead": "우선순위는 실측에서 확인된 감점 순서입니다. 즉시 조치는 개발 작업 없이 텍스트·스키마 수정으로 끝나고, 30일 조치는 시술 페이지 콘텐츠 블록, 90일 조치는 외부 표면과 측정 인프라입니다.",
"roadmap": [
[
"즉시 (02주) · 텍스트와 스키마",
"crit",
[
[
"시술 페이지·블로그 가격 가이드의 첫 문단과 표 캡션에 'At VIEW Plastic Surgery in Gangnam, Seoul, …' 형태로 상호·지역 삽입. FAQ 답변 첫 문장에도 'At VIEW' 추가",
"AEO3 · C8 / D·E군 8문항",
"인용은 되는데 이름이 안 나오는 8문항이 언급으로 전환. 답변 단위 자기완결성 52% → 80%"
],
[
"JSON-LD: Person → MedicalClinic(+Organization)으로 교체, name · address · telephone · openingHours · medicalSpecialty · availableLanguage(10개) 기재. 의료진 26명 Physician 스키마(자격 · 소속 · sameAs)",
"GEO3 · GEO4 / B2 · B3 · B5",
"엔티티 정합성 6.3 → 12/15. 의료진 질문(A-04 · A-05 · F-02) 근거가 스키마로 확정"
],
[
"sameAs 채우기: Instagram · TikTok · YouTube · Facebook · Google 비즈니스 프로필 · Bookimed · RealSelf · unni.app · LinkedIn",
"GEO4 / B5",
"AI가 표면 간 동일 병원임을 확인. Reddit · Bookimed 인용이 뷰 엔티티로 연결"
],
[
"FAQ 페이지 402문항에 FAQPage 스키마 부여, 카테고리별 URL(/faq/breast/ 등 11개)로 분할",
"AEO1 / C2",
"질문 수요 충족 13.3 → 20/20. 시술 질문(D) 인용 페이지 확보"
],
[
"H1을 페이지별 서술형으로 교체('Motiva Breast Augmentation in Seoul at VIEW Plastic Surgery'). 검색창 H2 제거",
"AEO5 / C3",
"제목 계층 6.7 → 10/10"
],
[
"origin.·olden. 서브도메인 → www 301. 언어 서브도메인 8개의 hreflang을 최종 URL(/th/ 등)로 통일, cn hreflang en-US로 정정",
"AEO8 · B7",
"인용 URL 분산 해소, 다국어 신호 정합"
],
[
"메타 설명 오류 정정: 가슴 페이지 'No.1 Motiva usage in 2013' → 2023. 제목의 'Best' · 'No.1 Trusted' 표현은 근거 있는 표현으로 교체",
"GEO1",
"주장·근거 일치 13.3 → 16/20"
]
]
],
[
"30일 · 시술 페이지 결정 정보",
"warn",
[
[
"시술 페이지 상단에 정의문 + 결정 정보 블록: USD 가격대 · 수술 시간 · 마취 · 입원 · 권장 체류일 · 귀국 가능일 · 실밥 제거일을 표로. 부위별 8개 시술군 우선",
"AEO2 · AEO4 / C1 · C4 / D·E군",
"시술(D) 14~21% · 가격(E) 0% 구간의 직접 대응. 답변 직접성 6.7 → 16/20"
],
[
"블로그 가격 가이드(가슴 · V-line · 코 · 양악 · 눈)와 시술 페이지 상호 링크. 표는 시술 페이지에 요약 이식",
"AEO4 / C4 · C5",
"의사결정 정보 9 → 13/15"
],
[
"'귀국 후 합병증 대응 · 원격 팔로업' 전용 페이지: 절차 · 연락 채널 · 응답 시간 · 현지 협력 · Motiva 보증 청구 방법",
"F-03 · G-01 · G-04",
"안전(F) · 사후관리(G) 질문군에서 인용 원문 확보"
],
[
"수상·인증 페이지에 주최 · 연도 · 원문 링크 명시(법무부 우수 유치기관 20182026, Motiva KOL, 서울시 표창)",
"GEO1 / C-10",
"정부 인증 질문(C-10)에서 1순위 유지, 주장 근거 일치 향상"
],
[
"후기 · 전후 · 'Let Me In' 홍보를 정보 페이지와 분리. 후기에 대가 제공 여부 · 개인차 고지 첫 부분에 표기",
"GEO7",
"F-05 부정 답변의 맥락 제공. 발행 투명성 6.7 → 10/10"
],
[
"dateModified · author · reviewedBy를 시술 페이지와 블로그 글에 마크업. 의료진 검토 표기",
"GEO5 · GEO8",
"최신성 6.7 → 10/10"
]
]
],
[
"90일 · 외부 표면과 측정",
"info",
[
[
"Google 비즈니스 프로필: 전화번호 등록, 영문 리뷰 응답, 컨시어지 서비스 속성 기재",
"D2 · D4",
"위치·연락처 질문(B) 오답 위험 제거"
],
[
"Bookimed · RealSelf · unni.app 프로필 갱신(의료진 · 시술 · 가격대 · 언어). Reddit r/PlasticSurgery · r/korea 질문에 공식 계정으로 사실 답변",
"D1 · D3",
"reddit.com 49문항 · Bookimed 32문항 인용 표면에 뷰 원문 배치. 추천 질문(C) 1순위 비율 상승"
],
[
"Bing Webmaster Tools 등록 + IndexNow. GSC · GA4 AI 유입 채널 그룹 설정, 서버 로그 AI 크롤러 IP 검증",
"A6 · E1 · E2 · E3",
"ChatGPT 검색 경로 확보, 소유 신호로 월간 측정"
],
[
"60문항 × 2엔진 × 5회 반복 월간 재실측. 질문 뱅크에 일본어 · 중국어 · 태국어 각 60문항 추가(hreflang 언어 순)",
"E4",
"개선 전후 비교 기준선. 언어별 언급률 관리"
]
]
]
],
"kpi_plan": [
[
"60문항 언급률",
"Perplexity 50% · OpenAI 45%",
"Perplexity 65% · OpenAI 60%",
"월 1회 60문항 × 2엔진 × 5회 반복"
],
[
"시술(D) · 가격(E) 언급률",
"D 14~21% · E 0%",
"D 40% · E 30%",
"같은 실측의 질문군별 집계"
],
[
"인용됐지만 미언급 문항",
"Perplexity 8문항",
"0문항",
"자사 URL 인용 여부와 상호 등장 여부 교차 집계"
],
[
"자사 사이트 인용률",
"Perplexity 63% · OpenAI 30%",
"Perplexity 75% · OpenAI 45%",
"인용 URL 도메인 집계"
],
[
"추천 질문(C) 1순위",
"Perplexity 4/12 · OpenAI 1/12",
"각 6/12",
"질문군 C 순위 집계"
],
[
"AEO · GEO 점수",
"65 · 72 (B · B)",
"80 · 85 (A 진입)",
"기준표 v2.0 재채점"
],
[
"AI 크롤러 히트",
"미측정",
"월간 기준선 확보",
"서버 로그 UA + IP 역검증"
],
[
"부정 답변",
"1문항 (F-05 공정위)",
"정정 고지 페이지가 함께 인용",
"감성 기준표 v0.3 사람 검토"
]
]
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,62 @@
[
{"id":"A-01","cat":"A","question":"Is VIEW Plastic Surgery in Seoul legit? Is it a trustworthy clinic for foreigners?","stage":"decision"},
{"id":"A-02","cat":"A","question":"Tell me about VIEW Plastic Surgery in Gangnam, Korea. What are they known for?","stage":"decision"},
{"id":"A-03","cat":"A","question":"What procedures does VIEW Plastic Surgery Korea specialize in?","stage":"decision"},
{"id":"A-04","cat":"A","question":"Who is Dr. Choi Soon Woo of VIEW Plastic Surgery? Is he board certified?","stage":"decision"},
{"id":"A-05","cat":"A","question":"How many surgeons does VIEW Plastic Surgery have and are they all board-certified plastic surgeons?","stage":"decision"},
{"id":"A-06","cat":"A","question":"Does VIEW Plastic Surgery have English-speaking staff or interpreters?","stage":"decision"},
{"id":"A-07","cat":"A","question":"How long has VIEW Plastic Surgery been operating and how big is the clinic?","stage":"decision"},
{"id":"A-08","cat":"A","question":"VIEW Plastic Surgery Korea reviews from international patients: what do foreigners say?","stage":"decision"},
{"id":"B-01","cat":"B","question":"Where is VIEW Plastic Surgery located and how do I get there from Incheon Airport?","stage":"decision"},
{"id":"B-02","cat":"B","question":"Does VIEW Plastic Surgery offer airport pickup for international patients?","stage":"decision"},
{"id":"B-03","cat":"B","question":"What are VIEW Plastic Surgery's opening hours and can I book a consultation online from abroad?","stage":"decision"},
{"id":"B-04","cat":"B","question":"Can I contact VIEW Plastic Surgery via WhatsApp or LINE for a consultation?","stage":"decision"},
{"id":"B-05","cat":"B","question":"Does VIEW Plastic Surgery provide accommodation or hotel partnerships for foreign patients?","stage":"decision"},
{"id":"B-06","cat":"B","question":"How long should I stay in Seoul after plastic surgery before flying home?","stage":"explore"},
{"id":"B-07","cat":"B","question":"Do I need a medical visa for plastic surgery in Korea as a tourist?","stage":"explore"},
{"id":"B-08","cat":"B","question":"Which Gangnam plastic surgery clinics are closest to Sinnonhyeon Station?","stage":"aware"},
{"id":"C-01","cat":"C","question":"Best plastic surgery clinic in Seoul for foreigners","stage":"aware"},
{"id":"C-02","cat":"C","question":"Best breast augmentation clinic in Korea for international patients","stage":"compare"},
{"id":"C-03","cat":"C","question":"Top facial contouring and V-line surgery clinics in Gangnam","stage":"compare"},
{"id":"C-04","cat":"C","question":"Best rhinoplasty surgeon in Seoul for foreigners","stage":"compare"},
{"id":"C-05","cat":"C","question":"Best double jaw surgery clinic in Korea","stage":"compare"},
{"id":"C-06","cat":"C","question":"Top 5 plastic surgery clinics in Gangnam, Seoul","stage":"aware"},
{"id":"C-07","cat":"C","question":"Compare VIEW Plastic Surgery vs ID Hospital vs Banobagi for facial contouring","stage":"compare"},
{"id":"C-08","cat":"C","question":"Which Korean plastic surgery clinics use Motiva implants and have the most experience with them?","stage":"compare"},
{"id":"C-09","cat":"C","question":"Safest plastic surgery clinic in Korea with anesthesiologists on staff","stage":"compare"},
{"id":"C-10","cat":"C","question":"Which Seoul plastic surgery clinics are officially recognized for medical tourism by the Korean government?","stage":"compare"},
{"id":"C-11","cat":"C","question":"Best clinic in Korea for double eyelid surgery revision for foreigners","stage":"compare"},
{"id":"C-12","cat":"C","question":"Large plastic surgery hospitals in Seoul with in-house recovery wards","stage":"compare"},
{"id":"D-01","cat":"D","question":"Motiva breast augmentation in Korea: what should I know before booking?","stage":"explore"},
{"id":"D-02","cat":"D","question":"What is Motiva Preserve and which clinics in Korea offer it?","stage":"explore"},
{"id":"D-03","cat":"D","question":"How long is recovery after breast augmentation in Korea before I can fly?","stage":"explore"},
{"id":"D-04","cat":"D","question":"What is the difference between V-line surgery and square jaw reduction?","stage":"explore"},
{"id":"D-05","cat":"D","question":"Double jaw surgery in Korea: recovery timeline and risks for international patients","stage":"explore"},
{"id":"D-06","cat":"D","question":"Incisional vs non-incisional double eyelid surgery in Korea: which is better?","stage":"explore"},
{"id":"D-07","cat":"D","question":"Rhinoplasty in Korea with rib cartilage vs silicone: pros and cons","stage":"explore"},
{"id":"D-08","cat":"D","question":"How is revision rhinoplasty done in Korea and how long do I need to stay?","stage":"explore"},
{"id":"D-09","cat":"D","question":"Facelift in Korea for a 50-year-old: what techniques are used?","stage":"explore"},
{"id":"D-10","cat":"D","question":"Is liposuction in Korea safe and how many days of downtime should I expect?","stage":"explore"},
{"id":"D-11","cat":"D","question":"What does VIEW Plastic Surgery's breast surgery process look like from consultation to aftercare?","stage":"decision"},
{"id":"D-12","cat":"D","question":"Does VIEW Plastic Surgery do a breast ultrasound or examination before augmentation?","stage":"decision"},
{"id":"D-13","cat":"D","question":"Subbrow lift vs upper blepharoplasty: which should I get in Korea?","stage":"explore"},
{"id":"D-14","cat":"D","question":"Mini lift vs full facelift in Korea: cost and recovery","stage":"explore"},
{"id":"E-01","cat":"E","question":"How much does breast augmentation cost in Korea for foreigners in 2026?","stage":"explore"},
{"id":"E-02","cat":"E","question":"V-line surgery cost in Korea 2026","stage":"explore"},
{"id":"E-03","cat":"E","question":"How much does double jaw surgery cost in Seoul?","stage":"explore"},
{"id":"E-04","cat":"E","question":"Is plastic surgery in Korea cheaper than in the US? How much can I save?","stage":"aware"},
{"id":"E-05","cat":"E","question":"VIEW Plastic Surgery price list for international patients","stage":"decision"},
{"id":"E-06","cat":"E","question":"What hidden costs should I expect for plastic surgery in Korea as a foreigner?","stage":"explore"},
{"id":"E-07","cat":"E","question":"Can foreigners get a tax refund on plastic surgery in Korea?","stage":"explore"},
{"id":"E-08","cat":"E","question":"Rhinoplasty cost in Gangnam for foreigners","stage":"explore"},
{"id":"F-01","cat":"F","question":"Is plastic surgery in Korea safe for foreigners? What safety standards should I look for?","stage":"aware"},
{"id":"F-02","cat":"F","question":"Does VIEW Plastic Surgery have anesthesiologists present during surgery?","stage":"decision"},
{"id":"F-03","cat":"F","question":"What happens if I have complications after returning home from plastic surgery in Korea?","stage":"explore"},
{"id":"F-04","cat":"F","question":"How do I verify a Korean plastic surgeon is board certified?","stage":"explore"},
{"id":"F-05","cat":"F","question":"Are there red flags or complaints about VIEW Plastic Surgery Korea?","stage":"decision"},
{"id":"F-06","cat":"F","question":"Which Korean plastic surgery clinics have a Motiva implant warranty?","stage":"compare"},
{"id":"G-01","cat":"G","question":"Do Korean plastic surgery clinics offer remote follow-up after I go back to my country?","stage":"explore"},
{"id":"G-02","cat":"G","question":"What aftercare does VIEW Plastic Surgery provide for international patients?","stage":"decision"},
{"id":"G-03","cat":"G","question":"Where can I get post-surgery swelling care in Gangnam after surgery?","stage":"explore"},
{"id":"G-04","cat":"G","question":"What is the Motiva implant warranty if I get surgery in Korea and live abroad?","stage":"explore"}
]

View File

@ -0,0 +1,39 @@
import json,sys,os
sys.path.insert(0,'/Users/haewonkam/Claude/Agentic Marketing/INFINITH/scripts')
import score_discovery_json as sd
S=os.path.dirname(os.path.abspath(__file__))
d=json.load(open(f'{S}/audit_en_auto.json'))
results={r['criterionId']:dict(r) for r in d['results']}
for cid,o in json.load(open(f'{S}/audit_en_overrides.json')).items():
results.setdefault(cid,{'criterionId':cid}); results[cid]['level']=o['level']; results[cid]['evidence']='[사람 보정] '+o['evidence']
extra=json.load(open(sys.argv[1])) if len(sys.argv)>1 else {}
for cid,o in extra.items():
results.setdefault(cid,{'criterionId':cid}); results[cid]['level']=o['level']; results[cid]['evidence']='[사람 보정] '+o['evidence']
out=sd.score(results,'VIEW EN')
# v2 human items
human={'AEO6':(3,''),'GEO1':(2,''),'GEO6':(3,''),'GEO7':(2,'')}
items,gates=sd.load_rubric_v2()
res={}
for axis in ('aeo','geo'):
ea=pa=0; det=[]
for it in items:
if it['axis']!=axis: continue
if it['id'] in human:
pct=human[it['id']][0]/3; basis='judged'
else:
sig=[(c,w,results[c]['level']) for c,w in it['derivedFrom'] if c in results and results[c]['level']!='unverified']
if not sig: det.append((it['id'],it['name'],it['weight'],None,'unverified',[])); continue
ws=sum(w for _,w,_ in sig); pct=sum(w*int(l)/3 for _,w,l in sig)/ws; basis='derived'
sigs=[f"{c}={l}" for c,w,l in sig]
ea+=it['weight']*pct; pa+=it['weight']
det.append((it['id'],it['name'],it['weight'],round(it['weight']*pct,1),basis,sigs if basis=='derived' else []))
raw=round(ea/pa*100)
res[axis]={'score':raw,'grade':sd.grade(raw),'earned':round(ea,1),'possible':pa,'items':det}
out['aeo_h']=res['aeo']; out['geo_h']=res['geo']
out['results']=results
print(f"v1 {out['v1']['score']}/{out['v1']['grade']} ({out['v1']['earned']}/{out['v1']['possible']}, verified {out['v1']['verified']}/36) cats {out['v1']['categories']}")
for ax in ('aeo','geo'):
r=res[ax]; print(f"{ax.upper()} {r['score']}/{r['grade']} ({r['earned']}/{r['possible']})")
for x in r['items']: print(' ',x)
print('gates',out['gates'])
json.dump(out,open(f'{S}/audit_en_scored.json','w'),ensure_ascii=False,indent=1)

View File

@ -0,0 +1,176 @@
#!/usr/bin/env python3
"""외국인 관점 영문 Question Bank 답변엔진 실측 러너 (OpenAI / Perplexity).
run_question_bank_openai.py의 영문·해외 위치 변형. 차이점:
- 질문 파일·출력 폴더를 인자로 받는다 (기본: docs/reports/viewclinic/05_global_en)
- OpenAI web_search user_location을 --country/--city로 지정 (기본 US / New York)
- 병원명 추출 프롬프트가 영문 표기 변형(VIEW Plastic Surgery, View Clinic, VIEW Seoul) 같은 병원으로 본다
- 인용 URL을 도메인별로 집계해 "AI가 어떤 표면을 근거로 쓰는가" 기록한다
사용:
python3 scripts/run_question_bank_en.py --engine perplexity
python3 scripts/run_question_bank_en.py --engine openai --country US --city "New York"
python3 scripts/run_question_bank_en.py --engine openai --summarize
"""
import argparse, json, os, re, sys, time
from urllib.parse import urlparse
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import run_question_bank_openai as base # noqa: E402
ROOT = base.ROOT
DEFAULT_DIR = os.path.join(ROOT, "docs", "reports", "viewclinic", "05_global_en")
EXTRACT_PROMPT = """Below is an answer from an AI search engine. Extract the names of plastic surgery clinics / hospitals mentioned, in order of appearance, up to 8.
- Clinic names only (exclude platforms, apps, media, agencies: e.g. RealSelf, Reddit, Gangnam Unni, Bookimed, Whatclinic are NOT clinics)
- "VIEW Plastic Surgery" also appears as View Clinic, VIEW Clinic Korea, VIEW Seoul, VIEW Plastic Surgery Clinic, 뷰성형외과. Treat all as the same clinic and normalize to "VIEW Plastic Surgery".
- Output JSON only: {"clinics": ["Clinic 1", ...], "view_mentioned": true/false, "view_rank": position or null, "view_sentiment": "positive"|"neutral"|"negative"|null}
- view_sentiment: how the answer characterizes VIEW (null if not mentioned)
Answer:
"""
class OpenAIEngineLoc(base.OpenAIEngine):
def __init__(self, model, search_tool, country, city, tz):
super().__init__(model, search_tool)
self.loc = {"type": "approximate", "country": country, "city": city, "timezone": tz}
def ask(self, question):
tool = {"type": self.search_tool, "user_location": self.loc}
try:
resp = base.post_retry("https://api.openai.com/v1/responses",
{"model": self.model, "tools": [tool], "input": question},
{"Authorization": f"Bearer {self.key}"})
except RuntimeError as e:
if self.search_tool == "web_search" and "web_search" in str(e):
self.search_tool = "web_search_preview"
return self.ask(question)
raise
return base.openai_answer_text(resp)
def extract_clinics(answer):
okey = os.environ.get("OPENAI_API_KEY")
if not okey:
sys.exit("OPENAI_API_KEY needed for extraction")
resp = base.post_retry("https://api.openai.com/v1/responses",
{"model": "gpt-4o-mini", "input": EXTRACT_PROMPT + answer[:9000]},
{"Authorization": f"Bearer {okey}"})
text, _ = base.openai_answer_text(resp)
m = re.search(r"\{.*\}", text or "", re.S)
try:
return json.loads(m.group(0)) if m else {"clinics": [], "view_mentioned": False, "view_rank": None, "view_sentiment": None}
except json.JSONDecodeError:
return {"clinics": [], "view_mentioned": False, "view_rank": None, "view_sentiment": None, "parse_error": text[:200]}
def domain(u):
try:
d = urlparse(u).netloc.lower()
return d[4:] if d.startswith("www.") else d
except Exception:
return u
def out_path(d, engine):
return os.path.join(d, f"qb_en_{engine}_results.jsonl")
def load_done(d, engine):
done = {}
p = out_path(d, engine)
if os.path.exists(p):
for line in open(p):
if line.strip():
row = json.loads(line); done[row["id"]] = row
return done
def summarize(d, engine, qfile):
done = load_done(d, engine)
qs = json.load(open(qfile))
cats = {"A": "Brand", "B": "Travel & logistics", "C": "Recommendation & comparison", "D": "Procedure info",
"E": "Pricing", "F": "Safety & trust", "G": "Aftercare & remote follow-up"}
freq, dom_freq, view_dom = {}, {}, {}
per_cat = {}
lines = [f"# VIEW Plastic Surgery EN Question Bank results: {engine}", "",
f"Measured {time.strftime('%Y-%m-%d')} / {len(done)} questions", "",
"| # | Question | VIEW mentioned | Rank | Sentiment | Clinics (in order) | Cited domains |", "|---|---|---|---|---|---|---|"]
for q in qs:
r = done.get(q["id"])
if not r: continue
c = per_cat.setdefault(q["cat"], [0, 0, 0]); c[0] += 1
clinics = [x for x in r.get("clinics", []) if isinstance(x, str)][:8]
for i, x in enumerate(clinics):
freq.setdefault(x, [0, 0]); freq[x][0] += 1
if i == 0: freq[x][1] += 1
doms = sorted({domain(u) for u in r.get("urls", [])})
for dm in doms:
dom_freq[dm] = dom_freq.get(dm, 0) + 1
vm = bool(r.get("view_mentioned"))
if vm:
c[1] += 1
for dm in doms: view_dom[dm] = view_dom.get(dm, 0) + 1
if any("viewplasticsurgery.com" in u or "viewclinic" in u for u in r.get("urls", [])): c[2] += 1
lines.append(f"| {q['id']} | {q['question']} | {'O' if vm else 'X'} | {r.get('view_rank') or '-'} | {r.get('view_sentiment') or '-'} | "
f"{', '.join(clinics) if clinics else '(none)'} | {', '.join(doms[:6])} |")
mentioned = sum(v[1] for v in per_cat.values())
lines += ["", "## Summary", "", f"- VIEW mentioned: {mentioned}/{len(done)} ({mentioned*100//max(len(done),1)}%)", "",
"| Category | Questions | VIEW mentioned | viewplasticsurgery.com cited |", "|---|---|---|---|"]
for k in sorted(per_cat):
n, m, cited = per_cat[k]
lines.append(f"| {k} {cats.get(k,'')} | {n} | {m} ({m*100//n}%) | {cited} ({cited*100//n}%) |")
lines += ["", "### Clinic mention frequency (top 20)", "", "| Clinic | Questions | First position |", "|---|---|---|"]
for name, (cnt, first) in sorted(freq.items(), key=lambda x: -x[1][0])[:20]:
lines.append(f"| {name} | {cnt} | {first} |")
lines += ["", "### Cited domains (top 25)", "", "| Domain | Questions cited | Cited when VIEW mentioned |", "|---|---|---|"]
for dm, cnt in sorted(dom_freq.items(), key=lambda x: -x[1])[:25]:
lines.append(f"| {dm} | {cnt} | {view_dom.get(dm, 0)} |")
out_md = os.path.join(d, f"QB_en_{engine}_results.md")
open(out_md, "w").write("\n".join(lines) + "\n")
json.dump({"per_cat": per_cat, "freq": freq, "dom_freq": dom_freq, "view_dom": view_dom, "n": len(done), "mentioned": mentioned},
open(os.path.join(d, f"QB_en_{engine}_summary.json"), "w"), ensure_ascii=False, indent=1)
print(f"saved: {out_md}")
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--engine", choices=["openai", "perplexity"], default="perplexity")
ap.add_argument("--model", default=None)
ap.add_argument("--search-tool", default="web_search")
ap.add_argument("--country", default="US"); ap.add_argument("--city", default="New York"); ap.add_argument("--tz", default="America/New_York")
ap.add_argument("--dir", default=DEFAULT_DIR)
ap.add_argument("--questions", default=os.path.join(DEFAULT_DIR, "question_bank_en.json"))
ap.add_argument("--limit", type=int, default=0); ap.add_argument("--sleep", type=float, default=1.0)
ap.add_argument("--summarize", action="store_true")
a = ap.parse_args()
base.load_dotenv()
if a.summarize:
summarize(a.dir, a.engine, a.questions); return
eng = OpenAIEngineLoc(a.model or "gpt-4o", a.search_tool, a.country, a.city, a.tz) if a.engine == "openai" \
else base.PerplexityEngine(a.model or "sonar")
os.makedirs(a.dir, exist_ok=True)
qs = json.load(open(a.questions)); done = load_done(a.dir, a.engine)
todo = [q for q in qs if q["id"] not in done]
if a.limit: todo = todo[:a.limit]
print(f"{eng.name}: {len(todo)} to run ({len(done)} done)", flush=True)
with open(out_path(a.dir, a.engine), "a") as f:
for i, q in enumerate(todo, 1):
t0 = time.time()
try:
answer, urls = eng.ask(q["question"])
ext = extract_clinics(answer)
except Exception as e:
print(f" [{i}/{len(todo)}] {q['id']} ERROR {e}", flush=True); time.sleep(5); continue
row = {"id": q["id"], "cat": q["cat"], "question": q["question"], "engine": eng.name,
"answer": answer, "urls": urls, "measured_at": time.strftime("%Y-%m-%dT%H:%M:%S"), **ext}
f.write(json.dumps(row, ensure_ascii=False) + "\n"); f.flush()
print(f" [{i}/{len(todo)}] {q['id']} view={'O' if ext.get('view_mentioned') else 'X'} rank={ext.get('view_rank')} "
f"clinics={ext.get('clinics', [])[:4]} urls={len(urls)} ({time.time()-t0:.0f}s)", flush=True)
time.sleep(a.sleep)
summarize(a.dir, a.engine, a.questions)
if __name__ == "__main__":
main()