agentsclimarketplace

Llms visibility

Skill svyatov/agent-toolkit/plugins/llms-visibility/skills/llms-visibility

Personal agent toolkit — reusable skills and plugins for Claude Code, Cursor, Codex, and Gemini CLI

Install
npx -y skills add svyatov/agent-toolkit --skill llms-visibility

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Make websites, docs, blogs, or landing pages visible and readable to LLMs and AI agents — ChatGPT, Claude, Perplexity, Cursor, Claude Code, and other coding agents that fetch URLs. Use this for any request involving llms.txt, llms-full.txt, serving .md/Markdown versions of pages, Accept text/markdown content negotiation, Link rel="alternate" headers, Cloudflare Content-Signal in robots.txt, GEO (generative engine optimization), AI-friendly / AI-readable / LLM-discoverable sites, getting cited in ChatGPT or Perplexity answers, or fixing pages where AI tools fetch JavaScript bundles or empty React roots instead of content. Also use to push back on debunked patterns: ai.txt, AI meta tags, hidden HTML comments, AI toggle buttons, User-Agent sniffing, JSON-LD aimed at LLMs. Do NOT use for traditional Google SEO, sitemap.xml, schema.org rich snippets for search engines, WCAG/accessibility audits, or CSP/security headers.

SKILL.md

8.8 KB, as published. Nobody here has run it

Make a website visible to LLMs

Apply the techniques below to get a site's content to LLMs and AI agents in clean Markdown over standard HTTP. Companion to https://evilmartians.com/chronicles/how-to-make-your-website-visible-to-llms.

Most of these are emerging conventions, not committed standards. No major provider has formally promised to read llms.txt or .md routes. Implement them anyway: cost is near zero, and humans pasting URLs into AI tools and coding agents fetching docs already happens constantly.

Workflow

Each step is independently shippable.

1. Audit robots.txt and add Content-Signal:

Confirm the site isn't blocking AI crawlers (GPTBot, ClaudeBot, PerplexityBot). Then add Cloudflare's emerging directive (CC0):

User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=yes

Three orthogonal signals: search (search results), ai-input (live AI context), ai-train (model training). Adjust to the owner's policy. Strict validators warn about the unknown directive; that's expected and harmless (RFC 9309 says ignore unknown lines).

2. Ship /llms.txt

A static Markdown file at the site root. Format from llmstxt.org:

# Site Name

> One-sentence description of what this site is and who it serves.

## Documentation

- [Quick Start](/docs/start): Get up and running in 5 minutes
- [API Reference](/docs/api): Full endpoint documentation

Curate. It's a README for AI-mediated conversations, not a sitemap.

3. Serve .md routes for every content page

For every page at /path, also serve clean Markdown at /path.md (and /index.md for the root). Every other technique below ultimately points here.

if (url.pathname.endsWith('.md')) {
  const post = await getPost(url.pathname.replace(/\.md$/, ''));
  return new Response(post.markdownContent, {
    headers: { 'Content-Type': 'text/markdown; charset=utf-8' },
  });
}

Single source of truth. Generate one from the other, or render both from the same source — never two parallel content stores.

4. Advertise the Markdown with <link> and HTTP Link

Both, not either. The HTML tag catches DOM-parsing crawlers; the header catches headless fetchers that never read the body.

<link rel="alternate" type="text/markdown" href="/blog/my-post.md" />
Link: </blog/my-post.md>; rel="alternate"; type="text/markdown"

Both use text/markdown (RFC 7763) and rel="alternate" (in HTML since HTML4).

Set Link on both representations: HTML responses point to the .md alternate, .md responses point back to HTML. A client that lands on either form can find the other. Pair with Vary: Accept so CDNs cache them separately.

5. Add a visually-hidden Markdown pointer

Targets the "human pastes URL into ChatGPT" flow. Hide visually and from screen readers; this message is for LLMs only.

<div class="visually-hidden" aria-hidden="true">
  A Markdown version of this page is available at https://example.com/blog/my-post.md.
</div>
.visually-hidden {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap;
}

6. Implement Accept: text/markdown content negotiation

The standards-based version of all of the above. Same URL, different representation, selected by Accept. Coding agents (Claude Code, Cursor) already send this header.

