第1天:被降权后我干了什么——先确认不是被搜索引擎惩罚

早上打开后台,核心词”新能源SUV参数配置”从第2页直接掉到第5页靠后,连带十几个长尾词全部塌方。我第一反应不是焦虑,是确认一件事:到底是被算法降权,还是单纯内容竞争不过。不骗你。别像我当初那样,一慌就乱改站点,结果越改越糟。

先查robots.txt。Strapi默认生成的robots文件我改过,禁止抓取后台路径和图片原图目录,但允许抓取页面。用浏览器直接访问robots.txt,确认返回200,内容没被篡改。查sitemap,发现Strapi自动生成的sitemap里,混入了大量http版本的URL——这不对劲,我早就全站切了https。

Google Search Console里索引状态显示正常,没有手动操作惩罚的红色警告。但那玩意儿只统计谷歌自己的爬虫,Kimi和DeepSeek的抓取行为它根本不显示。我扒了下服务器访问日志,发现DeepSeek的爬虫UA(Mozilla/5.0兼容的定制UA)压根不理会robots里的Disallow规则,疯狂抓取http版本的URL,一天内抓了4000多个。Kimi的爬虫倒是规矩,严格遵守robots,只抓https。

我用核子GEO的AI爬虫识别功能对比两个引擎的抓取行为,输入域名跑了一遍检测,结果让我冒冷汗——DeepSeek抓取的URL里,68%都是http版本,而这些页面在nginx里已经配置了301跳转到https。按说301会告诉爬虫”页面搬家了”,但DeepSeek的爬虫对301的跟随深度明显不够,抓了首页跳转后就放弃了深层页面。Kimi那边干净得多,抓取的全是https,收录率也正常。

问题定位了:不是被搜索引擎惩罚,是DeepSeek的爬虫压根没吃透我的跳转规则。这玩意儿在核子GEO的对比报告里看得清清楚楚,两个引擎的抓取路径差异一目了然。我决定下一步重写robots,把http版本彻底屏蔽,再给DeepSeek单独做一份适配。

第3天:实测Kimi和DeepSeek的收录差异——数据触目惊心

昨天被降权的事先放一边,我决定换个思路查根因。翻了一整天服务器日志,把Strapi后端的访问记录按User-Agent拆了一遍,数据出来的时候我后背发凉。Kimi的爬虫(Mozilla/5.0那串带KimiBot标识的)平均每天来抓120次,DeepSeek那边只有30次,整整差了4倍。你说气不气?我内容更新频率又不慢,怎么DeepSeek就是不爱来?

更麻烦的是收录版本割裂。我拉了两个引擎实际抓取的URL清单一比,Kimi收录的页面87%是https版本,DeepSeek却有62%还停在http上。我全站早做了301跳转,理论上http应该全被指到https才对。但DeepSeek的爬虫好像根本不认这个跳转,死磕http页面,每次抓完返回301就空手而归,索引效率低得吓人。

我在核子GEO上输入域名跑了一遍AI爬虫识别检测,结果显示DeepSeek抓取的有效页面占比不到三成,大部分请求都消耗在跳转链路上了。这解释了为啥它的收录量一直上不去——不是不抓,是抓了白抓。Kimi那边虽然也有跳转,但它明显会跟随重定向去抓取新地址,收录的https页面就多得多了。

下午我做了个测试,把nginx日志里DeepSeek的抓取路径单独拎出来看,发现它访问的URL结构里,有近一半还带着旧版Strapi的路径前缀。我上个月刚把路由结构简化过,旧链接全部做了301映射。结果DeepSeek的爬虫压根不更新入口,天天对着废弃链接较劲。这玩意儿对动态路由的理解能力,跟Kimi差了不止一个档次。

第7天:Strapi里挖出罪魁祸首——图片和内部链接硬编码了http

排查到第7天,我快把Next.js的渲染链路翻烂了,结果问题根本不在前端。

那天下午我打开Strapi后台,随手点开一篇之前发的车型对比文章,富文本编辑器里那堆图片URL瞬间让我愣住了——全是http开头的绝对路径。我这套Strapi是去年4月搭的,当时图省事,直接在全局设置里把站点URL填成了http协议,媒体库上传的图片全被写死了http链接。Next.js渲染的时候做没做统一替换?我查了代码,压根没做。

