{"slug": "how-to-check-if-ai-systems-can-find-and-cite-your-site-in-5-minutes", "title": "How to Check If AI Systems Can Find and Cite Your Site (in 5 Minutes)", "summary": "Rudrendu Paul and Sourav Nandy released LLMScout, a zero-dependency CLI that runs 21 checks against any website to determine how well AI systems can find and cite it. The tool covers technical SEO fundamentals and GEO signals for AI bots, reporting PASS, WARN, or FAIL for each check. It is available as an npm package and a Python package, both installable in under a minute.", "body_md": "*Co-authored by Rudrendu Paul and Sourav Nandy.*\n\n**Repo:** [github.com/RudrenduPaul/LLMScout](https://github.com/RudrenduPaul/LLMScout), a zero-dependency, cross-platform CLI that runs 21 GEO/AEO checks against any website. `npm install -g llmscout-cli`\n\nor `pip install llmscout-cli`\n\n.\n\nPosition-1 click-through rate on keywords that trigger an AI Overview fell from 7.3% in December 2023 to 1.6% in December 2025, per Ahrefs. If an AI system can't find or cite your site, that traffic doesn't come back on its own. Here's how to check where your own site actually stands, in under five minutes.\n\nLLMScout is a CLI that runs 21 checks against any site: 12 covering technical SEO fundamentals, 9 covering GEO signals specifically for AI systems. Every check reports PASS, WARN, or FAIL, and the whole run exits with a machine-readable code, so it drops straight into CI. It ships as two distributions: an npm package with two runtime dependencies, and a Python package with zero. Neither one needs a headless browser.\n\nOne check worth knowing about before you run it is `ai-crawler-directives`\n\n. It reports on all 7 major AI bots separately, because blocking GPTBot (which trains models) does nothing to stop OAI-SearchBot (which does live retrieval for ChatGPT) from fetching and citing your page. They're independently configurable in robots.txt, and most tools treat them as a single signal.\n\nThere are two ways to install it. If you're not sure which one you want, try npm first:\n\n```\nnpm install -g llmscout-cli\n```\n\nThis needs Node 18+, and it pulls in exactly two runtime dependencies: `cheerio`\n\nand `commander`\n\n. No Python, no browser download, no subprocess calls.\n\nIf you'd rather use Python:\n\n```\npip install llmscout-cli\n```\n\nThis version has zero runtime dependencies; it's pure standard library. It runs the same 21 checks and gives the same PASS/WARN/FAIL verdicts as the npm version.\n\nBoth install in under a minute on Windows, macOS, and Linux.\n\nOnce installed, point it at a site:\n\n```\nllmscout init ./my-site --site-url https://yourdomain.com\nllmscout check ./my-site\n```\n\n`init`\n\nwrites an `llmscout.json`\n\nconfig file into `./my-site`\n\n. `check`\n\nfetches the URL in that config and runs all 21 checks against it.\n\nHere's real output from running `check`\n\nagainst example.com:\n\n```\nLLMScout check -- https://example.com\n\n[PASS] (technical) Title tag\n  Title \"Example Domain\" is 14 characters, within the recommended 10-60 range.\n\n[WARN] (technical) Meta description\n  No meta description found.\n  Fix: Add <meta name=\"description\" content=\"...\"> with 50-160 characters summarizing the page.\n\n[WARN] (technical) Canonical tag\n  No <link rel=\"canonical\"> tag found.\n  Fix: Add a canonical link tag pointing at the preferred URL for this page.\n\n[FAIL] (technical) robots.txt\n  robots.txt was not reachable at https://example.com/robots.txt (HTTP 404).\n  Fix: Add a robots.txt file at your site root, even a permissive one, so crawlers\n  and agents have explicit directives.\n\n[WARN] (technical) sitemap.xml\n  No sitemap was reachable (tried: https://example.com/sitemap.xml).\n  Fix: Add a sitemap.xml at your site root, or point to one with a Sitemap: directive\n  in robots.txt, to help search engines discover pages.\n\n[PASS] (technical) Heading structure\n  Exactly one <h1> and no skipped heading levels detected.\n\n[WARN] (geo) Structured data (JSON-LD)\n  No JSON-LD structured data found.\n  Fix: Add schema.org JSON-LD markup (e.g. Organization, WebSite, or Article) so\n  generative engines can understand the page's entities.\n\n[WARN] (geo) AI crawler directives\n  robots.txt is unreachable, so AI-crawler directives could not be determined.\n  Fix: Add a reachable robots.txt if you want to state an explicit policy for AI\n  crawlers (GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, PerplexityBot,\n  Google-Extended, Applebot-Extended).\n\nSummary: 6 PASS, 14 WARN, 1 FAIL (21 checks)\n```\n\nThere are three things worth understanding about that output.\n\nFAIL exits with code 1. At least one check failed outright, and that's the signal a CI pipeline should gate on. WARN is a missed optimization; it won't fail the run on its own. PASS means the check came back clean.\n\nNotice the dependency between the last two checks: because robots.txt is unreachable, `ai-crawler-directives`\n\ncan't determine any policy, so it reports WARN instead of FAIL. An unreachable robots.txt and one that explicitly blocks every AI bot are different problems with different fixes, and the tool keeps that distinction explicit instead of collapsing both into one warning.\n\nEvery WARN and FAIL comes with a fix suggestion built in. You don't need to look up what a canonical tag is or how to add one; the fix line tells you.\n\nFor CI, add `--json`\n\nand the output becomes something a script can actually parse:\n\n```\nllmscout --json check ./my-site\n```\n\nExit codes: `0`\n\nfor a clean run, `1`\n\nif at least one check FAILed, `2`\n\nfor a usage or config error. That's enough to fail a build on a new FAIL without writing your own parser logic.\n\nThe JSON includes per-check `id`\n\n, `status`\n\n, `message`\n\n, and `fix`\n\nfields, plus a `summary`\n\nobject with the totals. Wire it into a pre-merge check and a PR that regresses on structured data or robots.txt breaks the build instead of shipping quietly. The full schema is in the README.\n\nIf you manage more than one site, `llmscout fleet`\n\ntakes a JSON manifest of site paths and runs the full 21-check suite against every one of them in a single command. `--out-dir`\n\nwrites one auto-named report file per site instead of dumping everything to stdout at once.\n\n```\nllmscout fleet ./fleet.json --out-dir ./reports\n```\n\nThe manifest:\n\n```\n{\n  \"sites\": [\n    { \"name\": \"client-a\", \"path\": \"./clients/client-a\" },\n    { \"name\": \"client-b\", \"path\": \"./clients/client-b\" }\n  ]\n}\n```\n\nThat produces `client-a.txt`\n\nand `client-b.txt`\n\n(or `.json`\n\nwith `--json`\n\n), one report per site, named straight from the manifest's `name`\n\nfield. That gives an agency a separate, named report file per client that you can open, send, or archive, instead of scrolling back through one combined terminal dump.\n\nThe checks cover the signals that matter most for AI-system citability: structured data, crawler access policies, content extractability, entity markup. Contested signals, like `llms.txt`\n\n, are flagged as informational since the evidence for their impact is still developing. Run it against your own site and see where you actually stand.\n\nGitHub: [https://github.com/RudrenduPaul/LLMScout](https://github.com/RudrenduPaul/LLMScout)\n\nnpm: [https://www.npmjs.com/package/llmscout-cli](https://www.npmjs.com/package/llmscout-cli)\n\nPyPI: [https://pypi.org/project/llmscout-cli/](https://pypi.org/project/llmscout-cli/)\n\n*Co-authored by Rudrendu Paul and Sourav Nandy. Rudrendu is an AI/ML builder and published researcher (ICML, Springer Nature, Elsevier, IEEE) with 15+ years of experience at Fortune 50 companies, building open-source tools for the AI development ecosystem. Find the code at github.com/RudrenduPaul.*", "url": "https://wpnews.pro/news/how-to-check-if-ai-systems-can-find-and-cite-your-site-in-5-minutes", "canonical_source": "https://dev.to/rudrendu_paul/how-to-check-if-ai-systems-can-find-and-cite-your-site-in-5-minutes-545g", "published_at": "2026-07-28 16:51:42+00:00", "updated_at": "2026-07-28 17:04:28.532521+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "artificial-intelligence", "natural-language-processing"], "entities": ["Rudrendu Paul", "Sourav Nandy", "LLMScout", "Ahrefs", "GPTBot", "OAI-SearchBot", "ClaudeBot", "PerplexityBot"], "alternates": {"html": "https://wpnews.pro/news/how-to-check-if-ai-systems-can-find-and-cite-your-site-in-5-minutes", "markdown": "https://wpnews.pro/news/how-to-check-if-ai-systems-can-find-and-cite-your-site-in-5-minutes.md", "text": "https://wpnews.pro/news/how-to-check-if-ai-systems-can-find-and-cite-your-site-in-5-minutes.txt", "jsonld": "https://wpnews.pro/news/how-to-check-if-ai-systems-can-find-and-cite-your-site-in-5-minutes.jsonld"}}