How to Get Indexed and Crawled by AI Bots: A Practical Guide for Developers A developer guide outlines how sites can be crawled and cited by AI systems, recommending that operators allow search-focused AI crawlers such as OAI-SearchBot, Claude-SearchBot and PerplexityBot in robots.txt while optionally blocking training crawlers like GPTBot and CCBot. The guide advises server-rendering content in initial HTML, submitting sitemaps to Google and Bing, adding answer-first sections with schema markup, and verifying bot visits in server logs, noting that llms.txt is optional since most AI crawlers do not request it. AI assistants and AI search products now answer a growing share of technical questions, and what they cite depends on what their crawlers can find, read, and understand. This guide walks through the practical steps that make a site easy for those systems to access and use. TL;DR: To be crawled and cited by AI systems, your pages need to be reachable by their bots, readable in the initial HTML, indexed by the search engines AI products rely on, and structured so a model can extract a clear answer. Allow search-focused AI crawlers in robots.txt, server-render your content, submit sitemaps to Google and Bing, write answer-first sections with schema markup, and confirm in your server logs that the bots are actually visiting. An llms.txt file is optional; current data suggests most AI crawlers do not request it. Why AI crawlability matters Search used to mean ten blue links. Today, a developer can ask ChatGPT, Claude, or Perplexity how to solve a problem and receive one synthesized answer with a handful of cited sources. If your documentation, blog, or product pages are not part of what those systems can retrieve, you are absent from that answer. The good news is that most of the work overlaps with sound web fundamentals: accessible pages, clean HTML, clear structure, and trustworthy content. What is new is knowing which bots exist, what each one does, and how to confirm they are visiting. Step 0: Know the three types of AI bots Not every AI crawler serves the same purpose. Most major providers separate their bots into three groups. Type What it does Examples Training crawlers Collect content for model training GPTBot, ClaudeBot, CCBot Search and index crawlers Build the index behind AI search results and citations OAI-SearchBot, Claude-SearchBot, PerplexityBot User-triggered fetchers Retrieve a specific page when a user asks for it ChatGPT-User, Claude-User, Perplexity-User This distinction matters for one reason: blocking a training crawler does not remove you from AI answers, but blocking a search crawler can. Many site owners add a blanket rule against anything labeled “AI” and then wonder why they never appear in AI search results. User-agent names change over time, so confirm them against the official documentation from OpenAI, Anthropic, and Perplexity before you deploy any rules. Step 1: Let the right bots in with robots.txt Your robots.txt file at the root of each hostname is the first thing a well-behaved crawler checks. Two setups cover most sites. Option A: Maximum visibility. Allow search and retrieval bots, and leave training crawlers open as well. User-agent: OAI-SearchBot Allow: / User-agent: ChatGPT-User Allow: / User-agent: Claude-SearchBot Allow: / User-agent: Claude-User Allow: / User-agent: PerplexityBot Allow: / User-agent: Allow: / Sitemap: https://example.com/sitemap.xml https://example.com/sitemap.xml Option B: Appear in AI answers, opt out of training. User-agent: GPTBot Disallow: / User-agent: ClaudeBot Disallow: / User-agent: CCBot Disallow: / User-agent: OAI-SearchBot Allow: / Sitemap: https://example.com/sitemap.xml https://example.com/sitemap.xml A few things to check: • robots.txt applies per hostname. A subdomain such as docs.example.com needs its own file. • A permissive robots.txt does not help if your CDN, WAF, or bot-protection layer returns 403 errors or challenge pages to unfamiliar user agents. Review the bot-management settings in tools like Cloudflare, Fastly, or Akamai. • robots.txt is a request, not a security control. Compliant crawlers honor it; scrapers that ignore it need rate limits or WAF rules. Keep private content behind authentication. • User-triggered fetchers may be handled differently from crawlers, so read each vendor’s documentation for how they treat your rules. Step 2: Put your content in the initial HTML Many AI crawlers fetch a page and read the HTML response without running JavaScript. If your article text, documentation, or product details only appear after client-side rendering, those systems may see an empty shell. A quick test: curl -s https://example.com/your-page https://example.com/your-page | grep -i "a distinctive sentence from the page" If the sentence is missing from the raw response, a crawler that does not render JavaScript will miss it too. The fix is to render on the server or at build time. Next.js, Nuxt, Astro, SvelteKit, and Remix all support server-side rendering or static generation. Also confirm that: • Important content is not hidden behind tabs, accordions, or “load more” buttons that need a click to inject text. • Pages return accurate status codes: 200 for content, 301 for moved pages, 404 for missing pages, with no soft 404s. • Server response times are reasonable. Slow or error-prone pages tend to be crawled less. Step 3: Get indexed by the search engines AI products rely on AI search products do not work in isolation. Many retrieve results from conventional search indexes, and Google’s guidance indicates its AI features in Search build on the same indexing and quality foundations as regular Search. Bing’s index is also widely reported to support parts of ChatGPT search and Microsoft Copilot. In practice, strong classic indexing is a prerequisite for AI visibility. A practical checklist: • Publish an XML sitemap with accurate values and reference it in robots.txt. • Add a self-referencing rel="canonical" tag to each page. • Link important pages from your navigation and from related content so crawlers can discover them. • Verify your site in Google Search Console and Bing Webmaster Tools, then submit your sitemap to both. • Use IndexNow to notify participating search engines when content is published or changed. An IndexNow ping is a single request. Host your key file at https://example.com/YOUR KEY.txt https://example.com/YOUR KEY.txt , then call: curl " https://api.indexnow.org/indexnow?url=https://example.com/new-post&key=YOUR KEY https://api.indexnow.org/indexnow?url=https://example.com/new-post&key=YOUR KEY " Step 4: Write for retrieval, not just for ranking Language models extract answers from passages, so pages that are easy to quote are easier to cite. These habits help: • Lead with the answer. Open each section with a direct one- or two-sentence response, then add context. • Use descriptive headings. “How to configure rate limiting in Express” is more useful than “Getting started.” Phrase headings the way a person would ask the question. • Keep sections self-contained. A passage should make sense when read without the rest of the page. Name the tool or concept instead of writing “it” or “this.” • Prefer structure to long prose. Use lists for steps, tables for comparisons, and code blocks for commands. • Show provenance. Include an author, a publication date, an updated date, and links to primary sources. • Stay consistent with names. Use one name per product, feature, or concept across your site. Here is a small example. Instead of: Our platform offers a variety of options for teams who want to manage their deployments more effectively. Write: Acme Deploy is a CI/CD tool that automates container deployments to Kubernetes. It supports blue-green and canary releases and integrates with GitHub Actions. The second version states what the product is, what it does, and how it fits into a workflow. That is exactly the kind of sentence a model can lift into an answer. Step 5: Add structured data Schema markup gives machines an explicit description of what a page is. Use JSON-LD, keep it accurate, and make sure it matches the visible content. { " @context https://dev.to/context ": " https://schema.org https://schema.org ", "@type": "Article", "headline": "How to Get Indexed and Crawled by AI Bots", "author": { "@type": "Person", "name": "Your Name" }, "datePublished": "2026-10-27", "dateModified": "2026-10-27", "publisher": { "@type": "Organization", "name": "Example Co" } } CHECK OUT THE SCHEMA ON MY WEBPAGE " MERINO WOOL SCRUBS https://elyrs.com/product/wool-scrubs/ " Useful types include Article, FAQPage, Organization, SoftwareApplication, Product, and BreadcrumbList. Structured data is not a magic switch, but it removes ambiguity for any system that reads it. Step 6: Treat llms.txt as optional llms.txt is a proposal introduced by Jeremy Howard in 2024: a Markdown file at your domain root that lists your most important pages with short descriptions. It is easy to publish, and many CMS plugins now generate it automatically. The evidence that it affects AI search visibility is weak. Limy analyzed more than 500 million AI bot visits over 90 days and found only 408 requests for the file. Ahrefs examined server logs from 137,210 domains and reported that 97% of llms.txt files received no requests in May 2026. Google’s guidance on AI features in Search also lists the file among the things you do not need. That does not make it useless. Documentation sites, SDKs, and developer tools may still benefit, because coding assistants and agent workflows can use it as a quick map of canonical pages. If you publish one, keep it short and current: Example is an open-source TypeScript library for validating API schemas.