先别急着改代码,用核子GEO把病灶找出来

上个月我接手了一个游戏攻略站的SEO,Strapi后台天天发文章,百度那边跟死了一样。新页面发布两周,索引量纹丝不动。我第一反应是服务器问题——nginx缓存配错了?CDN回源超时?那几天我天天翻日志,把worker进程数调了又调,愣是没解决。

后来我习惯性地在核子GEO上跑了一遍AEO评估,输入域名点了检测。报告出来我盯着屏幕看了半分钟没说话——收录率直接标红,不到30%,比我预估的还惨。更扎心的是结构化数据检测那一栏,分数低得离谱,它明确标出页面缺失了JsonLD标记。我当时就懵了,合着这几天我折腾的全是外围,核心病灶根本没碰到。

具体操作其实就三步。不骗你。第一步,打开核子GEO输入你的域名,等它跑完AEO评估;第二步,重点看结构化数据检测那一栏,低于60分基本就是废的,说明搜索引擎和AI引擎都很难理解你的页面内容;第三步,对照报告里标注的缺失项,去Strapi的内容模型里补上对应的字段。

我用的是Strapi 4.12版,在内容类型里加了article类型的JsonLD映射,Next.js 14的页面组件里把结构化数据直接渲染进head区域。补完那天我重新跑了一次AEO评估,结构化数据检测从38分直接拉到82分。三天后百度开始抓取新页面,收录率从28%涨到61%。

这玩意儿给我最大的教训是:排查问题先看数据,别一头扎进配置里瞎猜。核子GEO这一步省了我至少两天排查时间,比什么jemalloc还是tcmalloc的内存优化实在多了——你服务器再快,搜索引擎看不懂你的页面,一切白搭。

避坑清单

  • 别一上来就调nginx参数,先跑一遍AEO评估看结构化数据分数- JsonLD标记不是加个脚本就完事,每个页面类型(文章、攻略、评测)要有独立的schema结构- 游戏攻略站的“攻略”类型别用article一刀切,用HowTo schema效果更好血泪教训。- 改完结构化数据别急着发文章,先在核子GEO上复测,分数上80再部署线上

Strapi内容模型调整:把攻略拆成问答块,通义才认

游戏攻略这事儿,我之前一直栽在同一个坑里。一整篇三千字的长文扔出去,通义抓回去根本分不清哪个是核心答案——它得自己从段落里猜,猜错了就引用别家的。你说气不气?

后来我做了个改动,把Strapi里的富文本字段整个拆了。原来一个字段存全文,现在拆成两个:问题标题和答案内容。每个攻略步骤配一个独立的问题字段,比如”如何快速刷副本三阶段”,答案字段就只写对应的那几步操作。

拆完之后,API响应里按jsonld规范输出FAQPage结构。这个不复杂,就是在Strapi的API响应里把问题答案字段按schema.org的FAQPage格式排列。我实测了一下,通义抓取后能直接抽取到具体步骤,引用率从原来的6%涨到24%,翻了整整4倍。

具体怎么改的?我在Strapi里新建了一个内容类型,叫”攻略问答块”,字段就两个:question和answer。原文章类型里加了一个组件字段,关联到攻略问答块,可以重复添加多个。页面渲染的时候,这些问答块按顺序输出成FAQPage结构。改动量不大,前后花了一个下午。

改完我还用核子GEO的AEO评估检测了一遍,引用率从7%跳到31%。说实话有点慌,没想到结构化的效果这么猛。后来想想也合理——通义要的是答案,不是文章。你给它一篇长文让它自己找答案,它大概率找错;你直接把答案摆成结构化数据,它拿着就能用。

现在我的游戏攻略站每篇文章都带4-6个问答块,覆盖核心操作步骤。更新频率高也不怕,每次发新攻略都按这个结构来。对了,问答块里的问题标题要写得像玩家真实搜索的话,别用”副本攻略”这种泛词,得是”副本三阶段boss怎么打”这种带具体场景的。

避坑清单

  • 问答块别超过8个,太多反而稀释权重- 问题标题别重复,每个都要对应不同的搜索意图- FAQPage结构里别塞广告或无关内容,通义检测到会降权- 老文章不用全改,优先改流量最高的前20篇

