---
title: "Agent Readability Checker：llms.txt、robots.txt、JSON-LD"
canonical: https://wavect.io/zh/tools/agent-readability-checker/
language: zh
description: "免费的 AI 可见性检查，全程在浏览器本地运行。粘贴 robots.txt、llms.txt、Markdown 镜像或页面 HTML，获得 42 项确定性检查，看答案引擎能否读到并引用你。"
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

在浏览器本地检查 AI 可见性

# 不用花钱做审计，也能知道答案引擎读不读得懂你。

粘贴一个文件。检查器运行的正是让本站生产构建硬失败的那套镜像规则，然后给出评分、每条发现背后的证据行，以及修复方式。不抓取任何东西，也不上传任何东西。

[开始检查](#tool-app) [运作方式](https://github.com/wavect/agent-readability-checker)

- 规则 42 项确定性检查
- 处理方式 本地离线
- 输入 robots.txt、llms.txt、Markdown、HTML
- 结论 只给证据，不承诺排名

**可读性**

ROBOTS.TXT · 已粘贴 **48/100 · 参差不齐**

本地分析 · 未发起抓取

直接的答案

要判断 AI 答案引擎能否引用你的网站，请核实四件事：robots.txt 没有屏蔽 OAI-SearchBot、PerplexityBot、Claude-User 这类检索抓取器；存在一份干净的 Markdown 或 llms.txt 副本，并在页面头部声明；你的 JSON-LD 有效，并且写明了页面背后的组织；你实际输出的 HTML 里已经包含正文，而不是靠 JavaScript 再加载。本工具用你粘贴的文件检查这四点。它无法证明某个助手真的会引用你。

检查你真正对外输出的那个文件

## 智能体可读性工作台

请粘贴完整文件，不要只贴片段。用 curl 取一次 URL 并粘贴响应体，这样你检查的是抓取器实际收到的内容，而不是 CMS 给你看的内容。

任何内容都不会离开此标签页

**智能体可读性工作台** 静态 · 确定性 · 浏览器本地

载入示例 本地检查

01

### 文件内容

等待输入

文件类型 自动识别robots.txtllms.txtMarkdown 镜像页面 HTML 文件内容

快捷键：Ctrl 或 Command + Enter。最大输入：400,000 字符。

02

### 发现

尚未检查

粘贴一个完整文件，即可看到评分、未通过的规则，以及每条对应的证据行。

可读性评分

03

### 证据与导出

评分衡量的是智能体能否读懂这个文件。它不预测某个助手会引用你。

分析只留在这个浏览器标签页里 从不请求任何 URL 不上传，不留存 Core v0.1.4

三个动作

## 检查抓取器收到的东西，而不是 CMS 预览出来的东西。

这两者是不同文件的情况，比大多数人以为的更常见，而 AI 可见性就悄悄死在这个差别里。

1. 01 - **取到真实文件** - 用 curl 请求你的 robots.txt、llms.txt、Markdown 镜像或页面 URL，复制响应体。CMS 里的预览是你的 CMS 渲染出来的，并不会这样输出给爬虫。
2. 02 - **粘贴并在本地检查** - 检查器会判断你粘贴的是四种文件类型中的哪一种，只运行适用的规则，并打印触发每条发现的那一行。
3. 03 - **先修严重项** - 导出 JSON 或 Markdown 报告，从最上面开始。严重项就是那些直接把你从答案里剔除的问题，而且通常不会超过两条。

读证据，别读一个神奇分数

## 三个值得看懂的结果

真正有意思的，是那些看起来很谨慎、其实并不谨慎的文件。

看着像有意为之，实际全屏蔽 `User-agent: GPTBot Disallow: / User-agent: * Disallow: /` **AR103 严重**

屏蔽 GPTBot 属于退出训练。下面那条通配符规则把所有答案引擎抓取器一起带走了，因为没有自己分组的爬虫会继承通配符规则。

有意屏蔽训练抓取 `User-agent: CCBot Disallow: / Sitemap: https://example.com/sitemap.xml` **AR104 低，评分 98**

同样的写法，但没有通配符。退出训练是授权层面的决定，所以只做提示，不拉低等级。

llms.txt 里用了相对链接 `- [Fractional CTO](/services/fractional-cto-austria/): 领导力` **AR204 高**

llms.txt 会被抓走并四处传递，脱离它原本所在的页面，于是没有基准 URL 可以解析。要么用绝对链接，要么别放。

我们凭什么这么说

## 这些规则每次构建都会跑在我们自己的网站上。

Markdown 镜像规则是从那个让本站生产构建硬失败的校验器移植过来的。我们不是在描述从别处读来的最佳实践，而是把我们自己必须通过的那道关卡交给你。

### 移植的，不是编的

镜像规则来自本站仓库里的 scripts/verify_machine_markdown.mjs。哪条规则写错了，坏的先是我们自己的部署，而不是你的审计。

### 检索和训练是两个问题

屏蔽 GPTBot 是退出模型训练。屏蔽 OAI-SearchBot 是把自己从答案里删掉。多数 robots.txt 把这两件事当成一个决定，所以本工具分开评分。

### 证据优先于评分

每条发现都会打印触发它的那一行和修复方式。一个你无法核查的数字是销售工具，不是诊断工具。

### 刻意不发起抓取

检查器从不请求 URL。你的 staging 主机和内部路径不会进入任何日志，包括我们的日志。

诚实的局限

## 静态检查告诉不了你什么

- 它只读一个粘贴进来的文件。它不爬你的网站，不跟随链接，也不在页面之间做比较。
- 结果干净只说明没有东西阻止智能体读取这份输入。它不预测任何助手会引用你。
- robots.txt 只是一个请求。守规矩的抓取器会遵守，其他的不会，所以一个宽松的文件同样不构成保证。
- 标记为启发式的发现是从文件形态推断出来的，并未被证明。这些请人工确认。
- 爬虫名称会变。智能体名单在所示 core 版本下是准确的，随时间需要更新。

## 关于可读性检查器的问题

### 这和 SEO 审计是一回事吗？

不是。SEO 审计问的是你排不排得上。这里问的是一个更窄、更机械的问题：智能体能不能取到这个文件、解析它，并把它归到你名下。这些检查是确定性的，所以工具能回答，也因此才可能给出一个你能自己核查的分数。

### 为什么不直接抓取我的 URL？

因为浏览器没有代理就无法抓取别的站点，而搭一个代理就意味着你的 URL、staging 主机和内部路径要经过我们的基础设施。我们发布的每个工具都把输入留在你的标签页里，所以粘贴是这个工具的诚实版本，而不是缩水版本。

### 我该屏蔽 GPTBot 吗？

那是授权层面的决定，不是可见性问题，本工具也是这么处理的。屏蔽 GPTBot 或 CCBot 让你退出训练数据。它不会把你从 ChatGPT 或 Perplexity 的答案里删掉，因为那些答案由另外的检索抓取器提供。真正把你从答案里删掉的，是屏蔽那些检索抓取器。

### 我需要 llms.txt 吗？

它不是标准，没有引擎有义务读它。它发布成本很低，而且能给智能体一张干净的地图，而不是你渲染出来的导航，所以我们自己维护了一份。如果你要发布，这里的规则值得通过，先从绝对 URL 开始。

### 这个评分到底意味着什么？

它从 100 分起算，按严重程度加权逐条扣分，因此一条严重项不会被一堆通过项抵消。它衡量的是你粘贴的那个文件的机器可读性。它不是预测，不是排名，也不是认证。

### 你们能帮我们把这些问题修掉吗？

可以，这就是工具背后的服务。检查器本身是刻意做成完整可用的，你可以自己跑、自己看证据，然后把报告交给任何人，包括你现在的团队。

支持与安全

## 报告一条判错的规则

如果一条规则在输出本来正确的情况下触发，那就是 bug，我们希望知道。请带上触发它的输入开一个 issue。如果你发现的问题涉及安全影响，请改为私下报告。

[提交 issue](https://github.com/wavect/agent-readability-checker/issues) [私下报告](https://github.com/wavect/agent-readability-checker/security)

免费 · 开源 · 任何内容都不会离开你的标签页

## 先拿你的 robots.txt 跑一遍。

这一个文件决定了其余的事情有没有意义。如果那里屏蔽了检索抓取器，再多的结构化数据也换不来一次引用。

[回到检查器](#tool-app) [查看源码](https://github.com/wavect/agent-readability-checker)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/zh/tools/agent-readability-checker/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-08-18",
      "inLanguage": "zh",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-08-18",
      "url": "https://wavect.io/zh/tools/agent-readability-checker/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "applicationCategory": "DeveloperApplication",
  "browserRequirements": "支持 JavaScript 的浏览器",
  "codeRepository": "https://github.com/wavect/agent-readability-checker",
  "description": "免费的 AI 可见性检查，全程在浏览器本地运行。粘贴 robots.txt、llms.txt、Markdown 镜像或页面 HTML，获得 42 项确定性检查，看答案引擎能否读到并引用你。",
  "isAccessibleForFree": true,
  "name": "Agent Readability Checker",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "EUR"
  },
  "operatingSystem": "任意现代浏览器",
  "softwareVersion": "0.1.4",
  "url": "https://wavect.io/zh/tools/agent-readability-checker/"
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/",
      "name": "首页",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/tools/",
      "name": "有些工作，本来就不该一直这么麻烦。",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/tools/agent-readability-checker/",
      "name": "Agent Readability Checker",
      "position": 3
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不是。SEO 审计问的是你排不排得上。这里问的是一个更窄、更机械的问题：智能体能不能取到这个文件、解析它，并把它归到你名下。这些检查是确定性的，所以工具能回答，也因此才可能给出一个你能自己核查的分数。"
      },
      "name": "这和 SEO 审计是一回事吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "因为浏览器没有代理就无法抓取别的站点，而搭一个代理就意味着你的 URL、staging 主机和内部路径要经过我们的基础设施。我们发布的每个工具都把输入留在你的标签页里，所以粘贴是这个工具的诚实版本，而不是缩水版本。"
      },
      "name": "为什么不直接抓取我的 URL？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "那是授权层面的决定，不是可见性问题，本工具也是这么处理的。屏蔽 GPTBot 或 CCBot 让你退出训练数据。它不会把你从 ChatGPT 或 Perplexity 的答案里删掉，因为那些答案由另外的检索抓取器提供。真正把你从答案里删掉的，是屏蔽那些检索抓取器。"
      },
      "name": "我该屏蔽 GPTBot 吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "它不是标准，没有引擎有义务读它。它发布成本很低，而且能给智能体一张干净的地图，而不是你渲染出来的导航，所以我们自己维护了一份。如果你要发布，这里的规则值得通过，先从绝对 URL 开始。"
      },
      "name": "我需要 llms.txt 吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "它从 100 分起算，按严重程度加权逐条扣分，因此一条严重项不会被一堆通过项抵消。它衡量的是你粘贴的那个文件的机器可读性。它不是预测，不是排名，也不是认证。"
      },
      "name": "这个评分到底意味着什么？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "可以，这就是工具背后的服务。检查器本身是刻意做成完整可用的，你可以自己跑、自己看证据，然后把报告交给任何人，包括你现在的团队。"
      },
      "name": "你们能帮我们把这些问题修掉吗？"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
