一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

AI 如何看你的网站:三类用户可见但机器难以读取的内容

时间:2026-09-12 08:14:01 编辑:袖梨 来源:一聚教程网

网站已经上线,浏览器里也能看到完整内容,但 AI 仍可能只抓到导航、页脚,甚至直接落到登录页。原因在于浏览器与抓取工具处理 JavaScript、结构化数据和访问状态的方式并不相同。要判断内容是否真正可达,需要从原始 HTML、爬虫规则和未登录访问结果逐项检查。

先给结论:判断一个页面对 AI 是否可见,不能用浏览器打开看。浏览器会执行 JS、会渲染结构化数据、会用你的登录态;而 AI 的抓取工具通常什么都不做——它拿到 HTML,剥掉 <script>,读剩下的可见文本。

这中间的落差,能让一个在你眼里内容丰富的页面,在 AI 眼里是一张白纸。

下面三类是实测中最常见的,每类都给判别命令。


一、JSON-LD 结构化数据:SEO 的资产,AI 的盲区

很多站为了 SEO 会在页面里塞 JSON-LD:

<script type="application/ld+json">
{"@type": "FAQPage", "mainEntity": [
  {"@type": "Question", "name": "怎么配置端点?",
   "acceptedAnswer": {"text": "设置两个环境变量……"}}]}
</script>

搜索引擎认这个,会拿它生成富摘要。但AI 的抓取工具通常只提取可见文本,直接丢弃 <script> 标签的内容——包括 JSON-LD。

所以会出现这种情况:你的 FAQ 在 Google 上有富摘要展示,但 AI 完全不知道你回答过这些问题,因为那些问答只存在于 <script> 里,页面上没有对应的可见文本

判别方法

把页面抓下来,剥掉 <script><style>,看剩多少字:

curl -sSL -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0" 
  "https://你的页面" -o p.html

python3 - <<'EOF'
import re, html
s = open('p.html', encoding='utf-8', errors='ignore').read()
b = re.sub(r'(?is)<(script|style)[^>]*>.*?</1>', '', s)
txt = re.sub(r's+', ' ', html.unescape(re.sub(r'(?s)<[^>]+>', ' ', b))).strip()
print(f"HTML 总大小: {len(s)} 字符")
print(f"去掉 script 后的可见文本: {len(txt)} 字符   ← AI 能看到的量")
print(f"前 200 字: {txt[:200]}")
EOF

如果第二个数字远小于第一个,问题就在这里。

正确做法:两者都给

不是把 JSON-LD 删掉——它对搜索引擎仍然有用。而是同一份内容,可见文本和 JSON-LD 各给一份

  • 页面上用正常的 <h3>问题</h3><p>答案</p> 把问答写出来
  • 同时保留 JSON-LD 给搜索引擎

一份内容两种表达,两边都能读到。


二、客户端渲染:HTML 里没有正文

这一类更隐蔽,因为你用浏览器看一切正常

实测过一个内容平台的文章页:HTML 有 63KB,看起来内容很多。但去掉 <script> 之后,可见文本只剩 2200 字符,全是导航和页脚,正文一个字都没有

正文在哪?在 __NEXT_DATA__ 那个 <script> 里,等着 JS 把它渲染出来。

# 同样的检测命令,这类页面的特征是:
# HTML 很大,但去 script 后的可见文本极少

这意味着什么

搜索引擎爬虫会执行 JS,所以它们能看到正文,页面照样能被收录。但多数 AI 抓取工具不执行 JS

所以这类页面走的是「搜索引擎索引」这条路,不是「实时抓取」那条路。两个推论:

  1. 发完不会立刻见效,要等搜索引擎先索引,再等 AI 通过搜索拿到
  2. 如果某个渠道铺了很久没进 AI 信源池,先查它是不是 CSR 且没被索引

三、robots.txt 白名单:从规则上就被排除

前两类是技术实现问题,这一类是规则问题,而且改不了。

有些平台的 robots.txt白名单制——只放行少数几个指定的爬虫,末尾一条通配规则把其他所有的都挡掉:

