🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

SEO and LLM Rankings

by @imrishit98

Audits websites for traditional SEO health and AI search visibility (GEO). Generates prioritized reports with actionable fixes and ready-to-use prompts for A...

Versionv1.1.0
Downloads801
TERMINAL
clawhub install seo-and-llm-rankings

πŸ“– About This Skill


name: seo-and-llm-rankings description: >- Audits websites for traditional SEO health and AI search visibility (GEO). Generates prioritized reports with actionable fixes and ready-to-use prompts for AI coding agents. Covers Google, Bing, ChatGPT, Perplexity, Claude, Gemini, Copilot, and Google AI Overviews. Use when auditing SEO, LLM visibility, generative engine optimization, AI Overviews, or AI search optimization. metadata: version: 1.1.0

SEO & LLM Rankings

Audit websites for traditional SEO health and AI search visibility (GEO). Generate prioritized reports with actionable fixes and ready-to-use prompts for AI coding agents. Covers Google, Bing, ChatGPT, Perplexity, Claude, Gemini, Copilot, and Google AI Overviews.

Before You Start

Check for product marketing context first: If .agents/product-marketing-context.md exists, read it before asking questions. Use that context and only ask for information not already covered.

Gather missing context by asking the user:

1. Audit mode -- Live URL scan or local codebase scan? 2. Site URL (if URL mode) -- What URL should be audited? 3. Project path (if codebase mode) -- Where is the project? (default: current workspace) 4. Scope -- Full site audit or specific pages/sections? 5. Site type -- SaaS, e-commerce, blog, local business, portfolio, etc. 6. Primary keywords -- What keywords/topics matter most? 7. Business goal -- Traffic, leads, signups, sales, brand awareness? 8. Known issues -- Any specific concerns or recent traffic drops? 9. Tech stack -- Next.js, WordPress, Shopify, static HTML, etc.

Only ask what you don't already know. If the user gives a URL, use URL mode. If the user says "audit my project" or "scan the codebase," use codebase mode. If ambiguous, ask.


Platform Detection & URL Fetching Strategy

URL mode fetches live pages via HTTP. This often fails because of WAFs (Cloudflare, etc.), corporate firewalls, bot-detection, or restricted shell environments. Before running any URL-mode fetch, detect your platform and use the most reliable method available.

