Growth Choice

AI Visibility Audit — Documentation

Technical reference for the Growth Choice AI Visibility Audit tool: what it checks, how scoring works, CLI usage, and limitations.

What this tool does

The Growth Choice AI Visibility Audit performs a real-time technical analysis of any public website. It fetches your homepage and a small set of well-known resource paths, then evaluates the results against documented best practices for AI search accessibility.

The tool is designed for website owners, SEO professionals, and developers who want to understand whether their site is technically eligible for discovery by AI-powered search systems. It does not simulate ChatGPT answers, fabricate citation statistics, or guarantee any particular ranking.

  • Checks crawler accessibility via robots.txt for 8 AI and traditional crawlers
  • Analyzes technical SEO signals: HTTPS, canonicals, title, meta description, H1
  • Detects and validates JSON-LD structured data blocks
  • Checks for AI discovery resources: llms.txt, sitemap.xml, RSS/Atom, ARD endpoint
  • Evaluates content accessibility: crawlable text ratio, service descriptions
  • Produces a 0–100 proprietary score with letter grade and per-finding recommendations

Scoring methodology

The score is proprietary, deterministic, and fully transparent. It is not issued by OpenAI, Google, Perplexity, or any other AI provider — it is Growth Choice's own technical diagnostic.

CategoryMax ptsKey signals
Crawler Accessibility20robots.txt accessible, no blanket disallow, AI bots allowed, sitemap directive
Technical SEO30HTTPS, HTTP 200, title tag, meta description, H1, canonical URL
Structured Data20JSON-LD present, Organization schema, name+url fields, sameAs, WebSite schema
AI Discovery Resources20sitemap.xml, llms.txt, RSS/Atom feed, .well-known/ard.json
Content Accessibility10Text/markup ratio ≥5%, service descriptions, contact info in HTML
Total100

Grade thresholds: A ≥85 · B ≥70 · C ≥55 · D ≥40 · F <40

