- 判据
- 本次全部 host 的对照探测都可用(0 个被挡)
- 为什么危险
- 被拦截 ≠ 不存在。纯 HTTP 客户端在这类 host 上会把真文件读成「没有」。
- 实测先例
- gusto.com 403、www.pipedrive.com 429
geo-audit deepgram.com --contact you@yourco.com --format json
四格之和恒等于位置数。「无法判断」永不折算进「通过」——「我们看不了」和「你这里没问题」是两件事。
这次没有可上报的发现。零发现不等于干净,所以这份东西叫「AI 可读性证据存档」:下面四块是这个 0 的全部依据,你可以逐行复现。
本次没有需要归并的根因。
口径:0 条 finding / 0 处根因 / 0 个链接实例 —— 三个数各有各的意思,不许混着说。
把「我们没看到」误读成「没问题」的代价,比漏一条 LOW 死链大得多,所以这一区排在发现之前。这些位置既不计死链也不计存活。
这条链路上任何一段断掉,后面几段的内容 AI 都拿不到。
只探根路径、不做对照探测的实现,在这个站上没读错。差异化演示区因此是空的 —— 这是这个域的性质,不是我们少做了对照。
这一块的作用不是炫技,是让「我拿别的东西查过,没这条」这句话失效:我们先说出那类实现在这里会得出什么、以及它少做了哪一步。
自己复现 → geo-audit deepgram.com --contact you@you.co --naive-only
这份报告不检查:锚点是否腐烂、sitemap、robots 对 AI 爬虫的放行、图片/CSS 资源、事实是否冲突、内容是否过期。理由见文末。
本次没有可上报的发现。这不代表你的站没有可改的地方 ——见下面的「证据存档」与「下次会先坏在哪」。
下面这些我们判它死了,但静态 HTML 判不了它是否对访客可见。我们打 needs_review 而不是丢弃,也不进首页分子。
本次没有需要人工确认的条目。
每条都挂一个实测先例,并给一条能直接放进 CI 的命令。这一区不是预测,是「这个形状在语料里已经坏过」。
geo-audit deepgram.com --contact you@yourco.com --format json
geo-audit deepgram.com --contact you@yourco.com --format json
逐位置一行,行数恒等于位置数。每行都带一条可粘贴的 curl。
共 21 行 == 21 个位置。
| 段 | URL | 状态码 | content-type | 字节 | 对照路径 | 对照返回 | 结论 |
|---|---|---|---|---|---|---|---|
| ① 入口发现 | https://deepgram.com/ | — | — | — | — | — | 通过 对照探测 https://deepgram.com/geo-audit-probe-5b6738ae865ffe14b2e519c1 返回 HTTP 404 / text/html,与本响应可区分,判为真实内容 |
| ① 入口发现 | https://www.deepgram.com/ | — | — | — | — | — | 通过 对照探测 https://www.deepgram.com/geo-audit-probe-974f2f7956efc1f7ba48e48e 返回 HTTP 404 / text/html,与本响应可区分,判为真实内容 |
| ① 入口发现 | https://docs.deepgram.com/ | — | — | — | — | — | 读错 请求 /,最终落在通用落地页 /home(链路:302 https://developers.deepgram.com/ -> 307 https://developers.deepgram.com/home);跳转到通用落地页等同于「这个路径不存在」 |
| ① 入口发现 | https://developers.deepgram.com/ | — | — | — | — | — | 读错 请求 /,最终落在通用落地页 /home(链路:307 https://developers.deepgram.com/home);跳转到通用落地页等同于「这个路径不存在」 |
| ① 入口发现 | https://dev.deepgram.com/ | — | — | — | — | — | 无法判断 robots.txt 禁止抓取 /,本位置未评估 |
| ① 入口发现 | https://api.deepgram.com/ | — | — | — | — | — | 不适用 HTTP 404(状态码正确,正文形态不参与判定) |
| ① 入口发现 | https://support.deepgram.com/ | — | — | — | — | — | 无法判断 HTTP 200 但正文需要 JS 渲染才可读:可见文本 26 字符 / 原始 5931 字符;信号:empty_shell(visible=26,raw=5931), empty_spa_mount, next_data_without_content_elements, thin_text(26), no_content_elements;本位置计入「未能评估」,不计入「未发现问题」 |
| ① 入口发现 | https://help.deepgram.com/ | — | — | — | — | — | 无法判断 对照探测 https://help.deepgram.com/geo-audit-probe-2ccf5a5c25fa504d5f159a53 返回 HTTP 404 / text/html,与本响应可区分,判为真实内容;但正文需要 JS 渲染才可读:empty_shell(visible=20,raw=2882), empty_spa_mount, noscript_demands_js, no_content_elements |
| ② 索引文件真伪 | https://deepgram.com/llms.txt | 200 | text/plain | 9,242 | https://deepgram.com/geo-audit-probe-5b6738ae865ffe14b2e519c1 | 404 |
通过
对照探测 https://deepgram.com/geo-audit-probe-5b6738ae865ffe14b2e519c1 返回 HTTP 404 / text/html,与本响应可区分,判为真实内容;用 Accept: */* 再量一次,状态码、正文类型都一致
curlcurl -sSL -A 'geo-audit/0.1.0 (+https://github.com/wangtoone/geo-audit; contact: 152046194+wangtoone@users.noreply.github.com)' 'https://deepgram.com/llms.txt' |
| ③ 全文通道 | https://deepgram.com/llms-full.txt | 404 | text/html | 146,322 | https://deepgram.com/geo-audit-probe-5b6738ae865ffe14b2e519c1 | 404 |
不适用
HTTP 404(状态码正确,正文形态不参与判定);用 Accept: */* 再量一次,状态码、正文类型都一致
curlcurl -sSL -A 'geo-audit/0.1.0 (+https://github.com/wangtoone/geo-audit; contact: 152046194+wangtoone@users.noreply.github.com)' 'https://deepgram.com/llms-full.txt' |
| ② 索引文件真伪 | https://www.deepgram.com/llms.txt | 200 | text/plain | 9,242 | https://www.deepgram.com/geo-audit-probe-974f2f7956efc1f7ba48e48e | 404 |
通过
对照探测 https://www.deepgram.com/geo-audit-probe-974f2f7956efc1f7ba48e48e 返回 HTTP 404 / text/html,与本响应可区分,判为真实内容;用 Accept: */* 再量一次,状态码、正文类型都一致
curlcurl -sSL -A 'geo-audit/0.1.0 (+https://github.com/wangtoone/geo-audit; contact: 152046194+wangtoone@users.noreply.github.com)' 'https://www.deepgram.com/llms.txt' |
| ③ 全文通道 | https://www.deepgram.com/llms-full.txt | 404 | text/html | 146,365 | https://www.deepgram.com/geo-audit-probe-974f2f7956efc1f7ba48e48e | 404 |
不适用
HTTP 404(状态码正确,正文形态不参与判定);用 Accept: */* 再量一次,状态码、正文类型都一致
curlcurl -sSL -A 'geo-audit/0.1.0 (+https://github.com/wangtoone/geo-audit; contact: 152046194+wangtoone@users.noreply.github.com)' 'https://www.deepgram.com/llms-full.txt' |
| ③ 全文通道 | https://deepgram.com/docs/llms-full.txt | 404 | text/html | 146,336 | https://deepgram.com/geo-audit-probe-5b6738ae865ffe14b2e519c1 | 404 |
不适用
HTTP 404(状态码正确,正文形态不参与判定);用 Accept: */* 再量一次,状态码、正文类型都一致
curlcurl -sSL -A 'geo-audit/0.1.0 (+https://github.com/wangtoone/geo-audit; contact: 152046194+wangtoone@users.noreply.github.com)' 'https://deepgram.com/docs/llms-full.txt' |
| ③ 全文通道 | https://www.deepgram.com/docs/llms-full.txt | 404 | text/html | 146,336 | https://www.deepgram.com/geo-audit-probe-974f2f7956efc1f7ba48e48e | 404 |
不适用
HTTP 404(状态码正确,正文形态不参与判定);用 Accept: */* 再量一次,状态码、正文类型都一致
curlcurl -sSL -A 'geo-audit/0.1.0 (+https://github.com/wangtoone/geo-audit; contact: 152046194+wangtoone@users.noreply.github.com)' 'https://www.deepgram.com/docs/llms-full.txt' |
| ④ 索引内链存活 | https://deepgram.com/llms.txt | 200 | text/plain | 9,242 | — | — |
通过
53 条内链:2 活 / 0 死 / 51 判不了
curlcurl -sSL -A 'geo-audit/0.1.0 (+https://github.com/wangtoone/geo-audit; contact: 152046194+wangtoone@users.noreply.github.com)' 'https://www.deepgram.com/llms.txt' |
| ⑤ .md 通道 | https://deepgram.com/ | — | — | — | — | — | 不适用 未声明「任意页面加 .md」约定 |
| ⑥ 可点击路径 | https://www.deepgram.com/ | — | — | — | — | — | 不适用 这一页没有可判定的可点击链接 |
| ⑥ 可点击路径 | https://www.deepgram.com/pricing | — | — | — | — | — | 不适用 这一页没有可判定的可点击链接 |
| ⑥ 可点击路径 | https://www.deepgram.com/changelog | — | — | — | — | — | 不适用 这一页没有可判定的可点击链接 |
| ⑥ 可点击路径 | https://www.deepgram.com/docs | — | — | — | — | — | 无法判断 待抓取 |
| ⑥ 可点击路径 | https://www.deepgram.com/help | — | — | — | — | — | 无法判断 待抓取 |
三种可自动检出的误判形态。这一块是零发现报告真正的付费点:你拿到的 0 与别处拿到的 0,来源不一样。
证据强度 single_case:全语料只有一例(brevo 的裸域返回 Vercel 的纯文本 DEPLOYMENT_NOT_FOUND,而 www 与 developers 子域都正常)。n=1 不够格进首页计数,所以这一区单列。
逐条留痕,带 rule_id。实测教训:五个批次排除了 /cdn-cgi/l/email-protection、另几个批次没排 —— 同一个东西两套口径,所以这里必须逐条列。
本次没有被去噪排除的链接。
同一批已抓响应上的两个读数:左边只用「跟完跳转的最终状态码」推,右边是我们的判定。朴素侧不额外发一个请求 —— 它是换算器,不是第二次扫描。
只有 ① 入口发现 / ② 索引文件真伪 / ③ 全文通道 三段的位置进这张表;④⑤⑥ 的差异化走下面那行死链口径对比。
有分歧 0 条。
| 探测位置 | 朴素方法 | 那种实现会说 | 实际是 | 有分歧 | 多打的请求 | 方向 |
|---|---|---|---|---|---|---|
| https://deepgram.com/ | 不在朴素探测集内 | 它往这个 host 打过请求(只打了两条根路径) | 对照探测 https://deepgram.com/geo-audit-probe-5b6738ae865ffe14b2e519c1 返回 HTTP 404 / text/html,与本响应可区分,判为真实内容 | n | 1 | 一致 |
| https://www.deepgram.com/ | 不在朴素探测集内 | 它往这个 host 打过请求(只打了两条根路径) | 对照探测 https://www.deepgram.com/geo-audit-probe-974f2f7956efc1f7ba48e48e 返回 HTTP 404 / text/html,与本响应可区分,判为真实内容 | n | 1 | 一致 |
| https://docs.deepgram.com/ | 不在朴素探测集内 | 它从没往这个 host 打过请求 | 请求 /,最终落在通用落地页 /home(链路:302 https://developers.deepgram.com/ -> 307 https://developers.deepgram.com/home);跳转到通用落地页等同于「这个路径不存在」 | n | 2 | 一致 |
| https://developers.deepgram.com/ | 不在朴素探测集内 | 它从没往这个 host 打过请求 | 请求 /,最终落在通用落地页 /home(链路:307 https://developers.deepgram.com/home);跳转到通用落地页等同于「这个路径不存在」 | n | 2 | 一致 |
| https://dev.deepgram.com/ | 不在朴素探测集内 | 它从没往这个 host 打过请求 | robots.txt 禁止抓取 /,本位置未评估 | n | 2 | 一致 |
| https://api.deepgram.com/ | 不在朴素探测集内 | 它从没往这个 host 打过请求 | HTTP 404(状态码正确,正文形态不参与判定) | n | 2 | 一致 |
| https://support.deepgram.com/ | 不在朴素探测集内 | 它从没往这个 host 打过请求 | HTTP 200 但正文需要 JS 渲染才可读:可见文本 26 字符 / 原始 5931 字符;信号:empty_shell(visible=26,raw=5931), empty_spa_mount, next_data_without_content_elements, thin_text(26), no_content_elements;本位置计入「未能评估」,不计入「未发现问题」 | n | 2 | 一致 |
| https://help.deepgram.com/ | 不在朴素探测集内 | 它从没往这个 host 打过请求 | 对照探测 https://help.deepgram.com/geo-audit-probe-2ccf5a5c25fa504d5f159a53 返回 HTTP 404 / text/html,与本响应可区分,判为真实内容;但正文需要 JS 渲染才可读:empty_shell(visible=20,raw=2882), empty_spa_mount, noscript_demands_js, no_content_elements | n | 2 | 一致 |
| https://deepgram.com/llms.txt | GET https://deepgram.com/llms.txt,跟随跳转,只看最终状态码 | 已采纳(200) | 对照探测 https://deepgram.com/geo-audit-probe-5b6738ae865ffe14b2e519c1 返回 HTTP 404 / text/html,与本响应可区分,判为真实内容;用 Accept: */* 再量一次,状态码、正文类型都一致 | n | 1 | 一致 |
| https://deepgram.com/llms-full.txt | GET https://deepgram.com/llms-full.txt,跟随跳转,只看最终状态码 | 未采纳(404) | HTTP 404(状态码正确,正文形态不参与判定);用 Accept: */* 再量一次,状态码、正文类型都一致 | n | 1 | 一致 |
| https://www.deepgram.com/llms.txt | GET https://www.deepgram.com/llms.txt,跟随跳转,只看最终状态码 | 已采纳(200) | 对照探测 https://www.deepgram.com/geo-audit-probe-974f2f7956efc1f7ba48e48e 返回 HTTP 404 / text/html,与本响应可区分,判为真实内容;用 Accept: */* 再量一次,状态码、正文类型都一致 | n | 1 | 一致 |
| https://www.deepgram.com/llms-full.txt | GET https://www.deepgram.com/llms-full.txt,跟随跳转,只看最终状态码 | 未采纳(404) | HTTP 404(状态码正确,正文形态不参与判定);用 Accept: */* 再量一次,状态码、正文类型都一致 | n | 1 | 一致 |
| https://deepgram.com/docs/llms-full.txt | 不在朴素探测集内 | 未采纳(没探这个位置) | HTTP 404(状态码正确,正文形态不参与判定);用 Accept: */* 再量一次,状态码、正文类型都一致 | n | 2 | 一致 |
| https://www.deepgram.com/docs/llms-full.txt | 不在朴素探测集内 | 未采纳(没探这个位置) | HTTP 404(状态码正确,正文形态不参与判定);用 Accept: */* 再量一次,状态码、正文类型都一致 | n | 2 | 一致 |
死链口径对比:只看首跳状态码(>= 400 即判死)会数出 0 条;我们经去噪与正文比对后是 0 条链接实例。
位置数 21 · 抓到的页面 3 个 · HTTP 请求 121 / 上限 120(其中不同 URL 132 个;差额是跳转每一跳、robots.txt 与重试)
链接账本:抽取 123 = 排除 0 + 待人工 0 + 已验证 0 + 无法判断 0 + 被封顶截掉 123
本次未触发抽样。
robots.txt 的 Disallow 我们遵守了:命中的路径零请求,判「无法判断(robots_disallowed)」。「我们没被允许看」是真话。
LLM 调用 0 次(这个工具零 LLM、零 API key,所以它恒为 0)。
| 位置 | 原因码 | 实际是 | 补救办法 |
|---|---|---|---|
| ① 入口发现 · https://dev.deepgram.com/ | robots_disallowed |
这个 host 解析通了、根路径也请求了,但判不了(robots_disallowed),于是它的 AI 路径(llms.txt / llms-full.txt / .md 通道)一条都没探,robots.txt 与 sitemap.xml 也没读。这不是「这个 host 没问题」,是「我们没能看」。 | 你的 robots.txt 禁止抓这个路径,我们遵守了。要检查请加 --ignore-robots。「我们没被允许看」是真话,「这里没问题」是假话。 |
| ① 入口发现 · https://support.deepgram.com/ | needs_js |
这个 host 解析通了、根路径也请求了,但判不了(needs_js),于是它的 AI 路径(llms.txt / llms-full.txt / .md 通道)一条都没探,robots.txt 与 sitemap.xml 也没读。这不是「这个 host 没问题」,是「我们没能看」。 | 服务端 HTML 里正文不足 200 字符,正文由 JS 渲染。纯 HTTP 客户端在这类页面上会系统性低估。实测参照:help.spoton.com 正文只有一行「SpotOn Knowledge Base」、docs.lawmatics.com(Redoc)只有一行「Lawmatics OAuth API v1.22.0」——它们的「零发现」是抓取能力问题,不是站点干净。 |
| ① 入口发现 · https://help.deepgram.com/ | needs_js |
这个 host 解析通了、根路径也请求了,但判不了(needs_js),于是它的 AI 路径(llms.txt / llms-full.txt / .md 通道)一条都没探,robots.txt 与 sitemap.xml 也没读。这不是「这个 host 没问题」,是「我们没能看」。 | 服务端 HTML 里正文不足 200 字符,正文由 JS 渲染。纯 HTTP 客户端在这类页面上会系统性低估。实测参照:help.spoton.com 正文只有一行「SpotOn Knowledge Base」、docs.lawmatics.com(Redoc)只有一行「Lawmatics OAuth API v1.22.0」——它们的「零发现」是抓取能力问题,不是站点干净。 |
这个工具零 LLM、零 API key。判定全部来自 HTTP 观测 + 同域随机路径对照探测 + 正文/骨架归一化比对。下面两张表是范围本身,不是免责声明。
首页大字只用位置数,条目数单列 —— 位置数回答「链路哪几段走不通」,条目数回答「有几条要改」,两个数不能互相顶替。
「未能评估」与「没问题」在这份报告里严格分开:Status.UNKNOWN 永不折算成通过。实测依据:help.spoton.com 与 docs.lawmatics.com 的文档站是纯 JS SPA,它们的「零发现」是抓取能力问题,不是站点干净。
报告里凡提到「那类实现会读错」,措辞一律是「只探根路径、不做对照探测的实现」——我们没有拿任何一款现成产品跑过对照,所以不会替它们下结论。
| 项 | 实测理由 |
|---|---|
| C3 · AI 检索链路体检 | llms.txt / llms-full.txt 是真文件还是软 404、全文通道是不是索引的字节副本、索引里列的链接活着几条、「任意页面加 .md」这个约定兑现了没有。每一条都配同域随机路径对照探测。 |
| C1 · 人和爬虫共用的可点击路径 | seed 页上抽取的 <a href>,点了就 404 的那些。带 23 条去噪规则与两级根因归并。 |
| 项 | 实测理由 |
|---|---|
| 过期信号整类(含附录) | 通用旧年份正则:batch1 扫出 134 条命中、真信号 0;CN 批扫出 296 处、真信号 2。两批独立同结论。而且还高假阴 —— snipcart 的真信号 「© All rights reserved, Snipcart inc. 2023」被自家正则的 inc. 句点截断漏掉。三条收窄规则没有命中率、没有假阳性率、没有回归用例,三样全无。 |
| 事实冲突(套餐名枚举 / 同页矛盾 / 档位↔功能映射) | 8/72、6/72 这些数是人工逐域推出来的,自动化版本从来没跑过,这一整块的假阳性率是空的。且「属性对」这个单位实测伸缩 15 倍(bigcommerce 把一整张套餐枚举记成 1 对,baseten 把同型 GPU 表记成 17 对,together 14 个模型记成 37 对)。 |
| 锚点腐烂(#xxx 在目标页不存在) | 本轮未做系统性检测,只偶得 1 例(gusto #minimum-api-version)。命中率未知。不做的理由是实现成本,不是命中率低。 |
| 通用定价页↔文档数值比对 | 15 个域完全没有可比面(必然 0);单位不可定义;20% 的冲突以 llms.txt 为一侧(已否决功能)。 |
| 定期扫描 / 健康分订阅 | 中位数落在 1–2 条区间,73.6% 的站报不出 3 条。注意:「两次扫描之间没有新增」是无证据的时序断言(全部数据是单一时间点横截面),准确表述是「我们没有纵向数据,无法承诺订阅价值」。 |
| 托管 web 版(输入任意域名就发请求的公开端点) | 它会让 --contact 这条合规约束当场失效,且等于开放抓取代理。 |
| 浏览器渲染 / Playwright | uvx 一行可跑是硬需求;Playwright 要另外 playwright install(约 300 MB)。已量化的代价:确认的 JS 盲区只有 help.spoton.com 与 docs.lawmatics.com = 2/72 = 2.8%。这两家判 UNKNOWN,绝不判「干净」。 |
| --serve 本地表单页 | HTTP server 是纯 scope creep + 安全面。非命令行用户走 GitHub Action。 |