Illustrative case study

A fictional business. The figures are a modelled scenario, not a client result.

Haneul Hagwon · 하늘학원

Exam-prep academy, 9 campuses · Seoul

Nine campuses, two search engines: a Seoul hagwon's technical overhaul

+121%organic consultation bookings, in 6 months
Mobile LCP
6.4s → 1.7s
Indexed campus pages
2 → 9
Organic sessions
+97%

2026학년도 검색 성적 답안지

Search visibility answer sheet

형 A
성명Name
Haneul Hagwon
학원Sector
Exam-prep academy, 9 campuses
지역City
Seoul, South Korea
점수 Code
1
2
1

Campus pages indexed · N = Naver, G = Google

대치
목동
잠실
중계
마포
여의도
서초
강서
왕십리
01문제The challenge

Beautiful campus pages that no search engine could read.

Image-heavy campus pages rendered text as images, invisible to both Naver and Google, and mobile pages took over 6 seconds.

Haneul Hagwon runs nine exam-prep campuses across Seoul. Every one had a designed page — but the designer exported each as a single image: fees, subjects, timetables, even the address. Parents searching “대치동 수학학원” on Naver or Google found competitors, because to Yeti and Googlebot those pages were blank. Only Daechi and Mok-dong, which had a few lines of HTML, were indexed at all.

Before · what Yeti and Googlebot read
<img src="daechi_banner_final2.jpg">

0 words

After · the same campus page
대치 수학학원 — 하늘학원월·수·금 19:00 수능 수학 심화

612 words + Course schema

02진단Audit & diagnosis

Twelve questions on the answer sheet. Each row fills as it is fixed.

A dual-engine crawl — once as Googlebot, once as Naver's Yeti — plus CrUX field data and a page-by-page content review. Every finding below was closed, verified in both engines and measured.

  1. 01

    이미지 텍스트Technical

    Course copy, fees and timetables on 7 of 9 campus pages were baked into JPEG banners: 0 crawlable words.

    Fix: Rebuilt as live HTML text over CSS backgrounds; banners kept as decorative images with empty alt.

  2. 02

    네이버 미등록Technical

    Site never verified in Naver Search Advisor; no sitemap or RSS submitted to Yeti, Naver's crawler.

    Fix: Verified the domain, submitted sitemap.xml and RSS, and requested collection for every campus URL.

  3. 03

    robots.txtTechnical

    A legacy wildcard rule disallowed /campus/ for every crawler except Googlebot.

    Fix: Replaced with an explicit allow-list for Yeti and Googlebot; blocked only /admin/ and search results.

  4. 04

    LCP 6.4초Technical

    Hero carousel of five 2.8 MB PNGs, loaded eagerly on mobile: LCP 6.4s at p75.

    Fix: Single AVIF hero at 92 KB with fetchpriority=high; the carousel became a static grid below the fold.

  5. 05

    한글 웹폰트Technical

    Three full Hangul web-font files (2.1 MB) blocked rendering on every page.

    Fix: Subset to the 2,350 KS X 1001 syllables in use, WOFF2, font-display: swap — 186 KB total.

  6. 06

    CLS 0.31Technical

    A late-loading timetable embed and chat widget shifted the page by 0.31.

    Fix: Reserved fixed slots for both; the chat widget loads on interaction only. CLS 0.02.

  7. 07

    중복 URLTechnical

    Campuses lived at ?campus=3 query URLs with no canonical, producing 40+ duplicates.

    Fix: Clean /campus/daechi style paths, 301s from every old parameter, self-canonicals.

  8. 08

    주소 이미지Local

    Addresses and phone numbers existed only inside map screenshots.

    Fix: Text NAP block per campus matching each Naver Place and Google Business Profile listing.

  9. 09

    구조화 데이터Local

    No structured data anywhere on the site.

    Fix: EducationalOrganization + LocalBusiness per campus, Course for each programme, BreadcrumbList sitewide.

  10. 10

    PDF 시간표Content

    Term timetables were scanned PDFs, so 'CSAT maths evening class Daechi' matched nothing.

    Fix: HTML timetables with course, level, day and time as indexable text, updated each term.

  11. 11

    제목 태그Content

    All 214 pages shared the title tag '하늘학원'.

    Fix: Templated titles: subject + campus + 학원, e.g. '대치 수학학원 | 하늘학원'.

  12. 12

    블로그 중복Content

    Naver Blog posts copied site pages word for word, so Naver chose the blog as the original.

    Fix: Blog posts rewritten as study tips that link to the canonical campus page.

