---
name: static-encyclopedia-geo-optimization
slug: static-encyclopedia-geo-optimization
description: >-
Complete GEO (Generative Engine Optimization) pipeline for static HTML
industry encyclopedia sites. 7-module SOP adapted from the AI Traffic +471%
methodology — batch optimizes 100+ static HTML pages for AI search
visibility (ChatGPT Search, Perplexity, Gemini, Claude).
version: 1.1.0
tags: [geo, generative-engine-optimization, static-html, seo, ai-search,
schema, eeat, semantic-html, batch-processing]
---
# Static Encyclopedia GEO Optimization Pipeline
Batch GEO optimization for static HTML industry encyclopedia sites (lighting, packaging, furniture, etc.). Based on the 7-module GEO SOP methodology proven to increase AI Platform traffic by +471%.
## When This Skill Is Relevant
Trigger when:
- User has a static HTML encyclopedia site (e.g. `/encyclopedia/lighting/`)
- User wants to optimize 100+ pages for AI search visibility
- Need to batch-apply SEO/GEO improvements across an entire site
- Building a new vertical encyclopedia and want to start GEO-ready from day 1
## ⚠️ Critical Constraint: "Public Content Only Shows Results, Not Methods"
When the user asks about what GEO optimization does for their clients / public-facing content, **never describe the technical steps or tools used**. Only describe the **results and outcomes**:
- ❌ "We added FAQPage Schema to 21 pages and Quick Answer boxes to 115 pages"
- ✅ "Your encyclopedia content is now structured so AI search engines can directly extract and cite your information"
- ❌ "We replaced div tags with semantic HTML elements like main, article, aside"
- ✅ "Your pages are technically optimized for AI crawlers to better understand and prioritize your content"
- ❌ "We set up a cron job at 9 AM to generate articles and your local agent publishes at 10 AM"
- ✅ "Content creation and multi-platform distribution are fully automated"
This constraint applies to: step-by-step instructions, specific tool names, architecture details, and technical implementation methods.
## Architecture
The encyclopedia is a static HTML site in a directory structure:
```
/var/www/[domain]/landing/encyclopedia/[topic]/
├── index.html
├── products/
│ ├── index.html
│ └── led-downlights-guide.html
├── parameters/
├── scenes/
├── troubleshooting/
├── standards/
├── research/
├── us/ (city directories — skip)
├── answers/ (GEO Prompt pages — NEW)
├── sitemap.xml
├── llms.txt
└── llms-full.txt
```
## The 7-Module GEO SOP
### Module 1: Optimization Goals & Metrics
Define measurable outcomes before starting:
| Metric | Source | Target |
|--------|--------|--------|
| AI Platform referral traffic | GA4 (filter by platform) | +50% in 30 days |
| AI mention rate | Batch Prompt testing | Brand appears in 60%+ of relevant prompts |
| Schema coverage | grep scan of HTML files | 95%+ of content pages |
| llms.txt completeness | Check for all categories | All sections listed with direct URLs |
| sitemap coverage | URL count vs file count | 1:1 ratio |
### Module 2: Page Type Matrix
Categorize pages by GEO value:
| Type | Example | Schema | Priority |
|------|---------|--------|----------|
| **Product guides** | `products/led-downlights-guide.html` | Article, HowTo | T1 |
| **Technical parameters** | `parameters/color-temperature-cct-explained.html` | Article, FAQPage | T1 |
| **Scene/application guides** | `scenes/bedroom-lighting-ideas.html` | Article | T1 |
| **Troubleshooting guides** | `troubleshooting/led-flickering-causes.html` | FAQPage, HowTo | T1 |
| **Standards & compliance** | `standards/ce-marking-lighting-guide.html` | Article | T1 |
| **Research articles** | `research/*` | Article, ScholarlyArticle | T2 |
| **GEO Prompt pages** | `answers/*` (NEW) | FAQPage | T2 |
| **City directories** | `us/new-york-lighting-stores.html` | LocalBusiness | T3 (skip QA/structure) |
| **Index pages** | `*/index.html` | CollectionPage | Skip content optimization |
| **Utility pages** | `about/`, `contact/`, `privacy/` | WebPage | Skip content optimization |
### Module 3: Batch Content Optimization (Pipeline)
This is the core. Run in this order:
#### Step 1: SEO Title & Meta Description Batch Rewrite
```python
# Script pattern: iterate all HTML files, skip index pages and city directories
# For each page:
# 1. Extract existing title and description
# 2. If title matches generic template pattern → rewrite with SEO keywords
# 3. If meta description is missing or generic → add keyword-rich description
# 4. Use category-based templates:
# - products: "LED [Product] Guide: [Key Features] & [Benefits]"
# - troubleshooting: "[Problem] Fix: [Solution] & [Steps]"
# - parameters: "[Parameter] Guide: [Key concepts] & [Applications]"
# - scenes: "[Room/Scene] Lighting Guide: [Design tips] & [Selection]"
```
**Generic template detection:**
- Title starts with "Neutral," or "LED Lighting" without Guide/Best
- Meta description starts with generic phrases
- Title under 20 chars or over 70 chars
#### Step 2: Structured Data (JSON-LD) Batch Injection
Three schema types based on page category:
| Category | Schema Type | Key Properties |
|----------|-------------|----------------|
| Products | TechArticle | name, description, category |
| Parameters | Article + FAQPage | mainEntity (array of Question/Answer) |
| Troubleshooting | FAQPage | mainEntity (each H2 becomes a Question) |
| Scenes | Article | name, description, image |
| Standards | Article | name, description, about |
| Research | ScholarlyArticle | name, description, datePublished |
| City directories | ItemList, LocalBusiness | itemListElement, address |
| All pages | BreadcrumbList | itemListElement with position |
**FAQPage generation logic:**
```python
# For troubleshooting pages: auto-extract H2 headings as Questions
# Extract first paragraph under each H2 as Answer
# Store in JSON-LD format
faq_items = []
for h2 in page.find_all('h2'):
question = h2.get_text(strip=True)
next_p = h2.find_next('p')
if next_p and next_p in content_area:
answer = next_p.get_text(strip=True)[:200]
faq_items.append({"@type":"Question", "name":question, ...})
```
**Automatic FAQ dictionary** — for pages where H2 extraction fails (too few, non-question format), use a topic-based FAQ dictionary:
```python
auto_faq = {
'troubleshooting': [
{"q": "What causes [topic]?", "a": "..."},
{"q": "How to fix [topic]?", "a": "..."},
],
'products': [
{"q": "What is [product]?", "a": "..."},
{"q": "How to choose [product]?", "a": "..."},
],
...
}
```
#### Step 3: Quick Answer Box Injection
Insert a blue-tinted "Quick Answer" box at the top of the content area, before the first H2:
```python
# Pattern: extract first 1-2 sentences of the first meaningful paragraph
# Wrap in a div with class="quick-answer" and distinct styling
quick_box = f'''<div class="quick-answer" style="background:#f0f7ff;
border-left:4px solid #0d6efd;padding:16px 20px;margin:20px 0;
border-radius:0 8px 8px 0;">
<strong style="color:#0d6efd;">Quick Answer</strong>
<p>{first_two_sentences}</p>
</div>'''
```
**Skip:** City directories, index pages, utility pages (about/contact/privacy).
#### Step 4: E-E-A-T Signals Injection
Add to each content page's meta area:
```
<span>📅 Published: YYYY-MM-DD</span>
<span>🔄 Updated: YYYY-MM-DD</span>
<span>✍️ Author: GEO · Compare2Best [Topic] Team</span>
<span>🔗 Sources: [Industry sources relevant to topic]</span>
```
Update `<meta property="article:modified_time">` to current date for freshness signal.
#### Step 5: Internal Link Network
Add related articles section at bottom of each page:
```python
# For each page, find semantically related pages:
# - Same category: other products link to each other
# - Cross-category: product → parameters → troubleshooting
# Example: led-strip-lights-guide links to:
# - voltage-drop-led-strip (troubleshooting)
# - led-strip-not-sticking (troubleshooting)
# - dimmable-led-bulbs-guide (troubleshooting)
```
**Semantic linking rules:**
```python
# Define topic clusters
clusters = {
"dimmer": ["dimmer-incompatibility", "dimmable-led-bulbs-guide", "dimmable-lights-guide", "triac-dali-dmx-diming"],
"cct/color": ["color-temperature-cct-explained", "warm-white-vs-cool-white-led", "color-rendering-metrics", "color-tolerance-sdcm"],
"driver": ["led-driver-complete-guide", "led-driver-failure-signs", "led-driver-vs-transformer"],
# ... etc
}
# For each page, find its cluster → pick 3-5 related pages
# Ensure cross-category links (products → troubleshooting → parameters)
```
#### Step 6: Semantic HTML Tag Replacement
Replace generic `<div>` wrappers with semantic HTML5 elements:
| Original | Replacement | Purpose |
|----------|-------------|---------|
| `<div class="container">` | `<main class="container">` | Main content landmark |
| `<div class="breadcrumb">` | `
<!-- HEADER -->
<!-- HEADER -->
<!-- HEADER -->
<!-- HEADER -->
<!-- HEADER -->
<nav class="nav" id="navbar">
<div class="nav__inner">
<a href="/" class="nav__logo"><span class="nav__logo-icon">T</span>GEO · Compare2Best</a>
<ul class="nav__links">
<li><a href="/" class="nav__link">Home</a></li>
<li><a href="/geo-wiki/" class="nav__link">GEO Wiki</a></li>
<li><a href="/b2b-practice/" class="nav__link">B2B Cross-Border</a></li>
<li><a href="/ai-watch/" class="nav__link">AI Search Watch</a></li>
<li><a href="/reports/" class="nav__link">Trend Reports</a></li>
<li><a href="/academy/" class="nav__link">Academy</a></li>
<li><a href="/about" class="nav__cta">Free Audit →</a></li>
</ul>
<button class="nav__toggle" aria-label="Menu"><span></span><span></span><span></span></button>
</div>
</nav>
<script>document.querySelectorAll('.nav__link').forEach(function(a){if(a.getAttribute('href')===location.pathname||(location.pathname!=='/'&&a.getAttribute('href')!=='/'&&location.pathname.startsWith(a.getAttribute('href')))){a.classList.add('nav__link--active')}});</script>
<script>const navbar=document.getElementById('navbar');window.addEventListener('scroll',function(){navbar.classList.toggle('scrolled',window.scrollY>50)});</script>
<!-- /HEADER -->
<script>document.querySelectorAll('.nav__link').forEach(function(a){if(a.getAttribute('href')===location.pathname||(location.pathname!=='/'&&a.getAttribute('href')!=='/'&&location.pathname.startsWith(a.getAttribute('href')))){a.classList.add('nav__link--active')}});</script>
<script>const navbar=document.getElementById('navbar');window.addEventListener('scroll',function(){navbar.classList.toggle('scrolled',window.scrollY>50)});</script>
<!-- /HEADER -->
<script>document.querySelectorAll('.nav__link').forEach(function(a){if(a.getAttribute('href')===location.pathname||(location.pathname!=='/'&&a.getAttribute('href')!=='/'&&location.pathname.startsWith(a.getAttribute('href')))){a.classList.add('nav__link--active')}});</script>
<script>const navbar=document.getElementById('navbar');window.addEventListener('scroll',function(){navbar.classList.toggle('scrolled',window.scrollY>50)});</script>
<!-- /HEADER -->
<script>document.querySelectorAll('.nav__link').forEach(function(a){if(a.getAttribute('href')===location.pathname||(location.pathname!=='/'&&a.getAttribute('href')!=='/'&&location.pathname.startsWith(a.getAttribute('href')))){a.classList.add('nav__link--active')}});</script>
<!-- /HEADER -->
<script>document.querySelectorAll('.nav__link').forEach(function(a){if(a.getAttribute('href')===location.pathname||(location.pathname!=='/'&&a.getAttribute('href')!=='/'&&location.pathname.startsWith(a.getAttribute('href')))){a.classList.add('nav__link--active')}});</script>
<!-- /HEADER -->
<section class="hero">
<div class="hero__badge"><span class="hero__badge-dot"></span> GEO · Compare2Best</div>
<h1 class="hero__title"><span>\n', ''),
('\n\n\n\n
...GA4 + SEO meta...
...navigation...
...
Question as title</span></h1>
<p class="hero__desc"></p>
</section>
\n<h2'),
# wrap content div
('<div class="content">', '<article class="content">'),
('</div>\n\n<!-- Related Articles', '</article>\n\n<!-- Related Articles'),
# wrap related articles div
('<div class="related-articles"', '<aside class="related-articles"'),
]
```
### Module 4: GEO Prompt Pages (Incremental)
Create targeted `/answers/` directory pages that directly answer specific AI search prompts:
**Page types to create:**
| Type | Example | Structure | Schema |
|------|---------|-----------|--------|
| **What-is question** | `answers/best-color-temperature-bedroom.html` | Quick Answer + table + explanation + FAQ | FAQPage |
| **How-to guide** | `answers/fix-led-flickering.html` | 6-step with diagnostic boxes + flowchart | HowTo |
| **VS comparison** | `answers/led-vs-incandescent-vs-cfl.html` | Comparison table + cost analysis + verdict | ItemList |
**Template structure:**
```html
<!DOCTYPE html>
<html lang="en">
<head>...GA4 + SEO meta...</head>
<body>
<header>...navigation...</header>
<main>
<nav aria-label="breadcrumb">...</nav>
<h2>Question as title</h2>
<div class="meta">Author + dates + sources</div>
<article class="content">
<div class="quick-answer">Direct answer in 1-2 sentences</div>
<h2>Detailed Answer</h2>
... tables, lists, steps ...
<h2>FAQ</h2>
</article>
<aside>Related articles</aside>
</main>
<!-- FOOTER -->
<!-- FOOTER -->
<!-- FOOTER -->
<!-- FOOTER -->
<!-- FOOTER -->
<footer class="footer">
<div class="footer__inner">
<div class="footer__brand">
<div class="footer__logo"><span class="nav__logo-icon" style="width:28px;height:28px;font-size:14px">T</span> GEO · Compare2Best</div>