User-agent: 某搜索引擎爬虫
Allow: /某路径

User-agent: *
Disallow: /

这意味着:不在白名单里的抓取工具,从规则上就不该访问。而 AI 用的抓取工具,绝大多数不在那几个名字里。

判别方法

curl -s https://某平台/robots.txt | tail -20

看最后有没有 User-agent: * + Disallow: / 这种通配拦截。有的话,再看上面放行了哪几个具名爬虫。

如果放行列表里只有几个搜索引擎,那么在这个平台发内容,对 AI 可见性的贡献是结构性的零——不是「发得不够多」,是发多少都一样。

这个判断能帮你省掉大量无效投入。我就是靠这条排除掉了一个粉丝量很大、看起来很值得做的平台。


四、还有一类:你自己看得见,是因为你登录着

这一类最容易误判,因为症状和「页面正常」完全一样

排查时我遇到过:一个页面在浏览器里内容完整,但 AI 抓不到。用未登录的环境测才发现——未登录访问会被 302 到登录页

# 关键是加 -L 看最终落点,不能只看第一个状态码
curl -sS -o /dev/null -w "%{http_code} → %{url_effective}n" -L 
  -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0" 
  "https://你的页面"

如果 url_effective 变成了登录页,那这个页面对任何未登录访问者(包括所有 AI 抓取工具)都是不可见的。

⚠️ 验证这一类必须用「干净」的环境:不带 cookie、不带登录态。用你日常的浏览器测,测出来的永远是「正常」。


五、一套完整的自检流程

按顺序跑,每一步都能排除一类问题:

URL="https://你的页面"
UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0"

# ① 未登录能不能访问,最终落在哪
curl -sS -o p.html -w "HTTP %{http_code} → %{url_effective}n" -L -A "$UA" "$URL"

# ② 去掉 script 后还剩多少可见文本
python3 -c "
import re,html
s=open('p.html',encoding='utf-8',errors='ignore').read()
b=re.sub(r'(?is)<(script|style)[^>]*>.*?</1>','',s)
t=re.sub(r's+',' ',html.unescape(re.sub(r'(?s)<[^>]+>',' ',b))).strip()
print(f'HTML {len(s)} → 可见文本 {len(t)}')
print('前 200 字:', t[:200])"

# ③ 关键内容在不在可见文本里(换成你自己的关键词)
grep -c "你的核心关键词" p.html

判读:

结果结论
① 落到登录页对 AI 完全不可见,先解决访问权限
② 可见文本 < HTML 的 5%大概率是 CSR,正文在 <script>
③ 关键词只在 script 里出现内容只存在于 JSON-LD 或数据块,AI 读不到
三项都正常技术层没问题,剩下的是内容和权重问题

六、一条容易搞反的因果

最后说一个我自己犯过的错。

看到某个域名在 AI 的引用来源里出现频率很高,很容易得出「在这个平台发内容效果好」。

域名级的数据不等于账号级的可达性

我曾经因为某平台在信源统计里排第四,判断它是个明显的机会,于是把发布链路做通、文章发出去,事后才发现:那个账号的内容未登录根本访问不了(第四类问题)。域名有价值,但我们发的内容不可达,贡献是零。

开一个新渠道时,先验证「我们发的东西能不能被访问」,再谈这个域名值不值。 顺序反了,前面所有工作都是空转。


小结

类型症状判别能不能解决
JSON-LD 只在 script 里有富摘要但 AI 不知道去 script 后文本量✅ 同时给可见文本
客户端渲染HTML 大但可见文本少同上⚠️ 靠搜索引擎索引,慢
robots 白名单排除发多少都进不了看 robots.txt 的通配规则行❌ 结构性的,换平台
未登录不可访问自己看正常,AI 看不到干净环境 + -L 追踪落点✅ 但要平台侧解决

一句话:别用你的浏览器判断 AI 能看到什么。 你的浏览器执行 JS、渲染结构化数据、带着登录态——这三样 AI 的抓取工具一样都没有。

热门栏目