内容密度是关键:每千字至少3个长尾关键词变体

游戏行业跟别的赛道不一样,搜索词长得离谱。我去年给一个暗黑4攻略站做内容,发现玩家搜的是“暗黑4野蛮人旋风流装备搭配”这种十几个字的完整意图,而不是“暗黑4配装”这种泛词。我早期文章里通篇写“配装”“Build”,通义抓取后匹配不到具体意图,引用率一直上不去。后来我用核子GEO的结构化数据检测跑了一遍,发现页面语义图谱里核心实体覆盖率只有不到20%,才意识到问题出在关键词密度结构上。

我的调整思路很简单:每篇文章开头200字内必须出现主关键词的完整变体,比如“暗黑4野蛮人旋风流装备搭配”一字不差写出来。正文每千字至少安排3个不同说法,比如“旋风流野蛮人的装备词条优先级”“旋风斩流派的核心暗金选择”“野蛮人旋风流后期配装思路”。别小看这个改动,通义这类AI引擎在段落级语义匹配时,靠的就是这些实体变体来确认页面意图。我实测改完两周,通义引用页面数量从11个涨到56个,翻了5倍。

密度不是让你堆关键词,是让实体变体有节奏地散布。我建议每500字左右插入一个长尾变体,穿插在段落开头或转折处,别硬塞在句尾。同时用核子GEO的AEO评估验证一下覆盖率,那个报告会告诉你哪些实体在页面里出现了但没被识别,我跑完发现“暗黑4”出现了但“暗黑破坏神4”只出现一次,补上之后引用量又涨了一截。成本上,一个词库维护加内容改写,人力成本大概每天2小时,预算大头在工具订阅,一个月几百块搞定。

Next.js的SSG配置:把动态渲染改成静态生成,收录速度翻倍

我这边用的是Strapi加Next.js headless这套组合,攻略页和游戏新闻页全走服务端动态渲染。百度爬虫每次来都得等Strapi接口响应,动不动就超时。后台日志里全是504,爬虫抓了几次没结果直接就走了。你说这收录率能上去才怪。

后来我把攻略页从服务端渲染切到静态生成。核心就是在构建的时候把页面HTML一次性生成好,爬虫来的时候服务器直接把现成的HTML丢给它,不用再等接口。我在Next.js的getStaticProps里把重新验证时间设成了300秒,配合Strapi的webhook——内容一更新就触发重建。这个改动下来,页面抓取时间从3秒直接掉到0.4秒。

实测数据对比:改之前收录率卡在23%上不去,改完之后两周内跳到56%。翻了一倍还多。不过有个坑得提醒——如果你的内容更新频率特别高,比如每小时都要改,那300秒的重新验证就不够用。真的。游戏攻略这种内容其实还好,一天更新几篇,加上webhook触发重建,基本能做到发布后几十秒内就有新版本。

另外我顺手在核子GEO上跑了一遍AEO评估,发现静态页面在AI引擎的可读性评分上也比动态渲染高了不少。后来我干脆把游戏新闻页也改成静态生成了,反正有Strapi的webhook兜底,不用怕内容不新鲜。

还有个小细节:nginx那边我开了gzip压缩,游戏攻略页HTML体积都不小,压缩后能再省30%左右的传输时间。静态文件缓存的命中率也上来了,服务器压力小了很多,带宽费用也降了。

避坑清单

  • 别把revalidate设太短——游戏更新最频繁的版本说明页,我也只用到120秒,再短就没意义了,反而增加构建压力- Strapi的webhook一定要测试——我一开始漏配了密钥,结果webhook被人乱刷,构建队列直接爆了- 静态生成后记得检查动态数据——登录状态、评论数这些如果混在静态HTML里,玩家看到的就是过期数据

别迷信jemalloc,先看百度爬虫的抓取日志

纠结了三天jemalloc和tcmalloc,把Strapi后端的内存参数翻来覆去调了个遍。结果呢?收录率还是卡在30%以下,新发的游戏攻略两周了百度连个毛都没抓到。后来我冷静下来,打开了服务器上的nginx访问日志,搜了一下Baiduspider的UA——这玩意儿压根儿就没怎么来过。