12문항 중 12문항 해결 · 12 of 12 findings closed

03풀이The strategy

Four answers, worked in full.

Built on our Signal plan (technical seo): fix how both engines crawl, render and understand the site before writing a single new page.

  1. 문제 1. 색인

    [3점]

    Naver & Google indexing

    Korea has two search engines that matter, and they crawl differently. We treated Yeti and Googlebot as two separate examiners.

    • Naver Search Advisor + Google Search Console verified
    • Sitemap and RSS feeds submitted to both
    • robots.txt allow-list, collection requests per campus URL
  2. 문제 2. 속도

    [3점]

    Core Web Vitals

    Parents search between classes on phones. A 6.4-second campus page lost them before the timetable appeared.

    • One 92 KB AVIF hero with fetchpriority=high
    • Hangul font subset from 2.1 MB to 186 KB
    • Reserved slots for embeds; chat loads on tap
  3. 문제 3. 지점

    [2점]

    Location pages

    Nine campuses, nine genuinely different pages: route from the nearest subway exit, parking, subjects and teachers by level.

    • Live HTML copy replacing image banners
    • Text NAP matched to Naver Place and Google Business Profile
    • Clean /campus/<name> URLs with 301s
  4. 문제 4. 구조화

    [2점]

    Structured data

    Markup tells both engines that each page is a real educational organisation at a real address, offering real courses.

    • EducationalOrganization + LocalBusiness per campus
    • Course schema for 31 programmes
    • Validated in Rich Results Test and Search Advisor
04시간표6-month timeline

6 months, run like exam periods.

One focus per month. Select a period to see the work and where the numbers stood at its end.

Month 1 of 6 · 1교시

Crawl both engines

  1. A.Full crawl as Googlebot and as Yeti
  2. B.Naver Search Advisor verification, sitemap + RSS
  3. C.robots.txt rewrite
Sessions
4,410
Bookings
40
Mobile LCP
4.8s
Campuses indexed
3/9

Jamsil indexed by both engines

05채점Results

The sheet goes through the scanner.

Six months after the first crawl, measured against the month before work began.

Headline+121%organic consultation bookings
38base40M147M258M368M477M584M6

Organic consultation bookings per month (modelled).

01Mobile LCP6.4s → 1.7s
02Indexed campus pages2 → 9
03Organic sessions+97%
baseM1M2M3M4M5M6

Modelled scenario for a fictional business — not a client result. Rankings and traffic are never guaranteed; see our Terms.

Rankings, both engines

Eight campus-and-subject queries parents actually type. Switch engines to compare: Naver weights its own Place listings and blogs; Google leans harder on page speed and schema.

Modelled Naver positions before and after, month 6
QueryBeforeAfterTop 10
대치동 수학학원Daechi maths academy50+3
목동 영어학원Mok-dong English academy274
수능 대비 학원CSAT prep academy50+9
잠실 국어학원Jamsil Korean academy50+2
중계동 과학학원Junggye science academy50+5
마포 수능 학원Mapo CSAT academy50+6
여의도 영어학원Yeouido English academy50+4
서초 수학 내신Seocho school-exam maths418

Modelled positions, mobile, Seoul. “50+” means not in the top 50. The filled bubble marks the month-6 position.

다음 시험 준비

Get a plan like this

If search engines can't read your pages, nothing else you do in SEO counts. Signal starts with exactly that.