Geodocs.dev

GEO for Developers: Technical Implementation Guide

ShareLinkedIn

GEO for developers is the implementation work that makes a site discoverable, parseable, and citable by AI search engines. The core deliverables are JSON-LD schema, an llms.txt file, semantic HTML, an AI-aware robots.txt, and automated validation in CI.

TL;DR: Ship five things to make your site GEO-ready: (1) a JSON-LD schema component on every content template, (2) an llms.txt file at the site root, (3) explicit allow rules in robots.txt for major AI crawlers, (4) a semantic HTML template with a single H1 and answer-first prose. (5) CI checks that fail the build if structured data or heading hierarchy regresses. None of these replace SEO — they extend it.

Why GEO Is a Developer Problem

Most GEO advice is written for marketers, but the work that actually moves the needle lives in your build pipeline. AI assistants like ChatGPT, Claude, Perplexity, and Gemini retrieve content through crawlers and APIs, then synthesize answers from whatever they can parse cleanly. If your templates emit malformed schema, ship a single H1 inconsistently, or block AI user agents in robots.txt, your content is effectively invisible to those systems regardless of how well it ranks in Google.

GEO inherits the entire SEO stack — crawlability, performance, canonicalization, sitemaps — and adds a thin layer of AI-specific machine-readable hooks on top. Treat the AI-specific work as code: tests, types, and CI gates, not one-off marketing tasks.

Developer Checklist

Infrastructure (one-time)

  • [ ] Deploy llms.txt at the site root
  • [ ] Deploy ai.txt (or equivalent policy file) at the site root
  • [ ] Configure robots.txt with explicit rules for AI crawlers
  • [ ] Generate sitemap.xml automatically from your content source
  • [ ] Implement canonical URL logic in your routing layer
  • [ ] Add if you publish a feed

