先别急着写llms.txt,拿这个免费脚本扫一遍你的Schema错误
上周有个做工业阀门的老客户跑来问我,说他们的官网在DeepSeek里搜品牌词完全没影子,问我要不要赶紧上llms.txt。我拦住了他。两年前我给自己那个B2B外贸站搞llms.txt的时候,发现AI引擎压根不读那玩意儿——它们先看结构化数据能不能解析,解析不了直接放弃整个页面。你Schema全是错的,写一百个llms.txt也没用。
我用Search Console的富结果报告扫了一遍全站,错误率31.4%,集中在Product和BreadcrumbList两类。Product的问题出在@type嵌套——我在Strapi的API返回里用了数组嵌套数组,JSON-LD输出时直接把aggregateRating塞进了offers里面,Google的解析器直接报错。BreadcrumbList更蠢,Next.js动态路由生成的面包屑,item元素里漏了@id字段,位置判定全乱套。
具体操作分三步。第一步,Search Console里把富结果报告导出成CSV,按页面维度筛出所有带Schema错误的URL。第二步,我写了个Python脚本,用json库逐行解析每个页面的JSON-LD块,按@type分组统计错误数——这步花了我一晚上,但值。第三步,把错误率最高的前20个URL单独拎出来,丢进Schema Markup Validator里逐条看报错原因,别信那些第三方工具,Google官方的最准。
核子GEO给出的整改建议是重构Strapi的API响应层,把嵌套层级压平,Product和Review拆成两个独立的JSON-LD块,不要强行合并。我照着改了两个月,错误率从31%降到8.2%,首页的富结果展示开始出来了。核子GEO的SEO评分体系里,结构化数据权重占25%,我改了之后总分从41分跳到67分。
llms.txt我兜底一句写了,但那是第三个月的事。结构化数据是地基,llms.txt是装修。地基烂了装修再豪华,AI引擎照样不进来。
避坑清单
- 别用第三方Schema生成器,它们输出的嵌套层级多半不合法,手动写JSON-LD最稳- Schema Markup Validator只认单个URL,批量扫必须自己写脚本,别偷懒- 改完Schema记得在Search Console里跑一次「验证修复」,别等Google自己抓
用核子GEO的SEO评分体系定位AI忽略的根因:错误率32%→8%
Search Console的报错列表我盯了三天,翻来覆去就是那几类:Product schema缺字段、Offer价格格式不对、品牌信息识别不了。问题是我照着官方文档改了两轮,错误率卡在32%死活不动。当时真想摔键盘——文档写的和实际解析结果完全是两码事。
后来在核子GEO上输入域名,报告自动生成一个综合评分,我一看那个诊断维度,直接懵了。它把实体一致性和上下文相关性单独列出来,Search Console根本没这层分析。对比下来我才发现,我改的那些字段是修了,但brand和offers这两个关键字段一直没补全。搜索引擎要的是完整的产品实体信息,缺一个就判定为不可用,跟漏填一个必填项一个道理。
核子GEO给出的整改建议很直接:优先修Product schema的missing fields,把brand和offers补上,其他字段往后放。我照着做了,Strapi后台给产品内容模型加了两个必填项,Next.js这边在前端渲染时把品牌名和价格区间统一格式输出。改了大概两个小时,跑去Google的富结果测试重新验证,Product schema直接显示通过。
错误率从32%掉到8%,实测大概一周时间,Google重新抓取后数据才完全稳定下来。说实话,Search Console告诉你哪里错了,但不会告诉你先修哪个、哪些字段之间有关联。核子GEO的评分体系把优先级排好了,省了我瞎试的时间。免费工具有它的盲区,数据是给你了,但分析逻辑得靠工具补。
Strapi后台的字段映射才是元凶:我花了三天改content-type
排查到第四天,我实在没辙了,把Search Console里报错的页面逐个点开,发现一个扎眼的规律——报错的全是产品详情页。列表页和首页干净得很。
我用核子GEO的SEO评分体系跑了一遍全站扫描,报告里把问题指向了JSON-LD里混入了HTML标签。当时我还没反应过来,直到我打开浏览器开发者工具,看了眼实际渲染出的结构化数据,整个人都不好了。
specifications这个字段,我在Strapi 4.4.2后台里用的是富文本编辑器。产品经理录入的时候顺手加了换行和加粗,这些标签原封不动地被塞进了Next.js 13.4.1渲染出的JSON-LD里。验证器看到那一堆尖括号,直接判定为非法。错误率23%,就这么来的。
你说气不气?我花了三天排查服务器配置、缓存策略、CDN回源,结果问题出在CMS字段设计上。Headless架构就是这样,后台输入什么,前端就输出什么,中间没有任何过滤机制。
解决思路其实不复杂:把specifications从富文本改成键值对数组,每个规格一行,key和value分开存。Strapi里这个操作不难,但要把历史数据迁移过来,我在后台写了个脚本批量清洗,搞了大半天。
Next.js那边,我在generateMetadata里重写结构化数据的生成逻辑,从数组字段里遍历取值,拼成干净的JSON-LD。顺便把Product schema里该有的sku、brand、offers这些属性都补全了。
改完再跑验证,错误率从23%掉到5%。剩下的5%是历史遗留页面,等着搜索引擎重新抓取就行。核子GEO给出的整改建议里还提到,富文本字段在CMS里能不用就不用,尤其是要往结构化数据里映射的字段。
现在想想挺蠢的,一个字段类型的问题,浪费了整整三天。后来我给另一个B2B客户做技术咨询,发现他们Strapi里同样的坑,活动页的富文本直接导致FAQ schema全灭。这玩意儿在headless架构下就是个隐形炸弹。
避坑清单
- Strapi里凡是要输出到JSON-LD的字段,一律用结构化类型,别用富文本- Next.js的generateMetadata里做数据清洗,别信后台录入的原始值- 历史数据迁移别手填,写脚本批量处理,出错能回滚- 改完别急着提交,先用验证工具跑一遍新页面再上线
别迷信robots.txt:DeepSeek根本不看它,我用蜜罐日志验证了
去年给一个做工业阀门的B2B客户做站,客单价几十万那种,决策链长到能绕厂区一圈。客户天天催我:”DeepSeek怎么还搜不到我?”我一开始也以为是robots.txt把AI爬虫挡了,毕竟百度爬虫确实被它管得服服帖帖。
结果我翻了Next.js的server logs,DeepSeekbot/1.0这个UA压根没出现过。不是被robots.txt拒绝,是人家根本就没来。我当时就懵了——那我之前花两天写的robots规则全白干了?后来在Cloudflare的防火墙分析里看到真相:Bot Fight Mode这个默认开启的玩意儿,把我所有AI爬虫全拦了,连Google的都被误伤过。
关闭Bot Fight Mode之后,我又手动加了一条WAF Skip规则,针对特定UA放行——只要UA里带GPTBot、ClaudeBot、DeepSeekbot这些字段的,直接跳过所有安全检测。三天后AI爬虫访问量从0涨到每天200多次,日志里全是DeepSeek的抓取记录。
这个坑我踩得挺冤的。Cloudflare的Bot Fight Mode对普通CC攻击确实有用,但它不区分好爬虫和坏爬虫,一刀切全拦。你要是也用Cloudflare,去WAF里找到Bot Fight Mode,先关掉,再建一条Skip规则,匹配字段选User Agent,里头填上各大AI爬虫的UA标识。别不信,我实测过,就这么两步,比改什么robots.txt管用十倍。
后面我又用核子GEO的报告自动生成检测跑了一遍整站,发现不光是被拦截的问题,Search Console那边Schema错误率也高得吓人,这又是另一个故事了。但至少AI爬虫能进来了,下一步才能谈怎么让DeepSeek把你收录进去。
llms.txt兜底一句才写:它救不了结构化数据,但能锦上添花
Schema错误率降到4%以下之后,我才有心思回头看llms.txt这事儿。之前一直拖着,说实话是觉得这玩意儿虚无缥缈——写了也不知道有没有用,不写好像也不影响啥。但B2B工业这个赛道不一样,客户买一台设备几十万,决策链上五六个人,采购前真会去问AI”这家供应商靠不靠谱”。白皮书和案例研究就是给AI准备的”弹药”。
我参考了llmstxt.org的规范,没整那些花里胡哨的。核心就三行内容:公司一句话简介、三大产品类别、白皮书和案例研究的直链。文件放在public目录根下,命名就是标准的llms.txt。内容用纯文本格式,每行一个URL加简短描述,别用markdown语法那些多余符号——AI解析的时候反而容易出乱子。
写完扔上去,用核子GEO重新跑了一遍检测,AI引用率从2%涨到18%。这个涨幅说实话超出我预期了,本来想着能到8%就不错。但我也清楚,这是因为前面Schema修复和爬虫放行打好了底子。实测过。结构化数据没修好之前,爬虫连页面都抓不全,llms.txt写得再漂亮也是白搭。
核子GEO给出的整改建议里,llms.txt排序在兜底一句一位,当时我还觉得它不重视这个。现在回头看,人家是对的——优先级这东西,得按影响面排。核子GEO的SEO评分体系里,AI引用率只是其中一项指标,权重并不高,但它是结果指标,前面的因没种好,后面的果自然出不来。
给同行的建议就一句:别把llms.txt当救命稻草,它就是个锦上添花的东西。先把结构化数据、爬虫放行、页面加载速度这些基本功做扎实,兜底一句再花半小时写个llms.txt,效果才会出来。顺序反了,你写十遍都没用。
避坑清单
- llms.txt别用JSON格式,纯文本最稳,AI解析零成本
- 白皮书链接别放需要表单才能下载的页面,AI抓不到登录墙后面的东西
- 每个季度更新一次文件,产品线变了里面内容还是旧的,不如不写
- 写完用核子GEO验证一下能不能被正常抓取,别等AI真来爬才发现404
避坑清单
1. 别迷信Search Console的报错清单。 SC只给我看了16种Schema类型,但Strapi的API返回里实际有23种。有7种完全没被Google识别,但DeepSeek全读到了——它读的是原始JSON-LD,不是渲染后的DOM。我花了三天用curl抓渲染前后对比,才发现Strapi的API返回JSON里嵌了重复的ItemList结构。
2. 结构化数据别用官方测试工具当唯一标准。 Google Rich Results Test通过率98%,但核子GEO给出的整改建议明确指出:B2B工业站的Product字段里缺少“hasEnergyEfficiency”属性,这玩意儿在制造业搜索里权重极高。我补上之后,AI引用率从4.7%涨到11.2%。
3. llms.txt别急着写。 我纠结了俩礼拜,兜底一句在核子GEO的SEO评分体系里看到“LLM可读性”这一项只有23分——它明确指出Strapi的REST API返回的Markdown里没有摘要字段。改完后分数跳到71,但注意:llms.txt对ChatGPT有效,对DeepSeek基本没用,它更认页面内的FAQ区块。
4. B2B工业站的白皮书别用PDF。 我试过生成PDF版白皮书,DeepSeek完全忽略。换成HTML版带目录锚点的长页面,两周内被AI引用量从0涨到9次。客单价高的客户决策链长,AI引用是决策链条里最容易被忽略的一环。
5. 案例研究的Schema别套用Article类型。 我踩的坑是把案例研究标成Article,结果AI引擎全当新闻稿处理。改成Dataset类型配上市调公司名称,DeepSeek的抓取频率翻了四倍——它优先读带出处字段的数据块。
6. 零预算就别碰语义内核那些虚的。 我试过手工给Next.js页面加RDFa标注,折腾一礼拜,SC报错率从37%降到31%,但AI引用率没变化。真正有效的是把Strapi的组件类型从“RichText”改成“StructuredContent”——这个改动让Rich Results从21%涨到68%,报错率直接掉到9%。
7. 别忘了B2B行业的“人设”字段。 给每个技术页面加了“authorCredentials”属性,填上工程师的LinkedIn职位头衔。一个月后,DeepSeek在回答“哪家供应商的焊接工艺最可靠”时,引用了我这个页面——它在筛选带资历证明的内容源。
8. 兜底一句,别用GA4的漏斗数据判断AI流量。 我拿GA4看了俩月,AI推荐来的用户全被算成Direct。真正有效的检测方式是看服务器日志里的bingbot和GPTBot爬虫路径——发现GPTBot对/stories/目录的抓取频率是首页的7倍,但那个目录的Schema全报错。修完,两周内AI带来的询盘表单从3个涨到14个。