SEO and Content Strategy — Search Optimization for the Saju Domain

 


The App Was Done, But...

Analysis engine, AI interpretation, UI. All the core features of the Saju app were in place. But there was one critical problem. This app is a Single Page Application (SPA). A React-built SPA is basically an empty HTML shell where JavaScript renders everything. When Google's crawler visits, it sees a blank page.

No matter how brilliant the Saju analysis engine, if search engines can't find it, users won't come.

The SPA SEO Problem

SPA's SEO challenges are well-documented, but they're trickier than expected when you actually face them.

Yes, Googlebot can render JavaScript. But it doesn't render every page. There's a crawl budget, and JS rendering costs extra. New, small sites don't get favorable treatment.

Meta tags are another issue. The "Gap-Ja Day Pillar detail" page and the "Eul-Chuk Day Pillar detail" page each need distinct title, description, and og:image tags. In an SPA, even if you dynamically change these on the client side, social media crawlers and search engine bots often only read the meta tags in the initial HTML.

We tackled this with three strategies.

Strategy 1: Pre-rendering

At build time, we pre-render key pages into static HTML files. When a user visits, the static HTML loads first, then React takes over through hydration to make it interactive.

Pre-rendering targets are the "entry point" pages — the pages users are most likely to land on directly. The main page, guide pages, column pages, and detail pages. Each generates complete HTML with its own unique title, description, and og:image.

Pre-rendering is automated as part of the build pipeline. After vite build completes, a pre-render script visits each route and saves the HTML. Every deployment generates fresh static HTML.

Strategy 2: Sitemap and JSON-LD

A sitemap.xml tells search engines "here are all the pages on this site." We auto-generate a sitemap containing URLs, last-modified dates, and priority values for all pre-rendered pages.

JSON-LD structured data improves how pages appear in search results. Guide pages get Article schema, analysis pages get WebApplication schema, and pages with FAQs get FAQPage schema.

For instance, when an Article schema is applied to a guide page about the Ten Gods (Sipsin), Google can display a structured search result with title, description, and publication date. Users can judge from the search result alone whether the page contains what they're looking for, which improves click-through rates.

The build pipeline runs in three stages: vite build (app build) followed by generate-sitemap (automatic sitemap creation) followed by prerender (pre-rendering key pages). All three execute sequentially with a single build command.

Strategy 3: Content Drives Search Traffic

Technical SEO alone isn't enough. The core of search traffic is ultimately whether you have content that matches what users are searching for.

Analyzing Saju domain search keywords reveals three main types.

First, concept-learning keywords. Queries like "what are the Ten Gods," "what are the Five Elements," "Heavenly Stems meaning," "what is Yongsin." These come from beginners who've just developed an interest in Saju, and search volume is steady.

Second, specific-lookup keywords. Queries like "Gap-Ja Day Pillar traits," "Eul-Wood personality," "Gyeong-Metal career," "In-Wood Hidden Stems." These come from people who already know some Saju and want detailed information on specific elements.

Third, practical-use keywords. Queries like "2026 fortune," "Saju compatibility," "today's Saju." These come from users who want an actual reading, directly connecting to the app's core features.

We systematically built content for all three types.

Guide Pages: 11 and Counting

Guide pages address concept-learning keywords. Each covers a core Four Pillars concept in depth.

The Heavenly Stems guide (meaning and personality for each of the 10 stems), Earthly Branches guide (characteristics for each of the 12 branches), Sexagenary Cycle guide (the structure and cycle of the 60 pillar combinations), Five Elements guide (generation and destruction cycles of Wood, Fire, Earth, Metal, Water), Ten Gods guide (meaning of each of the 10 gods), Favorable Element guide (methods and applications), Day Pillar guide (overview of all 60 Day Pillars), Compatibility guide (principles of Saju compatibility analysis), Major Fate Cycle guide (the flow of 10-year cycles), Astrology vs. Saju guide (comparison with Western astrology), and a Saju Basics guide for absolute beginners.

Each guide runs 2,000-3,000 characters, covering the concept's definition, components, real examples, and how it's used in the app. Each ends with a CTA — "Check your own Four Pillars" — driving users to the analysis feature.

Column Pages: 5 and Counting

Lighter and more curiosity-driven than guides, columns target social sharing and return visits rather than direct search traffic.