How to detect your platform:

  • Cursor -- You have a WebFetch tool and WebSearch tool. You may also have @Web mentions available. If you can call WebFetch, you are in Cursor.
  • Claude Code -- You have a WebFetch tool natively. Similar to Cursor but runs in a terminal-based agent.
  • Codex (OpenAI) -- You have browser tools or web-fetch MCP tools. Check your available tool list.
  • Windsurf -- You have built-in web browsing and URL fetching capability.
  • Aider / terminal-only agents -- No built-in web tools. You must rely on shell commands (curl, python3).
  • GitHub Copilot Workspace -- Has web access through its own tool surface.
  • URL fetching priority chain (try in order, fall back on failure):

    | Platform | Primary Fetch Method | Fallback 1 | Fallback 2 | | --- | --- | --- | --- | | Cursor | WebFetch tool (bypasses WAFs/firewalls) | Python script (scripts/seo_audit.py) | curl with browser UA | | Claude Code | WebFetch tool | Python script | curl with browser UA | | Codex | WebFetch / browser tools | Python script | -- | | Windsurf | Built-in web browsing | Python script | curl with browser UA | | Aider / terminal | Python script | curl with browser UA | -- | | Other | Python script | curl with browser UA | -- |

    Failure detection: Treat any of these as a fetch failure that should trigger the next fallback:

  • HTTP 403, 404, 5xx status codes
  • Connection timeout or connection refused
  • Empty response body
  • SSL/TLS errors
  • curl: command not found (Windows without curl)
  • If all methods fail, do NOT silently skip the check. Inform the user that the URL could not be reached and suggest: 1. Trying from a different network 2. Pasting the page HTML or file content directly for analysis 3. Switching to codebase mode if they have the source locally


    Audit Mode Selection

    This skill supports two audit modes:

    | Mode | When to Use | How It Works | | ----------------- | ------------------------------ | ------------------------------------------------------------------------------- | | URL mode | Site is live / deployed | Fetches pages via HTTP, checks robots.txt, sitemap, llms.txt, load time | | Codebase mode | Site is local / pre-deployment | Scans project files using Glob, Read, Grep -- checks HTML, layout files, config |

    Codebase mode is especially useful for:

  • Catching SEO issues before deployment
  • Projects not yet live
  • When the user wants to scan source code directly
  • Auditing meta tags set in framework layout/page files (Next.js, Astro, etc.)

  • Audit Workflow

    Phase 1: Technical SEO Scan

    Choose your mode:

    #### URL Mode

    Run the audit script and manual checks:

    python3 scripts/seo_audit.py "https://example.com"
    python3 scripts/seo_audit.py "https://example.com" --full   # detailed output
    

    Manual checks -- use the fetching strategy from "Platform Detection & URL Fetching Strategy" above.

    Follow the priority chain for your platform. Examples for each method:

    Primary: WebFetch (Cursor, Claude Code, Codex, Windsurf)

    Use WebFetch for each resource. This is the most reliable method -- it handles TLS, follows redirects, and bypasses most WAF/bot-detection blocks.

    WebFetch("https://example.com")              -- main page HTML
    WebFetch("https://example.com/robots.txt")   -- robots.txt
    WebFetch("https://example.com/sitemap.xml")  -- sitemap
    WebFetch("https://example.com/llms.txt")     -- llms.txt (AI discovery)
    

    If WebFetch returns an error for a specific resource (403, 404, 500, or timeout), note the failure and try the next fallback for that resource. Do NOT skip the check silently.

    Fallback 1: Python script

    python3 scripts/seo_audit.py "https://example.com"
    python3 scripts/seo_audit.py "https://example.com" --full
    

    The script has built-in retry logic and User-Agent rotation. If the script reports a fetch failure, it will print a diagnostic message with the status code and suggested next steps.

    Fallback 2: curl with browser User-Agent

    Use a realistic browser User-Agent to avoid bot detection. Add --retry 2 and --max-time 30 for resilience.

    UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"

    curl -sL -A "$UA" --retry 2 --max-time 30 "https://example.com/robots.txt" curl -sL -A "$UA" --retry 2 --max-time 30 "https://example.com/sitemap.xml" curl -sL -A "$UA" --retry 2 --max-time 30 "https://example.com/llms.txt" curl -sL -A "$UA" --retry 2 --max-time 30 "https://example.com" curl -sIL -A "$UA" --retry 2 --max-time 30 "https://example.com"

    If all methods fail for a resource, tell the user which resource could not be fetched, the error received, and suggest they paste the content manually or switch to codebase mode.

    PageSpeed check (optional, API-based):

    curl "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://example.com&strategy=mobile"
    

    What to check (both modes):

  • Title tag exists, 50-60 chars, contains primary keyword
  • Meta description exists, 150-160 chars, compelling
  • Single H1 per page, contains primary keyword
  • Heading hierarchy: H1 > H2 > H3 (no skips)
  • HTTPS enabled with valid certificate
  • robots.txt exists and allows important pages
  • XML sitemap exists and is accessible
  • Page loads in < 3 seconds (URL mode only)
  • Core Web Vitals: LCP < 2.5s, INP < 200ms, CLS < 0.1 (URL mode only)
  • Open Graph and Twitter Card tags present
  • Images have alt text
  • No broken internal links
  • #### Codebase Mode

    Scan the project files directly using Glob, Read, and Grep. No live server needed.

    Step 1: Discover project structure and framework

    Glob: **/*.{html,jsx,tsx,astro,vue,svelte,php}
    Glob: **/layout.{tsx,jsx,js,ts}
    Glob: **/app/layout.{tsx,jsx}
    Glob: **/_app.{tsx,jsx}
    Glob: **/index.{html,tsx,jsx}
    Glob: **/head.{tsx,jsx}
    Glob: **/_document.{tsx,jsx}
    

    Step 2: Check meta tags in layout/page files

    For Next.js (App Router):

    Grep: "metadata|generateMetadata|title|description" in app/layout.tsx, app/page.tsx
    Grep: "openGraph|twitter|metadataBase" in app/layout.tsx
    

    For Next.js (Pages Router):

    Grep: "||meta name=.description" in pages/_app.tsx, pages/_document.tsx
    </code></pre></p><p style="margin:8px 0">For static HTML:
    <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Grep: "<title>|<meta name=.description|<meta property=.og:" in **/*.html
    </code></pre></p><p style="margin:8px 0">For Astro/Vue/Svelte:
    <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Grep: "<title>|<meta|defineMetadata|useHead" in **/*.{astro,vue,svelte}
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Step 3: Check for robots.txt and sitemap</strong></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Glob: **/robots.txt
    Glob: **/public/robots.txt
    Glob: **/static/robots.txt
    Glob: **/sitemap*.xml
    Glob: **/public/sitemap*.xml
    </code></pre></p><p style="margin:8px 0">For Next.js dynamic generation:
    <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Glob: **/app/robots.{ts,js}
    Glob: **/app/sitemap.{ts,js}
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Step 4: Check for llms.txt</strong></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Glob: **/llms.txt
    Glob: **/public/llms.txt
    Glob: **/static/llms.txt
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Step 5: Check schema markup in source</strong></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Grep: "application/ld\+json|@type|schema.org|jsonLd|JsonLd" in **/*.{tsx,jsx,html,astro,vue}
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Step 6: Check headings structure</strong></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Grep: "<h1|<h2|<h3|<H1|<H2|<H3" in page/layout files
    </code></pre></p><p style="margin:8px 0">For React/JSX components:
    <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Grep: "className=.*h1|<h1|<H1|heading" in **/*.{tsx,jsx}
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Step 7: Check images for alt text</strong></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Grep: "<img[^>]*(?!alt=)" in **/*.{html,tsx,jsx,astro,vue}
    Grep: "<Image[^>]*(?!alt=)" in **/*.{tsx,jsx}
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Step 8: Check Open Graph and social tags</strong></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">Grep: "og:title|og:description|og:image|twitter:card|openGraph" in layout/page files
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Codebase mode limitations:</strong>
    <li style="color:#94a3b8;margin:3px 0">Cannot check page load time or Core Web Vitals (needs live server)</li>
    <li style="color:#94a3b8;margin:3px 0">Cannot test HTTP redirect chains or SSL</li>
    <li style="color:#94a3b8;margin:3px 0">Cannot detect runtime-only issues (client-side rendering, JS errors)</li>
    <li style="color:#94a3b8;margin:3px 0">Schema injected purely at runtime by plugins won't be visible</li></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Codebase mode advantages:</strong>
    <li style="color:#94a3b8;margin:3px 0">Catches issues before deployment</li>
    <li style="color:#94a3b8;margin:3px 0">Can see the actual source code and suggest exact file/line fixes</li>
    <li style="color:#94a3b8;margin:3px 0">Works offline</li>
    <li style="color:#94a3b8;margin:3px 0">Can scan all pages at once instead of one URL at a time</li>
    <li style="color:#94a3b8;margin:3px 0">Fix prompts can reference exact file paths</li></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Phase 2: GEO / AI Visibility Scan</h4></p><p style="margin:8px 0"><strong style="color:#e5e7eb">AI Crawler Access -- check robots.txt for these bots (in URL mode, fetch directly; in codebase mode, read the robots.txt file from public/ or project root):</strong></p><p style="margin:8px 0">| Bot               | Platform   | Purpose                    |
    | ----------------- | ---------- | -------------------------- |
    | GPTBot            | OpenAI     | ChatGPT training/knowledge |
    | ChatGPT-User      | OpenAI     | ChatGPT web browsing       |
    | ClaudeBot         | Anthropic  | Claude training            |
    | Claude-Web        | Anthropic  | Claude web search          |
    | anthropic-ai      | Anthropic  | Claude training data       |
    | PerplexityBot     | Perplexity | Real-time search answers   |
    | Google-Extended   | Google     | Gemini / AI Overviews      |
    | Applebot-Extended | Apple      | Apple Intelligence         |
    | Bingbot           | Microsoft  | Copilot (uses Bing index)  |</p><p style="margin:8px 0"><strong style="color:#e5e7eb">llms.txt File:</strong>
    Check if <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">https://example.com/llms.txt</code> exists. This AI discovery file (introduced 2024, widely adopted 2026) provides structured context to LLMs. Sites with llms.txt saw ~35% increase in AI visibility within 60 days. If missing, recommend creating one -- see <a href="references/fix-prompt-templates.md" target="_blank" rel="noopener" style="color:#6366f1">references/fix-prompt-templates.md</a> for a ready-to-use prompt.</p><p style="margin:8px 0"><strong style="color:#e5e7eb">Schema Markup:</strong>
    > <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">web_fetch</code> and <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">curl</code> cannot reliably detect JS-injected schema (Yoast, RankMath, AIOSEO). Use browser tools or Google Rich Results Test for accurate detection.</p><p style="margin:8px 0">Check for: FAQPage (+40% AI visibility), Article, Organization, WebPage, BreadcrumbList, SpeakableSpecification. See <a href="references/schema-templates.md" target="_blank" rel="noopener" style="color:#6366f1">references/schema-templates.md</a>.</p><p style="margin:8px 0"><strong style="color:#e5e7eb">AI Citation Scoring:</strong>
    Score the page across 5 dimensions (see <a href="references/ai-citation-scoring.md" target="_blank" rel="noopener" style="color:#6366f1">references/ai-citation-scoring.md</a>):
    1. <strong style="color:#e5e7eb">Extractability</strong> -- Can AI pull a useful answer?
    2. <strong style="color:#e5e7eb">Quotability</strong> -- Are there statements worth citing?
    3. <strong style="color:#e5e7eb">Authority</strong> -- Does it signal expertise?
    4. <strong style="color:#e5e7eb">Freshness</strong> -- Is content current?
    5. <strong style="color:#e5e7eb">Entity Clarity</strong> -- Can AI identify the entity?</p><p style="margin:8px 0"><strong style="color:#e5e7eb">Veto rule:</strong> If AI crawlers are blocked in robots.txt, AI visibility score = 0 regardless of content quality.</p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Phase 3: Content Quality Assessment</h4></p><p style="margin:8px 0"><strong style="color:#e5e7eb">GEO Methods Check</strong> (see <a href="references/geo-methods.md" target="_blank" rel="noopener" style="color:#6366f1">references/geo-methods.md</a>):
    <li style="color:#94a3b8;margin:3px 0">Citations with sources present? (+27-40% visibility)</li>
    <li style="color:#94a3b8;margin:3px 0">Statistics with named sources? (+33-37%)</li>
    <li style="color:#94a3b8;margin:3px 0">Expert quotes with attribution? (+30-43%)</li>
    <li style="color:#94a3b8;margin:3px 0">Answer-first format? (40-60 word answer capsule after H2s)</li>
    <li style="color:#94a3b8;margin:3px 0">No keyword stuffing? (causes -9 to -10%)</li></p><p style="margin:8px 0"><strong style="color:#e5e7eb">E-E-A-T Signals:</strong>
    <li style="color:#94a3b8;margin:3px 0">Author bios with credentials visible?</li>
    <li style="color:#94a3b8;margin:3px 0">About page with company information?</li>
    <li style="color:#94a3b8;margin:3px 0">Contact information accessible?</li>
    <li style="color:#94a3b8;margin:3px 0">First-hand experience demonstrated?</li>
    <li style="color:#94a3b8;margin:3px 0">Content dated and recently updated?</li></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Content Structure for AI Extraction:</strong>
    <li style="color:#94a3b8;margin:3px 0">Clear H2/H3 headings that match questions people ask</li>
    <li style="color:#94a3b8;margin:3px 0">Answer in first sentence after each heading</li>
    <li style="color:#94a3b8;margin:3px 0">Tables for comparisons, ordered lists for processes</li>
    <li style="color:#94a3b8;margin:3px 0">Short paragraphs (2-3 sentences)</li>
    <li style="color:#94a3b8;margin:3px 0">FAQ sections with direct answers</li></p><p style="margin:8px 0"><strong style="color:#e5e7eb">AI Writing Detection:</strong>
    Check content for AI writing patterns that reduce credibility. See <a href="references/ai-writing-detection.md" target="_blank" rel="noopener" style="color:#6366f1">references/ai-writing-detection.md</a>.</p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Report Format</h3></p><p style="margin:8px 0">Generate this report after completing all three phases:</p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em"># SEO & GEO Audit Report: [domain or project name]
    <strong style="color:#e5e7eb">Audit mode:</strong> URL / Codebase</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Executive Summary</h3>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">SEO Health:</strong> X/10</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">AI Visibility Score:</strong> X/10</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Critical Issues (P0):</strong> [count]</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Important Issues (P1):</strong> [count]</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Quick Wins:</strong> [count]</li></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">SEO Findings</h3></p><p style="margin:8px 0">| Priority | Issue   | Impact   | Fix            |
    | -------- | ------- | -------- | -------------- |
    | P0       | [issue] | [impact] | [specific fix] |
    | P1       | [issue] | [impact] | [specific fix] |
    | P2       | [issue] | [impact] | [specific fix] |</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">GEO / AI Visibility Findings</h3></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">AI Citation Score: X/10</h4></p><p style="margin:8px 0">| Dimension      | Score | Assessment |
    | -------------- | ----- | ---------- |
    | Extractability | X/10  | [details]  |
    | Quotability    | X/10  | [details]  |
    | Authority      | X/10  | [details]  |
    | Freshness      | X/10  | [details]  |
    | Entity Clarity | X/10  | [details]  |</p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">AI Crawler Access</h4></p><p style="margin:8px 0">| Bot             | Status                             |
    | --------------- | ---------------------------------- |
    | GPTBot          | Allowed / Blocked / Not configured |
    | ClaudeBot       | Allowed / Blocked / Not configured |
    | PerplexityBot   | Allowed / Blocked / Not configured |
    | Google-Extended | Allowed / Blocked / Not configured |
    | Bingbot         | Allowed / Blocked / Not configured |</p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">llms.txt: Present / Missing</h4></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Platform Readiness</h4></p><p style="margin:8px 0">| Platform             | Ready  | Key Gap |
    | -------------------- | ------ | ------- |
    | Google (traditional) | Yes/No | [gap]   |
    | Google AI Overviews  | Yes/No | [gap]   |
    | ChatGPT              | Yes/No | [gap]   |
    | Perplexity           | Yes/No | [gap]   |
    | Claude               | Yes/No | [gap]   |
    | Copilot              | Yes/No | [gap]   |</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">GEO Methods Applied</h3></p><p style="margin:8px 0">| Method                 | Present | Expected Boost |
    | ---------------------- | ------- | -------------- |
    | Citations with sources | Yes/No  | +27-40%        |
    | Statistics with data   | Yes/No  | +33-37%        |
    | Expert quotes          | Yes/No  | +30-43%        |
    | Answer capsules        | Yes/No  | High           |
    | FAQ schema             | Yes/No  | +40%           |
    | Authoritative tone     | Yes/No  | +25%           |</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Prioritized Action Plan</h3></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Critical (do first)</h4>
    1. [action with specific instructions]</p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">High Impact</h4>
    1. [action with specific instructions]</p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Quick Wins</h4>
    1. [action with specific instructions]</p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">Long-term</h4>
    1. [action with specific instructions]
    </code></pre></p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Fix Prompt Generation</h3></p><p style="margin:8px 0">When the audit finds a small number of fixable issues, generate a ready-to-use prompt that the user can paste directly into their AI coding agent (Cursor, Claude Code, Codex, etc.).</p><p style="margin:8px 0"><strong style="color:#e5e7eb">When to generate a fix prompt:</strong>
    <li style="color:#94a3b8;margin:3px 0">Fewer than ~10 distinct issues found</li>
    <li style="color:#94a3b8;margin:3px 0">Issues are code-level fixes (meta tags, schema, robots.txt, content structure)</li>
    <li style="color:#94a3b8;margin:3px 0">User asks for a prompt to fix things</li>
    <li style="color:#94a3b8;margin:3px 0">Codebase mode: always generate fix prompts with exact file paths and line numbers</li></p><p style="margin:8px 0"><strong style="color:#e5e7eb">How to build the prompt:</strong></p><p style="margin:8px 0">1. Read the fix prompt templates from <a href="references/fix-prompt-templates.md" target="_blank" rel="noopener" style="color:#6366f1">references/fix-prompt-templates.md</a>
    2. Select the relevant template(s) based on audit findings
    3. Fill in the specific issues, file paths, and current values from the audit
    4. Combine into a single <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">.prompt.md</code> formatted prompt with:
       - Clear persona (SEO/GEO expert)
       - Specific task listing each issue found
       - Step-by-step fix instructions
       - Validation criteria</p><p style="margin:8px 0"><strong style="color:#e5e7eb">Example output (URL mode):</strong></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">---
    description: "Fix SEO and AI visibility issues found in audit of example.com"
    agent: "agent"
    tools: ["editFiles", "codebase", "fetch"]
    <hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h2 style="color:#f3f4f6;margin:20px 0 10px;font-size:1.15em">Fix SEO & AI Visibility Issues</h2></p><p style="margin:8px 0">You are an SEO and GEO optimization expert. Fix the following issues found
    during an audit of example.com.</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Issues to Fix</h3></p><p style="margin:8px 0">1. <strong style="color:#e5e7eb">Missing meta description</strong> on /about page
       - Add: <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em"><meta name="description" content="..."></code>
       - Must be 150-160 characters, include primary keyword</p><p style="margin:8px 0">2. <strong style="color:#e5e7eb">AI crawlers blocked</strong> in robots.txt
       - Add Allow rules for GPTBot, ClaudeBot, PerplexityBot</p><p style="margin:8px 0">3. <strong style="color:#e5e7eb">No FAQPage schema</strong> on /pricing
       - Add JSON-LD FAQPage schema with existing Q&A content</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Validation</h3>
    <li style="color:#94a3b8;margin:3px 0">Run: <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">python3 scripts/seo_audit.py "https://example.com"</code></li>
    <li style="color:#94a3b8;margin:3px 0">Verify all issues resolved</li>
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Example output (codebase mode):</strong></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">---
    description: "Fix SEO issues found in codebase audit of my-project"
    agent: "agent"
    tools: ["editFiles", "codebase", "search"]
    <hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h2 style="color:#f3f4f6;margin:20px 0 10px;font-size:1.15em">Fix SEO & AI Visibility Issues</h2></p><p style="margin:8px 0">You are an SEO and GEO optimization expert. Fix the following issues found
    during a codebase audit.</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Issues to Fix</h3></p><p style="margin:8px 0">1. <strong style="color:#e5e7eb">Missing meta description</strong> in <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">app/layout.tsx</code> (line 12)
       - The <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">metadata</code> export has <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">title</code> but no <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">description</code>
       - Add: <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">description: "Your compelling description, 150-160 chars"</code></p><p style="margin:8px 0">2. <strong style="color:#e5e7eb">No AI crawler rules</strong> in <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">public/robots.txt</code> (line 1)
       - Only has Googlebot rules. Add Allow rules for GPTBot, ClaudeBot,
         PerplexityBot, Google-Extended, Applebot-Extended</p><p style="margin:8px 0">3. <strong style="color:#e5e7eb">No llms.txt</strong> -- file missing entirely
       - Create <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">public/llms.txt</code> with company summary, contact, and services</p><p style="margin:8px 0">4. <strong style="color:#e5e7eb">Missing OG image</strong> in <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">app/layout.tsx</code> (line 15)
       - <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">openGraph</code> object has title and description but no <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">images</code> array
       - Add: <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">images: [{ url: "/og-image.png", width: 1200, height: 630 }]</code></p><p style="margin:8px 0">5. <strong style="color:#e5e7eb">No FAQPage schema</strong> on <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">app/pricing/page.tsx</code>
       - FAQ section exists at line 85 but has no JSON-LD markup
       - Add FAQPage schema using the existing Q&A content</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Validation</h3>
    <li style="color:#94a3b8;margin:3px 0">Check each file for the fixes above</li>
    <li style="color:#94a3b8;margin:3px 0">Run <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">npm run build</code> to verify no build errors</li>
    </code></pre></p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Content Prompt Generation</h3></p><p style="margin:8px 0">When the audit identifies content gaps -- missing pages, thin content that needs rewriting, or opportunities for new pages targeting high-value queries -- generate a ready-to-use prompt that produces SEO + GEO optimized content when pasted into an AI writing/coding agent.</p><p style="margin:8px 0"><strong style="color:#e5e7eb">When to generate a content prompt:</strong>
    <li style="color:#94a3b8;margin:3px 0">Audit reveals content gaps (missing pages for queries the site should rank for)</li>
    <li style="color:#94a3b8;margin:3px 0">Programmatic SEO opportunities identified (see table below)</li>
    <li style="color:#94a3b8;margin:3px 0">User explicitly asks for help creating new content or pages</li>
    <li style="color:#94a3b8;margin:3px 0">Thin content flagged (word count < 300) that needs a full rewrite rather than a quick fix</li>
    <li style="color:#94a3b8;margin:3px 0">Competitor analysis shows topics the site doesn't cover but should</li></p><p style="margin:8px 0"><strong style="color:#e5e7eb">How to build the prompt:</strong></p><p style="margin:8px 0">1. Read the content prompt templates from <a href="references/content-prompt-templates.md" target="_blank" rel="noopener" style="color:#6366f1">references/content-prompt-templates.md</a>
    2. Select the template matching the page type:
       - <strong style="color:#e5e7eb">Article / Blog Post</strong> -- informational content targeting a query
       - <strong style="color:#e5e7eb">Landing / Product Page</strong> -- conversion-focused page
       - <strong style="color:#e5e7eb">Glossary / Definition Page</strong> -- "What is X?" pages (great for pSEO)
       - <strong style="color:#e5e7eb">Comparison Page</strong> -- "X vs Y" structured comparison
       - <strong style="color:#e5e7eb">FAQ / Resource Page</strong> -- Q&A aggregation page
       - <strong style="color:#e5e7eb">Location / Persona Page</strong> -- localized or audience-specific variant
    3. Fill placeholders using audit findings, keyword data, and product-marketing-context (if <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">.agents/product-marketing-context.md</code> exists)
    4. The template already embeds GEO optimization rules (answer capsules, citation density, quotation slots from <a href="references/geo-methods.md" target="_blank" rel="noopener" style="color:#6366f1">references/geo-methods.md</a>), anti-AI-writing constraints (from <a href="references/ai-writing-detection.md" target="_blank" rel="noopener" style="color:#6366f1">references/ai-writing-detection.md</a>), and schema markup requirements -- do not remove them
    5. Output as a single <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">.prompt.md</code> formatted prompt</p><p style="margin:8px 0"><strong style="color:#e5e7eb">Example output (article page):</strong></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">---
    description: "Create SEO + GEO optimized article: What is Retrieval-Augmented Generation?"
    agent: "agent"
    tools: ["editFiles", "codebase", "search", "fetch"]
    <hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h2 style="color:#f3f4f6;margin:20px 0 10px;font-size:1.15em">Create Article: What is Retrieval-Augmented Generation (RAG)?</h2></p><p style="margin:8px 0">You are a senior content strategist who specializes in search engine
    optimization and generative engine optimization. You write content that
    ranks on Google AND gets cited by ChatGPT, Perplexity, Claude, and
    Google AI Overviews.</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Content Brief</h3></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Target query</strong>: "What is RAG?" / "retrieval augmented generation explained"</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Search intent</strong>: informational</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Target audience</strong>: Software engineers evaluating RAG for production AI apps</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Primary keyword</strong>: retrieval augmented generation</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Secondary keywords</strong>: RAG architecture, RAG vs fine-tuning, RAG pipeline, vector database</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Word count</strong>: 2,000-2,500 words</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Competing pages to outperform</strong>: aws.amazon.com/what-is/retrieval-augmented-generation, cloud.google.com/...</li></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Pre-Writing Analysis</h3></p><p style="margin:8px 0">Before drafting:
    1. Intent mapping: Engineers want to understand what RAG is, when to use it
       vs fine-tuning, and how to implement it. They need architecture details.
    2. SERP shape: Competing pages use definition + architecture diagram + use
       cases format. Match this but add comparison tables and sourced benchmarks.
    3. Gap analysis: Competing pages lack pricing comparisons for vector DBs,
       real latency benchmarks, and production failure modes.
    4. Citation plan: Lewis et al. (2020) original paper, LlamaIndex docs,
       LangChain docs, Pinecone benchmarks, Anthropic RAG guide.</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Article Structure</h3></p><p style="margin:8px 0">H2s as questions, 40-60 word answer capsule after each H2. Include:
    <li style="color:#94a3b8;margin:3px 0">2-3 sourced statistics per section: "Claim (Source, Year)"</li>
    <li style="color:#94a3b8;margin:3px 0">At least 1 expert quote per 500 words</li>
    <li style="color:#94a3b8;margin:3px 0">Tables for all comparisons (RAG vs fine-tuning, vector DB comparison)</li>
    <li style="color:#94a3b8;margin:3px 0">FAQ section with 6 self-contained Q&A pairs</li></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Writing Rules</h3></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0">No em dashes. No filler words. No AI-tell verbs (delve, leverage).</li>
    <li style="color:#94a3b8;margin:3px 0">Paragraphs: 2-3 sentences max.</li>
    <li style="color:#94a3b8;margin:3px 0">First 150 words must directly answer "What is RAG?"</li></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Schema</h3></p><p style="margin:8px 0">Include Article schema with author, datePublished, dateModified,
    SpeakableSpecification. Include FAQPage schema for FAQ section.</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Validation</h3></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0">[ ] Definition in first 150 words</li>
    <li style="color:#94a3b8;margin:3px 0">[ ] Answer capsule after every H2</li>
    <li style="color:#94a3b8;margin:3px 0">[ ] 2-3 sourced stats per section</li>
    <li style="color:#94a3b8;margin:3px 0">[ ] No em dashes or AI-tell words</li>
    <li style="color:#94a3b8;margin:3px 0">[ ] Article + FAQPage schema included</li>
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Example output (comparison page):</strong></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">---
    description: "Create SEO + GEO optimized comparison: Notion vs Confluence"
    agent: "agent"
    tools: ["editFiles", "codebase", "search", "fetch"]
    <hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h2 style="color:#f3f4f6;margin:20px 0 10px;font-size:1.15em">Create Comparison Page: Notion vs Confluence</h2></p><p style="margin:8px 0">You are a product analyst with SEO and GEO expertise. You write
    comparison pages that AI systems cite when users ask "Which is better?"</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Content Brief</h3></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Target query</strong>: "Notion vs Confluence"</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Search intent</strong>: commercial investigation</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Target audience</strong>: Engineering/product managers choosing a team wiki</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Primary keyword</strong>: Notion vs Confluence</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Secondary keywords</strong>: Notion alternative, Confluence alternative, best wiki tool</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Word count</strong>: 2,000 words</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Your product</strong>: None (neutral comparison)</li></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Page Structure</h3></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0">H1: "Notion vs Confluence: Which Wiki Tool Is Better for Your Team in 2026?"</li>
    <li style="color:#94a3b8;margin:3px 0">TL;DR in first 150 words with a clear verdict</li>
    <li style="color:#94a3b8;margin:3px 0">Full comparison table (pricing, features, limitations, ideal user)</li>
    <li style="color:#94a3b8;margin:3px 0">40-60 word answer capsule after each H2</li>
    <li style="color:#94a3b8;margin:3px 0">"When to Choose Notion" and "When to Choose Confluence" sections</li>
    <li style="color:#94a3b8;margin:3px 0">Alternatives table with 3-4 options</li>
    <li style="color:#94a3b8;margin:3px 0">FAQ with 6 self-contained answers</li></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Writing Rules</h3></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0">All pricing dated "(as of March 2026)"</li>
    <li style="color:#94a3b8;margin:3px 0">No unsupported superlatives</li>
    <li style="color:#94a3b8;margin:3px 0">No em dashes or AI-tell words</li>
    <li style="color:#94a3b8;margin:3px 0">Every claim verifiable via product docs or third-party reviews</li></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Schema</h3></p><p style="margin:8px 0">Include Article schema with <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">about</code> entities for both products.
    Include FAQPage schema. Include SpeakableSpecification for TL;DR.</p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Validation</h3></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0">[ ] TL;DR with clear verdict in first 150 words</li>
    <li style="color:#94a3b8;margin:3px 0">[ ] Full comparison table</li>
    <li style="color:#94a3b8;margin:3px 0">[ ] Each product defined in 40-60 word capsule</li>
    <li style="color:#94a3b8;margin:3px 0">[ ] All pricing dated</li>
    <li style="color:#94a3b8;margin:3px 0">[ ] No em dashes or AI-tell words</li>
    <li style="color:#94a3b8;margin:3px 0">[ ] Article + FAQPage schema included</li>
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Combining with programmatic SEO:</strong> When the audit suggests scale pages (integrations, locations, personas, glossary terms), use the batch pattern in Template 3 or Template 6 from <a href="references/content-prompt-templates.md" target="_blank" rel="noopener" style="color:#6366f1">references/content-prompt-templates.md</a>. Provide the list of items (terms, cities, audiences) inside the prompt so the agent generates one page per item using the same structure.</p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Programmatic SEO Opportunities</h3></p><p style="margin:8px 0">For sites that could benefit from pages at scale, suggest opportunities from these playbooks:</p><p style="margin:8px 0">| If the site has...        | Suggest...                                  |
    | ------------------------- | ------------------------------------------- |
    | Product with integrations | Integration pages (<code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">/integrations/[tool]/</code>) |
    | Multi-segment audience    | Persona pages (<code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">/for/[audience]/</code>)          |
    | Local presence            | Location pages (<code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">/[service]/[city]/</code>)       |
    | Competitor landscape      | Comparison pages (<code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">/compare/[x]-vs-[y]/</code>)   |
    | Industry expertise        | Glossary pages (<code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">/glossary/[term]/</code>)        |
    | Design/creative product   | Template pages (<code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">/templates/[type]/</code>)       |</p><p style="margin:8px 0">Only suggest if there's genuine search demand and the site has (or can create) unique data for each page. Use subfolders, not subdomains.</p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Platform-Specific Optimization</h3></p><p style="margin:8px 0">For detailed ranking factors per platform, see <a href="references/platform-ranking-factors.md" target="_blank" rel="noopener" style="color:#6366f1">references/platform-ranking-factors.md</a>.</p><p style="margin:8px 0"><strong style="color:#e5e7eb">Quick reference:</strong></p><p style="margin:8px 0">| Platform            | Primary Index | Key Factor          | Unique Requirement    |
    | ------------------- | ------------- | ------------------- | --------------------- |
    | Google              | Google        | Backlinks + E-E-A-T | Core Web Vitals       |
    | Google AI Overviews | Google        | E-E-A-T + Schema    | Knowledge Graph       |
    | ChatGPT             | Bing-based    | Domain Authority    | Content-Answer Fit    |
    | Perplexity          | Own + Google  | Semantic Relevance  | FAQ Schema, freshness |
    | Claude              | Brave         | Factual Density     | Brave Search indexing |
    | Copilot             | Bing          | Bing Index          | MS Ecosystem presence |</p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Validation Tools</h3></p><p style="margin:8px 0">| Tool                     | URL                                 | Purpose                        |
    | ------------------------ | ----------------------------------- | ------------------------------ |
    | Google Rich Results Test | search.google.com/test/rich-results | Schema validation (renders JS) |
    | Schema.org Validator     | validator.schema.org                | Schema syntax check            |
    | PageSpeed Insights       | pagespeed.web.dev                   | Core Web Vitals                |
    | Google Search Console    | search.google.com/search-console    | Indexing, errors, performance  |
    | Bing Webmaster Tools     | bing.com/webmasters                 | Bing indexing                  |</p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">References</h3></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0"><a href="references/ai-citation-scoring.md" target="_blank" rel="noopener" style="color:#6366f1">references/ai-citation-scoring.md</a> -- 5-dimension AI citation scoring framework</li>
    <li style="color:#94a3b8;margin:3px 0"><a href="references/platform-ranking-factors.md" target="_blank" rel="noopener" style="color:#6366f1">references/platform-ranking-factors.md</a> -- Per-engine ranking factors (2026)</li>
    <li style="color:#94a3b8;margin:3px 0"><a href="references/geo-methods.md" target="_blank" rel="noopener" style="color:#6366f1">references/geo-methods.md</a> -- Princeton GEO 9 methods with updated data</li>
    <li style="color:#94a3b8;margin:3px 0"><a href="references/schema-templates.md" target="_blank" rel="noopener" style="color:#6366f1">references/schema-templates.md</a> -- JSON-LD structured data templates</li>
    <li style="color:#94a3b8;margin:3px 0"><a href="references/seo-checklist.md" target="_blank" rel="noopener" style="color:#6366f1">references/seo-checklist.md</a> -- Prioritized P0/P1/P2 audit checklist</li>
    <li style="color:#94a3b8;margin:3px 0"><a href="references/ai-writing-detection.md" target="_blank" rel="noopener" style="color:#6366f1">references/ai-writing-detection.md</a> -- AI writing patterns to avoid</li>
    <li style="color:#94a3b8;margin:3px 0"><a href="references/fix-prompt-templates.md" target="_blank" rel="noopener" style="color:#6366f1">references/fix-prompt-templates.md</a> -- Fix prompt templates for AI coding agents</li>
    <li style="color:#94a3b8;margin:3px 0"><a href="references/content-prompt-templates.md" target="_blank" rel="noopener" style="color:#6366f1">references/content-prompt-templates.md</a> -- Content creation prompt templates for new pages (SEO + GEO optimized)</li></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Scripts</h3></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0"><code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">scripts/seo_audit.py</code> -- Full SEO + GEO audit (no API required). Checks meta tags, headings, robots.txt, sitemap, llms.txt, AI crawlers, schema, performance.</li></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">python3 scripts/seo_audit.py "https://example.com"          # summary
    python3 scripts/seo_audit.py "https://example.com" --full    # detailed
    python3 scripts/seo_audit.py "https://example.com" --ua "Custom/Agent"  # custom User-Agent
    </code></pre></p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Troubleshooting: URL Fetch Failures</h3></p><p style="margin:8px 0">URL fetching can fail for many reasons. Use this table to diagnose and recover.</p><p style="margin:8px 0">| Symptom | Likely Cause | Fix |
    | --- | --- | --- |
    | 403 Forbidden | WAF/bot detection (Cloudflare, etc.) | Use <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code> (Cursor/Claude Code) or curl with browser UA |
    | 404 on known pages | URL path wrong OR CDN blocking non-browser agents | Verify URL in a browser, then try <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code> |
    | 429 Too Many Requests | Rate limiting | Wait and retry, or use <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code> |
    | 500 Server Error | Server issue or aggressive bot blocking | Retry with backoff (script does this automatically), try <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code> |
    | Connection timeout | Firewall blocking outbound requests | Use <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code>, or ask user to paste content |
    | Empty response | Bot trap returning empty body | Use <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code>, verify the URL loads in a real browser |
    | SSL/TLS error | Certificate issue or corporate MITM proxy | Add <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">--insecure</code> to curl (warn user), or use <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code> |
    | <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">curl: command not found</code> | Windows without curl or restricted env | Use Python script (<code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">scripts/seo_audit.py</code>) or <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code> |
    | Script exits with code 2 | Connection/timeout error (no HTTP status) | Network issue; try <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code> or check VPN/firewall |
    | Script exits with code 1 | HTTP error (got a status code back) | Check the status code in output; likely bot detection |</p><p style="margin:8px 0"><strong style="color:#e5e7eb">Platform-specific notes:</strong></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Cursor</strong>: Always prefer the <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code> tool. It handles TLS, follows redirects, and bypasses most WAF blocks. If fetching a URL fails with <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code>, do NOT silently skip the check -- inform the user with the error and suggest they paste the content or switch to codebase mode.</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Claude Code</strong>: Same as Cursor -- <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code> is available and preferred.</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Codex (OpenAI)</strong>: Use available browser/web tools. Check your tool list for <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">WebFetch</code> or equivalent.</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Windsurf</strong>: Use built-in browsing capability. Falls back to shell commands.</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">Terminal-only agents (Aider, etc.)</strong>: Must rely on shell commands. Use the Python script first (it has retry logic and UA rotation), then fall back to curl with a browser User-Agent.</li>
    <li style="color:#94a3b8;margin:3px 0"><strong style="color:#e5e7eb">GitHub Copilot Workspace</strong>: Use platform web access tools. Fall back to Python script if unavailable.</li>
    </p></div></section><section class="skill-card" style="margin-bottom:20px"><h2 style="color:#f8fafc;font-size:1.2em;font-weight:800;margin:0 0 16px;display:flex;align-items:center;gap:8px">πŸ“¦ Core Types</h2><div></div></section><section class="skill-card" style="margin-bottom:20px"><h2 style="color:#f8fafc;font-size:1.2em;font-weight:800;margin:0 0 16px;display:flex;align-items:center;gap:8px">πŸ”’ Constraints</h2><div style="font-size:.92em;color:#94a3b8;line-height:1.75"><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0">Run: <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em" style="background:#0a0a1c;color:#fbbf24;padding:1px 5px;border-radius:3px;font-size:.85em">python3 scripts/seo_audit.py "https://example.com"</code></li>
    <li style="color:#94a3b8;margin:3px 0">Verify all issues resolved</li>
    <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em" style="background:#0a0a1c;color:#fbbf24;padding:1px 5px;border-radius:3px;font-size:.85em">
    <strong style="color:#e5e7eb">Example output (codebase mode):</strong></p><p style="margin:8px 0"></code></pre>markdown
    <hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0">
    description: "Fix SEO issues found in codebase audit of my-project"
    agent: "agent"
    tools: ["editFiles", "codebase", "search"]
    <hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h2 style="color:#f3f4f6;margin:20px 0 10px;font-size:1.15em">Fix SEO & AI Visibility Issues</h2></p><p style="margin:8px 0">You are an SEO and GEO optimization expert. Fix the following issues found
    during a codebase audit.</p></div></section></div><div class="two-col-side"></div></div></div><script>
            document.querySelectorAll('.copy-btn, .script-copy-btn').forEach(btn => {
              btn.addEventListener('click', () => {
                const cmd = btn.getAttribute('data-cmd');
                if (!cmd) return;
                navigator.clipboard.writeText(cmd).then(() => {
                  const orig = btn.textContent;
                  btn.textContent = 'Copied!';
                  setTimeout(() => btn.textContent = orig, 1500);
                }).catch(() => {});
              });
            });
          </script><!--$--><!--/$--></main><footer style="background:var(--bg-primary);border-top:1px solid var(--border-secondary);margin-top:60px"><div style="border-top:1px solid var(--border-light);max-width:1200px;margin:0 auto;padding:24px 20px"><div style="display:flex;justify-content:space-between;flex-wrap:wrap;gap:24px;margin-bottom:24px"><div><div style="font-weight:700;color:var(--text-muted);margin-bottom:8px">BytesAgain</div><div style="color:var(--text-muted3);font-size:.82em;max-width:200px">Discover the best AI agent skills for your workflow.</div></div><div><div style="color:var(--text-muted);font-size:.75em;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px">Explore</div><div style="margin-bottom:6px"><a href="/skills" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Skills</a></div><div style="margin-bottom:6px"><a href="/articles" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Articles</a></div><div style="margin-bottom:6px"><a href="/use-case" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Cases</a></div></div><div><div style="color:var(--text-muted);font-size:.75em;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px">Company</div><div style="margin-bottom:6px"><a href="/about" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">About</a></div><div style="margin-bottom:6px"><a href="/contact" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Contact</a></div><div style="margin-bottom:6px"><a href="/privacy-policy" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Privacy Policy</a></div><div style="margin-bottom:6px"><a href="/terms" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Terms</a></div><div style="margin-bottom:6px"><a href="/feedback" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Feedback</a></div></div></div><div style="border-top:1px solid var(--border-light);padding-top:16px"><div style="color:var(--text-muted4);font-size:.8em;margin-bottom:8px">Β© <!-- -->2026<!-- --> BytesAgain. All rights reserved.</div><div style="color:var(--text-muted5);font-size:.75em;line-height:1.6;max-width:720px">BytesAgain is an independent skill directory. We index and link to third-party content (ClawHub, GitHub, LobeHub, Dify, etc.) for informational purposes only. All trademarks, skill names, and content are the property of their respective owners. BytesAgain does not claim ownership of any indexed content.</div></div></div></footer><button style="position:fixed;bottom:28px;right:28px;z-index:1000;width:48px;height:48px;border-radius:50%;border:none;cursor:pointer;background:linear-gradient(135deg,#667eea,#00d4ff);color:#fff;font-size:1.3em;box-shadow:0 4px 20px #667eea66;display:flex;align-items:center;justify-content:center;transition:transform .2s">πŸ’¬</button><script src="/_next/static/chunks/0ze4gu236oq96.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ" 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[62894,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"LangProvider\"]\n3:I[89220,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"ThemeProvider\"]\n4:I[16988,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\ne:I[68027,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\",1]\n:HL[\"/_next/static/chunks/051nc0vy_6.rl.css?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"style\"]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:Td5e,"])</script><script>self.__next_f.push([1,"[{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"BytesAgain\",\"url\":\"https://bytesagain.com\",\"description\":\"Search 60,000+ verified AI agent skills via MCP API or REST. Supports 7 languages. Free, no auth required.\",\"inLanguage\":[\"en\",\"zh\",\"es\",\"fr\",\"de\",\"ja\",\"ko\"],\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https://bytesagain.com/skills?q={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}},{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"BytesAgain\",\"url\":\"https://bytesagain.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://bytesagain.com/og-image.png\"},\"description\":\"AI agent skill directory. Search 60,000+ skills, 1,000+ use cases, and community requests.\",\"foundingDate\":\"2026\",\"foundingLocation\":{\"@type\":\"Place\",\"name\":\"Global\"},\"sameAs\":[\"https://x.com/bytesagain\",\"https://github.com/bytesagain/ai-skills\",\"https://clawhub.ai/profile/bytesagain\"],\"contactPoint\":{\"@type\":\"ContactPoint\",\"email\":\"hello@bytesagain.com\",\"contactType\":\"customer support\"},\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"value\":1}},{\"@context\":\"https://schema.org\",\"@type\":\"WebApplication\",\"name\":\"BytesAgain AI Skills Search\",\"url\":\"https://bytesagain.com\",\"applicationCategory\":\"DeveloperApplication\",\"operatingSystem\":\"Web\",\"description\":\"Search engine and MCP API for 60,000+ AI agent skills. Semantic search, role recommendations, and use case packs.\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"USD\"},\"featureList\":[\"Search 60,000+ AI agent skills\",\"Role-based recommendations for developers, creators, and traders\",\"1,000+ curated use case packs\",\"Free MCP API and REST API\",\"Multi-language search (EN, ZH, ES, FR, DE, JA, KO)\"],\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":\"https://bytesagain.com/skills?q={search_term_string}\",\"query-input\":\"required name=search_term_string\"},\"dateModified\":\"2026-10-16\"},{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What is BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"BytesAgain is a curated directory of 60,000+ AI agent skills from ClawHub, GitHub, LobeHub, and Dify. Search skills by keyword in 7 languages, browse by role (developer, creator, trader, marketer) or by use case.\"}},{\"@type\":\"Question\",\"name\":\"How do I find AI skills on BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Use the search bar on BytesAgain.com to search by keyword in 7 languages. You can also browse by role (developer, creator, trader, marketer) or by use case. Each skill shows install instructions for Claude, Cursor, OpenClaw, Continue, and more.\"}},{\"@type\":\"Question\",\"name\":\"Is BytesAgain free?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes, BytesAgain is completely free. No registration required for searching skills. The MCP API is also free with rate limits.\"}},{\"@type\":\"Question\",\"name\":\"Does BytesAgain have an API for AI agents?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes! BytesAgain provides a free MCP SSE endpoint at /api/mcp/sse for AI agents, plus a REST API at /api/mcp?action=search\u0026q=\u003cquery\u003e. No authentication needed.\"}},{\"@type\":\"Question\",\"name\":\"Can I request a new AI skill on BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes! Visit the Requests page on BytesAgain.com to submit a skill request. Your request will be visible to the community and notified to the site admin.\"}}]}]"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"skill\",\"seo-and-llm-rankings\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"skill\",{\"children\":[[\"slug\",\"seo-and-llm-rankings\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/051nc0vy_6.rl.css?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"llms\",\"href\":\"/llms.txt\"}],[\"$\",\"link\",null,{\"rel\":\"llms-full\",\"href\":\"/llms-full.txt\"}],[\"$\",\"script\",null,{\"async\":true,\"src\":\"https://www.googletagmanager.com/gtag/js?id=G-3C1MM9FWYF\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n          window.dataLayer = window.dataLayer || [];\\n          function gtag(){dataLayer.push(arguments);}\\n          gtag('js', new Date());\\n          gtag('config', 'G-3C1MM9FWYF');\\n        \"}}]]}],[\"$\",\"body\",null,{\"className\":\"geist_9e050971-module__05dp7a__className\",\"style\":{\"margin\":0},\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[[\"$\",\"div\",null,{\"style\":{\"width\":\"100%\",\"background\":\"var(--bg-subscribe)\",\"borderBottom\":\"1px solid var(--border-primary)\",\"padding\":\"8px 20px\",\"textAlign\":\"center\",\"fontSize\":\".82em\",\"color\":\"#818cf8\"},\"children\":[\"🎁 \",[\"$\",\"strong\",null,{\"style\":{\"color\":\"var(--text-primary)\"},\"children\":\"Get the FREE AI Skills Starter Guide\"}],\" β€” \",[\"$\",\"a\",null,{\"href\":\"/register\",\"style\":{\"color\":\"#00d4ff\",\"textDecoration\":\"underline\"},\"children\":\"Subscribe β†’\"}]]}],[\"$\",\"$L4\",null,{}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$5\"}}],\"$L6\",\"$L7\",\"$L8\"]}]}]}]]}]]}],{\"children\":[\"$L9\",{\"children\":[\"$La\",{\"children\":[\"$Lb\",{},null,false,null]},null,false,\"$@c\"]},null,false,\"$@c\"]},null,false,null],\"$Ld\",false]],\"m\":\"$undefined\",\"G\":[\"$e\",[\"$Lf\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:I[39756,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n11:I[37457,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n12:I[22016,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0ka051yepewro.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"\"]\n13:I[90940,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n14:I[16397,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n16:I[97367,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"OutletBoundary\"]\n17:\"$Sreact.suspense\"\n1a:I[97367,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"ViewportBoundary\"]\n1c:I[97367,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"MetadataBoundary\"]\n"])</script><script>self.__next_f.push([1,"6:[\"$\",\"main\",null,{\"children\":[\"$\",\"$L10\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"main\",null,{\"style\":{\"minHeight\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"background\":\"#050611\",\"color\":\"#e5e7eb\"},\"children\":[[\"$\",\"style\",null,{\"children\":\"\\n        .nf-box { text-align: center; padding: 60px 32px; }\\n        .nf-code { font-size: 6rem; font-weight: 900; color: #22d3ee; line-height: 1; margin: 0; }\\n        .nf-title { font-size: 1.8rem; font-weight: 800; margin: 12px 0 8px; }\\n        .nf-desc { color: var(--text-muted2); font-size: 1rem; margin-bottom: 32px; max-width: 440px; }\\n        .nf-link { display: inline-block; padding: 12px 28px; background: linear-gradient(135deg,#34d399,#22d3ee); color: #000; font-weight: 900; border-radius: 12px; text-decoration: none; }\\n      \"}],[\"$\",\"div\",null,{\"className\":\"nf-box\",\"children\":[[\"$\",\"p\",null,{\"className\":\"nf-code\",\"children\":\"404\"}],[\"$\",\"h1\",null,{\"className\":\"nf-title\",\"children\":\"Page Not Found\"}],[\"$\",\"p\",null,{\"className\":\"nf-desc\",\"children\":\"The skill or page you're looking for doesn't exist or has been moved.\"}],[\"$\",\"$L12\",null,{\"className\":\"nf-link\",\"href\":\"/\",\"children\":\"Back to BytesAgain\"}]]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]\n"])</script><script>self.__next_f.push([1,"7:[\"$\",\"$L13\",null,{}]\n8:[\"$\",\"$L14\",null,{}]\n9:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L10\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\na:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L10\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\nb:[\"$\",\"$1\",\"c\",{\"children\":[\"$L15\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/12w5ognupk9fb.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"$17\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@18\"}]}]]}]\n19:[]\nc:\"$W19\"\nd:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L1a\",null,{\"children\":\"$L1b\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L1c\",null,{\"children\":[\"$\",\"$17\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1d\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\nf:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/051nc0vy_6.rl.css?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"1b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1e:I[27201,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"IconMark\"]\n18:null\n"])</script><script>self.__next_f.push([1,"1d:[[\"$\",\"title\",\"0\",{\"children\":\"SEO and LLM Rankings β€” AI Agent Skill | BytesAgain | BytesAgain\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Audits websites for traditional SEO health and AI search visibility (GEO). Generates prioritized reports with actionable fixes and ready-to-use prompts for A...\"}],[\"$\",\"meta\",\"2\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"3\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"4\",{\"name\":\"llms-txt\",\"content\":\"https://bytesagain.com/llms.txt\"}],[\"$\",\"meta\",\"5\",{\"name\":\"llms-full-txt\",\"content\":\"https://bytesagain.com/llms-full.txt\"}],[\"$\",\"link\",\"6\",{\"rel\":\"canonical\",\"href\":\"https://bytesagain.com/skill/seo-and-llm-rankings\"}],[\"$\",\"meta\",\"7\",{\"name\":\"baidu-site-verification\",\"content\":\"codeva-0evUqX1TFs\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:title\",\"content\":\"SEO and LLM Rankings β€” AI Agent Skill | BytesAgain\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:description\",\"content\":\"Audits websites for traditional SEO health and AI search visibility (GEO). Generates prioritized reports with actionable fixes and ready-to-use prompts for A...\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:url\",\"content\":\"https://bytesagain.com/skill/seo-and-llm-rankings\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:site_name\",\"content\":\"BytesAgain\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image\",\"content\":\"https://bytesagain.com/social-preview.png\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"SEO and LLM Rankings β€” AI Agent Skill | BytesAgain\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Audits websites for traditional SEO health and AI search visibility (GEO). Generates prioritized reports with actionable fixes and ready-to-use prompts for A...\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://bytesagain.com/social-preview.png\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"22\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L1e\",\"23\",{}]]\n"])</script><script>self.__next_f.push([1,"1f:T1562,"])</script><script>self.__next_f.push([1,"\n        .skill-page { max-width: 1100px; margin: 0 auto; padding: 32px 20px 80px; }\n        .two-col { display: flex; gap: 32px; align-items: flex-start; }\n        .two-col-main { flex: 1; min-width: 0; }\n        .two-col-side { width: 300px; flex-shrink: 0; }\n        @media (max-width: 860px) {\n          .two-col { flex-direction: column; }\n          .two-col-side { width: 100%; }\n        }\n        .breadcrumb { font-size: .82em; color: var(--text-muted2); margin-bottom: 28px; }\n        .breadcrumb a { color: #818cf8; text-decoration: none; }\n        .breadcrumb a:hover { text-decoration: underline; }\n        .skill-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 20px; padding: 28px; margin-bottom: 24px; }\n        .skill-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }\n        .skill-badges { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n        .skill-top-actions { display: flex; align-items: center; gap: 10px; margin-left: auto; }\n        .badge { display: inline-flex; align-items: center; gap: 5px; font-size: .75em; font-weight: 600; padding: 4px 12px; border-radius: 999px; border: 1px solid transparent; }\n        .skill-title { font-size: 1.6em; font-weight: 800; color: var(--text-primary); margin: 0 0 4px; line-height: 1.2; }\n        .skill-owner { font-size: .82em; color: var(--text-muted2); margin: 0 0 14px; }\n        .skill-owner span { color: #818cf8; }\n        .skill-desc { font-size: .92em; color: var(--text-secondary); line-height: 1.65; margin: 0 0 16px; }\n        .skill-meta { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; padding-bottom: 16px; border-bottom: 1px solid var(--border-card); }\n        .meta-item { display: flex; flex-direction: column; gap: 2px; }\n        .meta-label { font-size: .7em; color: var(--text-muted5); text-transform: uppercase; letter-spacing: 1px; font-weight: 600; }\n        .meta-value { font-size: .92em; color: var(--text-muted2); font-weight: 600; }\n        .tags-row { display: flex; gap: 6px; flex-wrap: wrap; }\n        .tag { font-size: .75em; color: #6366f1; background: #6366f115; border: 1px solid #6366f130; border-radius: 6px; padding: 3px 10px; text-decoration: none; }\n        .tag:hover { background: #6366f125; }\n        .install-box { background: var(--bg-deep); border: 1px solid var(--border-card); border-radius: 12px; overflow: hidden; margin-bottom: 24px; }\n        .install-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 16px; border-bottom: 1px solid var(--border-card); }\n        .install-dots { display: flex; gap: 6px; }\n        .dot { width: 10px; height: 10px; border-radius: 50%; }\n        .install-label { font-size: .72em; color: var(--text-muted5); font-family: monospace; letter-spacing: 1px; }\n        .install-body { padding: 16px 20px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }\n        .install-cmd { color: var(--text-code);\n font-family: 'Courier New', monospace; font-size: 1em; }\n        .copy-btn { font-size: .75em; color: #6366f1; background: #6366f115; border: 1px solid #6366f130; border-radius: 6px; padding: 5px 12px; cursor: pointer; white-space: nowrap; transition: all .15s; }\n        .copy-btn:hover { background: #6366f125; }\n        .btn-secondary { display: inline-flex; align-items: center; gap: 8px; padding: 13px 24px; background: transparent; border: 1px solid var(--border-card); border-radius: 10px; color: #6b7280; text-decoration: none; font-weight: 600; font-size: .95em; transition: all .15s; }\n        .btn-secondary:hover { border-color: #818cf8; color: #818cf8; }\n        .ours-badge { display: inline-flex; align-items: center; gap: 6px; font-size: .72em; font-weight: 700; color: #22d3ee; background: #22d3ee10; border: 1px solid #22d3ee30; border-radius: 999px; padding: 4px 14px; }\n        .section-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 16px; padding: 22px 24px; margin-bottom: 20px; }\n        .section-title { color: var(--text-primary); font-size: 1.08em; font-weight: 800; margin: 0 0 12px; display: flex; align-items: center; gap: 8px; }\n        /* Script box */\n        .script-header { display: flex; align-items: center; justify-content: space-between; padding: 8px 14px; background: var(--bg-input); border-bottom: 1px solid var(--border-card); }\n        .script-filename { font-size: .72em; color: var(--text-muted2); font-family: 'Courier New', monospace; }\n        .script-copy-btn { font-size: .72em; color: #6366f1; background: none; border: 1px solid #6366f130; border-radius: 4px; padding: 2px 10px; cursor: pointer; }\n        .script-copy-btn:hover { background: #6366f115; }\n        .script-body { padding: 14px 16px; font-family: 'Courier New', monospace; font-size: .82em; line-height: 1.6; color: var(--text-code); overflow-x: auto; max-height: 420px; overflow-y: auto; white-space: pre; }\n        /* Articles */\n        .article-card { display: block; background: var(--bg-secondary); border: 1px solid var(--border-primary); border-radius: 10px; padding: 14px 16px; text-decoration: none; transition: border-color .15s; }\n        .article-card:hover { border-color: #6366f1; }\n        @media (max-width: 600px) {\n          .skill-card { padding: 20px; }\n          .skill-title { font-size: 1.5em; }\n        }\n      "])</script><script>self.__next_f.push([1,"15:[[\"$\",\"style\",null,{\"children\":\"$1f\"}],\"$L20\",\"$L21\"]\n"])</script><script>self.__next_f.push([1,"22:I[78297,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/12w5ognupk9fb.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n23:Tf6cc,"])</script><script>self.__next_f.push([1,"\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\nname: seo-and-llm-rankings\ndescription: \u003e-\n  Audits websites for traditional SEO health and AI search visibility (GEO). Generates prioritized reports with actionable fixes and ready-to-use prompts for AI coding agents. Covers Google, Bing, ChatGPT, Perplexity, Claude, Gemini, Copilot, and Google AI Overviews. Use when auditing SEO, LLM visibility, generative engine optimization, AI Overviews, or AI search optimization.\nmetadata:\n  version: 1.1.0\n\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eSEO \u0026 LLM Rankings\u003c/h2\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eAudit websites for traditional SEO health and AI search visibility (GEO). Generate prioritized reports with actionable fixes and ready-to-use prompts for AI coding agents. Covers Google, Bing, ChatGPT, Perplexity, Claude, Gemini, Copilot, and Google AI Overviews.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eBefore You Start\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCheck for product marketing context first:\u003c/strong\u003e\nIf \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e.agents/product-marketing-context.md\u003c/code\u003e exists, read it before asking questions. Use that context and only ask for information not already covered.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eGather missing context by asking the user:\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e1. \u003cstrong style=\"color:#e5e7eb\"\u003eAudit mode\u003c/strong\u003e -- Live URL scan or local codebase scan?\n2. \u003cstrong style=\"color:#e5e7eb\"\u003eSite URL\u003c/strong\u003e (if URL mode) -- What URL should be audited?\n3. \u003cstrong style=\"color:#e5e7eb\"\u003eProject path\u003c/strong\u003e (if codebase mode) -- Where is the project? (default: current workspace)\n4. \u003cstrong style=\"color:#e5e7eb\"\u003eScope\u003c/strong\u003e -- Full site audit or specific pages/sections?\n5. \u003cstrong style=\"color:#e5e7eb\"\u003eSite type\u003c/strong\u003e -- SaaS, e-commerce, blog, local business, portfolio, etc.\n6. \u003cstrong style=\"color:#e5e7eb\"\u003ePrimary keywords\u003c/strong\u003e -- What keywords/topics matter most?\n7. \u003cstrong style=\"color:#e5e7eb\"\u003eBusiness goal\u003c/strong\u003e -- Traffic, leads, signups, sales, brand awareness?\n8. \u003cstrong style=\"color:#e5e7eb\"\u003eKnown issues\u003c/strong\u003e -- Any specific concerns or recent traffic drops?\n9. \u003cstrong style=\"color:#e5e7eb\"\u003eTech stack\u003c/strong\u003e -- Next.js, WordPress, Shopify, static HTML, etc.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eOnly ask what you don't already know. If the user gives a URL, use URL mode. If the user says \"audit my project\" or \"scan the codebase,\" use codebase mode. If ambiguous, ask.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003ePlatform Detection \u0026 URL Fetching Strategy\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eURL mode fetches live pages via HTTP. This often fails because of WAFs (Cloudflare, etc.), corporate firewalls, bot-detection, or restricted shell environments. Before running any URL-mode fetch, detect your platform and use the most reliable method available.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eHow to detect your platform:\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCursor\u003c/strong\u003e -- You have a \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e tool and \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebSearch\u003c/code\u003e tool. You may also have \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e@Web\u003c/code\u003e mentions available. If you can call \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e, you are in Cursor.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eClaude Code\u003c/strong\u003e -- You have a \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e tool natively. Similar to Cursor but runs in a terminal-based agent.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCodex (OpenAI)\u003c/strong\u003e -- You have browser tools or web-fetch MCP tools. Check your available tool list.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eWindsurf\u003c/strong\u003e -- You have built-in web browsing and URL fetching capability.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eAider / terminal-only agents\u003c/strong\u003e -- No built-in web tools. You must rely on shell commands (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecurl\u003c/code\u003e, \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003epython3\u003c/code\u003e).\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eGitHub Copilot Workspace\u003c/strong\u003e -- Has web access through its own tool surface.\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eURL fetching priority chain (try in order, fall back on failure):\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Platform | Primary Fetch Method | Fallback 1 | Fallback 2 |\n| --- | --- | --- | --- |\n| \u003cstrong style=\"color:#e5e7eb\"\u003eCursor\u003c/strong\u003e | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e tool (bypasses WAFs/firewalls) | Python script (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003escripts/seo_audit.py\u003c/code\u003e) | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecurl\u003c/code\u003e with browser UA |\n| \u003cstrong style=\"color:#e5e7eb\"\u003eClaude Code\u003c/strong\u003e | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e tool | Python script | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecurl\u003c/code\u003e with browser UA |\n| \u003cstrong style=\"color:#e5e7eb\"\u003eCodex\u003c/strong\u003e | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e / browser tools | Python script | -- |\n| \u003cstrong style=\"color:#e5e7eb\"\u003eWindsurf\u003c/strong\u003e | Built-in web browsing | Python script | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecurl\u003c/code\u003e with browser UA |\n| \u003cstrong style=\"color:#e5e7eb\"\u003eAider / terminal\u003c/strong\u003e | Python script | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecurl\u003c/code\u003e with browser UA | -- |\n| \u003cstrong style=\"color:#e5e7eb\"\u003eOther\u003c/strong\u003e | Python script | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecurl\u003c/code\u003e with browser UA | -- |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eFailure detection:\u003c/strong\u003e Treat any of these as a fetch failure that should trigger the next fallback:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eHTTP 403, 404, 5xx status codes\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eConnection timeout or connection refused\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eEmpty response body\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eSSL/TLS errors\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecurl: command not found\u003c/code\u003e (Windows without curl)\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eIf all methods fail\u003c/strong\u003e, do NOT silently skip the check. Inform the user that the URL could not be reached and suggest:\n1. Trying from a different network\n2. Pasting the page HTML or file content directly for analysis\n3. Switching to codebase mode if they have the source locally\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eAudit Mode Selection\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eThis skill supports two audit modes:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Mode              | When to Use                    | How It Works                                                                    |\n| ----------------- | ------------------------------ | ------------------------------------------------------------------------------- |\n| \u003cstrong style=\"color:#e5e7eb\"\u003eURL mode\u003c/strong\u003e      | Site is live / deployed        | Fetches pages via HTTP, checks robots.txt, sitemap, llms.txt, load time         |\n| \u003cstrong style=\"color:#e5e7eb\"\u003eCodebase mode\u003c/strong\u003e | Site is local / pre-deployment | Scans project files using Glob, Read, Grep -- checks HTML, layout files, config |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCodebase mode\u003c/strong\u003e is especially useful for:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCatching SEO issues before deployment\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eProjects not yet live\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eWhen the user wants to scan source code directly\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAuditing meta tags set in framework layout/page files (Next.js, Astro, etc.)\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eAudit Workflow\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ePhase 1: Technical SEO Scan\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eChoose your mode:\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e#### URL Mode\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eRun the audit script and manual checks:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003epython3 scripts/seo_audit.py \"https://example.com\"\npython3 scripts/seo_audit.py \"https://example.com\" --full   # detailed output\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eManual checks -- use the fetching strategy from \"Platform Detection \u0026 URL Fetching Strategy\" above.\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFollow the priority chain for your platform. Examples for each method:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003ePrimary: WebFetch (Cursor, Claude Code, Codex, Windsurf)\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eUse \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e for each resource. This is the most reliable method -- it handles TLS, follows redirects, and bypasses most WAF/bot-detection blocks.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eWebFetch(\"https://example.com\")              -- main page HTML\nWebFetch(\"https://example.com/robots.txt\")   -- robots.txt\nWebFetch(\"https://example.com/sitemap.xml\")  -- sitemap\nWebFetch(\"https://example.com/llms.txt\")     -- llms.txt (AI discovery)\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eIf \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e returns an error for a specific resource (403, 404, 500, or timeout), note the failure and try the next fallback for that resource. Do NOT skip the check silently.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eFallback 1: Python script\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003epython3 scripts/seo_audit.py \"https://example.com\"\npython3 scripts/seo_audit.py \"https://example.com\" --full\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eThe script has built-in retry logic and User-Agent rotation. If the script reports a fetch failure, it will print a diagnostic message with the status code and suggested next steps.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eFallback 2: curl with browser User-Agent\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eUse a realistic browser User-Agent to avoid bot detection. Add \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e--retry 2\u003c/code\u003e and \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e--max-time 30\u003c/code\u003e for resilience.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eUA=\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36\"\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003ecurl -sL -A \"$UA\" --retry 2 --max-time 30 \"https://example.com/robots.txt\"\ncurl -sL -A \"$UA\" --retry 2 --max-time 30 \"https://example.com/sitemap.xml\"\ncurl -sL -A \"$UA\" --retry 2 --max-time 30 \"https://example.com/llms.txt\"\ncurl -sL -A \"$UA\" --retry 2 --max-time 30 \"https://example.com\"\ncurl -sIL -A \"$UA\" --retry 2 --max-time 30 \"https://example.com\"\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eIf all methods fail for a resource\u003c/strong\u003e, tell the user which resource could not be fetched, the error received, and suggest they paste the content manually or switch to codebase mode.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003ePageSpeed check (optional, API-based):\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003ecurl \"https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://example.com\u0026strategy=mobile\"\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eWhat to check (both modes):\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eTitle tag exists, 50-60 chars, contains primary keyword\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eMeta description exists, 150-160 chars, compelling\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eSingle H1 per page, contains primary keyword\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eHeading hierarchy: H1 \u003e H2 \u003e H3 (no skips)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eHTTPS enabled with valid certificate\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003erobots.txt exists and allows important pages\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eXML sitemap exists and is accessible\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003ePage loads in \u003c 3 seconds (URL mode only)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCore Web Vitals: LCP \u003c 2.5s, INP \u003c 200ms, CLS \u003c 0.1 (URL mode only)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eOpen Graph and Twitter Card tags present\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eImages have alt text\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eNo broken internal links\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e#### Codebase Mode\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eScan the project files directly using Glob, Read, and Grep. No live server needed.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eStep 1: Discover project structure and framework\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGlob: **/*.{html,jsx,tsx,astro,vue,svelte,php}\nGlob: **/layout.{tsx,jsx,js,ts}\nGlob: **/app/layout.{tsx,jsx}\nGlob: **/_app.{tsx,jsx}\nGlob: **/index.{html,tsx,jsx}\nGlob: **/head.{tsx,jsx}\nGlob: **/_document.{tsx,jsx}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eStep 2: Check meta tags in layout/page files\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFor Next.js (App Router):\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGrep: \"metadata|generateMetadata|title|description\" in app/layout.tsx, app/page.tsx\nGrep: \"openGraph|twitter|metadataBase\" in app/layout.tsx\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFor Next.js (Pages Router):\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGrep: \"\u003cHead\u003e|\u003ctitle\u003e|meta name=.description\" in pages/_app.tsx, pages/_document.tsx\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFor static HTML:\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGrep: \"\u003ctitle\u003e|\u003cmeta name=.description|\u003cmeta property=.og:\" in **/*.html\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFor Astro/Vue/Svelte:\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGrep: \"\u003ctitle\u003e|\u003cmeta|defineMetadata|useHead\" in **/*.{astro,vue,svelte}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eStep 3: Check for robots.txt and sitemap\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGlob: **/robots.txt\nGlob: **/public/robots.txt\nGlob: **/static/robots.txt\nGlob: **/sitemap*.xml\nGlob: **/public/sitemap*.xml\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFor Next.js dynamic generation:\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGlob: **/app/robots.{ts,js}\nGlob: **/app/sitemap.{ts,js}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eStep 4: Check for llms.txt\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGlob: **/llms.txt\nGlob: **/public/llms.txt\nGlob: **/static/llms.txt\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eStep 5: Check schema markup in source\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGrep: \"application/ld\\+json|@type|schema.org|jsonLd|JsonLd\" in **/*.{tsx,jsx,html,astro,vue}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eStep 6: Check headings structure\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGrep: \"\u003ch1|\u003ch2|\u003ch3|\u003cH1|\u003cH2|\u003cH3\" in page/layout files\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFor React/JSX components:\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGrep: \"className=.*h1|\u003ch1|\u003cH1|heading\" in **/*.{tsx,jsx}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eStep 7: Check images for alt text\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGrep: \"\u003cimg[^\u003e]*(?!alt=)\" in **/*.{html,tsx,jsx,astro,vue}\nGrep: \"\u003cImage[^\u003e]*(?!alt=)\" in **/*.{tsx,jsx}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eStep 8: Check Open Graph and social tags\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eGrep: \"og:title|og:description|og:image|twitter:card|openGraph\" in layout/page files\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCodebase mode limitations:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCannot check page load time or Core Web Vitals (needs live server)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCannot test HTTP redirect chains or SSL\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCannot detect runtime-only issues (client-side rendering, JS errors)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eSchema injected purely at runtime by plugins won't be visible\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCodebase mode advantages:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCatches issues before deployment\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCan see the actual source code and suggest exact file/line fixes\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eWorks offline\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCan scan all pages at once instead of one URL at a time\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFix prompts can reference exact file paths\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ePhase 2: GEO / AI Visibility Scan\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eAI Crawler Access -- check robots.txt for these bots (in URL mode, fetch directly; in codebase mode, read the robots.txt file from public/ or project root):\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Bot               | Platform   | Purpose                    |\n| ----------------- | ---------- | -------------------------- |\n| GPTBot            | OpenAI     | ChatGPT training/knowledge |\n| ChatGPT-User      | OpenAI     | ChatGPT web browsing       |\n| ClaudeBot         | Anthropic  | Claude training            |\n| Claude-Web        | Anthropic  | Claude web search          |\n| anthropic-ai      | Anthropic  | Claude training data       |\n| PerplexityBot     | Perplexity | Real-time search answers   |\n| Google-Extended   | Google     | Gemini / AI Overviews      |\n| Applebot-Extended | Apple      | Apple Intelligence         |\n| Bingbot           | Microsoft  | Copilot (uses Bing index)  |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003ellms.txt File:\u003c/strong\u003e\nCheck if \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ehttps://example.com/llms.txt\u003c/code\u003e exists. This AI discovery file (introduced 2024, widely adopted 2026) provides structured context to LLMs. Sites with llms.txt saw ~35% increase in AI visibility within 60 days. If missing, recommend creating one -- see \u003ca href=\"references/fix-prompt-templates.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/fix-prompt-templates.md\u003c/a\u003e for a ready-to-use prompt.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eSchema Markup:\u003c/strong\u003e\n\u003e \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eweb_fetch\u003c/code\u003e and \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecurl\u003c/code\u003e cannot reliably detect JS-injected schema (Yoast, RankMath, AIOSEO). Use browser tools or Google Rich Results Test for accurate detection.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eCheck for: FAQPage (+40% AI visibility), Article, Organization, WebPage, BreadcrumbList, SpeakableSpecification. See \u003ca href=\"references/schema-templates.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/schema-templates.md\u003c/a\u003e.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eAI Citation Scoring:\u003c/strong\u003e\nScore the page across 5 dimensions (see \u003ca href=\"references/ai-citation-scoring.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/ai-citation-scoring.md\u003c/a\u003e):\n1. \u003cstrong style=\"color:#e5e7eb\"\u003eExtractability\u003c/strong\u003e -- Can AI pull a useful answer?\n2. \u003cstrong style=\"color:#e5e7eb\"\u003eQuotability\u003c/strong\u003e -- Are there statements worth citing?\n3. \u003cstrong style=\"color:#e5e7eb\"\u003eAuthority\u003c/strong\u003e -- Does it signal expertise?\n4. \u003cstrong style=\"color:#e5e7eb\"\u003eFreshness\u003c/strong\u003e -- Is content current?\n5. \u003cstrong style=\"color:#e5e7eb\"\u003eEntity Clarity\u003c/strong\u003e -- Can AI identify the entity?\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eVeto rule:\u003c/strong\u003e If AI crawlers are blocked in robots.txt, AI visibility score = 0 regardless of content quality.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ePhase 3: Content Quality Assessment\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eGEO Methods Check\u003c/strong\u003e (see \u003ca href=\"references/geo-methods.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/geo-methods.md\u003c/a\u003e):\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCitations with sources present? (+27-40% visibility)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eStatistics with named sources? (+33-37%)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eExpert quotes with attribution? (+30-43%)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAnswer-first format? (40-60 word answer capsule after H2s)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eNo keyword stuffing? (causes -9 to -10%)\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eE-E-A-T Signals:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAuthor bios with credentials visible?\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAbout page with company information?\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eContact information accessible?\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFirst-hand experience demonstrated?\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eContent dated and recently updated?\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eContent Structure for AI Extraction:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eClear H2/H3 headings that match questions people ask\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAnswer in first sentence after each heading\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eTables for comparisons, ordered lists for processes\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eShort paragraphs (2-3 sentences)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFAQ sections with direct answers\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eAI Writing Detection:\u003c/strong\u003e\nCheck content for AI writing patterns that reduce credibility. See \u003ca href=\"references/ai-writing-detection.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/ai-writing-detection.md\u003c/a\u003e.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eReport Format\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eGenerate this report after completing all three phases:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# SEO \u0026 GEO Audit Report: [domain or project name]\n\u003cstrong style=\"color:#e5e7eb\"\u003eAudit mode:\u003c/strong\u003e URL / Codebase\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eExecutive Summary\u003c/h3\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eSEO Health:\u003c/strong\u003e X/10\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eAI Visibility Score:\u003c/strong\u003e X/10\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCritical Issues (P0):\u003c/strong\u003e [count]\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eImportant Issues (P1):\u003c/strong\u003e [count]\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eQuick Wins:\u003c/strong\u003e [count]\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eSEO Findings\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Priority | Issue   | Impact   | Fix            |\n| -------- | ------- | -------- | -------------- |\n| P0       | [issue] | [impact] | [specific fix] |\n| P1       | [issue] | [impact] | [specific fix] |\n| P2       | [issue] | [impact] | [specific fix] |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eGEO / AI Visibility Findings\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eAI Citation Score: X/10\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Dimension      | Score | Assessment |\n| -------------- | ----- | ---------- |\n| Extractability | X/10  | [details]  |\n| Quotability    | X/10  | [details]  |\n| Authority      | X/10  | [details]  |\n| Freshness      | X/10  | [details]  |\n| Entity Clarity | X/10  | [details]  |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eAI Crawler Access\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Bot             | Status                             |\n| --------------- | ---------------------------------- |\n| GPTBot          | Allowed / Blocked / Not configured |\n| ClaudeBot       | Allowed / Blocked / Not configured |\n| PerplexityBot   | Allowed / Blocked / Not configured |\n| Google-Extended | Allowed / Blocked / Not configured |\n| Bingbot         | Allowed / Blocked / Not configured |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ellms.txt: Present / Missing\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003ePlatform Readiness\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Platform             | Ready  | Key Gap |\n| -------------------- | ------ | ------- |\n| Google (traditional) | Yes/No | [gap]   |\n| Google AI Overviews  | Yes/No | [gap]   |\n| ChatGPT              | Yes/No | [gap]   |\n| Perplexity           | Yes/No | [gap]   |\n| Claude               | Yes/No | [gap]   |\n| Copilot              | Yes/No | [gap]   |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eGEO Methods Applied\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Method                 | Present | Expected Boost |\n| ---------------------- | ------- | -------------- |\n| Citations with sources | Yes/No  | +27-40%        |\n| Statistics with data   | Yes/No  | +33-37%        |\n| Expert quotes          | Yes/No  | +30-43%        |\n| Answer capsules        | Yes/No  | High           |\n| FAQ schema             | Yes/No  | +40%           |\n| Authoritative tone     | Yes/No  | +25%           |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003ePrioritized Action Plan\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eCritical (do first)\u003c/h4\u003e\n1. [action with specific instructions]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eHigh Impact\u003c/h4\u003e\n1. [action with specific instructions]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eQuick Wins\u003c/h4\u003e\n1. [action with specific instructions]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eLong-term\u003c/h4\u003e\n1. [action with specific instructions]\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eFix Prompt Generation\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eWhen the audit finds a small number of fixable issues, generate a ready-to-use prompt that the user can paste directly into their AI coding agent (Cursor, Claude Code, Codex, etc.).\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eWhen to generate a fix prompt:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFewer than ~10 distinct issues found\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eIssues are code-level fixes (meta tags, schema, robots.txt, content structure)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eUser asks for a prompt to fix things\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCodebase mode: always generate fix prompts with exact file paths and line numbers\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eHow to build the prompt:\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e1. Read the fix prompt templates from \u003ca href=\"references/fix-prompt-templates.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/fix-prompt-templates.md\u003c/a\u003e\n2. Select the relevant template(s) based on audit findings\n3. Fill in the specific issues, file paths, and current values from the audit\n4. Combine into a single \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e.prompt.md\u003c/code\u003e formatted prompt with:\n   - Clear persona (SEO/GEO expert)\n   - Specific task listing each issue found\n   - Step-by-step fix instructions\n   - Validation criteria\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eExample output (URL mode):\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e---\ndescription: \"Fix SEO and AI visibility issues found in audit of example.com\"\nagent: \"agent\"\ntools: [\"editFiles\", \"codebase\", \"fetch\"]\n\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eFix SEO \u0026 AI Visibility Issues\u003c/h2\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eYou are an SEO and GEO optimization expert. Fix the following issues found\nduring an audit of example.com.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eIssues to Fix\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e1. \u003cstrong style=\"color:#e5e7eb\"\u003eMissing meta description\u003c/strong\u003e on /about page\n   - Add: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e\u003cmeta name=\"description\" content=\"...\"\u003e\u003c/code\u003e\n   - Must be 150-160 characters, include primary keyword\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e2. \u003cstrong style=\"color:#e5e7eb\"\u003eAI crawlers blocked\u003c/strong\u003e in robots.txt\n   - Add Allow rules for GPTBot, ClaudeBot, PerplexityBot\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e3. \u003cstrong style=\"color:#e5e7eb\"\u003eNo FAQPage schema\u003c/strong\u003e on /pricing\n   - Add JSON-LD FAQPage schema with existing Q\u0026A content\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eValidation\u003c/h3\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eRun: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003epython3 scripts/seo_audit.py \"https://example.com\"\u003c/code\u003e\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eVerify all issues resolved\u003c/li\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eExample output (codebase mode):\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e---\ndescription: \"Fix SEO issues found in codebase audit of my-project\"\nagent: \"agent\"\ntools: [\"editFiles\", \"codebase\", \"search\"]\n\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eFix SEO \u0026 AI Visibility Issues\u003c/h2\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eYou are an SEO and GEO optimization expert. Fix the following issues found\nduring a codebase audit.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eIssues to Fix\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e1. \u003cstrong style=\"color:#e5e7eb\"\u003eMissing meta description\u003c/strong\u003e in \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eapp/layout.tsx\u003c/code\u003e (line 12)\n   - The \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003emetadata\u003c/code\u003e export has \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003etitle\u003c/code\u003e but no \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003edescription\u003c/code\u003e\n   - Add: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003edescription: \"Your compelling description, 150-160 chars\"\u003c/code\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e2. \u003cstrong style=\"color:#e5e7eb\"\u003eNo AI crawler rules\u003c/strong\u003e in \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003epublic/robots.txt\u003c/code\u003e (line 1)\n   - Only has Googlebot rules. Add Allow rules for GPTBot, ClaudeBot,\n     PerplexityBot, Google-Extended, Applebot-Extended\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e3. \u003cstrong style=\"color:#e5e7eb\"\u003eNo llms.txt\u003c/strong\u003e -- file missing entirely\n   - Create \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003epublic/llms.txt\u003c/code\u003e with company summary, contact, and services\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e4. \u003cstrong style=\"color:#e5e7eb\"\u003eMissing OG image\u003c/strong\u003e in \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eapp/layout.tsx\u003c/code\u003e (line 15)\n   - \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eopenGraph\u003c/code\u003e object has title and description but no \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eimages\u003c/code\u003e array\n   - Add: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eimages: [{ url: \"/og-image.png\", width: 1200, height: 630 }]\u003c/code\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e5. \u003cstrong style=\"color:#e5e7eb\"\u003eNo FAQPage schema\u003c/strong\u003e on \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eapp/pricing/page.tsx\u003c/code\u003e\n   - FAQ section exists at line 85 but has no JSON-LD markup\n   - Add FAQPage schema using the existing Q\u0026A content\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eValidation\u003c/h3\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCheck each file for the fixes above\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eRun \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enpm run build\u003c/code\u003e to verify no build errors\u003c/li\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eContent Prompt Generation\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eWhen the audit identifies content gaps -- missing pages, thin content that needs rewriting, or opportunities for new pages targeting high-value queries -- generate a ready-to-use prompt that produces SEO + GEO optimized content when pasted into an AI writing/coding agent.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eWhen to generate a content prompt:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAudit reveals content gaps (missing pages for queries the site should rank for)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eProgrammatic SEO opportunities identified (see table below)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eUser explicitly asks for help creating new content or pages\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eThin content flagged (word count \u003c 300) that needs a full rewrite rather than a quick fix\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCompetitor analysis shows topics the site doesn't cover but should\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eHow to build the prompt:\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e1. Read the content prompt templates from \u003ca href=\"references/content-prompt-templates.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/content-prompt-templates.md\u003c/a\u003e\n2. Select the template matching the page type:\n   - \u003cstrong style=\"color:#e5e7eb\"\u003eArticle / Blog Post\u003c/strong\u003e -- informational content targeting a query\n   - \u003cstrong style=\"color:#e5e7eb\"\u003eLanding / Product Page\u003c/strong\u003e -- conversion-focused page\n   - \u003cstrong style=\"color:#e5e7eb\"\u003eGlossary / Definition Page\u003c/strong\u003e -- \"What is X?\" pages (great for pSEO)\n   - \u003cstrong style=\"color:#e5e7eb\"\u003eComparison Page\u003c/strong\u003e -- \"X vs Y\" structured comparison\n   - \u003cstrong style=\"color:#e5e7eb\"\u003eFAQ / Resource Page\u003c/strong\u003e -- Q\u0026A aggregation page\n   - \u003cstrong style=\"color:#e5e7eb\"\u003eLocation / Persona Page\u003c/strong\u003e -- localized or audience-specific variant\n3. Fill placeholders using audit findings, keyword data, and product-marketing-context (if \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e.agents/product-marketing-context.md\u003c/code\u003e exists)\n4. The template already embeds GEO optimization rules (answer capsules, citation density, quotation slots from \u003ca href=\"references/geo-methods.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/geo-methods.md\u003c/a\u003e), anti-AI-writing constraints (from \u003ca href=\"references/ai-writing-detection.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/ai-writing-detection.md\u003c/a\u003e), and schema markup requirements -- do not remove them\n5. Output as a single \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e.prompt.md\u003c/code\u003e formatted prompt\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eExample output (article page):\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e---\ndescription: \"Create SEO + GEO optimized article: What is Retrieval-Augmented Generation?\"\nagent: \"agent\"\ntools: [\"editFiles\", \"codebase\", \"search\", \"fetch\"]\n\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eCreate Article: What is Retrieval-Augmented Generation (RAG)?\u003c/h2\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eYou are a senior content strategist who specializes in search engine\noptimization and generative engine optimization. You write content that\nranks on Google AND gets cited by ChatGPT, Perplexity, Claude, and\nGoogle AI Overviews.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eContent Brief\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eTarget query\u003c/strong\u003e: \"What is RAG?\" / \"retrieval augmented generation explained\"\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eSearch intent\u003c/strong\u003e: informational\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eTarget audience\u003c/strong\u003e: Software engineers evaluating RAG for production AI apps\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003ePrimary keyword\u003c/strong\u003e: retrieval augmented generation\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eSecondary keywords\u003c/strong\u003e: RAG architecture, RAG vs fine-tuning, RAG pipeline, vector database\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eWord count\u003c/strong\u003e: 2,000-2,500 words\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCompeting pages to outperform\u003c/strong\u003e: aws.amazon.com/what-is/retrieval-augmented-generation, cloud.google.com/...\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003ePre-Writing Analysis\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eBefore drafting:\n1. Intent mapping: Engineers want to understand what RAG is, when to use it\n   vs fine-tuning, and how to implement it. They need architecture details.\n2. SERP shape: Competing pages use definition + architecture diagram + use\n   cases format. Match this but add comparison tables and sourced benchmarks.\n3. Gap analysis: Competing pages lack pricing comparisons for vector DBs,\n   real latency benchmarks, and production failure modes.\n4. Citation plan: Lewis et al. (2020) original paper, LlamaIndex docs,\n   LangChain docs, Pinecone benchmarks, Anthropic RAG guide.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eArticle Structure\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eH2s as questions, 40-60 word answer capsule after each H2. Include:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e2-3 sourced statistics per section: \"Claim (Source, Year)\"\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAt least 1 expert quote per 500 words\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eTables for all comparisons (RAG vs fine-tuning, vector DB comparison)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFAQ section with 6 self-contained Q\u0026A pairs\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eWriting Rules\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eNo em dashes. No filler words. No AI-tell verbs (delve, leverage).\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eParagraphs: 2-3 sentences max.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFirst 150 words must directly answer \"What is RAG?\"\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eSchema\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eInclude Article schema with author, datePublished, dateModified,\nSpeakableSpecification. Include FAQPage schema for FAQ section.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eValidation\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] Definition in first 150 words\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] Answer capsule after every H2\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] 2-3 sourced stats per section\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] No em dashes or AI-tell words\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] Article + FAQPage schema included\u003c/li\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eExample output (comparison page):\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e---\ndescription: \"Create SEO + GEO optimized comparison: Notion vs Confluence\"\nagent: \"agent\"\ntools: [\"editFiles\", \"codebase\", \"search\", \"fetch\"]\n\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eCreate Comparison Page: Notion vs Confluence\u003c/h2\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eYou are a product analyst with SEO and GEO expertise. You write\ncomparison pages that AI systems cite when users ask \"Which is better?\"\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eContent Brief\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eTarget query\u003c/strong\u003e: \"Notion vs Confluence\"\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eSearch intent\u003c/strong\u003e: commercial investigation\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eTarget audience\u003c/strong\u003e: Engineering/product managers choosing a team wiki\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003ePrimary keyword\u003c/strong\u003e: Notion vs Confluence\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eSecondary keywords\u003c/strong\u003e: Notion alternative, Confluence alternative, best wiki tool\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eWord count\u003c/strong\u003e: 2,000 words\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eYour product\u003c/strong\u003e: None (neutral comparison)\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003ePage Structure\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eH1: \"Notion vs Confluence: Which Wiki Tool Is Better for Your Team in 2026?\"\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eTL;DR in first 150 words with a clear verdict\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFull comparison table (pricing, features, limitations, ideal user)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e40-60 word answer capsule after each H2\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\"When to Choose Notion\" and \"When to Choose Confluence\" sections\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAlternatives table with 3-4 options\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFAQ with 6 self-contained answers\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eWriting Rules\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAll pricing dated \"(as of March 2026)\"\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eNo unsupported superlatives\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eNo em dashes or AI-tell words\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eEvery claim verifiable via product docs or third-party reviews\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eSchema\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eInclude Article schema with \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eabout\u003c/code\u003e entities for both products.\nInclude FAQPage schema. Include SpeakableSpecification for TL;DR.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eValidation\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] TL;DR with clear verdict in first 150 words\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] Full comparison table\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] Each product defined in 40-60 word capsule\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] All pricing dated\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] No em dashes or AI-tell words\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] Article + FAQPage schema included\u003c/li\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCombining with programmatic SEO:\u003c/strong\u003e When the audit suggests scale pages (integrations, locations, personas, glossary terms), use the batch pattern in Template 3 or Template 6 from \u003ca href=\"references/content-prompt-templates.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/content-prompt-templates.md\u003c/a\u003e. Provide the list of items (terms, cities, audiences) inside the prompt so the agent generates one page per item using the same structure.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eProgrammatic SEO Opportunities\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFor sites that could benefit from pages at scale, suggest opportunities from these playbooks:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| If the site has...        | Suggest...                                  |\n| ------------------------- | ------------------------------------------- |\n| Product with integrations | Integration pages (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e/integrations/[tool]/\u003c/code\u003e) |\n| Multi-segment audience    | Persona pages (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e/for/[audience]/\u003c/code\u003e)          |\n| Local presence            | Location pages (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e/[service]/[city]/\u003c/code\u003e)       |\n| Competitor landscape      | Comparison pages (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e/compare/[x]-vs-[y]/\u003c/code\u003e)   |\n| Industry expertise        | Glossary pages (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e/glossary/[term]/\u003c/code\u003e)        |\n| Design/creative product   | Template pages (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e/templates/[type]/\u003c/code\u003e)       |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eOnly suggest if there's genuine search demand and the site has (or can create) unique data for each page. Use subfolders, not subdomains.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003ePlatform-Specific Optimization\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFor detailed ranking factors per platform, see \u003ca href=\"references/platform-ranking-factors.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/platform-ranking-factors.md\u003c/a\u003e.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eQuick reference:\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Platform            | Primary Index | Key Factor          | Unique Requirement    |\n| ------------------- | ------------- | ------------------- | --------------------- |\n| Google              | Google        | Backlinks + E-E-A-T | Core Web Vitals       |\n| Google AI Overviews | Google        | E-E-A-T + Schema    | Knowledge Graph       |\n| ChatGPT             | Bing-based    | Domain Authority    | Content-Answer Fit    |\n| Perplexity          | Own + Google  | Semantic Relevance  | FAQ Schema, freshness |\n| Claude              | Brave         | Factual Density     | Brave Search indexing |\n| Copilot             | Bing          | Bing Index          | MS Ecosystem presence |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eValidation Tools\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Tool                     | URL                                 | Purpose                        |\n| ------------------------ | ----------------------------------- | ------------------------------ |\n| Google Rich Results Test | search.google.com/test/rich-results | Schema validation (renders JS) |\n| Schema.org Validator     | validator.schema.org                | Schema syntax check            |\n| PageSpeed Insights       | pagespeed.web.dev                   | Core Web Vitals                |\n| Google Search Console    | search.google.com/search-console    | Indexing, errors, performance  |\n| Bing Webmaster Tools     | bing.com/webmasters                 | Bing indexing                  |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eReferences\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ca href=\"references/ai-citation-scoring.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/ai-citation-scoring.md\u003c/a\u003e -- 5-dimension AI citation scoring framework\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ca href=\"references/platform-ranking-factors.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/platform-ranking-factors.md\u003c/a\u003e -- Per-engine ranking factors (2026)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ca href=\"references/geo-methods.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/geo-methods.md\u003c/a\u003e -- Princeton GEO 9 methods with updated data\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ca href=\"references/schema-templates.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/schema-templates.md\u003c/a\u003e -- JSON-LD structured data templates\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ca href=\"references/seo-checklist.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/seo-checklist.md\u003c/a\u003e -- Prioritized P0/P1/P2 audit checklist\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ca href=\"references/ai-writing-detection.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/ai-writing-detection.md\u003c/a\u003e -- AI writing patterns to avoid\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ca href=\"references/fix-prompt-templates.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/fix-prompt-templates.md\u003c/a\u003e -- Fix prompt templates for AI coding agents\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ca href=\"references/content-prompt-templates.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/content-prompt-templates.md\u003c/a\u003e -- Content creation prompt templates for new pages (SEO + GEO optimized)\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eScripts\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003escripts/seo_audit.py\u003c/code\u003e -- Full SEO + GEO audit (no API required). Checks meta tags, headings, robots.txt, sitemap, llms.txt, AI crawlers, schema, performance.\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003epython3 scripts/seo_audit.py \"https://example.com\"          # summary\npython3 scripts/seo_audit.py \"https://example.com\" --full    # detailed\npython3 scripts/seo_audit.py \"https://example.com\" --ua \"Custom/Agent\"  # custom User-Agent\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eTroubleshooting: URL Fetch Failures\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eURL fetching can fail for many reasons. Use this table to diagnose and recover.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Symptom | Likely Cause | Fix |\n| --- | --- | --- |\n| 403 Forbidden | WAF/bot detection (Cloudflare, etc.) | Use \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e (Cursor/Claude Code) or curl with browser UA |\n| 404 on known pages | URL path wrong OR CDN blocking non-browser agents | Verify URL in a browser, then try \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e |\n| 429 Too Many Requests | Rate limiting | Wait and retry, or use \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e |\n| 500 Server Error | Server issue or aggressive bot blocking | Retry with backoff (script does this automatically), try \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e |\n| Connection timeout | Firewall blocking outbound requests | Use \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e, or ask user to paste content |\n| Empty response | Bot trap returning empty body | Use \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e, verify the URL loads in a real browser |\n| SSL/TLS error | Certificate issue or corporate MITM proxy | Add \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e--insecure\u003c/code\u003e to curl (warn user), or use \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecurl: command not found\u003c/code\u003e | Windows without curl or restricted env | Use Python script (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003escripts/seo_audit.py\u003c/code\u003e) or \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e |\n| Script exits with code 2 | Connection/timeout error (no HTTP status) | Network issue; try \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e or check VPN/firewall |\n| Script exits with code 1 | HTTP error (got a status code back) | Check the status code in output; likely bot detection |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003ePlatform-specific notes:\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCursor\u003c/strong\u003e: Always prefer the \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e tool. It handles TLS, follows redirects, and bypasses most WAF blocks. If fetching a URL fails with \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e, do NOT silently skip the check -- inform the user with the error and suggest they paste the content or switch to codebase mode.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eClaude Code\u003c/strong\u003e: Same as Cursor -- \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e is available and preferred.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCodex (OpenAI)\u003c/strong\u003e: Use available browser/web tools. Check your tool list for \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eWebFetch\u003c/code\u003e or equivalent.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eWindsurf\u003c/strong\u003e: Use built-in browsing capability. Falls back to shell commands.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eTerminal-only agents (Aider, etc.)\u003c/strong\u003e: Must rely on shell commands. Use the Python script first (it has retry logic and UA rotation), then fall back to curl with a browser User-Agent.\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eGitHub Copilot Workspace\u003c/strong\u003e: Use platform web access tools. Fall back to Python script if unavailable.\u003c/li\u003e\n\u003c/p\u003e"])</script><script>self.__next_f.push([1,"20:[\"$\",\"div\",null,{\"className\":\"skill-page\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"SoftwareApplication\\\",\\\"name\\\":\\\"SEO and LLM Rankings\\\",\\\"description\\\":\\\"Audits websites for traditional SEO health and AI search visibility (GEO). Generates prioritized reports with actionable fixes and ready-to-use prompts for A...\\\",\\\"url\\\":\\\"https://bytesagain.com/skill/seo-and-llm-rankings\\\",\\\"applicationCategory\\\":\\\"clawhub\\\",\\\"operatingSystem\\\":\\\"Any\\\",\\\"offers\\\":{\\\"@type\\\":\\\"Offer\\\",\\\"price\\\":\\\"0\\\",\\\"priceCurrency\\\":\\\"USD\\\"},\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"BytesAgain\\\",\\\"url\\\":\\\"https://bytesagain.com\\\"}}\"}}],[\"$\",\"div\",null,{\"className\":\"breadcrumb\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/\",\"children\":\"BytesAgain\"}],\" β€Ί \",[\"$\",\"a\",null,{\"href\":\"/skills\",\"children\":\"Skills\"}],\" β€Ί \",\"SEO and LLM Rankings\"]}],[\"$\",\"div\",null,{\"className\":\"two-col\",\"children\":[[\"$\",\"div\",null,{\"className\":\"two-col-main\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-card\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-header\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-badges\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge\",\"style\":{\"color\":\"#818cf8\",\"background\":\"#818cf822\",\"borderColor\":\"#818cf844\"},\"children\":[\"πŸ¦€\",\" \",\"ClawHub\"]}],false]}],[\"$\",\"div\",null,{\"className\":\"skill-top-actions\",\"children\":[\"$\",\"$L22\",null,{\"slug\":\"seo-and-llm-rankings\"}]}]]}],[\"$\",\"h1\",null,{\"className\":\"skill-title\",\"children\":\"SEO and LLM Rankings\"}],[\"$\",\"p\",null,{\"className\":\"skill-owner\",\"children\":[\"by \",[\"$\",\"span\",null,{\"children\":[\"@\",\"imrishit98\"]}]]}],[\"$\",\"p\",null,{\"className\":\"skill-desc\",\"children\":\"Audits websites for traditional SEO health and AI search visibility (GEO). Generates prioritized reports with actionable fixes and ready-to-use prompts for A...\"}],[\"$\",\"div\",null,{\"className\":\"skill-meta\",\"children\":[[\"$\",\"div\",null,{\"className\":\"meta-item\",\"children\":[[\"$\",\"span\",null,{\"className\":\"meta-label\",\"children\":\"Version\"}],[\"$\",\"span\",null,{\"className\":\"meta-value\",\"children\":[\"v\",\"1.1.0\"]}]]}],[\"$\",\"div\",null,{\"className\":\"meta-item\",\"children\":[[\"$\",\"span\",null,{\"className\":\"meta-label\",\"children\":\"Downloads\"}],[\"$\",\"span\",null,{\"className\":\"meta-value\",\"children\":\"801\"}]]}],false,false,false,[\"$\",\"div\",null,{\"className\":\"meta-item\",\"style\":{\"flexDirection\":\"row\",\"gap\":6,\"alignItems\":\"center\"},\"children\":[[\"$\",\"a\",\"seo\",{\"href\":\"/?q=seo\",\"className\":\"tag\",\"children\":[\"#\",\"seo\"]}],[\"$\",\"a\",\"legal\",{\"href\":\"/?q=legal\",\"className\":\"tag\",\"children\":[\"#\",\"legal\"]}],[\"$\",\"a\",\"health\",{\"href\":\"/?q=health\",\"className\":\"tag\",\"children\":[\"#\",\"health\"]}]]}]]}],[\"$\",\"div\",null,{\"style\":{\"marginTop\":6},\"children\":[\"$\",\"a\",null,{\"href\":\"https://clawhub.ai/imrishit98/seo-and-llm-rankings\",\"target\":\"_blank\",\"rel\":\"noopener\",\"className\":\"btn-secondary\",\"style\":{\"padding\":\"6px 12px\",\"fontSize\":\".82em\",\"borderRadius\":8,\"background\":\"transparent\",\"border\":\"1px solid var(--border-card)\",\"color\":\"var(--text-muted2)\",\"textDecoration\":\"none\",\"whiteSpace\":\"nowrap\"},\"children\":[\"View on \",\"ClawHub\",\" β†’\"]}]}]]}],[\"$\",\"div\",null,{\"className\":\"install-box\",\"children\":[[\"$\",\"div\",null,{\"className\":\"install-header\",\"children\":[[\"$\",\"div\",null,{\"className\":\"install-dots\",\"children\":[[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#ef4444\"}}],[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#eab308\"}}],[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#22c55e\"}}]]}],[\"$\",\"span\",null,{\"className\":\"install-label\",\"children\":\"TERMINAL\"}]]}],[\"$\",\"div\",null,{\"className\":\"install-body\",\"style\":{\"flexWrap\":\"wrap\"},\"children\":[[\"$\",\"code\",null,{\"className\":\"install-cmd\",\"children\":\"clawhub install seo-and-llm-rankings\"}],[\"$\",\"button\",null,{\"className\":\"copy-btn\",\"data-cmd\":\"clawhub install seo-and-llm-rankings\",\"style\":{\"fontWeight\":700},\"children\":\"Copy\"}]]}]]}],[\"$\",\"section\",null,{\"className\":\"skill-card\",\"style\":{\"marginBottom\":20},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"color\":\"#f8fafc\",\"fontSize\":\"1.2em\",\"fontWeight\":800,\"margin\":\"0 0 16px\",\"display\":\"flex\",\"alignItems\":\"center\",\"gap\":8},\"children\":\"πŸ“– About This Skill\"}],[\"$\",\"div\",null,{\"style\":{\"fontSize\":\".92em\",\"color\":\"#94a3b8\",\"lineHeight\":1.75},\"dangerouslySetInnerHTML\":{\"__html\":\"$23\"}}]]}],null,null,null,null,\"$L24\",\"$L25\",null,false,false]}],\"$L26\"]}]]}]\n"])</script><script>self.__next_f.push([1,"21:[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n        document.querySelectorAll('.copy-btn, .script-copy-btn').forEach(btn =\u003e {\\n          btn.addEventListener('click', () =\u003e {\\n            const cmd = btn.getAttribute('data-cmd');\\n            if (!cmd) return;\\n            navigator.clipboard.writeText(cmd).then(() =\u003e {\\n              const orig = btn.textContent;\\n              btn.textContent = 'Copied!';\\n              setTimeout(() =\u003e btn.textContent = orig, 1500);\\n            }).catch(() =\u003e {});\\n          });\\n        });\\n      \"}}]\n"])</script><script>self.__next_f.push([1,"28:I[71521,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/12w5ognupk9fb.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n24:[\"$\",\"section\",null,{\"className\":\"skill-card\",\"style\":{\"marginBottom\":20},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"color\":\"#f8fafc\",\"fontSize\":\"1.2em\",\"fontWeight\":800,\"margin\":\"0 0 16px\",\"display\":\"flex\",\"alignItems\":\"center\",\"gap\":8},\"children\":\"πŸ“¦ Core Types\"}],[\"$\",\"div\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\"}}]]}]\n27:T52c,\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eRun: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\" style=\"background:#0a0a1c;color:#fbbf24;padding:1px 5px;border-radius:3px;font-size:.85em\"\u003epython3 scripts/seo_audit.py \"https://example.com\"\u003c/code\u003e\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eVerify all issues resolved\u003c/li\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\" style=\"background:#0a0a1c;color:#fbbf24;padding:1px 5px;border-radius:3px;font-size:.85em\"\u003e\n\u003cstrong style=\"color:#e5e7eb\"\u003eExample output (codebase mode):\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003c/code\u003e\u003c/pre\u003emarkdown\n\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\ndescription: \"Fix SEO issues found in codebase audit of my-project\"\nagent: \"agent\"\ntools: [\"editFiles\", \"codebase\", \"search\"]\n\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eFix SEO \u0026 AI Visibility Issues\u003c/h2\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eYou are an SEO and GEO optimization expert. Fix the following issues found\nduring a codebase audit.\u003c/p\u003e25:[\"$\",\"section\",null,{\"className\":\"skill-card\",\"style\":{\"marginBottom\":20},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"color\":\"#f8fafc\",\"fontSize\":\"1.2em\",\"fontWeight\":800,\"margin\":\"0 0 16px\",\"display\":\"flex\",\"alignItems\":\"center\",\"gap\":8},\"children\":\"πŸ”’ Constraints\"}],[\"$\",\"div\",null,{\"style\":{\"fontSize\":\".92em\",\"color\":\"#94a3b8\",\"lineHeight\":1.75},\"dangerouslySetInnerHTML\":{\"__html\":\"$27\"}}]]}]\n26:[\"$\",\"div\",null,{\"className\":\"two-col-side\",\"children\":[\"$\",\"$L28\",null,{\"category\":\"clawhub\",\"currentSlug\":\"seo-and-llm-rankings\",\"name\":\"SEO and LLM Rankings\",\"tags\":[\"seo\",\"legal\",\"health\"]}]}]\n"])</script></body></html>