import type { Metadata } from 'next'; import Link from 'next/link'; import { Container, PageHeader, Section } from '@/components/ui/section'; import { BOT_UA, CONTACT_EMAIL, routes } from '@/lib/site'; export const metadata: Metadata = { title: 'AIAtlasBot — crawler policy', description: 'About AIAtlasBot, the crawler that reads public AI documentation for AI Atlas: purpose, robots.txt compliance, rate limits and how to contact us or opt out.', alternates: { canonical: '/bot' } }; export default function BotPage() { return ( {BOT_UA}} lede="The crawler behind AI Atlas. It reads public documentation, pricing pages, model cards, papers, feeds and repositories to keep the atlas current and sourced." />

User-Agent: {BOT_UA}/0.1 (+https://www.ai-atlas.co/bot; {CONTACT_EMAIL})

AIAtlasBot fetches publicly accessible pages that describe AI models, organizations, providers, prices, benchmarks, hardware, frameworks and datasets. Pages are archived and turned into attributed facts; each fact on AI Atlas links back to the page it came from, giving publishers credit and traffic. It does not collect personal data, does not log in, and does not fetch content behind paywalls or access controls.

  • Honours robots.txt (including Crawl-delay) for {BOT_UA} and *.
  • Per-domain rate limits (typically a few requests per minute; arXiv ≤ 4/min, Hugging Face ≤ 30/min, GitHub ≤ 20/min).
  • Conditional requests (ETag / If-Modified-Since) and content hashing so unchanged pages cost nothing.
  • Adaptive intervals: pages that rarely change are visited less often; failures back off with a circuit breaker.
  • Never bypasses CAPTCHAs or bot walls. If a site blocks us, the document is marked blocked and left alone.

To exclude your site, add to your robots.txt:

{`User-agent: ${BOT_UA}\nDisallow: /`}

Changes are picked up on the next visit. For questions, corrections or removal requests write to {CONTACT_EMAIL}. The full list of sources is public on /sources.

); }