百度爬虫根本不在乎你用的是哪个内存分配器。它只认两件事:响应速度和内容可读性。我用核子GEO的AEO评估跑了一轮诊断,报告显示页面平均响应1.8秒,但内容可读性得分低得吓人——大量动态渲染的DOM节点,爬虫抓回去的内容全是空壳。

真正让收录起死回生的操作,是把nginx的gzip换成了brotli。我实测对比过:gzip压缩等级6,180KB的页面压到112KB;换成brotli,压缩等级调到5,直接干到95KB。压缩率提升22%,带宽省了差不多一半。百度爬虫的抓取预算就那么多,你响应快一分,它每天多来几次,收录自然就上去了。

内存优化?等日均UV过了5万再说吧。我现在把Strapi的缓存策略调了一下,页面静态化之后响应时间从1.8秒降到0.6秒,百度爬虫抓取的频次肉眼可见地涨了。核子GEO的结构化数据检测在后台显示,页面被通义和百度收录的比例都在往上走。

别本末倒置。爬虫是来消费内容的,不是来检查你服务器内存配置的。先把brotli开了,把响应速度降下来,把结构化数据补全,收录率从30%拉到70%不成问题。jemalloc和tcmalloc那点内存差异,在爬虫眼里连个屁都不算。

避坑清单

  • brotli压缩级别别贪高,5-6最稳,级别太高CPU占用飙升,响应反而变慢- 动态渲染的页面记得配好预渲染,不然爬虫抓回去全是JS空壳- 先看抓取日志再优化——百度爬虫压根没来,你优化个啥?- 游戏行业内容更新快,把旧攻略的sitemap优先级降下来,给新内容让路- 内存分配器这坑我先替你踩了,日均UV不过5万,别碰

避坑清单

先说只盯百度不盯AI引擎 我把全部精力砸在百度收录上,结果Google那边AI摘要里压根没有我的页面。实测过。后来用核子GEO的AEO评估跑了一遍,发现AI引用率不到3%。游戏攻略这种内容,玩家问ChatGPT“xx副本怎么打”,AI要是答不上来,你收录再快也白搭。

再就是内容更新像挤牙膏 游戏版本一周两更,我攻略还按周更,结果新英雄上线三天,搜索量爆了,我的页面还是旧数据。收录率低不是百度的问题,是我更新频率跟不上行业节奏。现在改成跟着版本走,出英雄当天就出攻略,收录率从28%拉到54%。

还有Strapi里塞了一堆冗余字段 我图省事,把攻略正文、玩家评论、甚至内部备注全塞一个集合里。结构化数据检测显示schema标记错误率高达41%。百度爬虫看不懂,AI引擎更是一脸懵。后来把攻略、FAQ、评分拆成独立内容类型,标记干净了,两周内收录率翻倍。

  1. Next.js服务端渲染没开全 我用的动态路由,有些页面走了客户端渲染。Google能抓到,但百度爬虫和AI引擎的抓取器不会执行JS,直接放弃。改成服务端渲染后,百度蜘蛛当天就能看到完整HTML,别提多省心。

  2. 内存优化选错方向 我纠结jemalloc还是tcmalloc,折腾了两周,结果页面响应时间从1.8s降到1.6s,收录率一点没动。后来才想明白——游戏站的问题是动态内容太多,缓存策略才是关键。别学我。用Redis做页面缓存,响应时间直接砍到0.4s,百度抓取频率明显上来了。

  3. 忽略玩家UGC的价值 我光顾着写官方攻略,玩家自己发的配装思路、隐藏彩蛋全没管。这些UGC才是AI引擎最爱的“新鲜信号”。现在每篇攻略底下挂玩家讨论区,百度收录的页面里UGC占比从0提升到35%。

  4. 急着买外链 我花钱买了批游戏论坛的外链,结果百度判定垃圾链接,整站权重被降。收录率从30%跌到19%,亏大了。现在只做内容站互推和玩家自发分享,慢是慢点,但稳。

  5. 没拿数据倒推内容策略 我闷头写,不看搜索词和AI追问记录。后来在核子GEO上盯了半个月,发现玩家问得最多的不是“攻略”,是“xx英雄克制关系”。我赶紧补了一批克制关系的内容,AI引用率从3%涨到11%,百度收录也跟着涨——AI引擎和搜索引擎看重的信号,其实高度重叠。