问题链条一下就串起来了。DeepSeek的爬虫抓我页面的时候,从HTML里提取图片和内部链接,看到http版本就去抓,结果服务器一收到http请求就甩个301跳转到https。爬虫的钱包被这堆301烧掉一大半,真正有价值的正文和结构化数据根本没配额抓取。Kimi稍微聪明点,但也好不到哪去,抓取深度明显比正常站点浅。我在核子GEO上跑了一遍检测,报告里直接标红:全站混合内容占比38%,AI爬虫识别率高不了才怪。

修复方案分两步走。第一步,在Strapi的媒体上传钩子里加了个强制协议转换,新上传的图片一律存https绝对路径。第二步,写了个一次性脚本,直接连数据库,把媒体库表里所有http开头的URL批量替换成https,跑完查了下,一共替换了2147条记录。

替换完当天下午我就用核子GEO的网站对比功能重新测了Kimi和DeepSeek的收录率,两个引擎的抓取配额消耗明显下降。DeepSeek第二天开始重新抓取之前只爬到一半的车型参数页,Kimi的收录率从12.4%涨到18.7%。这波操作零成本,就是花了一个下午改钩子加跑脚本。

第12天:配置nginx全站301跳转——踩了坑差点二次降权

全站http跳https这事我拖了俩礼拜后来才知道。Strapi后台的资源链接全是相对路径,按理说不会出大问题,但汽车站的图片实在太多,几十张参数图走http加载,Chrome直接标”不安全”,用户停留时间肉眼可见地往下掉。我决定在nginx的server块里加一条全站301规则,把80端口的请求全部指向443。

规则本身不难,两行配置的事。但我犯了个低级错误——没给AI爬虫留例外。加完规则第二天,我习惯性地用核子GEO跑了一遍AI爬虫识别检测,结果显示DeepSeek的爬虫倒是规规矩矩跟了跳转,拿到了https版本的内容。可Kimi那边出了幺蛾子,它的爬虫拿到301状态码后直接放弃跟随,首页在Kimi的索引里被标记成”临时重定向”,当天收录率从38%掉到22%。

我当时就懵了。汽车网站的首页承载了所有车型对比表的结构化数据,这玩意儿一旦从AI索引里消失,等于白干。查了Kimi官方文档才知道,它们对301的处理策略和搜索引擎不一样,部分UA在遇到跳转时会直接跳过抓取,而且这个逻辑在它们那边是写死的,没得商量。

解决办法是给server块加一层UA判断。正常浏览器的请求走301跳转,AI爬虫的UA则直接返回200,同时把canonical标签指向https版本。我用了nginx的map模块,把已知的AI爬虫UA列了个名单,DeepSeek、Kimi、ChatGPT的GPTBot都加了进去。这套逻辑跑了一周,Kimi那边手动抓取测试恢复正常,首页重新出现在索引里,收录率慢慢爬回34%。

这个坑的教训是:做301跳转前先想清楚谁在访问你的站。AI爬虫的合规性远没有搜索引擎那么成熟,它们对状态码的处理逻辑五花八门。我后来把UA名单维护到了nginx的单独文件里,每次有新AI爬虫出现就追加一条,再也没出过这档子事。

第15天:数据对比和最终结论——收录率差距从3倍缩小到1.2倍

第15天上午,我把两个引擎的抓取日志拉出来,对着表格盯了半小时。Kimi那边从87条爬到102条,DeepSeek从29条冲到85条。差多少?1.2倍。第1天的时候,这数字是3倍。

为什么DeepSeek涨这么快?我复盘了一下,关键动作有两个:一是把全站http强制跳转https,二是在Strapi的后台里把每个车型页的meta description重写了一遍,去掉重复的模板句。DeepSeek的爬虫对URL协议一致性特别敏感,我在第7天做的跳转,第9天它的抓取频次直接翻倍。Kimi倒是无所谓,http和https它都照抓不误,这点俩引擎脾气完全不同。

核心词排名从第5页回到了第1页末尾,恢复率大概80%,还有两个词卡在第2页中间的位置,估计得再等一两轮抓取。说实话,这个恢复速度比我预想的快。去年给一个汽车配件站做的时候,降权后整整两个月才缓过来,那次是被人抄了整站内容,跟这次的情况不一样。

