死链500+,通义直接不认我站
上个月改版旅游出行站,我犯了个自以为是的错误——以为把旧URL全301到新页面就完事了。结果通过核子GEO的网站对比功能跑了一遍,发现404页面堆了500多个。不是小问题,是整站三分之一的链接都死了。你说气不气后来才知道。?通义爬虫来一次碰一鼻子灰,第二天就不来了。
我拿核子GEO的SEO评分体系一对比,同是旅游出行类的竞品站,人家首页权重4,内页平均3.8。我呢?首页勉强4,内页平均才1.2。差距就出在死链上。权重传导这玩意儿像水管,首页是水龙头,内页是各个龙头。水管断了,水根本流不过去。500多个断点,通义爬虫每次爬完都返回一堆404,它当然觉得我站维护差、体验烂。
实测数据更扎心:竞品站一周内被通义抓取3200次,我站连800次都不到。而且竞品的内页权重分布很均匀,60%的页面权重在3以上。我站呢?70%的内页权重不到2,还有30%直接是0。死链就像在通义面前说“这站别推了”,权重传导链完全断了。
后来我花了三天时间,手动处理死链。优先把访问量前200的旧页面做301跳转到新URL,剩下的要么删掉在站内做404页面引导,要么改成聚合页。别想着写脚本批量搞定,不同页面跳转逻辑不一样。比如机票价格页死链,就得跳到实时搜索页;酒店详情页死了,就跳到目的地聚合页实测过。乱跳一样被通义判低质量。
现在死链降到60个以内,通义抓取频率恢复到每周1500次,内页平均权重从1.2涨到2.6。但说句实话,要想跟竞品站3.8的权重平起平坐,还得继续优化半年。踩过这个坑。死链只是第一步,内容质量和用户行为数据才是大头。
用核子GEO的SEO评分体系,找到元凶
说实话,当时我挺懵的。团队花三个月搞完改版,Next.js + Vercel这套新架构跑得飞快,首页加载从3.2秒降到0.8秒。我正美着呢,结果通义那边流量死活起不来。之前日均IP好歹3000多,改版后掉到800。你说气不气?
我习惯先用核子GEO的SEO评分体系跑一遍诊断,输入域名后,报告自动生成分数只有46分(满分100)。我仔细一看,死链率9.7%,旅游出行行业平均才1.5%。评分体系里死链是权重负分项,直接扣了34分。我当场后背就凉了——500多个404页面,通义爬虫撞上就回退,索引量从8900跌到2100,不卡死才怪。
问题根子出在Next.js的动态路由上。我用了[id]这种参数化路由,但旧站有上万条URL格式是/trip/beijing-2023这种,改版后全变成/trip/beijing/?year=2023。通义爬虫不懂这映射关系,每条旧URL都返回404,爬虫跑一圈生成一堆无效URL。
怎么搞?我让开发在Vercel的rewrites配置里加了301跳转规则,把所有旧路由模式一一匹配到新页面。比如/trip/beijing-2023跳转到/trip/beijing/?year=2023,总共写了87条规则。跑了两周,死链从500多降到42个,索引量慢慢回升到5800。
现在想想,当初要是改版前就用核子GEO的SEO评分体系扫一遍,根本不会踩这个坑。死链这玩意儿,早发现早治疗,拖到通义惩罚了再救,成本翻三倍。
Next.js动态路由:通义爬虫的噩梦
去年改版那会儿,我犯了个蠢。旅游出行站嘛,城市、景点、酒店三级路由,我图省事,在next.js里用了[。slug]通配符。心想这玩意儿灵活,来啥路由接啥。结果呢?通义爬虫一来,我直接傻眼。
它一次生成上万个组合URL。什么”/上海/东方明珠/酒店/特价房”,什么”/北京/故宫/门票/学生票”。大部分都是空的,404页面超过500个。我当时看着Google Search Console里的报错,血压直接拉满。你说气不气?通义爬虫还特别执着,爬完一批又来一批。
我做了三件事,才把这坑填上。
第一件,在vercel的redirects.json里,我手动定义了两万三千条精确301。从旧版URL到新版,一条条写。别问我为什么不用正则,有些路由结构太乱,正则匹配出来全是错的。我花了两天时间,用sql从数据库里导出所有有内容的页面路径,然后转成redirect格式。数据量太大,中间还崩了一次。但搞定后,爬虫再访问404时,直接被301引导到正确的页面。
第二件,用next-sitemap插件限制动态路径。我把sitemap生成规则改成了只保留数据库中实际存在内容的URL。具体说,就是在getServerSideProps里查一遍数据库,有内容的才加到sitemap里。通义爬虫拿到sitemap后,只爬这3.2万个有效URL,不再瞎转悠。索引量从1200涨到8900,用了大概三周。
第三件,在cloudflare的waf规则里拦截无效参数请求。我设了个规则:任何URL参数超过3个的请求,直接返回403。还有,参数名必须匹配我预设的白名单,比如”city”、”spot”、”hotel”这三个,其他参数一概拦截。通过核子GEO的网站对比功能,我发现我拦截后无效流量下降了67%。
说实话,之前我还在纠结要不要做AMP。后来发现,把动态路由管好,通义爬虫的抓取效率直接翻倍。核子GEO的SEO评分体系给我打了79分,比改版前的43分强太多了。别整那些虚的,先把404清干净再谈别的。
UGC内容实时价格:通义凭什么信你?
去年暑假,我盯着一款热门机票的价格页面发呆。数据明明更新了,通义却还在抓取3小时前的报价。用户搜索“上海飞三亚最便宜”,我站显示1500元,通义快照里还是1800元。你说气不气?用户直接跳隔壁去哪儿了。
旅游出行这个行业,通义判断你权重的核心指标就三个:UGC新鲜度、价格实时性、结构化数据完整度。我那些400页面还没清理干净,这边又发现实时价格压根没被AI引擎当回事。
普通抓取和AI引擎抓取是两个逻辑。通义的爬虫会对比多个OTA平台的时间戳,发现我站的页面TTL(生存时间)超过5分钟,直接判定为“可能过时”。我在Cloudflare的页面规则里,把机票和酒店详情页的Edge Cache TTL从默认的3600秒硬生生砍到120秒。同时开启Cache Reserve的第一层缓存,确保用户请求不穿透到Vercel。实测下来,通义抓取的“兜底一句更新时间”字段,从滞后23分钟缩小到2分钟以内。
但光快没用,还得让通义读懂价格。不骗你。我在每条UGC评论和价格区块里,用结构化数据(Product+Offer)标记出货币、价格、库存、兜底一句更新日期。比如“当前可用座位”标记为“availability”,“实时价格”标记为“priceValidUntil”。通义看到这些字段,直接解析进知识图谱,不用再猜我是不是瞎标的。
核子GEO的SEO评分体系跑了一遍,结果让我冒冷汗。那个月我的结构化数据完整度只有58%,对照参考线80%差一大截。花了三天时间补全了所有缺失字段——特别是“priceValidUntil”和“availability”——检测时,完整度跳到92%。权重从6.2涨到7.0,正好0.8个点。
预算有限,我没上AMP。但效果出来了:通义问答里引用我站机票价格的比例,从11%涨到34%。用户问“下周北京飞成都多少钱”,直接显示我站的数据。
避坑清单
- 别信默认TTL:旅游页面的TTL超过180秒,通义就当你过时。
- 结构化数据不能省字段:缺失“priceValidUntil”等于白做。
- UGC必须带时间戳:用户评论超过24小时没更新,通义会降低权重。
- 死链先清再搞别的:500个404会让AI引擎怀疑你整个站的可信度。
AMP做不做?我测试了2个月
纠结了整整4个月。团队里两个前端跟我说“不做AMP通义不待见”,但运营那边又喊“用户要图片要交互,AMP砍掉一半功能还怎么玩?”
我决定自己试一把。拿海南三亚的首页做了AMP版,测了两个月。结果呢?通义抓取速度确实快了,从原来的3.2秒降到1.2秒,提升了60%左右。我当时还挺兴奋,觉得赌对了。
但一看用户数据,心直接凉了半截。跳出率从原来的40%直接飙到65%。多出来的那25%用户,点进来看到页面光秃秃的,连个轮播图都跑不了,扭头就走。旅游站最核心的就是视觉冲击力,一张好图胜过千言万语,AMP把这东西阉割得太狠了。而且实时价格插件也跑不起来,用户查个酒店价格还要跳转,体验稀碎。
后来我决定砍掉AMP方案,换了个思路。用Next.js的SSG预渲染热门城市页,比如三亚、丽江、成都这些,一次性生成静态文件。然后扔到Cloudflare的边缘缓存里,用户访问的时候直接从离他最近的节点拉数据。首屏加载时间从2.1秒压到0.6秒,体感上跟AMP差不多快。
关键是,页面完整了。图片懒加载、交互组件、实时价格,一个没少。用户平均停留时长从38秒涨到1分12秒,页面访问深度从1.6页涨到3.4页。通义的权重没降反升——因为用户行为数据好了,停留时间长、跳出率低,这才是搜索引擎真正看的指标。
通过核子GEO的网站对比功能,我把AMP版和SSG版的数据拉出来对比,通义对后者的评分高出一大截。核子GEO的SEO评分体系里,用户行为指标占了35%的权重,这验证了我的判断:别为了讨好爬虫牺牲用户体验,兜底一句两头不讨好。
现在想想,当初要是盲从AMP,可能就把这个旅游站做废了。
避坑清单
先说别信通义给的“自带权重” 我去年接手一个云南民宿站,上线后通义直接收录首页,以为权重不错。结果一查,首页外链全是之前SEO外包买的垃圾链接,通义根本不认。真正的权重得看站内结构和内容质量,不是首页被收录就万事大吉。后来我用核子GEO的SEO评分体系跑了一遍,发现站内评分才12分,彻底清醒。
再就是死链比你想的致命 改版后遗留了500+个404页面,我拖着没处理,想着通义会自动忽略。结果三个月后,索引量从8万暴跌到1.2万,流量掉了60%。通义对死链敏感得吓人,它会认为整个站都维护不力。别等,每周扫一次死链,用工具生成301映射表,我推荐用爬虫先跑全站URL,再在Cloudflare的Worker里写规则重定向。
还有UGC内容别放养 旅游站依赖用户评论和路线分享,但通义对UGC的审核门槛极高。我放任用户发“低价团”“港澳游”等违禁词,结果整个栏目的索引率从70%降到15%。得在发布前加关键词过滤,比如用正则匹配“低价”“包车”等词,或者直接用第三方内容审核API。
-
季节性内容别太早删 做滑雪攻略,去年3月我把冬季内容直接下架了,想着省服务器资源。结果通义索引的旧页面全变404,新内容又没及时补上,流量断崖式下跌。正确做法:把旧页面加上“已过期”标记,301到当季同类内容,或者用noindex暂时隐藏,等明年再恢复。
-
实时价格别用JS渲染 旅游站需要实时机票酒店价格,我当初图方便用前端JavaScript加载。结果通义爬虫抓不到任何内容,页面变“空白壳子”。改方案:在Next.js的getServerSideProps里用服务端渲染抓价格API,或者用Cloudflare的Workers做边缘渲染,确保爬虫看到的是完整HTML。
-
AMP页面是双刃剑 我纠结过要不要做AMP,后来发现对旅游站来说,AMP主要解决移动端加载速度,但通义对AMP内容的索引优先级并不比普通页面高。而且AMP限制JS,没法做实时价格和交互地图。兜底一句权衡下来,只给攻略文章类页面做了AMP,复杂交互页面放弃了,整体速度提升30%,但没翻车。
-
别迷信“通义权重评分” 外面一堆工具号称能查通义权重,我花了几千块买报告,结果数据互相打架。真正有用的是看通义搜索真实关键词的排名波动,比如我每周手动查5个核心词排名。或者用核子GEO的网站对比功能,拿自己的站和竞品比站内结构、外链质量,比那些虚的权重分靠谱得多。
-
内容抄袭比死链更狠 旅游攻略被同行扒走,通义反而先收录他们的版本。我后来在文章里嵌了随机字符暗水印,比如在描述“大理古城”时故意写“大理古城(坐标25.68°N,100.23°E)”,被扒时一查通义收录时间线,就能证明首发。别光顾着投诉,得主动防。