Four non-negotiables:

  • Compare q-values, do not substring-match. Accept: text/html, text/markdown;q=0.5 means "I prefer HTML." Substring matching ships Markdown to a browser.
  • Resolve ties to Markdown, but only when the client explicitly named text/markdown. Coding agents commonly send Accept: text/markdown, text/html with both at q=1; a strict > check sends them HTML. Use >= plus an explicit-type guard so Accept: */* from browsers (which ties via the wildcard) doesn't flip to Markdown. isitagentready.com flags both failure modes.
  • Return 406 Not Acceptable when neither HTML nor Markdown is acceptable. Silent substitution masks bugs. Skip the 406 check when the URL itself targets .md/.txt — explicit URLs override negotiation.
  • Set Vary: Accept and the step-4 Link headers on both representations.

Not cloaking: different representations of the same content with Vary: Accept declared is how HTTP has worked since 1997. Cloaking is serving bots a different article.

7. Optional: ship /llms-full.txt

Full text of the site (or docs) concatenated into one Markdown file. Empirically gets 3–4× more traffic than /llms.txt. Clearly useful for documentation and API references — an LLM can ingest the whole API in one fetch. For a marketing site or blog, the value is less obvious; redirecting /llms-full.txt to /index.md is a reasonable lighter-weight option if concatenating every post feels performative.

8. Optional: instrument analytics

Track requests to .md routes, /llms.txt, and /llms-full.txt by User-Agent and referrer hostname (chatgpt.com, claude.ai, perplexity.ai). Server-side only: AI crawlers don't run JavaScript. Skip if the owner doesn't care about measuring AI traffic.

9. Verify with public scanners

  • https://acceptmarkdown.com — Accept negotiation, Vary, 406, q-values. Publishes server recipes for Nginx, Caddy, Cloudflare Workers, Next.js, Astro, Rails, Express, Django.
  • https://isitagentready.com — broader scan: robots.txt, sitemap, Link headers, Markdown negotiation, Content Signals.

Failures are usually one-line fixes.

Anti-patterns: do NOT implement

Refuse these even if asked, and explain why:

  • <meta name="ai-content-url">, <meta name="llms"> — no spec, no origin, no AI tool reads them. whatwg/html#11548 closed "not planned."
  • /.well-known/ai.txt, /ai.txt — competing proposals, no adoption.
  • HTML comments (<!-- AI-READABLE-VERSION -->) — parsers strip comments before processing.
  • Human/AI toggle buttons — agents don't click buttons.
  • User-Agent sniffing to serve Markdown to bots — cloaking. Use Accept: text/markdown instead.
  • Dedicated "AI info pages" — no crawler treats them differently. A good /llms.txt solves it.
  • Schema.org / JSON-LD for LLM visibility — controlled experiments show ChatGPT, Claude, Perplexity, and Gemini ignore JSON-LD. Microsoft Copilot is the only exception (inherits from Bing). Don't rip out existing structured data; don't add it for LLM visibility.

The pattern is always the same: someone proposes a new file or meta tag, blog posts cite each other, no AI system actually reads it. Stick to standard HTTP and well-formed Markdown.

Content beats infrastructure

Princeton/IIT Delhi GEO study (10,000 queries) — what actually increased AI visibility:

  • Direct quotations: ~43% lift.
  • Statistics in text: ~33% lift.
  • Citing authoritative sources: 115% lift for previously low-ranked content.

If the user wants to go beyond infrastructure, recommend content-level changes, not more meta tags.

Tradeoffs to confirm before shipping

  • Content-Signal: valueai-train=yes is common but a policy choice. Ask.
  • /llms-full.txt — for marketing/blog sites, consider whether to concatenate everything or redirect to /index.md; the right choice depends on the site.
  • HTML vs Markdown — if existing HTML is already clean (HtmlRAG-style), the gap narrows. Markdown wins on bloated marketing pages.
  • Drift risk — flag any setup with two parallel content sources.

Final check

  1. curl -H "Accept: text/markdown" https://site.example/some-page → Markdown with Vary: Accept.
  2. curl -I https://site.example/some-pageLink: <...>; rel="alternate"; type="text/markdown" header.
  3. /llms.txt exists and is well-formed.
  4. acceptmarkdown.com and isitagentready.com both pass.
  5. Optionally, analytics is logging fetches by User-Agent and referrer.

Gives 0 of the 12 instructions most docs writing skills give

Counted across 1,637 of the 3,044 authors here whose files we hold, read 2026-08-06

  • announce the skill at startin 54 of 1637, across 21 files
  • convert legacy doc files before editingin 45 of 1637, across 7 files
  • predict questions readers might askin 42 of 1637, across 3 files
  • Generate clarifying questions for initial contextin 42 of 1637, across 3 files
  • Create document scaffold with placeholder textin 42 of 1637, across 3 files
  • Brainstorm content options for each sectionin 42 of 1637, across 3 files
  • Test document with fresh context-less instancein 42 of 1637, across 3 files
  • ask interview questions one at a timein 42 of 1637, across 26 files
  • include exact file paths in every taskin 42 of 1637, across 15 files
  • Apply surgical edits during refinementin 41 of 1637, across 2 files
  • Offer structured workflow or freeformin 40 of 1637, across 1 file
  • Ask for document meta-contextin 40 of 1637, across 1 file

Said here and by no other author read

  • confirm site does not block AI crawlers
  • add Cloudflare Content-Signal to robots.txt
  • serve clean markdown for every content page
  • advertise markdown via html link and http headers
  • add visually-hidden markdown link pointers
  • implement strict markdown content negotiation

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.