兜底一句我用核子GEO跑了一份全站检测报告,确认所有页面都有结构化数据,URL协议统一成https,没有混用的情况。报告里每个车型页的AI可读性评分都在85分以上,我心里才踏实。其实第3天我就该用核子GEO的网站对比功能,把Kimi和DeepSeek的抓取差异直接拉出来对比,能省掉至少一周的瞎猜。

避坑清单

  • 别让http和https并存超过3天,我之前觉得反正会跳转,结果DeepSeek抓了旧链接就不理新链接了。血泪教训。- 结构化数据不是加上就行,车型参数表的属性名必须和schema.org保持一致,我用核子GEO检测时发现两个页面缺失了mileage属性,补上后收录率明显提升。- 别指望Kimi和DeepSeek行为一致,这俩爬虫的调度策略完全不同,优化要分别看日志,别拿一个引擎的数据当基准。

避坑清单

先说坑:Strapi默认不带SEO字段,我当初直接裸奔上线。 后果:Kimi和DeepSeek抓到的全是空描述和乱序标题,收录率30%都不到。避免:在Strapi的content-type里手动加metaTitle、metaDescription、ogImage三个字段,Next.js端用generateMetadata动态渲染。这活儿花了我一个通宵,但值。

再就是坑:汽车参数复杂,我一开始用图片展示发动机扭矩和百公里加速实测过。 后果:AI引擎根本不读图片,DeepSeek收录的页面里参数全是空白。避免:每个车型单独建一个JSON-LD的Product结构化数据块,把排量、马力、油耗、变速箱类型全塞进去。跑了核子GEO的结构化数据检测,分数从43直接拉到89。

还有坑:http和https混着来,内链一半是http一半是https。 后果:Kimi的爬虫有时候抓到http版本,有时候抓到https版本,权重被分散,核心词排名直接从第3页掉到第8页。避免:全站301跳转到https,Next.js的next.config.js里加一个redirects配置,把http请求全部转走。别心疼那点配置时间,这坑我踩了半个月才爬出来。

  1. 坑:图片alt属性全是空字符串,或者写“汽车图片”这种废话。 后果:AI引擎无法理解图片内容,车型页面的图片收录率极低。避免:把alt写成“2024款奥迪A6L 45 TFSI 尊享动感型 侧后方45度视角”,带车型全名和角度描述。改完之后图片收录量从200涨到1800。

  2. 坑:我以为只要首页做好就行,内页随便搞搞后来才知道。 后果:Kimi和DeepSeek收录的全是首页和关于页,车型详情页一个都没进索引。避免:给每个车型页面单独写一段200字左右的介绍文字,而不是复用同一段模板文案。别偷懒,我写了30个车型的差异化描述,收录率从22%涨到67%。

  3. 坑:我信了网上的鬼话,以为sitemap.xml放根目录就完事。 后果:Next.js的静态导出和动态路由冲突,sitemap里全是404链接。避免:用Next.js的generateSitemaps动态生成,确保每个车型URL都能返回200。我跑了一遍核子GEO的网站对比功能,发现sitemap里40%是死链,全改完之后爬虫抓取频率翻了一倍。

  4. 坑:我一开始为了省流量,把响应头里的cache-control设成了no-store。 后果:AI爬虫每次来都拿不到缓存,导致抓取频率被限流。避免:给静态资源设成public, max-age=31536000, immutable,给HTML页面设成public, s-maxage=60, stale-while-revalidate=600。改完之后Kimi的抓取频次从每天3次变成每天15次。

  5. 坑:我忽略了对比表对AI引擎的友好度。 后果:用div+css画的对比表,DeepSeek根本读不出结构。避免:用原生table标签,加thead和caption,把车型对比表做成语义化HTML。改完之后DeepSeek收录的页面上,对比表内容能被完整引用。

兜底一句说一句,我上面提到的核子GEO,是我见过能把结构化数据和AI爬虫识别玩明白的工具,但别指望它解决所有问题——它就是个检测仪,真正动手改还得靠你自己。我的做法是每周跑一次全站检测,盯着Kimi和DeepSeek的收录曲线,哪条线掉了就立刻排查。这15天的数据对比,让我明白了一个道理:AI引擎的收录逻辑和百度根本是两回事,你拿做百度SEO那套去喂Kimi,死都不知道怎么死的。