Per-page (template-level)

  • [ ] JSON-LD structured data component injected into or
  • [ ] Semantic HTML (
    ,
    ,
    ,
  • [ ] Single

    enforced at the template level

  • [ ] and <meta name="description"> populated from frontmatter</li> <li>[ ] Open Graph and Twitter Card metadata</li> <li>[ ] Last-Modified header derived from the content's update date</li> <li>[ ] Answer-first opening paragraph that defines the topic in one or two sentences</li> </ul> <h3 id="build-pipeline">Build pipeline</h3> <ul> <li>[ ] Auto-generate sitemap.xml and llms.txt on every build</li> <li>[ ] Validate JSON-LD against schema.org in CI</li> <li>[ ] Lint heading hierarchy (no skipped levels, exactly one H1)</li> <li>[ ] Block deploys when structured data tests fail</li> <li>[ ] Track per-page word count and warn on thin content</li> </ul> <h2 id="implementation-five-concrete-pieces">Implementation: Five Concrete Pieces</h2> <h3 id="1-json-ld-schema-component">1. JSON-LD Schema Component</h3> <p>JSON-LD is the format Google recommends for structured data, and AI systems parse it the same way. Keep it in a single component so the contract is type-checked and the markup is identical across pages.</p> <p>tsx</p> <p>type ArticleSchemaProps = {</p> <p>title: string</p> <p>datePublished: string</p> <p>dateModified: string</p> <p>authorName: string</p> <p>description: string</p> <p>imageUrl: string</p> <p>publisherName: string</p> <p>publisherLogoUrl: string</p> <p>}</p> <p>export function ArticleSchema(props: ArticleSchemaProps) {</p> <p>const schema = {</p> <p>"@context": "https://schema.org",</p> <p>"@type": "Article",</p> <p>headline: props.title,</p> <p>image: [props.imageUrl],</p> <p>datePublished: props.datePublished,</p> <p>dateModified: props.dateModified,</p> <p>author: { "@type": "Person", name: props.authorName },</p> <p>publisher: {</p> <p>"@type": "Organization",</p> <p>name: props.publisherName,</p> <p>logo: { "@type": "ImageObject", url: props.publisherLogoUrl },</p> <p>},</p> <p>description: props.description,</p> <p>}</p> <p>return (</p> <p><script</p> <p>type="application/ld+json"</p> <p>dangerouslySetInnerHTML= __html: JSON.stringify(schema)</p> <p>/></p> <p>)</p> <p>}</p> <p>For question-and-answer or step-by-step content, layer FAQPage or HowTo schemas on top of Article. AI systems treat these as high-signal extraction targets because the format already mirrors the answer shape they want to emit.</p> <h3 id="2-llms-txt">2. llms.txt</h3> <p>llms.txt is a proposed standard introduced by Jeremy Howard at llmstxt.org in late 2024. It is a Markdown file at the site root that gives LLMs a low-noise, summarized index of the content you most want them to use. It is not a blocking mechanism, and as of early 2026 no major AI provider has publicly committed to consuming it in production. Adoption is real among developer-facing AI tooling (coding assistants, retrieval frameworks), so the cost is low and the upside is concrete.</p> <p>Generate it automatically from your content source rather than maintaining it by hand:</p> <p>js</p> <p>import fs from "node:fs"</p> <p>import { getArticles } from "./content.js"</p> <p>const articles = getArticles()</p> <p>let output = # Your Sitenn> One-sentence description of what this site covers.nn## Pagesnn</p> <p>for (const a of articles) {</p> <p>output += - ${a.title}: ${a.description}n</p> <p>}</p> <p>fs.writeFileSync("public/llms.txt", output)</p> <p>If your site is large, also publish an llms-full.txt that concatenates the body content of every page into a single Markdown document for tools that prefer one-shot ingestion.</p> <h3 id="3-robots-txt-for-ai-crawlers">3. Robots.txt for AI Crawlers</h3> <p>Decide explicitly which AI crawlers you allow. The major user agents to know are GPTBot and OAI-SearchBot (OpenAI), ChatGPT-User (OpenAI on-demand), ClaudeBot and anthropic-ai (Anthropic), PerplexityBot and Perplexity-User (Perplexity), Google-Extended (Google generative training), CCBot (Common Crawl), and Bytespider (ByteDance).</p> <p>A permissive baseline that maximizes AI search visibility looks like this:</p> <h1 id="traditional-crawlers">Traditional crawlers</h1> <p>User-agent: *</p> <p>Allow: /</p> <h1 id="ai-crawlers-explicit-allow-for-visibility-in-ai-answers">AI crawlers — explicit allow for visibility in AI answers</h1> <p>User-agent: GPTBot</p> <p>Allow: /</p> <p>User-agent: OAI-SearchBot</p> <p>Allow: /</p> <p>User-agent: ChatGPT-User</p> <p>Allow: /</p> <p>User-agent: ClaudeBot</p> <p>Allow: /</p> <p>User-agent: anthropic-ai</p> <p>Allow: /</p> <p>User-agent: PerplexityBot</p> <p>Allow: /</p> <p>User-agent: Perplexity-User</p> <p>Allow: /</p> <p>User-agent: Google-Extended</p> <p>Allow: /</p> <p>User-agent: CCBot</p> <p>Allow: /</p> <p>Sitemap: https://example.com/sitemap.xml</p> <p>If you want to allow retrieval for answers but disallow training, scope the rule by user agent. GPTBot and Google-Extended are training-oriented; OAI-SearchBot, ChatGPT-User, and Perplexity-User are retrieval-oriented.</p> <h3 id="4-semantic-html-and-answer-first-prose">4. Semantic HTML and Answer-First Prose</h3> <p>AI extractors prefer pages that are structurally explicit. The contract your template should enforce is:</p> <ul> <li>One <h1> per page, identical to the frontmatter title</li> <li>Headings descend monotonically (no jumping from H2 to H4)</li> <li>An answer-first opening: the first paragraph defines the topic in plain language</li> <li>A short summary block (such as an <aside> or callout) immediately after the H1</li> <li>A closing FAQ section using H3 questions followed by 2-4 sentence answers</li> </ul> <p>These choices are not cosmetic. AI systems chunk content by heading boundaries before retrieval. Clean hierarchy lets them quote you accurately. Answer-first paragraphs raise your odds of being selected as the citation source for a given query.</p> <h3 id="5-ci-validation">5. CI Validation</h3> <p>Nothing in GEO is durable unless CI enforces it. The minimum gates worth running on every commit:</p> <ul> <li>Schema validation — Run extracted JSON-LD against schema.org definitions; fail on missing required fields.</li> <li>Heading lint — Parse the rendered HTML for each page and assert exactly one H1 plus a non-skipping heading hierarchy.</li> <li>Frontmatter completeness — Type-check frontmatter against your content schema (Zod, Valibot, or equivalent).</li> <li>Word count guard — Warn or fail when a page is below the floor for its content type (for example, 600 words for a definition).</li> <li>Link integrity — Detect broken internal anchors and missing canonical hubs.</li> </ul> <p>Google's Rich Results Test and the Schema.org Validator are useful spot checks. However, for CI prefer programmatic validation (for example, schema-dts types in TypeScript or a JSON Schema derived from schema.org).</p> <h2 id="framework-notes">Framework Notes</h2> <p>Every modern web framework can ship a clean GEO stack. The integration points are roughly the same regardless of stack:</p> <div class="table-responsive"><table><thead><tr><th>Framework</th><th>Where the schema component lives</th><th>Where llms.txt is generated</th></tr></thead><tbody><tr><td>Next.js</td><td>app/<route>/layout.tsx or metadata API</td><td>next.config build hook or a postbuild script</td></tr><tr><td>Astro</td><td>Content Collections + <head> slot</td><td>Integration that reads collections and writes to public/</td></tr><tr><td>SvelteKit</td><td>+layout.svelte head block</td><td>vite-plugin or a postbuild script</td></tr><tr><td>Hugo</td><td>Partial template under layouts/partials/</td><td>Custom output format or a build script</td></tr><tr><td>WordPress</td><td>Theme header.php or a structured-data plugin</td><td>Plugin or a scheduled cron job</td></tr></tbody></table></div> <p>The table above lists where the work goes, not vendor endorsements; pick the integration point that matches your team's existing build conventions.</p> <h2 id="monitoring-what-you-shipped">Monitoring What You Shipped</h2> <p>GEO without monitoring is throwing code over a wall. The minimum signal set:</p> <ul> <li>Server logs — Track hits from GPTBot, ClaudeBot, PerplexityBot, and OAI-SearchBot over time.</li> <li>Referral traffic — Filter analytics for chat.openai.com, perplexity.ai, claude.ai, gemini.google.com, and copilot.microsoft.com.</li> <li>Citation tracking — Periodically prompt the major AI assistants with target queries and record whether your URL is cited. Tools like Profound, AthenaHQ, and BrightEdge automate this; a weekly cron with a thin script also works.</li> <li>Structured data alerts — Wire Google Search Console structured-data error reports into your team chat.</li> </ul> <h2 id="common-mistakes">Common Mistakes</h2> <ol> <li>Shipping schema once, then forgetting it. Frontmatter drifts, fields go missing, and the schema silently breaks. CI gates fix this.</li> <li>Building llms.txt by hand. It will go stale within a release cycle. Generate it from the content source.</li> <li>Blocking AI crawlers by default. Many starter robots.txt configs deny all unknown agents. Audit explicitly.</li> <li>Heavy client-side rendering with no SSR fallback. Most AI crawlers do not execute JavaScript reliably. Render core content on the server.</li> <li>Optimizing only the homepage. Citations land on deep pages. Apply the full GEO contract to every content template.</li> </ol> <h2 id="faq">FAQ</h2> <h3 id="q-does-llms-txt-actually-do-anything-in-2026">Q: Does llms.txt actually do anything in 2026?</h3> <p>It is a proposed standard, not an adopted one, and no major AI provider has publicly committed to consuming it in production as of early 2026. Adoption is strongest among developer-facing AI tools (coding assistants, retrieval frameworks). The cost to ship is low, so most teams treat it as a low-risk hedge rather than a load-bearing channel.</p> <h3 id="q-will-geo-replace-seo">Q: Will GEO replace SEO?</h3> <p>No. GEO extends SEO. Most GEO foundations — semantic HTML, structured data, canonical URLs, fast pages — are SEO foundations. Keep doing SEO and add the AI-specific layer on top.</p> <h3 id="q-which-ai-crawlers-should-i-allow-in-robots-txt">Q: Which AI crawlers should I allow in robots.txt?</h3> <p>At minimum, allow the user agents tied to live retrieval: OAI-SearchBot, ChatGPT-User, PerplexityBot, Perplexity-User, and ClaudeBot. Decide separately whether to allow training-oriented agents like GPTBot and Google-Extended based on your content licensing posture.</p> <h3 id="q-which-schema-type-should-i-prioritize">Q: Which schema type should I prioritize?</h3> <p>For most documentation and editorial sites, Article is the baseline. Layer FAQPage on Q&A sections and HowTo on tutorials — both formats mirror how AI systems present answers and tend to surface more often as citation sources.</p> <h3 id="q-do-i-need-both-a-sitemap-and-llms-txt">Q: Do I need both a sitemap and llms.txt?</h3> <p>Yes. sitemap.xml is for search-engine crawlers and is the source of truth for indexing. llms.txt is a curated, human-readable index aimed at LLMs and assistants. They serve different audiences and should both be auto-generated from your content source.</p></div><div style="margin-top:64px"><h2 style="font-size:18px;font-weight:600;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--border-default)">Bài viết liên quan</h2><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));gap:16px"><a style="text-decoration:none" data-related-article="what-is-geo" data-related-position="1" href="/vi/geo/what-is-geo"><div class="card"><span class="badge badge-green" style="margin-bottom:8px">guide</span><h3 style="font-size:15px;font-weight:600;color:var(--text-heading);margin-bottom:4px">What Is GEO? Generative Engine Optimization Defined</h3><p style="font-size:13px;color:var(--text-secondary);line-height:1.5">GEO (Generative Engine Optimization) is the practice of structuring content so AI search engines retrieve, understand, synthesize, and cite it in generated answers.</p></div></a><a style="text-decoration:none" data-related-article="ai-crawl-signals" data-related-position="2" href="/vi/technical/ai-crawl-signals"><div class="card"><span class="badge badge-green" style="margin-bottom:8px">reference</span><h3 style="font-size:15px;font-weight:600;color:var(--text-heading);margin-bottom:4px">AI Crawl Signals: How AI Discovers Content</h3><p style="font-size:13px;color:var(--text-secondary);line-height:1.5">Technical reference for the signals AI systems use to discover, access, and prioritize web content — including sitemaps, llms.txt, robots.txt, structured data, and HTTP headers.</p></div></a><a style="text-decoration:none" data-related-article="json-ld-for-ai-search" data-related-position="3" href="/vi/technical/json-ld-for-ai-search"><div class="card"><span class="badge badge-green" style="margin-bottom:8px">guide</span><h3 style="font-size:15px;font-weight:600;color:var(--text-heading);margin-bottom:4px">JSON-LD for AI Search: Complete Guide</h3><p style="font-size:13px;color:var(--text-secondary);line-height:1.5">How to implement JSON-LD structured data so AI search engines and traditional search both understand your content's type, authorship, and entities.</p></div></a></div></div></article><div style="padding-left:40px" class="toc-sidebar"><nav style="position:sticky;top:88px;font-size:13px;line-height:1.6;max-height:calc(100vh - 100px);overflow-y:auto"><div style="font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-cool-gray);margin-bottom:12px">Trên trang này</div><a href="#why-geo-is-a-developer-problem" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Why GEO Is a Developer Problem</a><a href="#developer-checklist" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Developer Checklist</a><a href="#infrastructure-one-time" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Infrastructure (one-time)</a><a href="#per-page-template-level" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Per-page (template-level)</a><a href="#build-pipeline" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Build pipeline</a><a href="#implementation-five-concrete-pieces" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Implementation: Five Concrete Pieces</a><a href="#1-json-ld-schema-component" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">1. JSON-LD Schema Component</a><a href="#2-llms-txt" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">2. llms.txt</a><a href="#3-robots-txt-for-ai-crawlers" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">3. Robots.txt for AI Crawlers</a><a href="#4-semantic-html-and-answer-first-prose" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">4. Semantic HTML and Answer-First Prose</a><a href="#5-ci-validation" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">5. CI Validation</a><a href="#framework-notes" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Framework Notes</a><a href="#monitoring-what-you-shipped" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Monitoring What You Shipped</a><a href="#common-mistakes" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Common Mistakes</a><a href="#faq" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">FAQ</a><a href="#q-does-llms-txt-actually-do-anything-in-2026" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Q: Does llms.txt actually do anything in 2026?</a><a href="#q-will-geo-replace-seo" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Q: Will GEO replace SEO?</a><a href="#q-which-ai-crawlers-should-i-allow-in-robots-txt" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Q: Which AI crawlers should I allow in robots.txt?</a><a href="#q-which-schema-type-should-i-prioritize" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Q: Which schema type should I prioritize?</a><a href="#q-do-i-need-both-a-sitemap-and-llms-txt" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Q: Do I need both a sitemap and llms.txt?</a></nav></div></div><style> @media (max-width: 1024px) { .toc-sidebar { display: none !important; } } @media (min-width: 1025px) { article { /* override grid for 3-col with TOC */ } } .article-tag-link:hover { border-color: var(--color-dark-green) !important; color: var(--text-primary) !important; background: rgba(0, 237, 100, 0.06) !important; } </style></main><section style="padding:64px 24px;background:var(--bg-surface);border-top:1px solid var(--border-subtle)"><div style="max-width:520px;margin:0 auto;text-align:center"><div style="font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-dark-green);margin-bottom:12px">Cập nhật tin tức</div><h2 style="font-family:var(--font-display);font-size:clamp(1.25rem, 3vw, 1.75rem);font-weight:400;color:var(--text-heading);margin-bottom:8px;line-height:1.3">Thông tin GEO & AI Search</h2><p style="font-size:14px;color:var(--text-secondary);line-height:1.7;margin-bottom:24px">Bài viết mới, cập nhật khung làm việc và phân tích ngành. Không spam, hủy đăng ký bất cứ lúc nào.</p><form style="display:flex;flex-wrap:wrap;gap:8px;max-width:420px;margin:0 auto"><input type="email" placeholder="email@cuaban.com" required="" style="flex:1;min-width:200px;padding:12px 16px;border-radius:var(--radius-pill);border:1px solid var(--border-default);background:var(--bg-page);color:var(--text-primary);font-family:var(--font-body);font-size:14px;outline:none;transition:border-color 0.2s ease" value=""/><button type="submit" class="btn btn-primary" style="padding:12px 24px;font-size:14px;opacity:1">Đăng ký</button></form></div></section><!--$--><!--/$--><footer style="background:var(--color-stelixx-dark);border-top:1px solid var(--color-teal-gray);padding:64px 24px 32px"><div style="max-width:1200px;margin:0 auto"><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));gap:48px;margin-bottom:48px"><div><div style="margin-bottom:16px"><img alt="Geodocs.dev" loading="lazy" width="140" height="32" decoding="async" data-nimg="1" style="color:transparent;height:24px;width:auto" src="/geodocs-logo-dark.svg"/></div><p style="font-size:13px;color:var(--color-cool-gray);line-height:1.6;max-width:220px">Kiến thức có cấu trúc cho khả năng hiển thị tìm kiếm AI. Tài liệu tham khảo chuẩn cho GEO, AEO và tối ưu hóa tìm kiếm AI.</p></div><div><h4 style="font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-stelixx-green);margin-bottom:16px">Học</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="/vi/geo/what-is-geo">What Is GEO?</a></li><li><a class="footer-link" href="/vi/aeo/what-is-aeo">What Is AEO?</a></li><li><a class="footer-link" href="/vi/geo/geo-vs-seo">GEO vs SEO</a></li><li><a class="footer-link" href="/vi/reference/geo-aeo-glossary">GEO Glossary</a></li></ul></div><div><h4 style="font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-stelixx-green);margin-bottom:16px">Xây dựng</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="/vi/technical/llms-txt">llms.txt Reference</a></li><li><a class="footer-link" href="/vi/technical/how-to-create-llms-txt">Create llms.txt</a></li><li><a class="footer-link" href="/vi/technical/structured-data-for-ai-search">Structured Data</a></li><li><a class="footer-link" href="/vi/technical/ai-txt">ai.txt Reference</a></li></ul></div><div><h4 style="font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-stelixx-green);margin-bottom:16px">Chiến lược</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="/vi/strategy/ai-visibility-measurement">AI Visibility</a></li><li><a class="footer-link" href="/vi/strategy/geo-content-strategy">Content Strategy</a></li><li><a class="footer-link" href="/vi/strategy/geo-roi-framework">GEO ROI</a></li><li><a class="footer-link" href="/vi/aeo/aeo-content-checklist">AEO Checklist</a></li></ul></div><div><h4 style="font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-stelixx-green);margin-bottom:16px">Tài nguyên</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="https://github.com/Geodocs-dev">GitHub</a></li><li><a class="footer-link" href="/vi/contact">Contact</a></li><li><a class="footer-link" href="/vi/tags">Tags</a></li><li><a class="footer-link" href="/vi/sitemap">HTML Sitemap</a></li><li><a class="footer-link" href="/sitemap.xml">XML Sitemap</a></li><li><a class="footer-link" href="/llms.txt">llms.txt</a></li><li><a class="footer-link" href="/ai.txt">ai.txt</a></li></ul></div></div><div style="border-top:1px solid var(--color-teal-gray);padding-top:24px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px"><p style="font-size:12px;color:var(--color-cool-gray)">© <!-- -->2026<!-- --> Geodocs.dev. <!-- -->Bảo lưu mọi quyền.</p><p style="font-size:12px;color:var(--color-cool-gray)"><a href="mailto:contact@geodocs.dev" class="footer-link">contact@geodocs.dev</a> · <!-- -->Xây dựng cho con người và AI agents.</p></div></div><style> .footer-link { font-size: 13px; color: var(--color-silver-teal); text-decoration: none; transition: color 0.2s ease; } .footer-link:hover { color: var(--color-white); } </style></footer><script src="/_next/static/chunks/0_k5kz-r4593u.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[86402,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"GTMNoScript\"]\n3:I[59919,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"ThemeProvider\"]\n4:\"$Sreact.suspense\"\n5:I[86402,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"PostHogPageView\"]\n6:I[39756,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"default\"]\n7:I[37457,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"default\"]\n9:I[35264,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"AlgoliaSearchDialog\"]\na:I[56414,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"GeolifyAIDialog\"]\nb:I[86402,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"Analytics\"]\ne:I[97367,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"OutletBoundary\"]\n11:I[97367,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"ViewportBoundary\"]\n13:I[97367,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"MetadataBoundary\"]\n15:I[63491,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/01c-w9f482.ic.js\"],\"default\"]\n:HL[\"/_next/static/chunks/0no7mk~ta4ofx.css\",\"style\"]\n:HL[\"/fonts/Inter-Variable.woff2\",\"font\",{\"crossOrigin\":\"anonymous\",\"type\":\"font/woff2\"}]\n:HL[\"/fonts/Lora-Variable.woff2\",\"font\",{\"crossOrigin\":\"anonymous\",\"type\":\"font/woff2\"}]\n:HL[\"/fonts/JetBrainsMono-Variable.woff2\",\"font\",{\"crossOrigin\":\"anonymous\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"vi\",\"geo\",\"geo-for-developers\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[[\"lang\",\"vi\",\"d\",null],{\"children\":[[\"section\",\"geo\",\"d\",null],{\"children\":[[\"slug\",\"geo-for-developers\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0no7mk~ta4ofx.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/027z30oepz30q.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/0to0fsue-2tey.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/05cra..ka3fzk.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"id\":\"theme-initializer\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem('geodocs-theme');if(t==='dark'){document.documentElement.setAttribute('data-theme','dark')}else{document.documentElement.setAttribute('data-theme','light')}}catch(e){}})()\"}}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/fonts/Inter-Variable.woff2\",\"as\":\"font\",\"type\":\"font/woff2\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/fonts/Lora-Variable.woff2\",\"as\":\"font\",\"type\":\"font/woff2\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/fonts/JetBrainsMono-Variable.woff2\",\"as\":\"font\",\"type\":\"font/woff2\",\"crossOrigin\":\"anonymous\"}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{\"children\":[[\"$\",\"$4\",null,{\"fallback\":null,\"children\":[\"$\",\"$L5\",null,{}]}],[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$L8\",[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{}]]}],[\"$\",\"$Lb\",null,{}]]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/03hsb-t4rgwk4.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$Lc\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$Ld\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0az-wrvsrozq0.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$4\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@f\"}]}]]}],{},null,false,null]},null,false,\"$@10\"]},null,false,\"$@10\"]},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L11\",null,{\"children\":\"$L12\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$4\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L14\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0no7mk~ta4ofx.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"wY6KhsskW3tmEWHTlRFd0\"}\n"])</script><script>self.__next_f.push([1,"16:[]\n10:\"$W16\"\n"])</script><script>self.__next_f.push([1,"17:I[2971,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/03hsb-t4rgwk4.js\"],\"Header\"]\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"$L17\",null,{\"lang\":\"en\",\"dict\":{\"nav\":{\"startHere\":\"Start Here\",\"geo\":\"GEO\",\"aeo\":\"AEO\",\"technical\":\"Technical\",\"strategy\":\"Strategy\",\"reference\":\"Reference\",\"tools\":\"Tools\",\"search\":\"Search docs...\",\"askGeolifyAI\":\"Ask GeolifyAI\",\"beta\":\"Beta\"},\"home\":{\"tagline\":\"The Canonical Knowledge System\",\"headline\":\"Structured knowledge for\",\"headlineHighlight\":\"AI search visibility\",\"subtitle\":\"GEO, AEO, and AI search optimization — defined, structured, and operationalized. Built for SEO professionals, developers, content teams, and AI agents.\",\"ctaPrimary\":\"Start with GEO\",\"ctaSecondary\":\"Read llms.txt spec\",\"trustSignals\":{\"answerFirst\":\"Answer-first content\",\"aiCitable\":\"AI-citable definitions\",\"machineReadable\":\"Machine-readable specs\",\"openFree\":\"Open \u0026 free\"},\"essentialReading\":\"Essential Reading\",\"geoPlaybooks\":\"GEO Playbooks\",\"playbooksSubtitle\":\"Canonical definitions, comparisons, and implementation guides. Start here to build your GEO foundation.\",\"readArticle\":\"Read article\",\"operatorsToolkit\":\"Operator's Toolkit\",\"technicalStandards\":\"Technical Standards for AI Search\",\"technicalSubtitle\":\"Implementation specs, file standards, and measurement frameworks. Everything you need to make your content AI-ready.\",\"knowledgeMap\":\"Knowledge Map\",\"browseBySection\":\"Browse by Section\",\"browseSubtitle\":\"Every concept has one canonical page. Explore the knowledge graph organized by domain.\",\"aiNativeDoc\":\"AI-Native Documentation\",\"builtForHumans\":\"Built for humans.\",\"readableByAI\":\"Readable by AI.\",\"aiNativeSubtitle\":\"Every page on geodocs.dev includes AI summary blocks, structured frontmatter, and machine-readable specs. Our content is designed to be cited by AI systems worldwide.\",\"aiContentSpec\":\"AI Content Spec\",\"viewLlmsTxt\":\"View llms.txt\",\"comparison\":{\"badge\":\"84% of AI answers synthesize from structured answer-first content\",\"title\":\"The Shift from Search Engines to Answer Engines\",\"subtitle\":\"SEO optimizes for human clicks on traditional SERPs. GEO \u0026 AEO optimize for machine comprehension, answer extraction, and AI citations.\",\"seoTitle\":\"Traditional SEO\",\"seoTagline\":\"Optimizing for SERP Blue Links\",\"geoTitle\":\"GEO \u0026 AEO Framework\",\"geoTagline\":\"Optimizing for AI Answer Citations\",\"criteria\":{\"goalLabel\":\"Primary Goal\",\"seoGoal\":\"Rank #1 on traditional search results\",\"geoGoal\":\"Become the cited authority in AI-generated answers\",\"metricLabel\":\"Core Metric\",\"seoMetric\":\"Organic Traffic, Clicks \u0026 SERP Impressions\",\"geoMetric\":\"AI Citation Share, Brand Sentiment \u0026 Direct Answer Rate\",\"formatLabel\":\"Content Structure\",\"seoFormat\":\"Long-form text optimized for keyword density \u0026 readability\",\"geoFormat\":\"Answer-First TL;DRs, RAG-friendly chunks \u0026 Machine Specs\",\"discoveryLabel\":\"Discovery Engine\",\"seoDiscovery\":\"Googlebot crawl, indexing \u0026 PageRank links\",\"geoDiscovery\":\"RAG vector retrieval, llms.txt, ai.txt \u0026 JSON-LD Schema\"},\"cta\":\"Explore full GEO vs SEO guide\"}},\"sections\":{\"geo\":{\"title\":\"GEO - Generative Engine Optimization\",\"description\":\"Guides, definitions, and frameworks for optimizing content visibility in AI-generated answers.\"},\"aeo\":{\"title\":\"AEO - Answer Engine Optimization\",\"description\":\"How to structure content so AI systems can extract and cite direct answers.\"},\"technical\":{\"title\":\"Technical Implementation\",\"description\":\"llms.txt, ai.txt, structured data, and other technical specs for AI search readiness.\"},\"strategy\":{\"title\":\"Strategy \u0026 Frameworks\",\"description\":\"Business frameworks for AI search visibility — ROI, measurement, and content planning.\"},\"reference\":{\"title\":\"Reference\",\"description\":\"Glossary, cheatsheets, and canonical definitions for GEO/AEO terminology.\"},\"tools\":{\"title\":\"Tools \u0026 Platforms\",\"description\":\"Evaluations, comparisons, and stack recommendations for AI search optimization tools.\"},\"case-studies\":{\"title\":\"Case Studies\",\"description\":\"Evidence-based examples with real data — before/after results and industry applications.\"},\"ai-agents\":{\"title\":\"AI Agents\",\"description\":\"Machine-readable specs and documentation designed specifically for AI parsers and bots.\"}},\"article\":{\"minRead\":\"{min} min read\",\"words\":\"{count} words\",\"updated\":\"Updated {date}\",\"relatedArticles\":\"Related Articles\",\"onThisPage\":\"On this page\",\"topics\":\"Topics\",\"copy\":\"Copy\",\"copied\":\"Copied!\"},\"tags\":{\"browseByTopic\":\"Browse by Topic\",\"exploreTopics\":\"Explore {count} topics across all GEO, AEO, and AI search optimization articles.\",\"articlesTaggedWith\":\"{count} article tagged with \\\"{tag}\\\"|{count} articles tagged with \\\"{tag}\\\"\"},\"newsletter\":{\"stayUpdated\":\"Stay Updated\",\"title\":\"GEO \u0026 AI Search Insights\",\"description\":\"New articles, framework updates, and industry analysis. No spam, unsubscribe anytime.\",\"placeholder\":\"your@email.com\",\"subscribe\":\"Subscribe\",\"success\":\"You're subscribed! We'll keep you updated.\",\"error\":\"Something went wrong. Please try again.\"},\"footer\":{\"learn\":\"Learn\",\"build\":\"Build\",\"strategy\":\"Strategy\",\"resources\":\"Resources\",\"description\":\"Structured knowledge for AI search visibility. The canonical reference for GEO, AEO, and AI search optimization.\",\"allRightsReserved\":\"All rights reserved.\",\"builtForHumansAndAI\":\"Built for humans and AI agents.\"},\"common\":{\"articles\":\"articles\",\"article\":\"article\",\"page\":\"Page {current} of {total}\",\"noArticles\":\"No published articles in this section yet.\",\"checkBackSoon\":\"Content is being actively developed. Check back soon.\",\"loadingArticles\":\"Loading articles…\",\"prev\":\"← Prev\",\"next\":\"Next →\",\"goHome\":\"Go home\",\"startWithGEO\":\"Start with GEO\"},\"notFound\":{\"label\":\"404 - Page Not Found\",\"title\":\"This page doesn't exist yet.\",\"description\":\"The content you're looking for may be in development. Geodocs.dev is actively building the canonical knowledge base for GEO and AEO.\"},\"error\":{\"title\":\"Something went wrong\",\"description\":\"An unexpected error occurred. Our team has been notified.\",\"tryAgain\":\"Try Again\"},\"contact\":{\"getInTouch\":\"Get In Touch\",\"contactUs\":\"Contact Us\",\"heroDescription\":\"Have a question about GEO, AEO, or AI search optimization? Want to collaborate or contribute? We'd love to hear from you.\",\"name\":\"Name\",\"email\":\"Email\",\"subject\":\"Subject\",\"subjectPlaceholder\":\"What is this about?\",\"namePlaceholder\":\"Your name\",\"message\":\"Message\",\"messagePlaceholder\":\"Tell us more...\",\"sendMessage\":\"Send Message\",\"sending\":\"Sending...\",\"messageSent\":\"Message sent!\",\"thankYou\":\"Thank you for reaching out. We'll get back to you within 1-2 business days.\",\"sendAnother\":\"Send another message\",\"emailDirectly\":\"Or email us directly at\",\"validationName\":\"Please enter your name.\",\"validationEmail\":\"Please enter a valid email address.\",\"validationMessage\":\"Please enter a message (at least 10 characters).\",\"networkError\":\"Network error. Please try again.\",\"genericError\":\"Something went wrong. Please try again.\"},\"languagePicker\":{\"label\":\"Language\"},\"sitemap\":{\"title\":\"HTML Sitemap\",\"subtitle\":\"Complete directory of canonical GEO, AEO, and AI search visibility documentation.\",\"sectionsTitle\":\"Content Silos\",\"mainPagesTitle\":\"Core Pages \u0026 Specifications\",\"tagsTitle\":\"Browse by Topic\",\"totalArticles\":\"{count} published articles\",\"totalSections\":\"8 Section Silos\",\"quickJump\":\"Quick Jump:\",\"englishFallback\":\"EN Original\"}}}],\"$L18\",\"$L19\"]\n"])</script><script>self.__next_f.push([1,"1a:I[22016,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/03hsb-t4rgwk4.js\",\"/_next/static/chunks/0az-wrvsrozq0.js\"],\"\"]\n1b:I[5500,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/03hsb-t4rgwk4.js\"],\"Image\"]\n18:[\"$\",\"main\",null,{\"style\":{\"minHeight\":\"60vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"textAlign\":\"center\",\"padding\":\"80px 24px\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":3,\"color\":\"var(--color-cool-gray)\",\"marginBottom\":16},\"children\":\"404 - Page Not Found\"}],[\"$\",\"h1\",null,{\"style\":{\"fontFamily\":\"var(--font-display)\",\"fontSize\":\"clamp(2rem, 4vw, 3rem)\",\"fontWeight\":400,\"color\":\"var(--text-heading)\",\"marginBottom\":16},\"children\":\"This page doesn't exist yet.\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":16,\"color\":\"var(--color-cool-gray)\",\"lineHeight\":1.7,\"maxWidth\":480,\"margin\":\"0 auto 32px\"},\"children\":\"The content you're looking for may be in development. Geodocs.dev is actively building the canonical knowledge base for GEO and AEO.\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"flex\",\"justifyContent\":\"center\",\"gap\":12},\"children\":[[\"$\",\"$L1a\",null,{\"href\":\"/\",\"className\":\"btn btn-primary\",\"children\":\"Go home\"}],[\"$\",\"$L1a\",null,{\"href\":\"/geo/what-is-geo\",\"className\":\"btn btn-outline\",\"children\":\"Start with GEO\"}]]}]]}]}]\n"])</script><script>self.__next_f.push([1,"19:[\"$\",\"footer\",null,{\"style\":{\"background\":\"var(--color-stelixx-dark)\",\"borderTop\":\"1px solid var(--color-teal-gray)\",\"padding\":\"64px 24px 32px\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"maxWidth\":1200,\"margin\":\"0 auto\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"display\":\"grid\",\"gridTemplateColumns\":\"repeat(auto-fit, minmax(180px, 1fr))\",\"gap\":48,\"marginBottom\":48},\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"style\":{\"marginBottom\":16},\"children\":[\"$\",\"$L1b\",null,{\"src\":\"/geodocs-logo-dark.svg\",\"alt\":\"Geodocs.dev\",\"width\":140,\"height\":32,\"style\":{\"height\":24,\"width\":\"auto\"}}]}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--color-cool-gray)\",\"lineHeight\":1.6,\"maxWidth\":220},\"children\":\"Structured knowledge for AI search visibility. The canonical reference for GEO, AEO, and AI search optimization.\"}]]}],[[\"$\",\"div\",\"Learn\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-stelixx-green)\",\"marginBottom\":16},\"children\":\"Learn\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/geo/what-is-geo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/geo/what-is-geo\",\"className\":\"footer-link\",\"children\":\"What Is GEO?\"}]}],[\"$\",\"li\",\"/aeo/what-is-aeo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/aeo/what-is-aeo\",\"className\":\"footer-link\",\"children\":\"What Is AEO?\"}]}],[\"$\",\"li\",\"/geo/geo-vs-seo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/geo/geo-vs-seo\",\"className\":\"footer-link\",\"children\":\"GEO vs SEO\"}]}],[\"$\",\"li\",\"/reference/geo-aeo-glossary\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/reference/geo-aeo-glossary\",\"className\":\"footer-link\",\"children\":\"GEO Glossary\"}]}]]}]]}],[\"$\",\"div\",\"Build\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-stelixx-green)\",\"marginBottom\":16},\"children\":\"Build\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/technical/llms-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/llms-txt\",\"className\":\"footer-link\",\"children\":\"llms.txt Reference\"}]}],[\"$\",\"li\",\"/technical/how-to-create-llms-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/how-to-create-llms-txt\",\"className\":\"footer-link\",\"children\":\"Create llms.txt\"}]}],[\"$\",\"li\",\"/technical/structured-data-for-ai-search\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/structured-data-for-ai-search\",\"className\":\"footer-link\",\"children\":\"Structured Data\"}]}],[\"$\",\"li\",\"/technical/ai-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/ai-txt\",\"className\":\"footer-link\",\"children\":\"ai.txt Reference\"}]}]]}]]}],[\"$\",\"div\",\"Strategy\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-stelixx-green)\",\"marginBottom\":16},\"children\":\"Strategy\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/strategy/ai-visibility-measurement\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/strategy/ai-visibility-measurement\",\"className\":\"footer-link\",\"children\":\"AI Visibility\"}]}],[\"$\",\"li\",\"/strategy/geo-content-strategy\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/strategy/geo-content-strategy\",\"className\":\"footer-link\",\"children\":\"Content Strategy\"}]}],[\"$\",\"li\",\"/strategy/geo-roi-framework\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/strategy/geo-roi-framework\",\"className\":\"footer-link\",\"children\":\"GEO ROI\"}]}],[\"$\",\"li\",\"/aeo/aeo-content-checklist\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/aeo/aeo-content-checklist\",\"className\":\"footer-link\",\"children\":\"AEO Checklist\"}]}]]}]]}],[\"$\",\"div\",\"Resources\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-stelixx-green)\",\"marginBottom\":16},\"children\":\"Resources\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"https://github.com/Geodocs-dev\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"https://github.com/Geodocs-dev\",\"className\":\"footer-link\",\"children\":\"GitHub\"}]}],[\"$\",\"li\",\"/contact\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/contact\",\"className\":\"footer-link\",\"children\":\"Contact\"}]}],[\"$\",\"li\",\"/tags\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/tags\",\"className\":\"footer-link\",\"children\":\"Tags\"}]}],[\"$\",\"li\",\"/sitemap\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/sitemap\",\"className\":\"footer-link\",\"children\":\"HTML Sitemap\"}]}],\"$L1c\",\"$L1d\",\"$L1e\"]}]]}]]]}],\"$L1f\"]}],\"$L20\"]}]\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"script\",null,{\"id\":\"lang-setter\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"document.documentElement.lang=\\\"vi\\\";\"}}],[\"$\",\"$L17\",null,{\"lang\":\"vi\",\"dict\":{\"nav\":{\"startHere\":\"Bắt đầu\",\"geo\":\"GEO\",\"aeo\":\"AEO\",\"technical\":\"Kỹ thuật\",\"strategy\":\"Chiến lược\",\"reference\":\"Tham khảo\",\"tools\":\"Công cụ\",\"search\":\"Tìm kiếm tài liệu...\",\"askGeolifyAI\":\"Hỏi GeolifyAI\",\"beta\":\"Beta\"},\"home\":{\"tagline\":\"Hệ thống kiến thức chuẩn\",\"headline\":\"Kiến thức có cấu trúc cho\",\"headlineHighlight\":\"khả năng hiển thị trên AI Search\",\"subtitle\":\"GEO, AEO và tối ưu hóa tìm kiếm AI — được định nghĩa, cấu trúc hóa và vận hành. Dành cho chuyên gia SEO, lập trình viên, đội ngũ nội dung và AI agents.\",\"ctaPrimary\":\"Bắt đầu với GEO\",\"ctaSecondary\":\"Đọc thông số llms.txt\",\"trustSignals\":{\"answerFirst\":\"Nội dung trả lời trực tiếp\",\"aiCitable\":\"Định nghĩa trích dẫn được bởi AI\",\"machineReadable\":\"Thông số đọc được bởi máy\",\"openFree\":\"Mở \u0026 miễn phí\"},\"essentialReading\":\"Đọc thiết yếu\",\"geoPlaybooks\":\"Cẩm nang GEO\",\"playbooksSubtitle\":\"Định nghĩa chuẩn, so sánh và hướng dẫn triển khai. Bắt đầu tại đây để xây dựng nền tảng GEO.\",\"readArticle\":\"Đọc bài viết\",\"operatorsToolkit\":\"Bộ công cụ vận hành\",\"technicalStandards\":\"Tiêu chuẩn kỹ thuật cho AI Search\",\"technicalSubtitle\":\"Thông số triển khai, chuẩn tệp và khung đo lường. Mọi thứ bạn cần để nội dung sẵn sàng cho AI.\",\"knowledgeMap\":\"Bản đồ kiến thức\",\"browseBySection\":\"Duyệt theo chủ đề\",\"browseSubtitle\":\"Mỗi khái niệm có một trang chuẩn. Khám phá đồ thị kiến thức được tổ chức theo lĩnh vực.\",\"aiNativeDoc\":\"Tài liệu AI-Native\",\"builtForHumans\":\"Xây dựng cho con người.\",\"readableByAI\":\"Đọc được bởi AI.\",\"aiNativeSubtitle\":\"Mỗi trang trên geodocs.dev bao gồm khối tóm tắt AI, frontmatter có cấu trúc và thông số đọc được bởi máy. Nội dung của chúng tôi được thiết kế để được trích dẫn bởi các hệ thống AI trên toàn thế giới.\",\"aiContentSpec\":\"Thông số nội dung AI\",\"viewLlmsTxt\":\"Xem llms.txt\",\"comparison\":{\"badge\":\"84% câu trả lời AI tổng hợp từ nội dung có cấu trúc Answer-First\",\"title\":\"Sự dịch chuyển từ Search Engine sang Answer Engine\",\"subtitle\":\"SEO tối ưu hóa cho lượt nhấp của người dùng trên SERP. GEO \u0026 AEO tối ưu hóa cho khả năng đọc hiểu của máy, trích xuất câu trả lời và trích dẫn AI.\",\"seoTitle\":\"SEO Truyền thống\",\"seoTagline\":\"Tối ưu hóa cho kết quả liên kết xanh SERP\",\"geoTitle\":\"Khung GEO \u0026 AEO\",\"geoTagline\":\"Tối ưu hóa cho trích dẫn trong AI Answer\",\"criteria\":{\"goalLabel\":\"Mục tiêu chính\",\"seoGoal\":\"Xếp hạng top 1 trên kết quả tìm kiếm truyền thống\",\"geoGoal\":\"Trở thành nguồn uy tín được trích dẫn trong AI Answer\",\"metricLabel\":\"Thước đo cốt lõi\",\"seoMetric\":\"Traffic tự nhiên, lượt nhấp (CTR) \u0026 SERP Impressions\",\"geoMetric\":\"Tỷ lệ trích dẫn AI, Brand Sentiment \u0026 Mức trích xuất\",\"formatLabel\":\"Cấu trúc nội dung\",\"seoFormat\":\"Văn bản dài tối ưu cho mật độ từ khóa \u0026 trải nghiệm đọc\",\"geoFormat\":\"Tóm tắt Answer-First, RAG-Friendly Chunks \u0026 Machine Specs\",\"discoveryLabel\":\"Cơ chế truy xuất\",\"seoDiscovery\":\"Googlebot Crawl, Indexing \u0026 PageRank Link\",\"geoDiscovery\":\"RAG Vector Retrieval, llms.txt, ai.txt \u0026 JSON-LD Schema\"},\"cta\":\"Xem hướng dẫn chi tiết GEO vs SEO\"}},\"sections\":{\"geo\":{\"title\":\"GEO - Tối ưu hóa công cụ tạo sinh\",\"description\":\"Hướng dẫn, định nghĩa và khung làm việc để tối ưu khả năng hiển thị nội dung trong câu trả lời do AI tạo ra.\"},\"aeo\":{\"title\":\"AEO - Tối ưu hóa công cụ trả lời\",\"description\":\"Cách cấu trúc nội dung để hệ thống AI có thể trích xuất và trích dẫn câu trả lời trực tiếp.\"},\"technical\":{\"title\":\"Triển khai kỹ thuật\",\"description\":\"llms.txt, ai.txt, dữ liệu có cấu trúc và các thông số kỹ thuật khác cho sự sẵn sàng tìm kiếm AI.\"},\"strategy\":{\"title\":\"Chiến lược \u0026 Khung làm việc\",\"description\":\"Khung kinh doanh cho khả năng hiển thị tìm kiếm AI — ROI, đo lường và lập kế hoạch nội dung.\"},\"reference\":{\"title\":\"Tham khảo\",\"description\":\"Bảng thuật ngữ, cheatsheet và định nghĩa chuẩn cho thuật ngữ GEO/AEO.\"},\"tools\":{\"title\":\"Công cụ \u0026 Nền tảng\",\"description\":\"Đánh giá, so sánh và khuyến nghị bộ công cụ tối ưu hóa tìm kiếm AI.\"},\"case-studies\":{\"title\":\"Nghiên cứu điển hình\",\"description\":\"Ví dụ dựa trên bằng chứng với dữ liệu thực — kết quả trước/sau và ứng dụng ngành.\"},\"ai-agents\":{\"title\":\"AI Agents\",\"description\":\"Thông số và tài liệu đọc được bởi máy, thiết kế riêng cho trình phân tích cú pháp và bot AI.\"}},\"article\":{\"minRead\":\"{min} phút đọc\",\"words\":\"{count} từ\",\"updated\":\"Cập nhật {date}\",\"relatedArticles\":\"Bài viết liên quan\",\"onThisPage\":\"Trên trang này\",\"topics\":\"Chủ đề\",\"copy\":\"Sao chép\",\"copied\":\"Đã sao chép!\"},\"tags\":{\"browseByTopic\":\"Duyệt theo chủ đề\",\"exploreTopics\":\"Khám phá {count} chủ đề trên tất cả bài viết về GEO, AEO và tối ưu hóa tìm kiếm AI.\",\"articlesTaggedWith\":\"{count} bài viết được gắn thẻ \\\"{tag}\\\"\"},\"newsletter\":{\"stayUpdated\":\"Cập nhật tin tức\",\"title\":\"Thông tin GEO \u0026 AI Search\",\"description\":\"Bài viết mới, cập nhật khung làm việc và phân tích ngành. Không spam, hủy đăng ký bất cứ lúc nào.\",\"placeholder\":\"email@cuaban.com\",\"subscribe\":\"Đăng ký\",\"success\":\"Bạn đã đăng ký! Chúng tôi sẽ cập nhật cho bạn.\",\"error\":\"Đã có lỗi xảy ra. Vui lòng thử lại.\"},\"footer\":{\"learn\":\"Học\",\"build\":\"Xây dựng\",\"strategy\":\"Chiến lược\",\"resources\":\"Tài nguyên\",\"description\":\"Kiến thức có cấu trúc cho khả năng hiển thị tìm kiếm AI. Tài liệu tham khảo chuẩn cho GEO, AEO và tối ưu hóa tìm kiếm AI.\",\"allRightsReserved\":\"Bảo lưu mọi quyền.\",\"builtForHumansAndAI\":\"Xây dựng cho con người và AI agents.\"},\"common\":{\"articles\":\"bài viết\",\"article\":\"bài viết\",\"page\":\"Trang {current}/{total}\",\"noArticles\":\"Chưa có bài viết nào được xuất bản trong mục này.\",\"checkBackSoon\":\"Nội dung đang được phát triển. Hãy quay lại sớm.\",\"loadingArticles\":\"Đang tải bài viết…\",\"prev\":\"← Trước\",\"next\":\"Tiếp →\",\"goHome\":\"Về trang chủ\",\"startWithGEO\":\"Bắt đầu với GEO\"},\"notFound\":{\"label\":\"404 - Không tìm thấy trang\",\"title\":\"Trang này chưa tồn tại.\",\"description\":\"Nội dung bạn đang tìm có thể đang được phát triển. Geodocs.dev đang tích cực xây dựng kho kiến thức chuẩn cho GEO và AEO.\"},\"error\":{\"title\":\"Đã xảy ra lỗi\",\"description\":\"Đã xảy ra lỗi không mong muốn. Đội ngũ của chúng tôi đã được thông báo.\",\"tryAgain\":\"Thử lại\"},\"contact\":{\"getInTouch\":\"Liên hệ\",\"contactUs\":\"Liên hệ với chúng tôi\",\"heroDescription\":\"Bạn có câu hỏi về GEO, AEO hoặc tối ưu hóa tìm kiếm AI? Muốn hợp tác hoặc đóng góp? Chúng tôi rất muốn nghe từ bạn.\",\"name\":\"Họ tên\",\"email\":\"Email\",\"subject\":\"Chủ đề\",\"subjectPlaceholder\":\"Nội dung liên hệ?\",\"namePlaceholder\":\"Tên của bạn\",\"message\":\"Tin nhắn\",\"messagePlaceholder\":\"Chia sẻ thêm...\",\"sendMessage\":\"Gửi tin nhắn\",\"sending\":\"Đang gửi...\",\"messageSent\":\"Đã gửi tin nhắn!\",\"thankYou\":\"Cảm ơn bạn đã liên hệ. Chúng tôi sẽ phản hồi trong 1-2 ngày làm việc.\",\"sendAnother\":\"Gửi tin nhắn khác\",\"emailDirectly\":\"Hoặc gửi email trực tiếp tới\",\"validationName\":\"Vui lòng nhập họ tên.\",\"validationEmail\":\"Vui lòng nhập địa chỉ email hợp lệ.\",\"validationMessage\":\"Vui lòng nhập tin nhắn (ít nhất 10 ký tự).\",\"networkError\":\"Lỗi mạng. Vui lòng thử lại.\",\"genericError\":\"Đã có lỗi xảy ra. Vui lòng thử lại.\"},\"languagePicker\":{\"label\":\"Ngôn ngữ\"},\"sitemap\":{\"title\":\"Sơ đồ trang web (HTML Sitemap)\",\"subtitle\":\"Thư mục toàn diện tài liệu chuẩn về GEO, AEO và khả năng hiển thị trên tìm kiếm AI.\",\"sectionsTitle\":\"Các nhóm nội dung\",\"mainPagesTitle\":\"Trang chính \u0026 Thông số kỹ thuật\",\"tagsTitle\":\"Duyệt theo chủ đề\",\"totalArticles\":\"{count} bài viết đã xuất bản\",\"totalSections\":\"8 Nhóm chuyên mục\",\"quickJump\":\"Nhảy nhanh:\",\"englishFallback\":\"Bản gốc EN\"}}}],\"$L21\",\"$L22\"]\n"])</script><script>self.__next_f.push([1,"2a:I[43937,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/03hsb-t4rgwk4.js\",\"/_next/static/chunks/0az-wrvsrozq0.js\"],\"ArticleTracker\"]\n1c:[\"$\",\"li\",\"/sitemap.xml\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/sitemap.xml\",\"className\":\"footer-link\",\"children\":\"XML Sitemap\"}]}]\n1d:[\"$\",\"li\",\"/llms.txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/llms.txt\",\"className\":\"footer-link\",\"children\":\"llms.txt\"}]}]\n1e:[\"$\",\"li\",\"/ai.txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/ai.txt\",\"className\":\"footer-link\",\"children\":\"ai.txt\"}]}]\n1f:[\"$\",\"div\",null,{\"style\":{\"borderTop\":\"1px solid var(--color-teal-gray)\",\"paddingTop\":24,\"display\":\"flex\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\",\"flexWrap\":\"wrap\",\"gap\":16},\"children\":[[\"$\",\"p\",null,{\"style\":{\"fontSize\":12,\"color\":\"var(--color-cool-gray)\"},\"children\":[\"© \",2026,\" Geodocs.dev. \",\"All rights reserved.\"]}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":12,\"color\":\"var(--color-cool-gray)\"},\"children\":[[\"$\",\"a\",null,{\"href\":\"mailto:contact@geodocs.dev\",\"className\":\"footer-link\",\"children\":\"contact@geodocs.dev\"}],\" · \",\"Built for humans and AI agents.\"]}]]}]\n20:[\"$\",\"style\",null,{\"children\":\"\\n .footer-link {\\n font-size: 13px;\\n color: var(--color-silver-teal);\\n text-decoration: none;\\n transition: color 0.2s ease;\\n }\\n .footer-link:hover {\\n color: var(--color-white);\\n }\\n \"}]\n21:[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"22:[\"$\",\"footer\",null,{\"style\":{\"background\":\"var(--color-stelixx-dark)\",\"borderTop\":\"1px solid var(--color-teal-gray)\",\"padding\":\"64px 24px 32px\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"maxWidth\":1200,\"margin\":\"0 auto\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"display\":\"grid\",\"gridTemplateColumns\":\"repeat(auto-fit, minmax(180px, 1fr))\",\"gap\":48,\"marginBottom\":48},\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"style\":{\"marginBottom\":16},\"children\":[\"$\",\"$L1b\",null,{\"src\":\"/geodocs-logo-dark.svg\",\"alt\":\"Geodocs.dev\",\"width\":140,\"height\":32,\"style\":{\"height\":24,\"width\":\"auto\"}}]}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--color-cool-gray)\",\"lineHeight\":1.6,\"maxWidth\":220},\"children\":\"Kiến thức có cấu trúc cho khả năng hiển thị tìm kiếm AI. Tài liệu tham khảo chuẩn cho GEO, AEO và tối ưu hóa tìm kiếm AI.\"}]]}],[[\"$\",\"div\",\"Học\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-stelixx-green)\",\"marginBottom\":16},\"children\":\"Học\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/vi/geo/what-is-geo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/geo/what-is-geo\",\"className\":\"footer-link\",\"children\":\"What Is GEO?\"}]}],[\"$\",\"li\",\"/vi/aeo/what-is-aeo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/aeo/what-is-aeo\",\"className\":\"footer-link\",\"children\":\"What Is AEO?\"}]}],[\"$\",\"li\",\"/vi/geo/geo-vs-seo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/geo/geo-vs-seo\",\"className\":\"footer-link\",\"children\":\"GEO vs SEO\"}]}],[\"$\",\"li\",\"/vi/reference/geo-aeo-glossary\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/reference/geo-aeo-glossary\",\"className\":\"footer-link\",\"children\":\"GEO Glossary\"}]}]]}]]}],[\"$\",\"div\",\"Xây dựng\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-stelixx-green)\",\"marginBottom\":16},\"children\":\"Xây dựng\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/vi/technical/llms-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/technical/llms-txt\",\"className\":\"footer-link\",\"children\":\"llms.txt Reference\"}]}],[\"$\",\"li\",\"/vi/technical/how-to-create-llms-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/technical/how-to-create-llms-txt\",\"className\":\"footer-link\",\"children\":\"Create llms.txt\"}]}],[\"$\",\"li\",\"/vi/technical/structured-data-for-ai-search\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/technical/structured-data-for-ai-search\",\"className\":\"footer-link\",\"children\":\"Structured Data\"}]}],[\"$\",\"li\",\"/vi/technical/ai-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/technical/ai-txt\",\"className\":\"footer-link\",\"children\":\"ai.txt Reference\"}]}]]}]]}],[\"$\",\"div\",\"Chiến lược\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-stelixx-green)\",\"marginBottom\":16},\"children\":\"Chiến lược\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/vi/strategy/ai-visibility-measurement\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/strategy/ai-visibility-measurement\",\"className\":\"footer-link\",\"children\":\"AI Visibility\"}]}],[\"$\",\"li\",\"/vi/strategy/geo-content-strategy\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/strategy/geo-content-strategy\",\"className\":\"footer-link\",\"children\":\"Content Strategy\"}]}],[\"$\",\"li\",\"/vi/strategy/geo-roi-framework\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/strategy/geo-roi-framework\",\"className\":\"footer-link\",\"children\":\"GEO ROI\"}]}],[\"$\",\"li\",\"/vi/aeo/aeo-content-checklist\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/aeo/aeo-content-checklist\",\"className\":\"footer-link\",\"children\":\"AEO Checklist\"}]}]]}]]}],[\"$\",\"div\",\"Tài nguyên\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-stelixx-green)\",\"marginBottom\":16},\"children\":\"Tài nguyên\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"https://github.com/Geodocs-dev\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"https://github.com/Geodocs-dev\",\"className\":\"footer-link\",\"children\":\"GitHub\"}]}],[\"$\",\"li\",\"/vi/contact\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/contact\",\"className\":\"footer-link\",\"children\":\"Contact\"}]}],[\"$\",\"li\",\"/vi/tags\",{\"children\":\"$L23\"}],\"$L24\",\"$L25\",\"$L26\",\"$L27\"]}]]}]]]}],\"$L28\"]}],\"$L29\"]}]\n"])</script><script>self.__next_f.push([1,"2b:T8c5,"])</script><script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@type\":\"TechArticle\",\"@id\":\"https://geodocs.dev/geo/geo-for-developers#article\",\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://geodocs.dev/geo/geo-for-developers\"},\"headline\":\"GEO for Developers: Technical Implementation Guide\",\"description\":\"A developer-focused guide to implementing GEO: JSON-LD schema, llms.txt, semantic HTML, sitemap optimization, and CI validation for AI search visibility.\",\"image\":\"https://geodocs.dev/api/og?title=GEO%20for%20Developers%3A%20Technical%20Implementation%20Guide\u0026section=geo\u0026tag=GEO%20for%20developers\u0026readingTime=9%20ph%C3%BAt%20%C4%91%E1%BB%8Dc\u0026lang=vi\",\"url\":\"https://geodocs.dev/geo/geo-for-developers\",\"inLanguage\":\"vi\",\"articleSection\":\"geo\",\"datePublished\":\"2025-04-25\",\"dateModified\":\"2026-04-28\",\"author\":{\"@type\":\"Person\",\"name\":\"Geodocs Team\",\"url\":\"https://geodocs.dev\"},\"publisher\":{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"@id\":\"https://geodocs.dev/#organization\",\"name\":\"Geodocs.dev\",\"url\":\"https://geodocs.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://geodocs.dev/api/og?title=GEO%20for%20Developers%3A%20Technical%20Implementation%20Guide\u0026section=geo\u0026tag=GEO%20for%20developers\u0026readingTime=9%20ph%C3%BAt%20%C4%91%E1%BB%8Dc\u0026lang=vi\",\"width\":1200,\"height\":630},\"sameAs\":[\"https://github.com/geodocs\",\"https://x.com/geodocsdev\",\"https://www.linkedin.com/company/geodocs\",\"https://www.wikidata.org/wiki/Q116616084\",\"https://www.wikidata.org/wiki/Q131688636\",\"https://www.wikidata.org/wiki/Q11660\",\"https://www.wikidata.org/wiki/Q185360\",\"https://en.wikipedia.org/wiki/Search_engine_optimization\",\"https://en.wikipedia.org/wiki/Generative_artificial_intelligence\"],\"description\":\"Canonical knowledge system for GEO, AEO, and AI search visibility.\",\"contactPoint\":{\"@type\":\"ContactPoint\",\"contactType\":\"customer support\",\"url\":\"https://geodocs.dev/contact\"}},\"keywords\":\"GEO for developers, GEO technical implementation, developer AI search optimization, llms.txt setup, JSON-LD for AI search, AI crawler robots.txt\",\"about\":[{\"@type\":\"Thing\",\"name\":\"Generative Engine Optimization\"},{\"@type\":\"Thing\",\"name\":\"Developer GEO\"},{\"@type\":\"Thing\",\"name\":\"JSON-LD\"},{\"@type\":\"Thing\",\"name\":\"llms.txt\"},{\"@type\":\"Thing\",\"name\":\"Schema.org\"}]}"])</script><script>self.__next_f.push([1,"2c:T775,"])</script><script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Does llms.txt actually do anything in 2026?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"It is a proposed standard, not an adopted one, and no major AI provider has publicly committed to consuming it in production as of early 2026. Adoption is strongest among developer-facing AI tools (coding assistants, retrieval frameworks). The cost to ship is low, so most teams treat it as a low-risk hedge rather than a load-bearing channel.\"}},{\"@type\":\"Question\",\"name\":\"Will GEO replace SEO?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. GEO extends SEO. Most GEO foundations — semantic HTML, structured data, canonical URLs, fast pages — are SEO foundations. Keep doing SEO and add the AI-specific layer on top.\"}},{\"@type\":\"Question\",\"name\":\"Which AI crawlers should I allow in robots.txt?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"At minimum, allow the user agents tied to live retrieval: OAI-SearchBot, ChatGPT-User, PerplexityBot, Perplexity-User, and ClaudeBot. Decide separately whether to allow training-oriented agents like GPTBot and Google-Extended based on your content licensing posture.\"}},{\"@type\":\"Question\",\"name\":\"Which schema type should I prioritize?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"For most documentation and editorial sites, Article is the baseline. Layer FAQPage on Q\u0026A sections and HowTo on tutorials — both formats mirror how AI systems present answers and tend to surface more often as citation sources.\"}},{\"@type\":\"Question\",\"name\":\"Do I need both a sitemap and llms.txt?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. sitemap.xml is for search-engine crawlers and is the source of truth for indexing. llms.txt is a curated, human-readable index aimed at LLMs and assistants. They serve different audiences and should both be auto-generated from your content source.\"}}]}"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"main\",null,{\"style\":{\"minHeight\":\"70vh\"},\"children\":[[\"$\",\"$L2a\",null,{\"meta\":{\"slug\":\"geo-for-developers\",\"section\":\"geo\",\"content_type\":\"guide\",\"difficulty\":\"intermediate\",\"primary_audience\":\"developer\",\"secondary_audiences\":[\"seo-specialist\",\"content-strategist\"],\"word_count\":1753,\"reading_time_min\":9,\"has_code_snippet\":false,\"has_table\":false,\"citation_readiness\":\"reviewed\",\"series\":\"geo-foundations\",\"series_order\":4}}],[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"$2b\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Trang chủ\\\",\\\"item\\\":\\\"https://geodocs.dev/vi\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"GEO\\\",\\\"item\\\":\\\"https://geodocs.dev/vi/geo\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":3,\\\"name\\\":\\\"GEO for Developers: Technical Implementation Guide\\\",\\\"item\\\":\\\"https://geodocs.dev/vi/geo/geo-for-developers\\\"}]}\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"$2c\"}}],\"$L2d\",\"$L2e\"]]}],\"$L2f\"]\n"])</script><script>self.__next_f.push([1,"30:I[23150,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/03hsb-t4rgwk4.js\",\"/_next/static/chunks/0az-wrvsrozq0.js\"],\"ShareButtons\"]\n31:I[47654,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/03hsb-t4rgwk4.js\",\"/_next/static/chunks/0az-wrvsrozq0.js\"],\"ExploreWithAI\"]\n35:I[11181,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/03hsb-t4rgwk4.js\",\"/_next/static/chunks/0az-wrvsrozq0.js\"],\"Newsletter\"]\n23:[\"$\",\"$L1a\",null,{\"href\":\"/vi/tags\",\"className\":\"footer-link\",\"children\":\"Tags\"}]\n24:[\"$\",\"li\",\"/vi/sitemap\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/vi/sitemap\",\"className\":\"footer-link\",\"children\":\"HTML Sitemap\"}]}]\n25:[\"$\",\"li\",\"/sitemap.xml\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/sitemap.xml\",\"className\":\"footer-link\",\"children\":\"XML Sitemap\"}]}]\n26:[\"$\",\"li\",\"/llms.txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/llms.txt\",\"className\":\"footer-link\",\"children\":\"llms.txt\"}]}]\n27:[\"$\",\"li\",\"/ai.txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/ai.txt\",\"className\":\"footer-link\",\"children\":\"ai.txt\"}]}]\n28:[\"$\",\"div\",null,{\"style\":{\"borderTop\":\"1px solid var(--color-teal-gray)\",\"paddingTop\":24,\"display\":\"flex\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\",\"flexWrap\":\"wrap\",\"gap\":16},\"children\":[[\"$\",\"p\",null,{\"style\":{\"fontSize\":12,\"color\":\"var(--color-cool-gray)\"},\"children\":[\"© \",2026,\" Geodocs.dev. \",\"Bảo lưu mọi quyền.\"]}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":12,\"color\":\"var(--color-cool-gray)\"},\"children\":[[\"$\",\"a\",null,{\"href\":\"mailto:contact@geodocs.dev\",\"className\":\"footer-link\",\"children\":\"contact@geodocs.dev\"}],\" · \",\"Xây dựng cho con người và AI agents.\"]}]]}]\n29:[\"$\",\"style\",null,{\"children\":\"\\n .footer-link {\\n font-size: 13px;\\n color: var(--color-silver-teal);\\n text-decoration: none;\\n transition: color 0.2s ease;\\n }\\n .footer-link:hover {\\n color: var(--color-white);\\n }\\n \"}]\n32:T3490,"])</script><script>self.__next_f.push([1,"\u003cdiv class=\"ai-summary\"\u003e\u003cp\u003eGEO for developers is the implementation work that makes a site discoverable, parseable, and citable by AI search engines. The core deliverables are JSON-LD schema, an llms.txt file, semantic HTML, an AI-aware robots.txt, and automated validation in CI.\u003c/p\u003e\u003c/div\u003e\n\u003cp\u003eTL;DR: Ship five things to make your site GEO-ready: (1) a JSON-LD schema component on every content template, (2) an llms.txt file at the site root, (3) explicit allow rules in robots.txt for major AI crawlers, (4) a semantic HTML template with a single H1 and answer-first prose. (5) CI checks that fail the build if structured data or heading hierarchy regresses. None of these replace SEO — they extend it.\u003c/p\u003e\n\u003ch2 id=\"why-geo-is-a-developer-problem\"\u003eWhy GEO Is a Developer Problem\u003c/h2\u003e\n\u003cp\u003eMost GEO advice is written for marketers, but the work that actually moves the needle lives in your build pipeline. AI assistants like ChatGPT, Claude, Perplexity, and Gemini retrieve content through crawlers and APIs, then synthesize answers from whatever they can parse cleanly. If your templates emit malformed schema, ship a single H1 inconsistently, or block AI user agents in robots.txt, your content is effectively invisible to those systems regardless of how well it ranks in Google.\u003c/p\u003e\n\u003cp\u003eGEO inherits the entire SEO stack — crawlability, performance, canonicalization, sitemaps — and adds a thin layer of AI-specific machine-readable hooks on top. Treat the AI-specific work as code: tests, types, and CI gates, not one-off marketing tasks.\u003c/p\u003e\n\u003ch2 id=\"developer-checklist\"\u003eDeveloper Checklist\u003c/h2\u003e\n\u003ch3 id=\"infrastructure-one-time\"\u003eInfrastructure (one-time)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[ ] Deploy llms.txt at the site root\u003c/li\u003e\n\u003cli\u003e[ ] Deploy ai.txt (or equivalent policy file) at the site root\u003c/li\u003e\n\u003cli\u003e[ ] Configure robots.txt with explicit rules for AI crawlers\u003c/li\u003e\n\u003cli\u003e[ ] Generate sitemap.xml automatically from your content source\u003c/li\u003e\n\u003cli\u003e[ ] Implement canonical URL logic in your routing layer\u003c/li\u003e\n\u003cli\u003e[ ] Add \u003clink rel=\"alternate\" type=\"application/rss+xml\"\u003e if you publish a feed\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"per-page-template-level\"\u003ePer-page (template-level)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[ ] JSON-LD structured data component injected into \u003chead\u003e or \u003cbody\u003e\u003c/li\u003e\n\u003cli\u003e[ ] Semantic HTML (\u003carticle\u003e, \u003csection\u003e, \u003cheader\u003e, \u003cnav\u003e, \u003cmain\u003e)\u003c/li\u003e\n\u003cli\u003e[ ] Single \u003ch1\u003e enforced at the template level\u003c/li\u003e\n\u003cli\u003e[ ] \u003ctitle\u003e and \u003cmeta name=\"description\"\u003e populated from frontmatter\u003c/li\u003e\n\u003cli\u003e[ ] Open Graph and Twitter Card metadata\u003c/li\u003e\n\u003cli\u003e[ ] Last-Modified header derived from the content's update date\u003c/li\u003e\n\u003cli\u003e[ ] Answer-first opening paragraph that defines the topic in one or two sentences\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"build-pipeline\"\u003eBuild pipeline\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[ ] Auto-generate sitemap.xml and llms.txt on every build\u003c/li\u003e\n\u003cli\u003e[ ] Validate JSON-LD against schema.org in CI\u003c/li\u003e\n\u003cli\u003e[ ] Lint heading hierarchy (no skipped levels, exactly one H1)\u003c/li\u003e\n\u003cli\u003e[ ] Block deploys when structured data tests fail\u003c/li\u003e\n\u003cli\u003e[ ] Track per-page word count and warn on thin content\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"implementation-five-concrete-pieces\"\u003eImplementation: Five Concrete Pieces\u003c/h2\u003e\n\u003ch3 id=\"1-json-ld-schema-component\"\u003e1. JSON-LD Schema Component\u003c/h3\u003e\n\u003cp\u003eJSON-LD is the format Google recommends for structured data, and AI systems parse it the same way. Keep it in a single component so the contract is type-checked and the markup is identical across pages.\u003c/p\u003e\n\u003cp\u003etsx\u003c/p\u003e\n\u003cp\u003etype ArticleSchemaProps = {\u003c/p\u003e\n\u003cp\u003etitle: string\u003c/p\u003e\n\u003cp\u003edatePublished: string\u003c/p\u003e\n\u003cp\u003edateModified: string\u003c/p\u003e\n\u003cp\u003eauthorName: string\u003c/p\u003e\n\u003cp\u003edescription: string\u003c/p\u003e\n\u003cp\u003eimageUrl: string\u003c/p\u003e\n\u003cp\u003epublisherName: string\u003c/p\u003e\n\u003cp\u003epublisherLogoUrl: string\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e\n\u003cp\u003eexport function ArticleSchema(props: ArticleSchemaProps) {\u003c/p\u003e\n\u003cp\u003econst schema = {\u003c/p\u003e\n\u003cp\u003e\"@context\": \"https://schema.org\",\u003c/p\u003e\n\u003cp\u003e\"@type\": \"Article\",\u003c/p\u003e\n\u003cp\u003eheadline: props.title,\u003c/p\u003e\n\u003cp\u003eimage: [props.imageUrl],\u003c/p\u003e\n\u003cp\u003edatePublished: props.datePublished,\u003c/p\u003e\n\u003cp\u003edateModified: props.dateModified,\u003c/p\u003e\n\u003cp\u003eauthor: { \"@type\": \"Person\", name: props.authorName },\u003c/p\u003e\n\u003cp\u003epublisher: {\u003c/p\u003e\n\u003cp\u003e\"@type\": \"Organization\",\u003c/p\u003e\n\u003cp\u003ename: props.publisherName,\u003c/p\u003e\n\u003cp\u003elogo: { \"@type\": \"ImageObject\", url: props.publisherLogoUrl },\u003c/p\u003e\n\u003cp\u003e},\u003c/p\u003e\n\u003cp\u003edescription: props.description,\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e\n\u003cp\u003ereturn (\u003c/p\u003e\n\u003cp\u003e\u003cscript\u003c/p\u003e\n\u003cp\u003etype=\"application/ld+json\"\u003c/p\u003e\n\u003cp\u003edangerouslySetInnerHTML= __html: JSON.stringify(schema)\u003c/p\u003e\n\u003cp\u003e/\u003e\u003c/p\u003e\n\u003cp\u003e)\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e\n\u003cp\u003eFor question-and-answer or step-by-step content, layer FAQPage or HowTo schemas on top of Article. AI systems treat these as high-signal extraction targets because the format already mirrors the answer shape they want to emit.\u003c/p\u003e\n\u003ch3 id=\"2-llms-txt\"\u003e2. llms.txt\u003c/h3\u003e\n\u003cp\u003ellms.txt is a proposed standard introduced by Jeremy Howard at llmstxt.org in late 2024. It is a Markdown file at the site root that gives LLMs a low-noise, summarized index of the content you most want them to use. It is not a blocking mechanism, and as of early 2026 no major AI provider has publicly committed to consuming it in production. Adoption is real among developer-facing AI tooling (coding assistants, retrieval frameworks), so the cost is low and the upside is concrete.\u003c/p\u003e\n\u003cp\u003eGenerate it automatically from your content source rather than maintaining it by hand:\u003c/p\u003e\n\u003cp\u003ejs\u003c/p\u003e\n\u003cp\u003eimport fs from \"node:fs\"\u003c/p\u003e\n\u003cp\u003eimport { getArticles } from \"./content.js\"\u003c/p\u003e\n\u003cp\u003econst articles = getArticles()\u003c/p\u003e\n\u003cp\u003elet output = # Your Sitenn\u003e One-sentence description of what this site covers.nn## Pagesnn\u003c/p\u003e\n\u003cp\u003efor (const a of articles) {\u003c/p\u003e\n\u003cp\u003eoutput += - ${a.title}: ${a.description}n\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e\n\u003cp\u003efs.writeFileSync(\"public/llms.txt\", output)\u003c/p\u003e\n\u003cp\u003eIf your site is large, also publish an llms-full.txt that concatenates the body content of every page into a single Markdown document for tools that prefer one-shot ingestion.\u003c/p\u003e\n\u003ch3 id=\"3-robots-txt-for-ai-crawlers\"\u003e3. Robots.txt for AI Crawlers\u003c/h3\u003e\n\u003cp\u003eDecide explicitly which AI crawlers you allow. The major user agents to know are GPTBot and OAI-SearchBot (OpenAI), ChatGPT-User (OpenAI on-demand), ClaudeBot and anthropic-ai (Anthropic), PerplexityBot and Perplexity-User (Perplexity), Google-Extended (Google generative training), CCBot (Common Crawl), and Bytespider (ByteDance).\u003c/p\u003e\n\u003cp\u003eA permissive baseline that maximizes AI search visibility looks like this:\u003c/p\u003e\n\u003ch1 id=\"traditional-crawlers\"\u003eTraditional crawlers\u003c/h1\u003e\n\u003cp\u003eUser-agent: *\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003ch1 id=\"ai-crawlers-explicit-allow-for-visibility-in-ai-answers\"\u003eAI crawlers — explicit allow for visibility in AI answers\u003c/h1\u003e\n\u003cp\u003eUser-agent: GPTBot\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: OAI-SearchBot\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: ChatGPT-User\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: ClaudeBot\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: anthropic-ai\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: PerplexityBot\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: Perplexity-User\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: Google-Extended\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: CCBot\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eSitemap: https://example.com/sitemap.xml\u003c/p\u003e\n\u003cp\u003eIf you want to allow retrieval for answers but disallow training, scope the rule by user agent. GPTBot and Google-Extended are training-oriented; OAI-SearchBot, ChatGPT-User, and Perplexity-User are retrieval-oriented.\u003c/p\u003e\n\u003ch3 id=\"4-semantic-html-and-answer-first-prose\"\u003e4. Semantic HTML and Answer-First Prose\u003c/h3\u003e\n\u003cp\u003eAI extractors prefer pages that are structurally explicit. The contract your template should enforce is:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOne \u003ch1\u003e per page, identical to the frontmatter title\u003c/li\u003e\n\u003cli\u003eHeadings descend monotonically (no jumping from H2 to H4)\u003c/li\u003e\n\u003cli\u003eAn answer-first opening: the first paragraph defines the topic in plain language\u003c/li\u003e\n\u003cli\u003eA short summary block (such as an \u003caside\u003e or callout) immediately after the H1\u003c/li\u003e\n\u003cli\u003eA closing FAQ section using H3 questions followed by 2-4 sentence answers\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThese choices are not cosmetic. AI systems chunk content by heading boundaries before retrieval. Clean hierarchy lets them quote you accurately. Answer-first paragraphs raise your odds of being selected as the citation source for a given query.\u003c/p\u003e\n\u003ch3 id=\"5-ci-validation\"\u003e5. CI Validation\u003c/h3\u003e\n\u003cp\u003eNothing in GEO is durable unless CI enforces it. The minimum gates worth running on every commit:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSchema validation — Run extracted JSON-LD against schema.org definitions; fail on missing required fields.\u003c/li\u003e\n\u003cli\u003eHeading lint — Parse the rendered HTML for each page and assert exactly one H1 plus a non-skipping heading hierarchy.\u003c/li\u003e\n\u003cli\u003eFrontmatter completeness — Type-check frontmatter against your content schema (Zod, Valibot, or equivalent).\u003c/li\u003e\n\u003cli\u003eWord count guard — Warn or fail when a page is below the floor for its content type (for example, 600 words for a definition).\u003c/li\u003e\n\u003cli\u003eLink integrity — Detect broken internal anchors and missing canonical hubs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eGoogle's Rich Results Test and the Schema.org Validator are useful spot checks. However, for CI prefer programmatic validation (for example, schema-dts types in TypeScript or a JSON Schema derived from schema.org).\u003c/p\u003e\n\u003ch2 id=\"framework-notes\"\u003eFramework Notes\u003c/h2\u003e\n\u003cp\u003eEvery modern web framework can ship a clean GEO stack. The integration points are roughly the same regardless of stack:\u003c/p\u003e\n\u003cdiv class=\"table-responsive\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003eFramework\u003c/th\u003e\u003cth\u003eWhere the schema component lives\u003c/th\u003e\u003cth\u003eWhere llms.txt is generated\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003eNext.js\u003c/td\u003e\u003ctd\u003eapp/\u003croute\u003e/layout.tsx or metadata API\u003c/td\u003e\u003ctd\u003enext.config build hook or a postbuild script\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eAstro\u003c/td\u003e\u003ctd\u003eContent Collections + \u003chead\u003e slot\u003c/td\u003e\u003ctd\u003eIntegration that reads collections and writes to public/\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eSvelteKit\u003c/td\u003e\u003ctd\u003e+layout.svelte head block\u003c/td\u003e\u003ctd\u003evite-plugin or a postbuild script\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eHugo\u003c/td\u003e\u003ctd\u003ePartial template under layouts/partials/\u003c/td\u003e\u003ctd\u003eCustom output format or a build script\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eWordPress\u003c/td\u003e\u003ctd\u003eTheme header.php or a structured-data plugin\u003c/td\u003e\u003ctd\u003ePlugin or a scheduled cron job\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eThe table above lists where the work goes, not vendor endorsements; pick the integration point that matches your team's existing build conventions.\u003c/p\u003e\n\u003ch2 id=\"monitoring-what-you-shipped\"\u003eMonitoring What You Shipped\u003c/h2\u003e\n\u003cp\u003eGEO without monitoring is throwing code over a wall. The minimum signal set:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eServer logs — Track hits from GPTBot, ClaudeBot, PerplexityBot, and OAI-SearchBot over time.\u003c/li\u003e\n\u003cli\u003eReferral traffic — Filter analytics for chat.openai.com, perplexity.ai, claude.ai, gemini.google.com, and copilot.microsoft.com.\u003c/li\u003e\n\u003cli\u003eCitation tracking — Periodically prompt the major AI assistants with target queries and record whether your URL is cited. Tools like Profound, AthenaHQ, and BrightEdge automate this; a weekly cron with a thin script also works.\u003c/li\u003e\n\u003cli\u003eStructured data alerts — Wire Google Search Console structured-data error reports into your team chat.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"common-mistakes\"\u003eCommon Mistakes\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eShipping schema once, then forgetting it. Frontmatter drifts, fields go missing, and the schema silently breaks. CI gates fix this.\u003c/li\u003e\n\u003cli\u003eBuilding llms.txt by hand. It will go stale within a release cycle. Generate it from the content source.\u003c/li\u003e\n\u003cli\u003eBlocking AI crawlers by default. Many starter robots.txt configs deny all unknown agents. Audit explicitly.\u003c/li\u003e\n\u003cli\u003eHeavy client-side rendering with no SSR fallback. Most AI crawlers do not execute JavaScript reliably. Render core content on the server.\u003c/li\u003e\n\u003cli\u003eOptimizing only the homepage. Citations land on deep pages. Apply the full GEO contract to every content template.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"faq\"\u003eFAQ\u003c/h2\u003e\n\u003ch3 id=\"q-does-llms-txt-actually-do-anything-in-2026\"\u003eQ: Does llms.txt actually do anything in 2026?\u003c/h3\u003e\n\u003cp\u003eIt is a proposed standard, not an adopted one, and no major AI provider has publicly committed to consuming it in production as of early 2026. Adoption is strongest among developer-facing AI tools (coding assistants, retrieval frameworks). The cost to ship is low, so most teams treat it as a low-risk hedge rather than a load-bearing channel.\u003c/p\u003e\n\u003ch3 id=\"q-will-geo-replace-seo\"\u003eQ: Will GEO replace SEO?\u003c/h3\u003e\n\u003cp\u003eNo. GEO extends SEO. Most GEO foundations — semantic HTML, structured data, canonical URLs, fast pages — are SEO foundations. Keep doing SEO and add the AI-specific layer on top.\u003c/p\u003e\n\u003ch3 id=\"q-which-ai-crawlers-should-i-allow-in-robots-txt\"\u003eQ: Which AI crawlers should I allow in robots.txt?\u003c/h3\u003e\n\u003cp\u003eAt minimum, allow the user agents tied to live retrieval: OAI-SearchBot, ChatGPT-User, PerplexityBot, Perplexity-User, and ClaudeBot. Decide separately whether to allow training-oriented agents like GPTBot and Google-Extended based on your content licensing posture.\u003c/p\u003e\n\u003ch3 id=\"q-which-schema-type-should-i-prioritize\"\u003eQ: Which schema type should I prioritize?\u003c/h3\u003e\n\u003cp\u003eFor most documentation and editorial sites, Article is the baseline. Layer FAQPage on Q\u0026A sections and HowTo on tutorials — both formats mirror how AI systems present answers and tend to surface more often as citation sources.\u003c/p\u003e\n\u003ch3 id=\"q-do-i-need-both-a-sitemap-and-llms-txt\"\u003eQ: Do I need both a sitemap and llms.txt?\u003c/h3\u003e\n\u003cp\u003eYes. sitemap.xml is for search-engine crawlers and is the source of truth for indexing. llms.txt is a curated, human-readable index aimed at LLMs and assistants. They serve different audiences and should both be auto-generated from your content source.\u003c/p\u003e"])</script><script>self.__next_f.push([1,"2d:[\"$\",\"div\",null,{\"style\":{\"display\":\"grid\",\"gridTemplateColumns\":\"1fr min(var(--content-max-width), 100%) 1fr\",\"gap\":0,\"maxWidth\":1200,\"margin\":\"0 auto\",\"padding\":\"48px 24px 80px\"},\"children\":[[\"$\",\"div\",null,{}],[\"$\",\"article\",null,{\"children\":[[\"$\",\"h1\",null,{\"style\":{\"fontFamily\":\"var(--font-display)\",\"fontSize\":\"clamp(1.75rem, 4vw, 2.5rem)\",\"fontWeight\":500,\"lineHeight\":1.2,\"color\":\"var(--text-heading)\",\"marginBottom\":16},\"children\":\"GEO for Developers: Technical Implementation Guide\"}],[\"$\",\"div\",null,{\"className\":\"metadata-bar\",\"style\":{\"marginBottom\":24},\"children\":[[\"$\",\"span\",null,{\"className\":\"metadata-bar__tag metadata-bar__tag--section\",\"children\":\"geo\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__tag\",\"children\":\"guide\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__tag\",\"children\":\"intermediate\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__dot\"}],[\"$\",\"span\",null,{\"children\":\"9 phút đọc\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__dot\"}],[\"$\",\"span\",null,{\"children\":\"1,753 từ\"}],[[\"$\",\"span\",null,{\"className\":\"metadata-bar__dot\"}],[\"$\",\"span\",null,{\"children\":\"Cập nhật Apr 2026\"}]]]}],[\"$\",\"$L30\",null,{\"title\":\"GEO for Developers: Technical Implementation Guide\",\"url\":\"https://geodocs.dev/geo/geo-for-developers\"}],[\"$\",\"$L31\",null,{\"title\":\"GEO for Developers: Technical Implementation Guide\",\"url\":\"https://geodocs.dev/geo/geo-for-developers\",\"section\":\"geo\",\"slug\":\"geo-for-developers\"}],[\"$\",\"div\",null,{\"className\":\"prose\",\"dangerouslySetInnerHTML\":{\"__html\":\"$32\"}}],\"$L33\",false]}],\"$L34\"]}]\n"])</script><script>self.__next_f.push([1,"2e:[\"$\",\"style\",null,{\"children\":\"\\n @media (max-width: 1024px) {\\n .toc-sidebar { display: none !important; }\\n }\\n @media (min-width: 1025px) {\\n article {\\n /* override grid for 3-col with TOC */\\n }\\n }\\n .article-tag-link:hover {\\n border-color: var(--color-dark-green) !important;\\n color: var(--text-primary) !important;\\n background: rgba(0, 237, 100, 0.06) !important;\\n }\\n \"}]\n2f:[\"$\",\"$L35\",null,{\"dict\":\"$c:1:props:dict:newsletter\"}]\n"])</script><script>self.__next_f.push([1,"33:[\"$\",\"div\",null,{\"style\":{\"marginTop\":64},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"fontSize\":18,\"fontWeight\":600,\"marginBottom\":16,\"paddingBottom\":8,\"borderBottom\":\"1px solid var(--border-default)\"},\"children\":\"Bài viết liên quan\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"grid\",\"gridTemplateColumns\":\"repeat(auto-fill, minmax(280px, 1fr))\",\"gap\":16},\"children\":[[\"$\",\"$L1a\",\"what-is-geo\",{\"href\":\"/vi/geo/what-is-geo\",\"style\":{\"textDecoration\":\"none\"},\"data-related-article\":\"what-is-geo\",\"data-related-position\":1,\"children\":[\"$\",\"div\",null,{\"className\":\"card\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge badge-green\",\"style\":{\"marginBottom\":8},\"children\":\"guide\"}],[\"$\",\"h3\",null,{\"style\":{\"fontSize\":15,\"fontWeight\":600,\"color\":\"var(--text-heading)\",\"marginBottom\":4},\"children\":\"What Is GEO? Generative Engine Optimization Defined\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--text-secondary)\",\"lineHeight\":1.5},\"children\":\"GEO (Generative Engine Optimization) is the practice of structuring content so AI search engines retrieve, understand, synthesize, and cite it in generated answers.\"}]]}]}],[\"$\",\"$L1a\",\"ai-crawl-signals\",{\"href\":\"/vi/technical/ai-crawl-signals\",\"style\":{\"textDecoration\":\"none\"},\"data-related-article\":\"ai-crawl-signals\",\"data-related-position\":2,\"children\":[\"$\",\"div\",null,{\"className\":\"card\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge badge-green\",\"style\":{\"marginBottom\":8},\"children\":\"reference\"}],[\"$\",\"h3\",null,{\"style\":{\"fontSize\":15,\"fontWeight\":600,\"color\":\"var(--text-heading)\",\"marginBottom\":4},\"children\":\"AI Crawl Signals: How AI Discovers Content\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--text-secondary)\",\"lineHeight\":1.5},\"children\":\"Technical reference for the signals AI systems use to discover, access, and prioritize web content — including sitemaps, llms.txt, robots.txt, structured data, and HTTP headers.\"}]]}]}],[\"$\",\"$L1a\",\"json-ld-for-ai-search\",{\"href\":\"/vi/technical/json-ld-for-ai-search\",\"style\":{\"textDecoration\":\"none\"},\"data-related-article\":\"json-ld-for-ai-search\",\"data-related-position\":3,\"children\":[\"$\",\"div\",null,{\"className\":\"card\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge badge-green\",\"style\":{\"marginBottom\":8},\"children\":\"guide\"}],[\"$\",\"h3\",null,{\"style\":{\"fontSize\":15,\"fontWeight\":600,\"color\":\"var(--text-heading)\",\"marginBottom\":4},\"children\":\"JSON-LD for AI Search: Complete Guide\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--text-secondary)\",\"lineHeight\":1.5},\"children\":\"How to implement JSON-LD structured data so AI search engines and traditional search both understand your content's type, authorship, and entities.\"}]]}]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"34:[\"$\",\"div\",null,{\"style\":{\"paddingLeft\":40},\"className\":\"toc-sidebar\",\"children\":[\"$\",\"nav\",null,{\"style\":{\"position\":\"sticky\",\"top\":88,\"fontSize\":13,\"lineHeight\":1.6,\"maxHeight\":\"calc(100vh - 100px)\",\"overflowY\":\"auto\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":10,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-cool-gray)\",\"marginBottom\":12},\"children\":\"Trên trang này\"}],[[\"$\",\"a\",\"why-geo-is-a-developer-problem\",{\"href\":\"#why-geo-is-a-developer-problem\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Why GEO Is a Developer Problem\"}],[\"$\",\"a\",\"developer-checklist\",{\"href\":\"#developer-checklist\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Developer Checklist\"}],[\"$\",\"a\",\"infrastructure-one-time\",{\"href\":\"#infrastructure-one-time\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Infrastructure (one-time)\"}],[\"$\",\"a\",\"per-page-template-level\",{\"href\":\"#per-page-template-level\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Per-page (template-level)\"}],[\"$\",\"a\",\"build-pipeline\",{\"href\":\"#build-pipeline\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Build pipeline\"}],[\"$\",\"a\",\"implementation-five-concrete-pieces\",{\"href\":\"#implementation-five-concrete-pieces\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Implementation: Five Concrete Pieces\"}],[\"$\",\"a\",\"1-json-ld-schema-component\",{\"href\":\"#1-json-ld-schema-component\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"1. JSON-LD Schema Component\"}],[\"$\",\"a\",\"2-llms-txt\",{\"href\":\"#2-llms-txt\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"2. llms.txt\"}],[\"$\",\"a\",\"3-robots-txt-for-ai-crawlers\",{\"href\":\"#3-robots-txt-for-ai-crawlers\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"3. Robots.txt for AI Crawlers\"}],[\"$\",\"a\",\"4-semantic-html-and-answer-first-prose\",{\"href\":\"#4-semantic-html-and-answer-first-prose\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"4. Semantic HTML and Answer-First Prose\"}],[\"$\",\"a\",\"5-ci-validation\",{\"href\":\"#5-ci-validation\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"5. CI Validation\"}],[\"$\",\"a\",\"framework-notes\",{\"href\":\"#framework-notes\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Framework Notes\"}],[\"$\",\"a\",\"monitoring-what-you-shipped\",{\"href\":\"#monitoring-what-you-shipped\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Monitoring What You Shipped\"}],\"$L36\",\"$L37\",\"$L38\",\"$L39\",\"$L3a\",\"$L3b\",\"$L3c\"]]}]}]\n"])</script><script>self.__next_f.push([1,"36:[\"$\",\"a\",\"common-mistakes\",{\"href\":\"#common-mistakes\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Common Mistakes\"}]\n37:[\"$\",\"a\",\"faq\",{\"href\":\"#faq\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"FAQ\"}]\n38:[\"$\",\"a\",\"q-does-llms-txt-actually-do-anything-in-2026\",{\"href\":\"#q-does-llms-txt-actually-do-anything-in-2026\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Q: Does llms.txt actually do anything in 2026?\"}]\n39:[\"$\",\"a\",\"q-will-geo-replace-seo\",{\"href\":\"#q-will-geo-replace-seo\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Q: Will GEO replace SEO?\"}]\n3a:[\"$\",\"a\",\"q-which-ai-crawlers-should-i-allow-in-robots-txt\",{\"href\":\"#q-which-ai-crawlers-should-i-allow-in-robots-txt\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Q: Which AI crawlers should I allow in robots.txt?\"}]\n3b:[\"$\",\"a\",\"q-which-schema-type-should-i-prioritize\",{\"href\":\"#q-which-schema-type-should-i-prioritize\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Q: Which schema type should I prioritize?\"}]\n3c:[\"$\",\"a\",\"q-do-i-need-both-a-sitemap-and-llms-txt\",{\"href\":\"#q-do-i-need-both-a-sitemap-and-llms-txt\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Q: Do I need both a sitemap and llms.txt?\"}]\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"3d:I[27201,[\"/_next/static/chunks/0vy55-f9yx2lf.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/027z30oepz30q.js\",\"/_next/static/chunks/0to0fsue-2tey.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"IconMark\"]\nf:null\n"])</script><script>self.__next_f.push([1,"14:[[\"$\",\"title\",\"0\",{\"children\":\"GEO for Developers: Technical Implementation Guide\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A developer-focused guide to implementing GEO: JSON-LD schema, llms.txt, semantic HTML, sitemap optimization, and CI validation for AI search visibility.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"keywords\",\"content\":\"GEO for developers,GEO technical implementation,developer AI search optimization,llms.txt setup,JSON-LD for AI search,AI crawler robots.txt\"}],[\"$\",\"meta\",\"3\",{\"name\":\"robots\",\"content\":\"noindex, follow\"}],[\"$\",\"meta\",\"4\",{\"name\":\"html-lang\",\"content\":\"vi\"}],[\"$\",\"link\",\"5\",{\"rel\":\"canonical\",\"href\":\"https://geodocs.dev/geo/geo-for-developers\"}],[\"$\",\"link\",\"6\",{\"rel\":\"alternate\",\"hrefLang\":\"en\",\"href\":\"https://geodocs.dev/geo/geo-for-developers\"}],[\"$\",\"link\",\"7\",{\"rel\":\"alternate\",\"hrefLang\":\"x-default\",\"href\":\"https://geodocs.dev/geo/geo-for-developers\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:title\",\"content\":\"GEO for Developers: Technical Implementation Guide\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:description\",\"content\":\"A developer-focused guide to implementing GEO: JSON-LD schema, llms.txt, semantic HTML, sitemap optimization, and CI validation for AI search visibility.\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://geodocs.dev/api/og?title=GEO%20for%20Developers%3A%20Technical%20Implementation%20Guide\u0026section=geo\u0026tag=GEO%20for%20developers\u0026readingTime=9%20ph%C3%BAt%20%C4%91%E1%BB%8Dc\u0026lang=vi\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image:alt\",\"content\":\"GEO for Developers: Technical Implementation Guide\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"15\",{\"property\":\"article:published_time\",\"content\":\"2025-04-25\"}],[\"$\",\"meta\",\"16\",{\"property\":\"article:modified_time\",\"content\":\"2026-04-28\"}],[\"$\",\"meta\",\"17\",{\"property\":\"article:author\",\"content\":\"Geodocs Team\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:title\",\"content\":\"GEO for Developers: Technical Implementation Guide\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:description\",\"content\":\"A developer-focused guide to implementing GEO: JSON-LD schema, llms.txt, semantic HTML, sitemap optimization, and CI validation for AI search visibility.\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image\",\"content\":\"https://geodocs.dev/api/og?title=GEO%20for%20Developers%3A%20Technical%20Implementation%20Guide\u0026section=geo\u0026tag=GEO%20for%20developers\u0026readingTime=9%20ph%C3%BAt%20%C4%91%E1%BB%8Dc\u0026lang=vi\"}],[\"$\",\"link\",\"22\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"23\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0zl.ysuv3a32n.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"24\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"25\",{\"rel\":\"apple-touch-icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"$L3d\",\"26\",{}]]\n"])</script></body></html>