"Saju Basics: How Your Chart Is Built," "Personality Types by Five Elements," "Career Aptitude by Day Master," "Saju Compatibility: Truth and Myths," "Reading This Year's Fortune Through Saju." These columns use a lighter tone and connect to readers' everyday lives.

"Personality Types by Five Elements" takes an approach similar to Western personality frameworks like MBTI. "If your Day Master is Gap-Wood, you have a personality like a great tree — upright and dignified." This naturally makes readers want to find out their own Day Master.

Detail Pages: Hundreds of Long-Tail Targets

The real SEO weapon in the Saju domain is detail pages — individual pages that each capture a specific long-tail keyword.

10 Heavenly Stem detail pages (personality, career, health, relationships for each), 12 Earthly Branch detail pages (characteristics for each), 60 Sexagenary Cycle detail pages (interpretation for each combination), 60 Day Pillar detail pages (personality and fortune for each), 10+ Ten Gods detail pages (meaning and positional interpretation for each), and Spirit Indicator (Sinsal) detail pages covering major indicators like the Peach Blossom Star and the Traveling Horse Star.

The total exceeds 150 pages. When someone searches "Gap-Ja Day Pillar personality," there's a page with exactly that content. This is the essence of long-tail SEO. Each individual page's search volume is small, but 150+ pages each capturing their own keyword adds up to substantial total traffic.

Mass Content Production with AI

The question was how to create these 150+ pages. Writing each one manually would take months.

This is where AI's contribution was decisive. After structuring the Saju domain data — Heavenly Stem characteristics, Earthly Branch traits, Five Elements relationships — we'd prompt AI: "Based on this data, write a detail page for the Gap-Wood Heavenly Stem. Include personality, career aptitude, health, and interpersonal relationships with specific examples and practical advice."

The key was combining templates with data. We defined the structure for a Heavenly Stem detail page (section order, required content, tone) as a template, then fed each stem's unique data so AI could generate all 10 pages. Same approach for the 12 branches, the 60 Day Pillars.

We didn't publish AI-generated content as-is. Each page was reviewed for factual errors, over-generalizations, and tone inconsistencies. But the difference between starting from a blank page and editing a draft is enormous. With AI producing drafts and humans editing, we completed 150+ pages within a realistic timeframe.

Domain-Specific SEO Keywords

Saju domain SEO keywords have characteristics that differ from typical web services.

First, Chinese character notation matters. In the Korean original, writing just "Gap-Wood" isn't enough — you need both the Korean and the Chinese characters. For the English version, providing romanized Korean alongside translations (e.g., "Gap-Wood (Gab-mok, 甲木)") adds credibility and captures varied search patterns.

Second, synonyms abound. "Four Pillars" and "Saju," "Chinese astrology" and "BaZi," "fortune" and "destiny." Since users search with various terms, content needs to naturally incorporate key synonyms.

Third, seasonality exists. Keywords like "2026 fortune" and "New Year fortune" spike every year around December through February. Aligning content publication with these seasonal patterns maximizes impact.

Fourth, comparison keywords are popular. "MBTI vs Saju," "astrology vs Four Pillars," "tarot vs Saju." Content addressing curiosity about differences between systems is effective for traffic.

Content by the Numbers

The final content scale: 11+ guide pages, 5+ column pages, 10 Heavenly Stem detail pages, 12 Earthly Branch detail pages, 60 Sexagenary Cycle detail pages, 60 Day Pillar detail pages, 10+ Ten Gods detail pages, and numerous Spirit Indicator detail pages. Each page has a unique URL, title, description, and JSON-LD markup.

Every page is pre-rendered as static HTML and registered in the sitemap. When Google's crawler visits, it can immediately read complete content. We overcame the SPA's SEO limitations through both technology and content, simultaneously.

Coming Up Next

Analysis engine, AI interpretation, UI, SEO content — everything is ready. The final hurdle is deployment. In the next installment, we'll cover how combining GitHub Pages with Cloudflare Workers achieves a total operating cost of $0, and the real-world trade-offs of free infrastructure.

댓글

이 블로그의 인기 게시물

사랑을 직접 올리지 않는 설계

감정을 변수로 옮기다 — 3계층 감정 모델

시작의 충동 — "타로 웹앱을 만들어볼까?"