Unknown results (where a resource is unreachable for reasons outside the site's control) do not automatically count as failures. Optional resources like llms.txt are rewarded when present but are not penalized when absent.

Audit categories

A — Crawler Accessibility (max 20)

Fetches /robots.txt and parses rules for 8 crawlers: OAI-SearchBot, GPTBot, ChatGPT-User, ClaudeBot, anthropic-ai, PerplexityBot, Googlebot, and Bingbot. Reports whether each crawler is explicitly allowed, disallowed, or has no specific rule.

B — Technical SEO (max 30)

Analyzes the homepage response: HTTP status, HTTPS, redirect count, X-Robots-Tag header, and the HTML for canonical tag, meta robots, title tag length, meta description length, and H1 count.

C — Structured Data (max 20)

Extracts all <script type="application/ld+json"> blocks and validates them. Checks for Organization or LocalBusiness schema with name, url, and sameAs fields. Checks for WebSite schema. Flags duplicate schema types and invalid @context values.

D — AI Discovery Resources (max 20)

Probes these paths: /sitemap.xml (10 pts — required), /llms.txt (5 pts — optional, rewarded), /feed.xml or /rss.xml (3 pts), and /.well-known/ard.json (2 pts).

E — Content Accessibility (max 10)

Measures the ratio of readable text to total HTML markup (target: ≥5%). Checks whether the crawlable page text contains service-related keywords and contact information in static HTML (not JavaScript-only).

ChatGPT Search vs. GPTBot

These are two distinct crawlers with different purposes:

  • OAI-SearchBot — ChatGPT's search indexing bot. Used to retrieve live web content in real time. Blocking this prevents ChatGPT from finding current information about your business.
  • GPTBot — OpenAI's training data crawler. Used to collect data for model training. Blocking it does not prevent ChatGPT Search from discovering your site.
  • ChatGPT-User — Crawls URLs when a ChatGPT user shares a link in a conversation. Usually follows the homepage robots.txt rules.

Many businesses legitimately block GPTBot for copyright or data-licensing reasons while still allowing OAI-SearchBot for search discovery. The audit reflects this distinction.

CLI installation and usage

The @growth-choice/ai-audit package provides the same audit engine as a Node.js command-line tool. It requires Node.js 18 or later.

Run without installing

npx @growth-choice/ai-audit https://example.com

Install globally

npm install -g @growth-choice/ai-audit
growth-choice-ai audit https://example.com

Options

OptionDescription
--jsonOutput raw JSON (machine-readable)
--output <file>Write JSON result to file
--timeout <ms>Per-request timeout in ms (default: 12000)
--versionPrint version and exit

Exit codes

0 — audit completed (score ≥ 0) · 1 — audit failed (network error, invalid URL, or blocked) · 2 — usage error

JSON output format

Both the web tool (via Download JSON) and the CLI (via --json) produce this structure:

{
  "url": "https://example.com",
  "timestamp": "2026-10-21T14:30:00.000Z",
  "duration_ms": 4200,
  "score": 72,
  "grade": "B",
  "categories": {
    "crawler_access":       { "score": 17, "max_score": 20, "status": "pass" },
    "technical_seo":        { "score": 25, "max_score": 30, "status": "warn" },
    "structured_data":      { "score": 14, "max_score": 20, "status": "warn" },
    "ai_discovery":         { "score": 10, "max_score": 20, "status": "warn" },
    "content_accessibility":{ "score": 6,  "max_score": 10, "status": "pass" }
  },
  "findings": [
    {
      "id": "no-llms-txt",
      "category": "ai_discovery",
      "severity": "info",
      "title": "llms.txt not found (optional)",
      "description": "...",
      "url": "https://example.com/llms.txt",
      "recommendation": "...",
      "verification": "curl https://example.com/llms.txt"
    }
  ],
  "metadata": {
    "final_url": "https://example.com/",
    "status_code": 200,
    "https": true,
    "redirect_count": 1,
    "fetch_duration_ms": 620,
    "audit_scope": "homepage"
  },
  "incomplete": false
}

Limitations

  • Homepage only. This tool audits a single page (the homepage). It does not crawl entire websites.
  • JavaScript rendering. The audit fetches raw HTML. Content rendered entirely by client-side JavaScript will not be detected in structured data or text ratio checks.
  • No ranking guarantee. A high score improves technical eligibility for AI discovery. It does not guarantee indexing, citation, or any particular search result position.
  • Temporary network issues. If your server is slow or unreachable at audit time, results may be incomplete. Retry a few minutes later.
  • Dynamic content. Scores may vary if your site has dynamic robots.txt rules, A/B testing, or geographically different responses.
  • Not affiliated with OpenAI or Google. This is Growth Choice's independent diagnostic tool.

FAQ

Does a 100/100 score mean ChatGPT will cite my website?

No. The score measures technical eligibility — whether your site is correctly configured to be discovered. Actual citations depend on many other factors including content quality, authority, and relevance to specific queries.

My robots.txt blocks GPTBot. Will that hurt my score?

Blocking GPTBot alone will not significantly impact your score. What matters most is whether OAI-SearchBot (ChatGPT Search) is allowed. Many businesses legitimately block GPTBot for copyright reasons while allowing ChatGPT Search.

Can I run this on a page behind login or authentication?

No. The audit can only access pages that are publicly accessible without authentication, the same way search engine crawlers would access them.

Is my URL or audit data stored by Growth Choice?

The API processes your URL in memory to run the audit. We do not store audit results, URLs, or personally identifiable data from scan requests. Basic error logging may occur for server health monitoring.

How is this different from Google's PageSpeed Insights or Search Console?

PageSpeed Insights focuses on performance (Core Web Vitals). Search Console shows actual Google indexing data. This tool focuses specifically on AI search readiness: robots.txt rules for AI crawlers, llms.txt, structured data for entity recognition, and content accessibility for AI text extraction.

The CLI package shows it is not yet published to npm. When will it be available?

The CLI source code is prepared but not yet published to npm pending final review. Check back at this documentation page for the publication announcement.