Geodocs.dev

Open Graph Tags for AI Answer Cards: A Complete Specification

ShareLinkedIn

Open this article in your favorite AI assistant for deeper analysis, summaries, or follow-up questions.

AI answer engines including Perplexity, ChatGPT Search, Bing Chat, and Google AI Overviews reuse the Open Graph protocol to render link previews, citation cards, and source thumbnails. This spec defines the required and recommended OG tags, exact value formats, image requirements (1200x630 px, <=5 MB, absolute HTTPS URL), validation steps, and CDN delivery rules so AI bots can render your card correctly.

TL;DR

Open Graph (OG) was built for Facebook in 2010 but is now the de-facto metadata layer that AI answer engines read when they render link cards inside citations, source rails, and answer panels. Ship six tags on every indexable page — og:title, og:description, og:image, og:url, og:type, and og:site_name — use a 1200x630 absolute-URL image under 5 MB, and unblock the AI crawler user-agents listed below. Those defaults alone keep your brand from appearing as an unstyled, image-less fallback in AI answer cards.

What an "AI answer card" is

An AI answer card is the rectangular link preview that appears inside or alongside a generative answer when an AI engine cites your page. It is rendered from a small bag of metadata — title, description, image, URL, and site name. AI engines do not invent a new metadata format: they read the Open Graph tags already in the HTML head, falling back to the HTML element and <meta name="description"> when OG is missing.</p> <p>The cards appear in:</p> <ul> <li>Perplexity source list, the "Sources" rail, and shared answer pages</li> <li>ChatGPT Search inline citations and the right-side citation pane</li> <li>Bing Chat / Copilot answer footers and inline link previews</li> <li>Google AI Overviews "From sources across the web" cards</li> <li>You.com, Yahoo Scout, and other visual answer engines</li> </ul> <p>When OG metadata is absent or broken, the card degrades to a generic favicon plus a truncated meta description — reducing brand recognition, click-through rate, and downstream re-citation.</p> <h2 id="why-og-is-now-an-ai-readability-concern">Why OG is now an AI-readability concern</h2> <p>The Open Graph protocol was designed to "turn web pages into graph objects" for Facebook (ogp.me). Two shifts moved it into the AI-readability stack:</p> <ol> <li>Crawler reuse. AI training and live-retrieval crawlers (GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot, Google-Extended) parse the same HTML head as Facebook's scraper. OG tags ship in that head, so they get ingested for free.</li> <li>Card-rendering convergence. AI front-ends adopted the social-card pattern (title + description + 1200x630 image) because users already recognize it. Reusing OG tags is cheaper than inventing a new schema.</li> </ol> <p>Prerender.io's own documentation confirms that OG tags directly influence how LLMs interpret content for previews and how AI front-ends render link cards.</p> <h2 id="required-tags-the-four-ogp-me-mandated">Required tags (the four ogp.me-mandated)</h2> <p>Every page MUST include these four tags in the document <head>. Missing any of them causes Facebook's debugger to error and most AI crawlers to fall back to brittle heuristics.</p> <div class="table-responsive"><table><thead><tr><th>Tag</th><th>Required value</th><th>AI-card role</th></tr></thead><tbody><tr><td>og:title</td><td>Plain text, <=60 chars recommended</td><td>Card headline</td></tr><tr><td>og:type</td><td>website, article, product, etc.</td><td>Card layout selection</td></tr><tr><td>og:image</td><td>Absolute HTTPS URL to image</td><td>Card thumbnail</td></tr><tr><td>og:url</td><td>Canonical absolute URL of the page</td><td>Card link target & dedupe key</td></tr></tbody></table></div> <div class="code-block-wrapper" style="position:relative"><button data-copy-snippet="true" data-snippet-id="snippet-0" data-snippet-lang="html" class="copy-btn" title="Copy code" style="position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1" onclick="navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=>this.textContent='Copy',1500)">Copy</button><pre><code class="language-html"><meta property="og:title" content="Open Graph Tags for AI Answer Cards: A Complete Specification" /> <meta property="og:type" content="article" /> <meta property="og:image" content="https://geodocs.dev/og/open-graph-ai-answer-cards-spec.jpg" /> <meta property="og:url" content="https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec" /></code></pre></div> <h2 id="recommended-tags-the-ai-card-minimum-viable-set">Recommended tags (the AI-card minimum-viable set)</h2> <p>Add these in addition to the four required tags. They are not in the ogp.me MUST list, but every major AI card renderer reads them.</p> <div class="table-responsive"><table><thead><tr><th>Tag</th><th>Recommended value</th><th>Notes</th></tr></thead><tbody><tr><td>og:description</td><td>120-160 chars</td><td>Card body text. Must match the page's actual answer-first content.</td></tr><tr><td>og:site_name</td><td>Brand name</td><td>Used as the card's "publisher" badge.</td></tr><tr><td>og:locale</td><td>en_US, vi_VN, etc.</td><td>Language hint for multilingual AI engines.</td></tr><tr><td>og:image:alt</td><td>Plain text describing the image</td><td>Accessibility plus multimodal AI grounding.</td></tr><tr><td>og:image:width</td><td>1200</td><td>Lets crawlers pre-allocate layout.</td></tr><tr><td>og:image:height</td><td>630</td><td>Same.</td></tr><tr><td>og:image:type</td><td>image/jpeg or image/png</td><td>Avoid surprise format mismatches.</td></tr><tr><td>article:published_time</td><td>ISO-8601 datetime</td><td>Used by AI for freshness ranking.</td></tr><tr><td>article:modified_time</td><td>ISO-8601 datetime</td><td>Same.</td></tr><tr><td>article:author</td><td>URL or name</td><td>Authorship signal for E-E-A-T.</td></tr></tbody></table></div> <h2 id="twitter-card-alignment">Twitter Card alignment</h2> <p>Twitter (now X) uses a parallel twitter: namespace. Several AI engines — notably Perplexity and Bing Chat — fall back to twitter: tags when OG is missing or invalid.</p> <div class="code-block-wrapper" style="position:relative"><button data-copy-snippet="true" data-snippet-id="snippet-1" data-snippet-lang="html" class="copy-btn" title="Copy code" style="position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1" onclick="navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=>this.textContent='Copy',1500)">Copy</button><pre><code class="language-html"><meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="Open Graph Tags for AI Answer Cards" /> <meta name="twitter:description" content="Specification of the OG tags AI answer engines read for citation cards." /> <meta name="twitter:image" content="https://geodocs.dev/og/open-graph-ai-answer-cards-spec.jpg" /></code></pre></div> <p>Rule of thumb: keep twitter:<em> values identical to the og:</em> equivalents. Divergence creates inconsistent cards across engines.</p> <h2 id="value-format-rules">Value-format rules</h2> <h3 id="og-title">og:title</h3> <ul> <li>Plain text, no HTML.</li> <li>Target 50-60 characters; some AI cards truncate at 60.</li> <li>Should be the canonical answer-first headline. Avoid clickbait — AI engines penalize mismatch with body content.</li> <li>Must match (or be a strict superset of) the H1 and <title>.</li> </ul> <h3 id="og-description">og:description</h3> <ul> <li>120-160 characters. Below 90 looks empty in cards; above 200 truncates.</li> <li>Lead with the answer. AI engines extract this directly into snippet hover-cards.</li> <li>Avoid emoji and trailing ellipses.</li> <li>Must be unique per URL — duplicate descriptions across pages cause AI engines to merge or drop cards.</li> </ul> <h3 id="og-image-the-most-broken-tag">og:image (the most-broken tag)</h3> <p>The image is the single most fragile OG field. Every major AI card renderer enforces these constraints (sources: opengraphdebug.com, ogimage.gallery, prerender.io):</p> <ul> <li>Dimensions: 1200 x 630 px (1.91:1 aspect ratio). Minimum 600 x 315 px.</li> <li>File size: Under 5 MB. Facebook's hard cap is 8 MB; smaller is safer.</li> <li>Format: JPG (default) or PNG (when transparency is needed). Avoid SVG, GIF, AVIF, and WebP — crawler support is inconsistent.</li> <li>URL: Absolute HTTPS URL. Relative URLs silently fail in most card renderers.</li> <li>Stability: Stable path. Cache-busting query strings (?v=123) work for invalidation but should be set deliberately.</li> <li>Accessibility: The crawler must reach the URL with no auth, no cookies, and no JavaScript rendering required.</li> <li>Render speed: Serve from a CDN edge. Slow image fetches silently time out in card renderers.</li> </ul> <h3 id="og-url">og:url</h3> <ul> <li>Must equal the page's canonical URL exactly — same protocol, host, path, trailing-slash policy, and case.</li> <li>No tracking parameters. No fragment identifiers.</li> <li>Must match the <link rel="canonical"> value. Mismatches cause AI engines to deduplicate to the wrong URL.</li> </ul> <h3 id="og-type">og:type</h3> <ul> <li>Use article for documentation, blog posts, and reference pages.</li> <li>Use website for the homepage and section landing pages.</li> <li>Use product for product detail pages (enables price/availability sub-tags).</li> <li>Avoid book, music.song, etc. unless the type genuinely matches.</li> </ul> <h2 id="crawler-unblocking-mandatory">Crawler unblocking (mandatory)</h2> <p>OG tags are useless if the AI bot cannot fetch the page or the image. Audit robots.txt and CDN/WAF rules for these user-agents:</p> <div class="table-responsive"><table><thead><tr><th>User-agent</th><th>Operator</th><th>Use</th></tr></thead><tbody><tr><td>GPTBot</td><td>OpenAI</td><td>Training</td></tr><tr><td>OAI-SearchBot</td><td>OpenAI</td><td>ChatGPT Search live retrieval</td></tr><tr><td>ChatGPT-User</td><td>OpenAI</td><td>ChatGPT browsing tool</td></tr><tr><td>PerplexityBot</td><td>Perplexity</td><td>Indexing</td></tr><tr><td>Perplexity-User</td><td>Perplexity</td><td>Live retrieval</td></tr><tr><td>ClaudeBot</td><td>Anthropic</td><td>Training</td></tr><tr><td>Claude-Web</td><td>Anthropic</td><td>Live retrieval</td></tr><tr><td>Google-Extended</td><td>Google</td><td>Gemini training</td></tr><tr><td>Googlebot</td><td>Google</td><td>AI Overviews retrieval</td></tr><tr><td>Bingbot</td><td>Microsoft</td><td>Bing Chat / Copilot</td></tr><tr><td>FacebookExternalHit</td><td>Meta</td><td>Card scraping</td></tr><tr><td>Twitterbot</td><td>X</td><td>Card scraping</td></tr><tr><td>LinkedInBot</td><td>LinkedIn</td><td>Card scraping</td></tr></tbody></table></div> <p>Block intentionally — but if you want AI answer-card visibility, you must allow at least the live-retrieval bots and the OG-image path. See robots.txt for AI Crawlers for a complete policy template.</p> <h2 id="validation-workflow">Validation workflow</h2> <p>Before claiming OG compliance, validate against four debuggers and one in-house check:</p> <ol> <li>Facebook Sharing Debugger (developers.facebook.com/tools/debug) — flags missing required tags and image fetch errors.</li> <li>LinkedIn Post Inspector — strict on absolute URLs and image dimensions.</li> <li>X / Twitter Card Validator — verifies the twitter: fallback path.</li> <li>opengraph.xyz or opengraphdebug.com — multi-platform preview.</li> <li>Live AI render check — paste the URL into Perplexity, ChatGPT Search, and Bing Chat and confirm the rendered card matches your OG values. Engines cache aggressively; force a re-fetch with a query-string version bump if needed.</li> </ol> <p>A passing audit means: zero errors in all four debuggers, image renders within 2 seconds, and title and description render without truncation in the AI front-end.</p> <h2 id="cdn-and-rendering-rules-for-js-heavy-sites">CDN and rendering rules for JS-heavy sites</h2> <p>Single-page apps (React, Vue, Angular) often inject OG tags client-side. AI crawlers do not execute JavaScript reliably. Three viable patterns:</p> <ol> <li>Server-side rendering (SSR). Inject OG tags during the server response. Default for Next.js, Nuxt, SvelteKit, and Remix.</li> <li>Static generation (SSG). Build OG tags at deploy time. Default for Astro, Hugo, and Jekyll.</li> <li>Prerender service. Detect crawler user-agents at the edge and serve a prerendered HTML snapshot (e.g., Prerender.io, Cloudflare Browser Run). Required only when SSR/SSG is not feasible.</li> </ol> <p>Whichever pattern you choose, the test is: curl -A "GPTBot" https://yourdomain.com/page | grep og: should return your full OG tag set with no JavaScript execution.</p> <h2 id="anti-patterns">Anti-patterns</h2> <ul> <li>Reusing the same og:image site-wide. Every page should have a unique image. AI engines deduplicate cards by image hash.</li> <li>Logo-only OG images. AI cards with logo-only images get filtered out of visual answer engines (Yahoo Scout, Google AI Overviews shopping cards).</li> <li>Description copied from <meta description> verbatim. Differentiate — og:description should lead with the answer; <meta description> can be more SEO-keyword-heavy.</li> <li>Localized OG tags injected via JS. AI crawlers will see the default-locale fallback. Use SSR with og:locale:alternate instead.</li> <li>Redirect chains on og:url or og:image. Each hop is a chance for the crawler to time out.</li> </ul> <h2 id="relationship-to-structured-data">Relationship to structured data</h2> <p>OG tags and JSON-LD (structured data) are complementary, not redundant:</p> <ul> <li>OG defines how the card is rendered.</li> <li>JSON-LD defines what the page is (Article, Product, FAQPage, HowTo).</li> </ul> <p>AI engines use both. Ship both. Keep og:title ~ schema:headline, og:description ~ schema:description, og:image ~ schema:image, and og:url ~ schema:url. Drift between the two is a high-confidence quality signal that drops citations.</p> <p>See also JSON-LD for AI Search: Complete Guide.</p> <h2 id="reference-minimal-compliant-head-block">Reference: minimal compliant head block</h2> <div class="code-block-wrapper" style="position:relative"><button data-copy-snippet="true" data-snippet-id="snippet-2" data-snippet-lang="html" class="copy-btn" title="Copy code" style="position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1" onclick="navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=>this.textContent='Copy',1500)">Copy</button><pre><code class="language-html"><head> <title>Open Graph Tags for AI Answer Cards: A Complete Specification</title> <meta name="description" content="Specification of the Open Graph tags AI answer engines read for citation cards." /> <link rel="canonical" href="https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec" /></code></pre></div> <p> <!-- Open Graph (required) --></p> <p> <meta property="og:title" content="Open Graph Tags for AI Answer Cards" /></p> <p> <meta property="og:type" content="article" /></p> <p> <meta property="og:url" content="https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec" /></p> <p> <meta property="og:image" content="https://geodocs.dev/og/open-graph-ai-answer-cards-spec.jpg" /></p> <p> <!-- Open Graph (recommended) --></p> <p> <meta property="og:description" content="A publisher-grade spec of the OG tags AI answer engines read." /></p> <p> <meta property="og:site_name" content="Geodocs" /></p> <p> <meta property="og:locale" content="en_US" /></p> <p> <meta property="og:image:alt" content="Diagram of how AI answer cards consume Open Graph tags" /></p> <p> <meta property="og:image:width" content="1200" /></p> <p> <meta property="og:image:height" content="630" /></p> <p> <meta property="og:image:type" content="image/jpeg" /></p> <p> <meta property="article:published_time" content="2026-04-29T00:00:00Z" /></p> <p> <meta property="article:modified_time" content="2026-04-29T00:00:00Z" /></p> <p> <meta property="article:author" content="https://geodocs.dev/about" /></p> <p> <!-- Twitter / X --></p> <p> <meta name="twitter:card" content="summary_large_image" /></p> <p> <meta name="twitter:title" content="Open Graph Tags for AI Answer Cards" /></p> <p> <meta name="twitter:description" content="Specification of the OG tags AI answer engines read." /></p> <p> <meta name="twitter:image" content="https://geodocs.dev/og/open-graph-ai-answer-cards-spec.jpg" /></p> <p></head></p> <h2 id="implementation-checklist">Implementation checklist</h2> <ul> <li>[ ] All four required OG tags present on every indexable page</li> <li>[ ] og:image is 1200x630 px, <=5 MB, absolute HTTPS URL, JPG or PNG</li> <li>[ ] og:url matches <link rel="canonical"> exactly</li> <li>[ ] og:description is 120-160 chars, unique per URL, answer-first</li> <li>[ ] twitter:* mirror set in place</li> <li>[ ] OG tags rendered server-side or pre-rendered for crawler user-agents</li> <li>[ ] AI bot user-agents (GPTBot, PerplexityBot, ClaudeBot, OAI-SearchBot, etc.) unblocked in robots.txt and CDN</li> <li>[ ] Facebook, LinkedIn, X, and opengraph.xyz debuggers all clean</li> <li>[ ] Live render verified in Perplexity, ChatGPT Search, and Bing Chat</li> <li>[ ] OG values aligned with JSON-LD Article properties</li> </ul> <h2 id="faq">FAQ</h2> <h3 id="q-do-ai-engines-actually-read-open-graph-tags">Q: Do AI engines actually read Open Graph tags?</h3> <p>Yes. Bing Chat, Perplexity, ChatGPT Search, and Google AI Overviews all parse the document <head> and reuse OG fields to render citation cards. When OG is missing, they fall back to the HTML <title> and <meta description>, which usually produces a less branded card.</p> <h3 id="q-what-is-the-single-most-important-og-tag-for-ai-answer-cards">Q: What is the single most important OG tag for AI answer cards?</h3> <p>og:image. Title and description fall back gracefully to other tags, but a missing or broken image leaves the card visually empty — the largest single drop in click-through rate. A 1200x630 JPG at an absolute HTTPS URL under 5 MB solves roughly 90% of card-rendering issues.</p> <h3 id="q-should-og-title-match-the-page-title-exactly">Q: Should og:title match the page <title> exactly?</h3> <p>Not strictly. og:title is optimized for the social/answer card; <title> is optimized for the browser tab and SEO. Keep them semantically equivalent, but you may shorten og:title to ~50 characters or drop the brand suffix that's already in og:site_name.</p> <h3 id="q-do-i-still-need-twitter-tags-if-i-have-og-tags">Q: Do I still need twitter: tags if I have OG tags?</h3> <p>Yes. X / Twitter requires twitter:card to opt into large-image cards, and several AI engines fall back to twitter: when OG is malformed. Mirror the values — do not duplicate the markup unnecessarily.</p> <h3 id="q-how-often-should-i-update-og-image">Q: How often should I update og:image?</h3> <p>When the page's core message changes. AI engines cache OG images aggressively (often 7-30 days). To force a re-fetch, change the image URL (append ?v=YYYYMMDD) and run the page through the Facebook debugger.</p> <h3 id="q-can-i-use-a-dynamically-generated-og-image">Q: Can I use a dynamically generated OG image?</h3> <p>Yes — but the URL must be stable per page and reachable without authentication. Common patterns include edge functions (Vercel OG, Cloudflare Browser Run), build-time screenshots, and templated SVG-to-PNG conversion. Cache the output at the CDN.</p> <h2 id="sources">Sources</h2> <ul> <li>The Open Graph protocol — https://ogp.me/ — canonical specification.</li> <li>Open Graph Image Requirements — https://opengraphdebug.com/posts/og-image-requirements — image format and size constraints.</li> <li>How Open Graph Tags Impact LLM Training Data — https://prerender.io/blog/how-open-graph-tags-impact-llm-training-data/ — AI crawler reuse of OG.</li> <li>Will AI Summarize Your Page Correctly? — https://fairwaydigitalmedia.com/fullmonitor_metatag_resourcecenter — LLM card rendering best practices.</li> <li>Open Graph and Social Meta Tags for AI Visibility — https://www.surfaceable.io/blog/open-graph-social-meta-tags-ai-visibility — interaction with AI systems.</li> <li>Open Graph Meta Tags — https://ahrefs.com/blog/open-graph-meta-tags/ — implementation reference.</li> </ul></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)">Related Articles</h2><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));gap:16px"><a style="text-decoration:none" data-related-article="404-page-ai-crawler-handling" data-related-position="1" href="/technical/404-page-ai-crawler-handling"><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">404 Page AI Crawler Handling: Avoiding Citation Loss During Migrations</h3><p style="font-size:13px;color:var(--text-secondary);line-height:1.5">Migration playbook for keeping AI citations during URL changes — hard 404 vs soft 404, 410 Gone, redirect chains, sitemap cleanup, and refetch monitoring.</p></div></a><a style="text-decoration:none" data-related-article="accept-encoding-for-ai-crawlers" data-related-position="2" href="/technical/accept-encoding-for-ai-crawlers"><div class="card"><span class="badge badge-green" style="margin-bottom:8px">specification</span><h3 style="font-size:15px;font-weight:600;color:var(--text-heading);margin-bottom:4px">Accept-Encoding (Brotli, Gzip) for AI Crawlers</h3><p style="font-size:13px;color:var(--text-secondary);line-height:1.5">Specification for serving Brotli, gzip, and zstd to AI crawlers via Accept-Encoding negotiation: which bots support which codecs, fallback rules, and Vary handling.</p></div></a><a style="text-decoration:none" data-related-article="html-semantic-structure-for-ai-readability" data-related-position="3" href="/technical/html-semantic-structure-for-ai-readability"><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">HTML semantic structure for AI readability: headings, lists, and tables</h3><p style="font-size:13px;color:var(--text-secondary);line-height:1.5">Reference for semantic HTML that AI systems read well: heading order, lists, tables, definition patterns, and the anti-patterns that cause AI to extract the wrong answer.</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">On this page</div><a href="#tl-dr" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">TL;DR</a><a href="#what-an-ai-answer-card-is" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">What an "AI answer card" is</a><a href="#why-og-is-now-an-ai-readability-concern" 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 OG is now an AI-readability concern</a><a href="#required-tags-the-four-ogp-me-mandated" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Required tags (the four ogp.me-mandated)</a><a href="#recommended-tags-the-ai-card-minimum-viable-set" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Recommended tags (the AI-card minimum-viable set)</a><a href="#twitter-card-alignment" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Twitter Card alignment</a><a href="#value-format-rules" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Value-format rules</a><a href="#og-title" 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)">og:title</a><a href="#og-description" 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)">og:description</a><a href="#og-image-the-most-broken-tag" 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)">og:image (the most-broken tag)</a><a href="#og-url" 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)">og:url</a><a href="#og-type" 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)">og:type</a><a href="#crawler-unblocking-mandatory" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Crawler unblocking (mandatory)</a><a href="#validation-workflow" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Validation workflow</a><a href="#cdn-and-rendering-rules-for-js-heavy-sites" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">CDN and rendering rules for JS-heavy sites</a><a href="#anti-patterns" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Anti-patterns</a><a href="#relationship-to-structured-data" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Relationship to structured data</a><a href="#reference-minimal-compliant-head-block" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Reference: minimal compliant head block</a><a href="#implementation-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">Implementation checklist</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-do-ai-engines-actually-read-open-graph-tags" 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 AI engines actually read Open Graph tags?</a><a href="#q-what-is-the-single-most-important-og-tag-for-ai-answer-cards" 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: What is the single most important OG tag for AI answer cards?</a><a href="#q-should-og-title-match-the-page-title-exactly" 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: Should og:title match the page <title> exactly?</a><a href="#q-do-i-still-need-twitter-tags-if-i-have-og-tags" 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 still need twitter: tags if I have OG tags?</a><a href="#q-how-often-should-i-update-og-image" 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: How often should I update og:image?</a><a href="#q-can-i-use-a-dynamically-generated-og-image" 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: Can I use a dynamically generated OG image?</a><a href="#sources" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Sources</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">Stay Updated</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">GEO & AI Search Insights</h2><p style="font-size:14px;color:var(--text-secondary);line-height:1.7;margin-bottom:24px">New articles, framework updates, and industry analysis. No spam, unsubscribe anytime.</p><form style="display:flex;flex-wrap:wrap;gap:8px;max-width:420px;margin:0 auto"><input type="email" placeholder="your@email.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">Subscribe</button></form></div></section><footer style="background:var(--color-forest-black);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">Structured knowledge for AI search visibility. The canonical reference for GEO, AEO, and AI search optimization.</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-mongodb-green);margin-bottom:16px">Learn</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="/geo/what-is-geo">What Is GEO?</a></li><li><a class="footer-link" href="/aeo/what-is-aeo">What Is AEO?</a></li><li><a class="footer-link" href="/geo/geo-vs-seo">GEO vs SEO</a></li><li><a class="footer-link" href="/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-mongodb-green);margin-bottom:16px">Build</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="/technical/llms-txt">llms.txt Reference</a></li><li><a class="footer-link" href="/technical/how-to-create-llms-txt">Create llms.txt</a></li><li><a class="footer-link" href="/technical/structured-data-for-ai-search">Structured Data</a></li><li><a class="footer-link" href="/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-mongodb-green);margin-bottom:16px">Strategy</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="/strategy/ai-visibility-measurement">AI Visibility</a></li><li><a class="footer-link" href="/strategy/geo-content-strategy">Content Strategy</a></li><li><a class="footer-link" href="/strategy/geo-roi-framework">GEO ROI</a></li><li><a class="footer-link" href="/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-mongodb-green);margin-bottom:16px">Resources</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="/contact">Contact</a></li><li><a class="footer-link" href="/tags">Tags</a></li><li><a class="footer-link" href="/sitemap.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. <!-- -->All rights reserved.</p><p style="font-size:12px;color:var(--color-cool-gray)"><a href="mailto:contact@geodocs.dev" class="footer-link">contact@geodocs.dev</a> · <!-- -->Built for humans and 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> (function(){ var s=document.createElement('script'); s.src='https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js'; s.defer=true; s.onload=function(){ var isDark=document.documentElement.getAttribute('data-theme')==='dark'; mermaid.initialize({startOnLoad:true,theme:isDark?'dark':'default',securityLevel:'loose'}); mermaid.run(); }; document.head.appendChild(s); })(); </script><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/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"GTMNoScript\"]\n3:I[59919,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"ThemeProvider\"]\n4:\"$Sreact.suspense\"\n5:I[86402,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"PostHogPageView\"]\n6:I[39756,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"default\"]\n7:I[37457,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"default\"]\n9:I[35264,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"AlgoliaSearchDialog\"]\na:I[56414,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"GeolifyAIDialog\"]\nb:I[86402,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"Analytics\"]\nd:I[97367,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"OutletBoundary\"]\n10:I[97367,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"ViewportBoundary\"]\n12:I[97367,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"MetadataBoundary\"]\n14:I[63491,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0z~59b-n8nq5n.js\"],\"default\"]\n:HL[\"/_next/static/chunks/0hbz95bqplbsv.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=DM+Serif+Text\u0026family=Plus+Jakarta+Sans:wght@300;400;500;600;700\u0026family=Source+Code+Pro:wght@400;500;600\u0026display=swap\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"technical\",\"open-graph-tags-ai-answer-cards-spec\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"technical\",{\"children\":[[\"slug\",\"open-graph-tags-ai-answer-cards-spec\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0hbz95bqplbsv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0ld4q8u-25eux.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/0xf6s51ok42m_.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/148t.fhegq9f1.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,{\"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\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=DM+Serif+Text\u0026family=Plus+Jakarta+Sans:wght@300;400;500;600;700\u0026family=Source+Code+Pro:wght@400;500;600\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"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,{}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(function(){\\n var s=document.createElement('script');\\n s.src='https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js';\\n s.defer=true;\\n s.onload=function(){\\n var isDark=document.documentElement.getAttribute('data-theme')==='dark';\\n mermaid.initialize({startOnLoad:true,theme:isDark?'dark':'default',securityLevel:'loose'});\\n mermaid.run();\\n };\\n document.head.appendChild(s);\\n})();\\n\"}}]]}]]}]]}],{\"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\":[\"$Lc\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0immojv~8w4~6.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$4\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@e\"}]}]]}],{},null,false,null]},null,false,\"$@f\"]},null,false,\"$@f\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L10\",null,{\"children\":\"$L11\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$4\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L13\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0hbz95bqplbsv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"NIAK0ez3QwYT5WEUUjWPI\"}\n"])</script><script>self.__next_f.push([1,"15:[]\nf:\"$W15\"\n"])</script><script>self.__next_f.push([1,"16:I[2971,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"Header\"]\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"$L16\",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\"},\"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\"}}}],\"$L17\",\"$L18\"]\n"])</script><script>self.__next_f.push([1,"19:I[22016,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"\"]\n1a:I[5500,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"Image\"]\n17:[\"$\",\"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(--color-forest-black)\",\"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\":[[\"$\",\"$L19\",null,{\"href\":\"/\",\"className\":\"btn btn-primary\",\"children\":\"Go home\"}],[\"$\",\"$L19\",null,{\"href\":\"/geo/what-is-geo\",\"className\":\"btn btn-outline\",\"children\":\"Start with GEO\"}]]}]]}]}]\n"])</script><script>self.__next_f.push([1,"18:[\"$\",\"footer\",null,{\"style\":{\"background\":\"var(--color-forest-black)\",\"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\":[\"$\",\"$L1a\",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-mongodb-green)\",\"marginBottom\":16},\"children\":\"Learn\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/geo/what-is-geo\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/geo/what-is-geo\",\"className\":\"footer-link\",\"children\":\"What Is GEO?\"}]}],[\"$\",\"li\",\"/aeo/what-is-aeo\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/aeo/what-is-aeo\",\"className\":\"footer-link\",\"children\":\"What Is AEO?\"}]}],[\"$\",\"li\",\"/geo/geo-vs-seo\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/geo/geo-vs-seo\",\"className\":\"footer-link\",\"children\":\"GEO vs SEO\"}]}],[\"$\",\"li\",\"/reference/geo-aeo-glossary\",{\"children\":[\"$\",\"$L19\",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-mongodb-green)\",\"marginBottom\":16},\"children\":\"Build\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/technical/llms-txt\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/technical/llms-txt\",\"className\":\"footer-link\",\"children\":\"llms.txt Reference\"}]}],[\"$\",\"li\",\"/technical/how-to-create-llms-txt\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/technical/how-to-create-llms-txt\",\"className\":\"footer-link\",\"children\":\"Create llms.txt\"}]}],[\"$\",\"li\",\"/technical/structured-data-for-ai-search\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/technical/structured-data-for-ai-search\",\"className\":\"footer-link\",\"children\":\"Structured Data\"}]}],[\"$\",\"li\",\"/technical/ai-txt\",{\"children\":[\"$\",\"$L19\",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-mongodb-green)\",\"marginBottom\":16},\"children\":\"Strategy\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/strategy/ai-visibility-measurement\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/strategy/ai-visibility-measurement\",\"className\":\"footer-link\",\"children\":\"AI Visibility\"}]}],[\"$\",\"li\",\"/strategy/geo-content-strategy\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/strategy/geo-content-strategy\",\"className\":\"footer-link\",\"children\":\"Content Strategy\"}]}],[\"$\",\"li\",\"/strategy/geo-roi-framework\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/strategy/geo-roi-framework\",\"className\":\"footer-link\",\"children\":\"GEO ROI\"}]}],[\"$\",\"li\",\"/aeo/aeo-content-checklist\",{\"children\":[\"$\",\"$L19\",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-mongodb-green)\",\"marginBottom\":16},\"children\":\"Resources\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"https://github.com/Geodocs-dev\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"https://github.com/Geodocs-dev\",\"className\":\"footer-link\",\"children\":\"GitHub\"}]}],[\"$\",\"li\",\"/contact\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/contact\",\"className\":\"footer-link\",\"children\":\"Contact\"}]}],[\"$\",\"li\",\"/tags\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/tags\",\"className\":\"footer-link\",\"children\":\"Tags\"}]}],[\"$\",\"li\",\"/sitemap.xml\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/sitemap.xml\",\"className\":\"footer-link\",\"children\":\"Sitemap\"}]}],\"$L1b\",\"$L1c\"]}]]}]]]}],\"$L1d\"]}],\"$L1e\"]}]\n"])</script><script>self.__next_f.push([1,"1b:[\"$\",\"li\",\"/llms.txt\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/llms.txt\",\"className\":\"footer-link\",\"children\":\"llms.txt\"}]}]\n1c:[\"$\",\"li\",\"/ai.txt\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/ai.txt\",\"className\":\"footer-link\",\"children\":\"ai.txt\"}]}]\n1d:[\"$\",\"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.\"]}]]}]\n1e:[\"$\",\"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 \"}]\n"])</script><script>self.__next_f.push([1,"1f:I[43937,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"ArticleTracker\"]\n20:T550,{\"@context\":\"https://schema.org\",\"@type\":\"TechArticle\",\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\"},\"headline\":\"Open Graph Tags for AI Answer Cards: A Complete Specification\",\"description\":\"A publisher-grade specification of the Open Graph tags AI answer engines like Perplexity, ChatGPT, and Bing Chat read to render answer cards, link previews, and citations.\",\"image\":\"https://geodocs.dev/geodocs-logo-dark.png\",\"url\":\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\",\"author\":{\"@type\":\"Person\",\"name\":\"Geodocs Research Team\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Geodocs.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://geodocs.dev/geodocs-logo-dark.png\"}},\"datePublished\":\"2026-04-29\",\"dateModified\":\"2026-04-29\",\"keywords\":\"Open Graph for AI answer cards, og:title for AI, og:image LLM, AI answer card meta tags, OG tags Perplexity, open graph ChatGPT, og:image dimensions 1200x630\",\"about\":[{\"@type\":\"Thing\",\"name\":\"Open Graph protocol\"},{\"@type\":\"Thing\",\"name\":\"Perplexity\"},{\"@type\":\"Thing\",\"name\":\"ChatGPT Search\"},{\"@type\":\"Thing\",\"name\":\"Bing Chat\"},{\"@type\":\"Thing\",\"name\":\"Google AI Overviews\"},{\"@type\":\"Thing\",\"name\":\"og:title\"},{\"@type\":\"Thing\",\"name\":\"og:description\"},{\"@type\":\"Thing\",\"name\":\"og:image\"},{\"@type\":\"Thing\",\"name\":\"Twitter Card\"}]}21:T8ce,"])</script><script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Do AI engines actually read Open Graph tags?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. Bing Chat, Perplexity, ChatGPT Search, and Google AI Overviews all parse the document \u003chead\u003e and reuse OG fields to render citation cards. When OG is missing, they fall back to the HTML \u003ctitle\u003e and \u003cmeta description\u003e, which usually produces a less branded card.\"}},{\"@type\":\"Question\",\"name\":\"What is the single most important OG tag for AI answer cards?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"og:image. Title and description fall back gracefully to other tags, but a missing or broken image leaves the card visually empty — the largest single drop in click-through rate. A 1200x630 JPG at an absolute HTTPS URL under 5 MB solves roughly 90% of card-rendering issues.\"}},{\"@type\":\"Question\",\"name\":\"Should og:title match the page \u003ctitle\u003e exactly?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Not strictly. og:title is optimized for the social/answer card; \u003ctitle\u003e is optimized for the browser tab and SEO. Keep them semantically equivalent, but you may shorten og:title to ~50 characters or drop the brand suffix that's already in og:site_name.\"}},{\"@type\":\"Question\",\"name\":\"Do I still need twitter: tags if I have OG tags?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. X / Twitter requires twitter:card to opt into large-image cards, and several AI engines fall back to twitter: when OG is malformed. Mirror the values — do not duplicate the markup unnecessarily.\"}},{\"@type\":\"Question\",\"name\":\"How often should I update og:image?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"When the page's core message changes. AI engines cache OG images aggressively (often 7-30 days). To force a re-fetch, change the image URL (append ?v=YYYYMMDD) and run the page through the Facebook debugger.\"}},{\"@type\":\"Question\",\"name\":\"Can I use a dynamically generated OG image?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes — but the URL must be stable per page and reachable without authentication. Common patterns include edge functions (Vercel OG, Cloudflare Browser Run), build-time screenshots, and templated SVG-to-PNG conversion. Cache the output at the CDN.\"}}]}"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"$L16\",null,{\"lang\":\"en\",\"dict\":\"$8:0:props:dict\"}],[[\"$\",\"main\",null,{\"style\":{\"minHeight\":\"70vh\"},\"children\":[[\"$\",\"$L1f\",null,{\"meta\":{\"slug\":\"open-graph-tags-ai-answer-cards-spec\",\"section\":\"technical\",\"content_type\":\"specification\",\"difficulty\":\"advanced\",\"primary_audience\":\"technical-seo-engineers\",\"secondary_audiences\":[\"content-engineering-teams\",\"platform-teams\",\"geo-strategists\"],\"word_count\":2395,\"reading_time_min\":12,\"has_code_snippet\":false,\"has_table\":true,\"citation_readiness\":\"reviewed\",\"series\":\"ai-search-technical-foundations\",\"series_order\":4}}],[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$20\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Home\\\",\\\"item\\\":\\\"https://geodocs.dev\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"TECHNICAL\\\",\\\"item\\\":\\\"https://geodocs.dev/technical\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":3,\\\"name\\\":\\\"Open Graph Tags for AI Answer Cards: A Complete Specification\\\",\\\"item\\\":\\\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\\\"}]}\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$21\"}}],\"$L22\",\"$L23\"]]}],\"$L24\"],\"$L25\"]\n"])</script><script>self.__next_f.push([1,"26:I[23150,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"ShareButtons\"]\n27:I[47654,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"ExploreWithAI\"]\n2b:I[11181,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"Newsletter\"]\n28:T52f5,"])</script><script>self.__next_f.push([1,"\u003cdiv class=\"ai-summary\"\u003e\u003cp\u003eAI answer engines including Perplexity, ChatGPT Search, Bing Chat, and Google AI Overviews reuse the Open Graph protocol to render link previews, citation cards, and source thumbnails. This spec defines the required and recommended OG tags, exact value formats, image requirements (1200x630 px, \u003c=5 MB, absolute HTTPS URL), validation steps, and CDN delivery rules so AI bots can render your card correctly.\u003c/p\u003e\u003c/div\u003e\n\u003ch2 id=\"tl-dr\"\u003eTL;DR\u003c/h2\u003e\n\u003cp\u003eOpen Graph (OG) was built for Facebook in 2010 but is now the de-facto metadata layer that AI answer engines read when they render link cards inside citations, source rails, and answer panels. Ship six tags on every indexable page — og:title, og:description, og:image, og:url, og:type, and og:site_name — use a 1200x630 absolute-URL image under 5 MB, and unblock the AI crawler user-agents listed below. Those defaults alone keep your brand from appearing as an unstyled, image-less fallback in AI answer cards.\u003c/p\u003e\n\u003ch2 id=\"what-an-ai-answer-card-is\"\u003eWhat an \"AI answer card\" is\u003c/h2\u003e\n\u003cp\u003eAn AI answer card is the rectangular link preview that appears inside or alongside a generative answer when an AI engine cites your page. It is rendered from a small bag of metadata — title, description, image, URL, and site name. AI engines do not invent a new metadata format: they read the Open Graph tags already in the HTML head, falling back to the HTML \u003ctitle\u003e element and \u003cmeta name=\"description\"\u003e when OG is missing.\u003c/p\u003e\n\u003cp\u003eThe cards appear in:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePerplexity source list, the \"Sources\" rail, and shared answer pages\u003c/li\u003e\n\u003cli\u003eChatGPT Search inline citations and the right-side citation pane\u003c/li\u003e\n\u003cli\u003eBing Chat / Copilot answer footers and inline link previews\u003c/li\u003e\n\u003cli\u003eGoogle AI Overviews \"From sources across the web\" cards\u003c/li\u003e\n\u003cli\u003eYou.com, Yahoo Scout, and other visual answer engines\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhen OG metadata is absent or broken, the card degrades to a generic favicon plus a truncated meta description — reducing brand recognition, click-through rate, and downstream re-citation.\u003c/p\u003e\n\u003ch2 id=\"why-og-is-now-an-ai-readability-concern\"\u003eWhy OG is now an AI-readability concern\u003c/h2\u003e\n\u003cp\u003eThe Open Graph protocol was designed to \"turn web pages into graph objects\" for Facebook (ogp.me). Two shifts moved it into the AI-readability stack:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCrawler reuse. AI training and live-retrieval crawlers (GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot, Google-Extended) parse the same HTML head as Facebook's scraper. OG tags ship in that head, so they get ingested for free.\u003c/li\u003e\n\u003cli\u003eCard-rendering convergence. AI front-ends adopted the social-card pattern (title + description + 1200x630 image) because users already recognize it. Reusing OG tags is cheaper than inventing a new schema.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003ePrerender.io's own documentation confirms that OG tags directly influence how LLMs interpret content for previews and how AI front-ends render link cards.\u003c/p\u003e\n\u003ch2 id=\"required-tags-the-four-ogp-me-mandated\"\u003eRequired tags (the four ogp.me-mandated)\u003c/h2\u003e\n\u003cp\u003eEvery page MUST include these four tags in the document \u003chead\u003e. Missing any of them causes Facebook's debugger to error and most AI crawlers to fall back to brittle heuristics.\u003c/p\u003e\n\u003cdiv class=\"table-responsive\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003eTag\u003c/th\u003e\u003cth\u003eRequired value\u003c/th\u003e\u003cth\u003eAI-card role\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003eog:title\u003c/td\u003e\u003ctd\u003ePlain text, \u003c=60 chars recommended\u003c/td\u003e\u003ctd\u003eCard headline\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eog:type\u003c/td\u003e\u003ctd\u003ewebsite, article, product, etc.\u003c/td\u003e\u003ctd\u003eCard layout selection\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eog:image\u003c/td\u003e\u003ctd\u003eAbsolute HTTPS URL to image\u003c/td\u003e\u003ctd\u003eCard thumbnail\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eog:url\u003c/td\u003e\u003ctd\u003eCanonical absolute URL of the page\u003c/td\u003e\u003ctd\u003eCard link target \u0026 dedupe key\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-0\" data-snippet-lang=\"html\" class=\"copy-btn\" title=\"Copy code\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-html\"\u003e\u0026lt;meta property=\"og:title\" content=\"Open Graph Tags for AI Answer Cards: A Complete Specification\" /\u0026gt;\n\u0026lt;meta property=\"og:type\" content=\"article\" /\u0026gt;\n\u0026lt;meta property=\"og:image\" content=\"https://geodocs.dev/og/open-graph-ai-answer-cards-spec.jpg\" /\u0026gt;\n\u0026lt;meta property=\"og:url\" content=\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\" /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2 id=\"recommended-tags-the-ai-card-minimum-viable-set\"\u003eRecommended tags (the AI-card minimum-viable set)\u003c/h2\u003e\n\u003cp\u003eAdd these in addition to the four required tags. They are not in the ogp.me MUST list, but every major AI card renderer reads them.\u003c/p\u003e\n\u003cdiv class=\"table-responsive\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003eTag\u003c/th\u003e\u003cth\u003eRecommended value\u003c/th\u003e\u003cth\u003eNotes\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003eog:description\u003c/td\u003e\u003ctd\u003e120-160 chars\u003c/td\u003e\u003ctd\u003eCard body text. Must match the page's actual answer-first content.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eog:site_name\u003c/td\u003e\u003ctd\u003eBrand name\u003c/td\u003e\u003ctd\u003eUsed as the card's \"publisher\" badge.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eog:locale\u003c/td\u003e\u003ctd\u003een_US, vi_VN, etc.\u003c/td\u003e\u003ctd\u003eLanguage hint for multilingual AI engines.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eog:image:alt\u003c/td\u003e\u003ctd\u003ePlain text describing the image\u003c/td\u003e\u003ctd\u003eAccessibility plus multimodal AI grounding.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eog:image:width\u003c/td\u003e\u003ctd\u003e1200\u003c/td\u003e\u003ctd\u003eLets crawlers pre-allocate layout.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eog:image:height\u003c/td\u003e\u003ctd\u003e630\u003c/td\u003e\u003ctd\u003eSame.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eog:image:type\u003c/td\u003e\u003ctd\u003eimage/jpeg or image/png\u003c/td\u003e\u003ctd\u003eAvoid surprise format mismatches.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003earticle:published_time\u003c/td\u003e\u003ctd\u003eISO-8601 datetime\u003c/td\u003e\u003ctd\u003eUsed by AI for freshness ranking.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003earticle:modified_time\u003c/td\u003e\u003ctd\u003eISO-8601 datetime\u003c/td\u003e\u003ctd\u003eSame.\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003earticle:author\u003c/td\u003e\u003ctd\u003eURL or name\u003c/td\u003e\u003ctd\u003eAuthorship signal for E-E-A-T.\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n\u003ch2 id=\"twitter-card-alignment\"\u003eTwitter Card alignment\u003c/h2\u003e\n\u003cp\u003eTwitter (now X) uses a parallel twitter: namespace. Several AI engines — notably Perplexity and Bing Chat — fall back to twitter: tags when OG is missing or invalid.\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-1\" data-snippet-lang=\"html\" class=\"copy-btn\" title=\"Copy code\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-html\"\u003e\u0026lt;meta name=\"twitter:card\" content=\"summary_large_image\" /\u0026gt;\n\u0026lt;meta name=\"twitter:title\" content=\"Open Graph Tags for AI Answer Cards\" /\u0026gt;\n\u0026lt;meta name=\"twitter:description\" content=\"Specification of the OG tags AI answer engines read for citation cards.\" /\u0026gt;\n\u0026lt;meta name=\"twitter:image\" content=\"https://geodocs.dev/og/open-graph-ai-answer-cards-spec.jpg\" /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eRule of thumb: keep twitter:\u003cem\u003e values identical to the og:\u003c/em\u003e equivalents. Divergence creates inconsistent cards across engines.\u003c/p\u003e\n\u003ch2 id=\"value-format-rules\"\u003eValue-format rules\u003c/h2\u003e\n\u003ch3 id=\"og-title\"\u003eog:title\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePlain text, no HTML.\u003c/li\u003e\n\u003cli\u003eTarget 50-60 characters; some AI cards truncate at 60.\u003c/li\u003e\n\u003cli\u003eShould be the canonical answer-first headline. Avoid clickbait — AI engines penalize mismatch with body content.\u003c/li\u003e\n\u003cli\u003eMust match (or be a strict superset of) the H1 and \u003ctitle\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"og-description\"\u003eog:description\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e120-160 characters. Below 90 looks empty in cards; above 200 truncates.\u003c/li\u003e\n\u003cli\u003eLead with the answer. AI engines extract this directly into snippet hover-cards.\u003c/li\u003e\n\u003cli\u003eAvoid emoji and trailing ellipses.\u003c/li\u003e\n\u003cli\u003eMust be unique per URL — duplicate descriptions across pages cause AI engines to merge or drop cards.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"og-image-the-most-broken-tag\"\u003eog:image (the most-broken tag)\u003c/h3\u003e\n\u003cp\u003eThe image is the single most fragile OG field. Every major AI card renderer enforces these constraints (sources: opengraphdebug.com, ogimage.gallery, prerender.io):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDimensions: 1200 x 630 px (1.91:1 aspect ratio). Minimum 600 x 315 px.\u003c/li\u003e\n\u003cli\u003eFile size: Under 5 MB. Facebook's hard cap is 8 MB; smaller is safer.\u003c/li\u003e\n\u003cli\u003eFormat: JPG (default) or PNG (when transparency is needed). Avoid SVG, GIF, AVIF, and WebP — crawler support is inconsistent.\u003c/li\u003e\n\u003cli\u003eURL: Absolute HTTPS URL. Relative URLs silently fail in most card renderers.\u003c/li\u003e\n\u003cli\u003eStability: Stable path. Cache-busting query strings (?v=123) work for invalidation but should be set deliberately.\u003c/li\u003e\n\u003cli\u003eAccessibility: The crawler must reach the URL with no auth, no cookies, and no JavaScript rendering required.\u003c/li\u003e\n\u003cli\u003eRender speed: Serve from a CDN edge. Slow image fetches silently time out in card renderers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"og-url\"\u003eog:url\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMust equal the page's canonical URL exactly — same protocol, host, path, trailing-slash policy, and case.\u003c/li\u003e\n\u003cli\u003eNo tracking parameters. No fragment identifiers.\u003c/li\u003e\n\u003cli\u003eMust match the \u003clink rel=\"canonical\"\u003e value. Mismatches cause AI engines to deduplicate to the wrong URL.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"og-type\"\u003eog:type\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse article for documentation, blog posts, and reference pages.\u003c/li\u003e\n\u003cli\u003eUse website for the homepage and section landing pages.\u003c/li\u003e\n\u003cli\u003eUse product for product detail pages (enables price/availability sub-tags).\u003c/li\u003e\n\u003cli\u003eAvoid book, music.song, etc. unless the type genuinely matches.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"crawler-unblocking-mandatory\"\u003eCrawler unblocking (mandatory)\u003c/h2\u003e\n\u003cp\u003eOG tags are useless if the AI bot cannot fetch the page or the image. Audit robots.txt and CDN/WAF rules for these user-agents:\u003c/p\u003e\n\u003cdiv class=\"table-responsive\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003eUser-agent\u003c/th\u003e\u003cth\u003eOperator\u003c/th\u003e\u003cth\u003eUse\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003eGPTBot\u003c/td\u003e\u003ctd\u003eOpenAI\u003c/td\u003e\u003ctd\u003eTraining\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eOAI-SearchBot\u003c/td\u003e\u003ctd\u003eOpenAI\u003c/td\u003e\u003ctd\u003eChatGPT Search live retrieval\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eChatGPT-User\u003c/td\u003e\u003ctd\u003eOpenAI\u003c/td\u003e\u003ctd\u003eChatGPT browsing tool\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003ePerplexityBot\u003c/td\u003e\u003ctd\u003ePerplexity\u003c/td\u003e\u003ctd\u003eIndexing\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003ePerplexity-User\u003c/td\u003e\u003ctd\u003ePerplexity\u003c/td\u003e\u003ctd\u003eLive retrieval\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eClaudeBot\u003c/td\u003e\u003ctd\u003eAnthropic\u003c/td\u003e\u003ctd\u003eTraining\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eClaude-Web\u003c/td\u003e\u003ctd\u003eAnthropic\u003c/td\u003e\u003ctd\u003eLive retrieval\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eGoogle-Extended\u003c/td\u003e\u003ctd\u003eGoogle\u003c/td\u003e\u003ctd\u003eGemini training\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eGooglebot\u003c/td\u003e\u003ctd\u003eGoogle\u003c/td\u003e\u003ctd\u003eAI Overviews retrieval\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eBingbot\u003c/td\u003e\u003ctd\u003eMicrosoft\u003c/td\u003e\u003ctd\u003eBing Chat / Copilot\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eFacebookExternalHit\u003c/td\u003e\u003ctd\u003eMeta\u003c/td\u003e\u003ctd\u003eCard scraping\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eTwitterbot\u003c/td\u003e\u003ctd\u003eX\u003c/td\u003e\u003ctd\u003eCard scraping\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eLinkedInBot\u003c/td\u003e\u003ctd\u003eLinkedIn\u003c/td\u003e\u003ctd\u003eCard scraping\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eBlock intentionally — but if you want AI answer-card visibility, you must allow at least the live-retrieval bots and the OG-image path. See robots.txt for AI Crawlers for a complete policy template.\u003c/p\u003e\n\u003ch2 id=\"validation-workflow\"\u003eValidation workflow\u003c/h2\u003e\n\u003cp\u003eBefore claiming OG compliance, validate against four debuggers and one in-house check:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eFacebook Sharing Debugger (developers.facebook.com/tools/debug) — flags missing required tags and image fetch errors.\u003c/li\u003e\n\u003cli\u003eLinkedIn Post Inspector — strict on absolute URLs and image dimensions.\u003c/li\u003e\n\u003cli\u003eX / Twitter Card Validator — verifies the twitter: fallback path.\u003c/li\u003e\n\u003cli\u003eopengraph.xyz or opengraphdebug.com — multi-platform preview.\u003c/li\u003e\n\u003cli\u003eLive AI render check — paste the URL into Perplexity, ChatGPT Search, and Bing Chat and confirm the rendered card matches your OG values. Engines cache aggressively; force a re-fetch with a query-string version bump if needed.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eA passing audit means: zero errors in all four debuggers, image renders within 2 seconds, and title and description render without truncation in the AI front-end.\u003c/p\u003e\n\u003ch2 id=\"cdn-and-rendering-rules-for-js-heavy-sites\"\u003eCDN and rendering rules for JS-heavy sites\u003c/h2\u003e\n\u003cp\u003eSingle-page apps (React, Vue, Angular) often inject OG tags client-side. AI crawlers do not execute JavaScript reliably. Three viable patterns:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eServer-side rendering (SSR). Inject OG tags during the server response. Default for Next.js, Nuxt, SvelteKit, and Remix.\u003c/li\u003e\n\u003cli\u003eStatic generation (SSG). Build OG tags at deploy time. Default for Astro, Hugo, and Jekyll.\u003c/li\u003e\n\u003cli\u003ePrerender service. Detect crawler user-agents at the edge and serve a prerendered HTML snapshot (e.g., Prerender.io, Cloudflare Browser Run). Required only when SSR/SSG is not feasible.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eWhichever pattern you choose, the test is: curl -A \"GPTBot\" https://yourdomain.com/page | grep og: should return your full OG tag set with no JavaScript execution.\u003c/p\u003e\n\u003ch2 id=\"anti-patterns\"\u003eAnti-patterns\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReusing the same og:image site-wide. Every page should have a unique image. AI engines deduplicate cards by image hash.\u003c/li\u003e\n\u003cli\u003eLogo-only OG images. AI cards with logo-only images get filtered out of visual answer engines (Yahoo Scout, Google AI Overviews shopping cards).\u003c/li\u003e\n\u003cli\u003eDescription copied from \u003cmeta description\u003e verbatim. Differentiate — og:description should lead with the answer; \u003cmeta description\u003e can be more SEO-keyword-heavy.\u003c/li\u003e\n\u003cli\u003eLocalized OG tags injected via JS. AI crawlers will see the default-locale fallback. Use SSR with og:locale:alternate instead.\u003c/li\u003e\n\u003cli\u003eRedirect chains on og:url or og:image. Each hop is a chance for the crawler to time out.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"relationship-to-structured-data\"\u003eRelationship to structured data\u003c/h2\u003e\n\u003cp\u003eOG tags and JSON-LD (structured data) are complementary, not redundant:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOG defines how the card is rendered.\u003c/li\u003e\n\u003cli\u003eJSON-LD defines what the page is (Article, Product, FAQPage, HowTo).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAI engines use both. Ship both. Keep og:title ~ schema:headline, og:description ~ schema:description, og:image ~ schema:image, and og:url ~ schema:url. Drift between the two is a high-confidence quality signal that drops citations.\u003c/p\u003e\n\u003cp\u003eSee also JSON-LD for AI Search: Complete Guide.\u003c/p\u003e\n\u003ch2 id=\"reference-minimal-compliant-head-block\"\u003eReference: minimal compliant head block\u003c/h2\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-2\" data-snippet-lang=\"html\" class=\"copy-btn\" title=\"Copy code\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-html\"\u003e\u0026lt;head\u0026gt;\n \u0026lt;title\u0026gt;Open Graph Tags for AI Answer Cards: A Complete Specification\u0026lt;/title\u0026gt;\n \u0026lt;meta name=\"description\" content=\"Specification of the Open Graph tags AI answer engines read for citation cards.\" /\u0026gt;\n \u0026lt;link rel=\"canonical\" href=\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\" /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e \u003c!-- Open Graph (required) --\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:title\" content=\"Open Graph Tags for AI Answer Cards\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:type\" content=\"article\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:url\" content=\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:image\" content=\"https://geodocs.dev/og/open-graph-ai-answer-cards-spec.jpg\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003c!-- Open Graph (recommended) --\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:description\" content=\"A publisher-grade spec of the OG tags AI answer engines read.\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:site_name\" content=\"Geodocs\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:locale\" content=\"en_US\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:image:alt\" content=\"Diagram of how AI answer cards consume Open Graph tags\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:image:width\" content=\"1200\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:image:height\" content=\"630\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"og:image:type\" content=\"image/jpeg\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"article:published_time\" content=\"2026-04-29T00:00:00Z\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"article:modified_time\" content=\"2026-04-29T00:00:00Z\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta property=\"article:author\" content=\"https://geodocs.dev/about\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003c!-- Twitter / X --\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta name=\"twitter:card\" content=\"summary_large_image\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta name=\"twitter:title\" content=\"Open Graph Tags for AI Answer Cards\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta name=\"twitter:description\" content=\"Specification of the OG tags AI answer engines read.\" /\u003e\u003c/p\u003e\n\u003cp\u003e \u003cmeta name=\"twitter:image\" content=\"https://geodocs.dev/og/open-graph-ai-answer-cards-spec.jpg\" /\u003e\u003c/p\u003e\n\u003cp\u003e\u003c/head\u003e\u003c/p\u003e\n\u003ch2 id=\"implementation-checklist\"\u003eImplementation checklist\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ ] All four required OG tags present on every indexable page\u003c/li\u003e\n\u003cli\u003e[ ] og:image is 1200x630 px, \u003c=5 MB, absolute HTTPS URL, JPG or PNG\u003c/li\u003e\n\u003cli\u003e[ ] og:url matches \u003clink rel=\"canonical\"\u003e exactly\u003c/li\u003e\n\u003cli\u003e[ ] og:description is 120-160 chars, unique per URL, answer-first\u003c/li\u003e\n\u003cli\u003e[ ] twitter:* mirror set in place\u003c/li\u003e\n\u003cli\u003e[ ] OG tags rendered server-side or pre-rendered for crawler user-agents\u003c/li\u003e\n\u003cli\u003e[ ] AI bot user-agents (GPTBot, PerplexityBot, ClaudeBot, OAI-SearchBot, etc.) unblocked in robots.txt and CDN\u003c/li\u003e\n\u003cli\u003e[ ] Facebook, LinkedIn, X, and opengraph.xyz debuggers all clean\u003c/li\u003e\n\u003cli\u003e[ ] Live render verified in Perplexity, ChatGPT Search, and Bing Chat\u003c/li\u003e\n\u003cli\u003e[ ] OG values aligned with JSON-LD Article properties\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"faq\"\u003eFAQ\u003c/h2\u003e\n\u003ch3 id=\"q-do-ai-engines-actually-read-open-graph-tags\"\u003eQ: Do AI engines actually read Open Graph tags?\u003c/h3\u003e\n\u003cp\u003eYes. Bing Chat, Perplexity, ChatGPT Search, and Google AI Overviews all parse the document \u003chead\u003e and reuse OG fields to render citation cards. When OG is missing, they fall back to the HTML \u003ctitle\u003e and \u003cmeta description\u003e, which usually produces a less branded card.\u003c/p\u003e\n\u003ch3 id=\"q-what-is-the-single-most-important-og-tag-for-ai-answer-cards\"\u003eQ: What is the single most important OG tag for AI answer cards?\u003c/h3\u003e\n\u003cp\u003eog:image. Title and description fall back gracefully to other tags, but a missing or broken image leaves the card visually empty — the largest single drop in click-through rate. A 1200x630 JPG at an absolute HTTPS URL under 5 MB solves roughly 90% of card-rendering issues.\u003c/p\u003e\n\u003ch3 id=\"q-should-og-title-match-the-page-title-exactly\"\u003eQ: Should og:title match the page \u003ctitle\u003e exactly?\u003c/h3\u003e\n\u003cp\u003eNot strictly. og:title is optimized for the social/answer card; \u003ctitle\u003e is optimized for the browser tab and SEO. Keep them semantically equivalent, but you may shorten og:title to ~50 characters or drop the brand suffix that's already in og:site_name.\u003c/p\u003e\n\u003ch3 id=\"q-do-i-still-need-twitter-tags-if-i-have-og-tags\"\u003eQ: Do I still need twitter: tags if I have OG tags?\u003c/h3\u003e\n\u003cp\u003eYes. X / Twitter requires twitter:card to opt into large-image cards, and several AI engines fall back to twitter: when OG is malformed. Mirror the values — do not duplicate the markup unnecessarily.\u003c/p\u003e\n\u003ch3 id=\"q-how-often-should-i-update-og-image\"\u003eQ: How often should I update og:image?\u003c/h3\u003e\n\u003cp\u003eWhen the page's core message changes. AI engines cache OG images aggressively (often 7-30 days). To force a re-fetch, change the image URL (append ?v=YYYYMMDD) and run the page through the Facebook debugger.\u003c/p\u003e\n\u003ch3 id=\"q-can-i-use-a-dynamically-generated-og-image\"\u003eQ: Can I use a dynamically generated OG image?\u003c/h3\u003e\n\u003cp\u003eYes — but the URL must be stable per page and reachable without authentication. Common patterns include edge functions (Vercel OG, Cloudflare Browser Run), build-time screenshots, and templated SVG-to-PNG conversion. Cache the output at the CDN.\u003c/p\u003e\n\u003ch2 id=\"sources\"\u003eSources\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe Open Graph protocol — https://ogp.me/ — canonical specification.\u003c/li\u003e\n\u003cli\u003eOpen Graph Image Requirements — https://opengraphdebug.com/posts/og-image-requirements — image format and size constraints.\u003c/li\u003e\n\u003cli\u003eHow Open Graph Tags Impact LLM Training Data — https://prerender.io/blog/how-open-graph-tags-impact-llm-training-data/ — AI crawler reuse of OG.\u003c/li\u003e\n\u003cli\u003eWill AI Summarize Your Page Correctly? — https://fairwaydigitalmedia.com/fullmonitor_metatag_resourcecenter — LLM card rendering best practices.\u003c/li\u003e\n\u003cli\u003eOpen Graph and Social Meta Tags for AI Visibility — https://www.surfaceable.io/blog/open-graph-social-meta-tags-ai-visibility — interaction with AI systems.\u003c/li\u003e\n\u003cli\u003eOpen Graph Meta Tags — https://ahrefs.com/blog/open-graph-meta-tags/ — implementation reference.\u003c/li\u003e\n\u003c/ul\u003e"])</script><script>self.__next_f.push([1,"22:[\"$\",\"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\":400,\"lineHeight\":1.2,\"color\":\"var(--text-heading)\",\"marginBottom\":16},\"children\":\"Open Graph Tags for AI Answer Cards: A Complete Specification\"}],[\"$\",\"div\",null,{\"className\":\"metadata-bar\",\"style\":{\"marginBottom\":24},\"children\":[[\"$\",\"span\",null,{\"className\":\"metadata-bar__tag metadata-bar__tag--section\",\"children\":\"technical\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__tag\",\"children\":\"specification\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__tag\",\"children\":\"advanced\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__dot\"}],[\"$\",\"span\",null,{\"children\":[12,\" min read\"]}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__dot\"}],[\"$\",\"span\",null,{\"children\":[\"2,395\",\" words\"]}],[[\"$\",\"span\",null,{\"className\":\"metadata-bar__dot\"}],[\"$\",\"span\",null,{\"children\":[\"Updated\",\" \",\"Apr 2026\"]}]]]}],[\"$\",\"$L26\",null,{\"title\":\"Open Graph Tags for AI Answer Cards: A Complete Specification\",\"url\":\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\"}],[\"$\",\"$L27\",null,{\"title\":\"Open Graph Tags for AI Answer Cards: A Complete Specification\",\"url\":\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\",\"section\":\"technical\",\"slug\":\"open-graph-tags-ai-answer-cards-spec\"}],[\"$\",\"div\",null,{\"className\":\"prose\",\"dangerouslySetInnerHTML\":{\"__html\":\"$28\"}}],\"$L29\",false]}],\"$L2a\"]}]\n"])</script><script>self.__next_f.push([1,"23:[\"$\",\"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 \"}]\n24:[\"$\",\"$L2b\",null,{\"dict\":\"$8:0:props:dict:newsletter\"}]\n"])</script><script>self.__next_f.push([1,"25:[\"$\",\"footer\",null,{\"style\":{\"background\":\"var(--color-forest-black)\",\"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\":[\"$\",\"$L1a\",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-mongodb-green)\",\"marginBottom\":16},\"children\":\"Learn\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/geo/what-is-geo\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/geo/what-is-geo\",\"className\":\"footer-link\",\"children\":\"What Is GEO?\"}]}],[\"$\",\"li\",\"/aeo/what-is-aeo\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/aeo/what-is-aeo\",\"className\":\"footer-link\",\"children\":\"What Is AEO?\"}]}],[\"$\",\"li\",\"/geo/geo-vs-seo\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/geo/geo-vs-seo\",\"className\":\"footer-link\",\"children\":\"GEO vs SEO\"}]}],[\"$\",\"li\",\"/reference/geo-aeo-glossary\",{\"children\":[\"$\",\"$L19\",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-mongodb-green)\",\"marginBottom\":16},\"children\":\"Build\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/technical/llms-txt\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/technical/llms-txt\",\"className\":\"footer-link\",\"children\":\"llms.txt Reference\"}]}],[\"$\",\"li\",\"/technical/how-to-create-llms-txt\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/technical/how-to-create-llms-txt\",\"className\":\"footer-link\",\"children\":\"Create llms.txt\"}]}],[\"$\",\"li\",\"/technical/structured-data-for-ai-search\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/technical/structured-data-for-ai-search\",\"className\":\"footer-link\",\"children\":\"Structured Data\"}]}],[\"$\",\"li\",\"/technical/ai-txt\",{\"children\":[\"$\",\"$L19\",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-mongodb-green)\",\"marginBottom\":16},\"children\":\"Strategy\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/strategy/ai-visibility-measurement\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/strategy/ai-visibility-measurement\",\"className\":\"footer-link\",\"children\":\"AI Visibility\"}]}],[\"$\",\"li\",\"/strategy/geo-content-strategy\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/strategy/geo-content-strategy\",\"className\":\"footer-link\",\"children\":\"Content Strategy\"}]}],[\"$\",\"li\",\"/strategy/geo-roi-framework\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/strategy/geo-roi-framework\",\"className\":\"footer-link\",\"children\":\"GEO ROI\"}]}],[\"$\",\"li\",\"/aeo/aeo-content-checklist\",{\"children\":[\"$\",\"$L19\",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-mongodb-green)\",\"marginBottom\":16},\"children\":\"Resources\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"https://github.com/Geodocs-dev\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"https://github.com/Geodocs-dev\",\"className\":\"footer-link\",\"children\":\"GitHub\"}]}],[\"$\",\"li\",\"/contact\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/contact\",\"className\":\"footer-link\",\"children\":\"Contact\"}]}],[\"$\",\"li\",\"/tags\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/tags\",\"className\":\"footer-link\",\"children\":\"Tags\"}]}],[\"$\",\"li\",\"/sitemap.xml\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/sitemap.xml\",\"className\":\"footer-link\",\"children\":\"Sitemap\"}]}],\"$L2c\",\"$L2d\"]}]]}]]]}],\"$L2e\"]}],\"$L2f\"]}]\n"])</script><script>self.__next_f.push([1,"29:[\"$\",\"div\",null,{\"style\":{\"marginTop\":64},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"fontSize\":18,\"fontWeight\":600,\"marginBottom\":16,\"paddingBottom\":8,\"borderBottom\":\"1px solid var(--border-default)\"},\"children\":\"Related Articles\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"grid\",\"gridTemplateColumns\":\"repeat(auto-fill, minmax(280px, 1fr))\",\"gap\":16},\"children\":[[\"$\",\"$L19\",\"404-page-ai-crawler-handling\",{\"href\":\"/technical/404-page-ai-crawler-handling\",\"style\":{\"textDecoration\":\"none\"},\"data-related-article\":\"404-page-ai-crawler-handling\",\"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\":\"404 Page AI Crawler Handling: Avoiding Citation Loss During Migrations\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--text-secondary)\",\"lineHeight\":1.5},\"children\":\"Migration playbook for keeping AI citations during URL changes — hard 404 vs soft 404, 410 Gone, redirect chains, sitemap cleanup, and refetch monitoring.\"}]]}]}],[\"$\",\"$L19\",\"accept-encoding-for-ai-crawlers\",{\"href\":\"/technical/accept-encoding-for-ai-crawlers\",\"style\":{\"textDecoration\":\"none\"},\"data-related-article\":\"accept-encoding-for-ai-crawlers\",\"data-related-position\":2,\"children\":[\"$\",\"div\",null,{\"className\":\"card\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge badge-green\",\"style\":{\"marginBottom\":8},\"children\":\"specification\"}],[\"$\",\"h3\",null,{\"style\":{\"fontSize\":15,\"fontWeight\":600,\"color\":\"var(--text-heading)\",\"marginBottom\":4},\"children\":\"Accept-Encoding (Brotli, Gzip) for AI Crawlers\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--text-secondary)\",\"lineHeight\":1.5},\"children\":\"Specification for serving Brotli, gzip, and zstd to AI crawlers via Accept-Encoding negotiation: which bots support which codecs, fallback rules, and Vary handling.\"}]]}]}],[\"$\",\"$L19\",\"html-semantic-structure-for-ai-readability\",{\"href\":\"/technical/html-semantic-structure-for-ai-readability\",\"style\":{\"textDecoration\":\"none\"},\"data-related-article\":\"html-semantic-structure-for-ai-readability\",\"data-related-position\":3,\"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\":\"HTML semantic structure for AI readability: headings, lists, and tables\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--text-secondary)\",\"lineHeight\":1.5},\"children\":\"Reference for semantic HTML that AI systems read well: heading order, lists, tables, definition patterns, and the anti-patterns that cause AI to extract the wrong answer.\"}]]}]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"2a:[\"$\",\"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\":\"On this page\"}],[[\"$\",\"a\",\"tl-dr\",{\"href\":\"#tl-dr\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"TL;DR\"}],[\"$\",\"a\",\"what-an-ai-answer-card-is\",{\"href\":\"#what-an-ai-answer-card-is\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"What an \\\"AI answer card\\\" is\"}],[\"$\",\"a\",\"why-og-is-now-an-ai-readability-concern\",{\"href\":\"#why-og-is-now-an-ai-readability-concern\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Why OG is now an AI-readability concern\"}],[\"$\",\"a\",\"required-tags-the-four-ogp-me-mandated\",{\"href\":\"#required-tags-the-four-ogp-me-mandated\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Required tags (the four ogp.me-mandated)\"}],[\"$\",\"a\",\"recommended-tags-the-ai-card-minimum-viable-set\",{\"href\":\"#recommended-tags-the-ai-card-minimum-viable-set\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Recommended tags (the AI-card minimum-viable set)\"}],[\"$\",\"a\",\"twitter-card-alignment\",{\"href\":\"#twitter-card-alignment\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Twitter Card alignment\"}],[\"$\",\"a\",\"value-format-rules\",{\"href\":\"#value-format-rules\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Value-format rules\"}],[\"$\",\"a\",\"og-title\",{\"href\":\"#og-title\",\"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\":\"og:title\"}],[\"$\",\"a\",\"og-description\",{\"href\":\"#og-description\",\"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\":\"og:description\"}],[\"$\",\"a\",\"og-image-the-most-broken-tag\",{\"href\":\"#og-image-the-most-broken-tag\",\"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\":\"og:image (the most-broken tag)\"}],[\"$\",\"a\",\"og-url\",{\"href\":\"#og-url\",\"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\":\"og:url\"}],[\"$\",\"a\",\"og-type\",{\"href\":\"#og-type\",\"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\":\"og:type\"}],[\"$\",\"a\",\"crawler-unblocking-mandatory\",{\"href\":\"#crawler-unblocking-mandatory\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Crawler unblocking (mandatory)\"}],[\"$\",\"a\",\"validation-workflow\",{\"href\":\"#validation-workflow\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Validation workflow\"}],\"$L30\",\"$L31\",\"$L32\",\"$L33\",\"$L34\",\"$L35\",\"$L36\",\"$L37\",\"$L38\",\"$L39\",\"$L3a\",\"$L3b\",\"$L3c\"]]}]}]\n"])</script><script>self.__next_f.push([1,"2c:[\"$\",\"li\",\"/llms.txt\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/llms.txt\",\"className\":\"footer-link\",\"children\":\"llms.txt\"}]}]\n2d:[\"$\",\"li\",\"/ai.txt\",{\"children\":[\"$\",\"$L19\",null,{\"href\":\"/ai.txt\",\"className\":\"footer-link\",\"children\":\"ai.txt\"}]}]\n2e:[\"$\",\"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.\"]}]]}]\n2f:[\"$\",\"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 \"}]\n"])</script><script>self.__next_f.push([1,"30:[\"$\",\"a\",\"cdn-and-rendering-rules-for-js-heavy-sites\",{\"href\":\"#cdn-and-rendering-rules-for-js-heavy-sites\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"CDN and rendering rules for JS-heavy sites\"}]\n31:[\"$\",\"a\",\"anti-patterns\",{\"href\":\"#anti-patterns\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Anti-patterns\"}]\n32:[\"$\",\"a\",\"relationship-to-structured-data\",{\"href\":\"#relationship-to-structured-data\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Relationship to structured data\"}]\n33:[\"$\",\"a\",\"reference-minimal-compliant-head-block\",{\"href\":\"#reference-minimal-compliant-head-block\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Reference: minimal compliant head block\"}]\n34:[\"$\",\"a\",\"implementation-checklist\",{\"href\":\"#implementation-checklist\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Implementation checklist\"}]\n35:[\"$\",\"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\"}]\n36:[\"$\",\"a\",\"q-do-ai-engines-actually-read-open-graph-tags\",{\"href\":\"#q-do-ai-engines-actually-read-open-graph-tags\",\"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 AI engines actually read Open Graph tags?\"}]\n37:[\"$\",\"a\",\"q-what-is-the-single-most-important-og-tag-for-ai-answer-cards\",{\"href\":\"#q-what-is-the-single-most-important-og-tag-for-ai-answer-cards\",\"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: What is the single most important OG tag for AI answer cards?\"}]\n38:[\"$\",\"a\",\"q-should-og-title-match-the-page-title-exactly\",{\"href\":\"#q-should-og-title-match-the-page-title-exactly\",\"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: Should og:title match the page \u003ctitle\u003e exactly?\"}]\n39:[\"$\",\"a\",\"q-do-i-still-need-twitter-tags-if-i-have-og-tags\",{\"href\":\"#q-do-i-still-need-twitter-tags-if-i-have-og-tags\",\"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 still need twitter: tags if I have OG tags?\"}]\n3a:[\"$\",\"a\",\"q-how-often-should-i-update-og-image\",{\"href\":\"#q-how-often-should-i-update-og-image\",\"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: How often should I update og:image?\"}]\n3b:[\"$\",\"a\",\"q-can-i-use-a-dynamically-generated-og-image\",{\"href\":\"#q-can-i-use-a-dynamically-generated-og-image\",\"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: Can I use a dynamically generated OG image?\"}]\n3c:[\"$\",\"a\",\"sources\",{\"href\":\"#sources\",\"style\":{\"display\":"])</script><script>self.__next_f.push([1,"\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Sources\"}]\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"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/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0xf6s51ok42m_.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"IconMark\"]\ne:null\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"title\",\"0\",{\"children\":\"Open Graph Tags for AI Answer Cards: A Complete Specification | Geodocs.dev\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A publisher-grade specification of the Open Graph tags AI answer engines like Perplexity, ChatGPT, and Bing Chat read to render answer cards, link previews, and citations.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"keywords\",\"content\":\"Open Graph for AI answer cards,og:title for AI,og:image LLM,AI answer card meta tags,OG tags Perplexity,open graph ChatGPT,og:image dimensions 1200x630\"}],[\"$\",\"link\",\"3\",{\"rel\":\"canonical\",\"href\":\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\"}],[\"$\",\"link\",\"4\",{\"rel\":\"alternate\",\"hrefLang\":\"en\",\"href\":\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\"}],[\"$\",\"link\",\"5\",{\"rel\":\"alternate\",\"hrefLang\":\"x-default\",\"href\":\"https://geodocs.dev/technical/open-graph-tags-ai-answer-cards-spec\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"Open Graph Tags for AI Answer Cards: A Complete Specification\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"A publisher-grade specification of the Open Graph tags AI answer engines like Perplexity, ChatGPT, and Bing Chat read to render answer cards, link previews, and citations.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"9\",{\"property\":\"article:published_time\",\"content\":\"2026-04-29\"}],[\"$\",\"meta\",\"10\",{\"property\":\"article:modified_time\",\"content\":\"2026-04-29\"}],[\"$\",\"meta\",\"11\",{\"property\":\"article:author\",\"content\":\"Geodocs Research Team\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:title\",\"content\":\"Open Graph Tags for AI Answer Cards: A Complete Specification\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:description\",\"content\":\"A publisher-grade specification of the Open Graph tags AI answer engines like Perplexity, ChatGPT, and Bing Chat read to render answer cards, link previews, and citations.\"}],[\"$\",\"link\",\"15\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"16\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0zl.ysuv3a32n.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"17\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"18\",{\"rel\":\"apple-touch-icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"$L3d\",\"19\",{}]]\n"])</script></body></html>