citable

Can ChatGPT, Claude and Perplexity actually read and cite your site? One command tells you, with the fixes.

curl -sL https://raw.githubusercontent.com/genzagents/citable/main/citable/__init__.py | python3 - yoursite.com

Zero dependencies, one Python file, nothing to sign up for. Or pipx install git+https://github.com/genzagents/citable. Source and README.

Why this one

Most "AI visibility" checkers read robots.txt and stop. But the block that actually keeps you out of answers is usually at the edge: a Cloudflare "Block AI bots" toggle, a WAF rule, a rate limiter. citable fetches your homepage as each AI bot and compares it with what a browser gets. Then it checks the rest: llms.txt, JSON-LD, title and description, whether your text exists without JavaScript, sitemap, canonical. It also tells answer bots (the ones that cite you) apart from training crawlers (which you may block freely).

A real run

citable 0.1.0: https://reddit.com/
  score 13/100  grade F

  [FAIL]  0/15 robots.txt allows answer engines: robots.txt blocks: OAI-SearchBot, ChatGPT-User, Claude-SearchBot, ...
  [FAIL]  0/20 Answer engines not blocked at the edge: ChatGPT-User got HTTP 403; a browser got 200.
         fix: Your CDN or WAF (Cloudflare 'Block AI bots', bot-fight mode, a rate limiter) is refusing them ...
  [FAIL]  0/15 /llms.txt: /llms.txt returns HTTP 404.
         fix: Publish a plain-text /llms.txt ... `citable reddit.com --llms-txt` prints a draft from your homepage.

citable 0.1.0: https://anthropic.com/
  score 77/100  grade B

  [PASS] 15/15 robots.txt allows answer engines
  [PASS] 20/20 Answer engines not blocked at the edge
  [FAIL]  0/15 /llms.txt: /llms.txt returns HTTP 404.
  [FAIL]  0/10 Structured data (JSON-LD): No JSON-LD found.
  [PASS] 15/15 Content readable without JavaScript: 349 words of visible text in the raw HTML

What it checks

CheckPointsWhy
robots.txt allows the answer bots (OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, DuckAssistBot, Bingbot, Googlebot)15Blocked means never cited.
Not blocked at the edge (fetched as each bot)20CDN and WAF toggles block bots that robots.txt allows.
Training crawlers (GPTBot, ClaudeBot, Google-Extended, CCBot...)infoYour choice. Reported, never penalised.
/llms.txt present, plain text, H1 + summary + links15What engines and agents read first.
Content readable without JavaScript15Most AI crawlers do not run JS.
JSON-LD structured data10Entities and FAQs get quoted directly.
Title, description, HTTPS, speed, canonical, Open Graph, sitemap, lang, no noindex30Decides which URL gets the citation.

For your agent: MCP server and Claude Code plugin

Tools check_site and draft_llms_txt, over stdio, no dependencies. The plugin adds a skill that turns the report into edits.

claude plugin marketplace add genzagents/marketplace
claude plugin install citable@genzagents

Weekly watch

£9/month: we run it weekly on up to 5 domains and email you the moment an answer bot gets blocked, llms.txt disappears, or your score drops. A deploy that flips a WAF setting silently removes you from every AI answer; this is the alarm.

Not live yet. Press the button to say you want it; the number of presses decides whether it gets built.

I want the weekly watch