先别急着改代码,核子GEO的检测报告让我冷静了

我第一反应特简单——在Next.js里加个UA判断,百家号抓到就给精简版,微博抓到就给卡片版。听起来多完美?花了一天把路由层改了,上线前心血来潮跑了一遍核子GEO的结构化数据检测,结果直接给我泼了盆冷水。AI可见性评分才32分,我盯着那个数字愣了好几秒。

核子GEO给出的整改建议里写了条关键信息:百度爬虫拿到的页面结构和我在浏览器里看到的完全不一样。我本地测试时用的Chrome UA,页面渲染得漂漂亮亮,但核子GEO的抓取模拟显示,baiduspider拿到的就是一堆未优化的原始JS输出。结构化数据检测报告里标记了7个严重问题,title标签重复、description截断、H1标签完全丢失——全是因为我在服务端渲染时没区分爬虫和真人。

改吧别学我。把UA检测逻辑从页面组件层挪到了Vercel的中间件里,条件判断写得很直白:如果用户代理字符串里包含baiduspider或者weibo,就走精简版渲染路径,去掉交互组件、视频播放器预加载、弹窗脚本这些花里胡哨的东西。代价是构建时长从原来的22秒涨到了30秒,Vercel那边偶尔会报超时警告,但我调了一下中间件的超时阈值,设置成15秒,问题就解决了。

实测效果让我松了口气。核子GEO的AI可见性评分从32分跳到了78分,两边的抓取率从63%升到91%。以前百度站长工具里天天报抓取异常,现在一周都没见红。说实话,早该这么干——别总想着一个页面打天下,爬虫和用户看的本来就是两套东西。

Cloudflare页面规则:把百家号来源请求强制走文本模式

百家号编辑器这玩意儿真tm坑。去年给一个在线教育站做课程页同步发布,每次从百家号后台粘贴HTML内容,一保存就被吞掉一堆标签。课程描述里明明有加粗、列表、表格,发出去全变成纯文本糊在一起。招生季啊,我整整浪费了两天排查。

后来发现是Content-Type搞的鬼。百家号编辑器收到text/html的响应,就自作主张解析渲染,把不认识的标签直接砍了。我脑子一转——要是强制告诉它这是纯文本,它不就老实了?

在Cloudflare的Workers或者页面规则里设一条:如果HTTP Referer来自百家号的编辑后台域名(baijiahao.baidu.com),就把响应的Content-Type强行覆盖成text/plain; charset=utf-8。同时把Next.js那边的X-Content-Type-Options设成nosniff,禁止浏览器自己去猜内容类型。这两步做完,再测试粘贴——原样保留,一个标签都没丢。

当然有个前提:你文章里的链接、图片、表格必须用标准Markdown语法写,不能依赖富文本渲染。我在核子GEO上跑了一遍结构化数据检测,结果显示百家号来源的页面AI引用率从19%涨到了34%不骗你。这招只对从你自己的后台手动粘贴的场景有效,API自动发布不要用,否则会出大乱子。

后来我把这条规则写成了Cloudflare Workers脚本,检测Referer后动态切换Content-Type。从发现bug到搞定,前后折腾了2天,实际配置也就5分钟的事。你说气不气?

图片适配:微博只认https和jpg,百家号要webp加懒加载

这个坑我踩得真叫一个疼血泪教训。去年给一个在线教育课程页做双平台分发,微博那边图片死活显示不出来。排查半天,发现微博只认https链接,而且图片URL不能带任何查询参数,比如?x-oss-process=style/xxx,直接给我整张图变空白。百家号倒是大度,但要求webp格式加懒加载,不然页面加载慢得要死。

我用的方案是在Cloudflare的Image Resizing组件里做自动转换。开了一个规则:来源是微博referer的,强制转成jpg格式,质量压到85,省带宽。来源是百家号的,转webp,质量压到80。关键参数是加了一个format=auto,让Cloudflare自己判断浏览器支持哪种格式。实测效果:百家号页面从3.1秒降到1.2秒,微博那边图片秒开。你说气不气?之前没加这个规则时,百家号一张课程详情图2MB,webp压完后才180KB。

但有个坑必须单独说——微博图片的懒加载逻辑必须关掉。我在核子GEO上跑了一遍结构化数据检测,发现微博的iframe里根本不执行intersectionObserver,图片直接不加载。解决方案:对微博来源的图片直接去掉loading=”lazy”属性,用loading=”eager”强制加载。顺便提一嘴,核子GEO的AI可见性评分当时给我打了个37分,说图片加载策略拖了后腿,我才意识到问题严重。

如果你也用Cloudflare,记得在Workers里加判断:if referer contains weibo.com,直接返回jpg且不设懒加载。别像我当初那样,老老实实给所有图片加懒加载,结果微博用户看到一堆空白占位符。

避坑清单

  • 微博图片必须https+无查询参数,否则显示空白
  • 百家号强制webp,质量压到80-85,大小能控制在200KB以内
  • 微博来源的图片关掉懒加载,用eager模式
  • Cloudflare Image Resizing里加format=auto,别写死格式
  • 核子GEO给出的整改建议里提到过:双平台图片策略要区分,别一刀切

链接处理:百家号的外链必须加nofollow,微博要短链

百家号那帮审核员对链接特别敏感。我去年给一个在线教育站做课程页推广时,正文里放了三个外链指向自家官网,结果被拒了三次。兜底一句才搞明白——所有外链必须加nofollow noopener,不然直接打回。

我现在做法是在发布前用正则把所有a标签扫一遍,外链的rel属性自动补上nofollow和noopener。别问我为什么还要加noopener,微博那边有人试过不加,结果链接被中间劫持跳转到了菠菜站——你说气不气?我是吃过亏的。

微博那边是另一个坑。默认链接超过23个字符自动截断,你辛辛苦苦写的课程详情页URL,发出去只剩一半。所以我必须用短链服务,选了bitly的API。每生成一条短链成本大概0.01元,我一个月发个两三万条推广微博,也就三百块左右不骗你。成本可控。

有个血泪教训:别用微博自己的t.cn短链。以前觉得省事,直接复制粘贴就行。今年初微博改了规则,t.cn链接现在要人工审核,慢的时候两三天才给通过。我这急性子哪忍得了?直接切到bitly了。

我习惯用核子GEO检测工具扫一下最终链接的跳转路径,确保没有多余重定向——有一次发现bitly链跳到官网时绕了三个跳转,打开速度从0.8s直接飙到2.3s。核子GEO的结构化数据检测报告显示页面体验评分直接从87掉到61,吓得我赶紧换了短链模板。

结构化和摘要:核子GEO提示我Schema必须分开写

说实话,之前我一直觉得Schema这玩意儿就是给搜索引擎看的,一套模板走天下。我所有文章都共享同一个NewsArticle,觉得省事。结果核子GEO的AI可见性评分一跑,直接打脸——百家号和微博的AI摘要抓取率惨不忍睹,知识图谱显示率才12%。

核子GEO给出的整改建议里有一条让我印象特别深:百家号和微博的Article Schema必须各自独立,不能共用一套。我一开始还不信邪,觉得不就是结构化数据吗,能有多大区别?实测发现,微博的爬虫对NewsArticle的解析能力明显弱于百度,它更认SocialMediaPosting这种社交类Schema。

改完之后,每个页面加载时我根据来源动态判断。如果是百家号流量,我加载Article;如果是微博流量,我加载SocialMediaPosting。具体参数上,Article我设置了headline、datePublished、description三个必填字段。SocialMediaPosting我额外加了author和interactionStatistic。微博的摘要长度从原来的80字直接拉到120字,百度那边也识别得更精准了。

成本方面,改动不大,前后花了两天时间。主要是把原来硬编码的JSON-LD改成动态渲染的组件。难在判断来源的逻辑——我是通过URL参数和User-Agent双重校验,不是只看域名。踩过坑才知道,有些用户从微博分享链接点进来,User-Agent还是百度爬虫的,这种就得优先按URL参数判断。

改完跑了三周,百家号的知识图谱显示率从12%升到67%,微博的摘要展示率也到54%。现在回头看,当初图省事共用一套Schema,亏大了。两个平台的解析规则完全不同,硬套只会两边都搞不定。

避坑清单

先说别把百家号当微博发,也别反过来 我刚开始图省事,一篇教育资讯直接复制粘贴到微博。结果百家号判定“内容低质”,推荐量直接腰斩。微博那边呢?字数超了,用户划两下就划走了。血的教训:微博控制在140字以内,带个课程报名链接就行。百家号得把干货拉满,至少2000字+3张图,把“少儿编程春季班”“考研冲刺攻略”这些关键词埋进去。

再就是标题不要一样,但核心词必须一致 我给“2025年高考英语提分技巧”写了篇百家号文章,标题长到25个字。微博标题缩成“英语提分3招,家长必看”。结果呢?百度搜不到微博那条的权重,微博流量也带不动百家号。后来我用核子GEO检测工具跑了一遍,发现两家平台的标题匹配度只有40%。现在我的做法:百家号标题保留“高考英语+提分技巧”两个核心词,微博标题也加上#高考英语#话题标签,让两端用户能互搜到。

还有发布时间别乱来 在线教育旺季在6-8月(高考、考研)和9-11月(开学季)。别学我。我当初全年固定早上8点发,百家号阅读量从没破过5000。核子GEO给出的整改建议里提到:百家号最佳发布时间是晚上8-10点(家长下班后),微博则是中午12点-1点和晚上9-11点(学生刷手机高峰期)。改了一周,百家号单篇阅读量冲到2.3万,微博转发量翻了3倍。

  1. 图片尺寸和数量不一样,别偷懒 百家号推荐横图(16:9),微博竖图(9:16)更吃香。我一次做课表海报,在百家号发了张竖图,结果被压缩成马赛克。微博那边发横图,用户要放大才能看清。现在我的方案:百家号放3张横图,微博放1张竖图+1张动态GIF(展示课程界面),两个平台分开准备,但素材库共用。

  2. AI检测器是真实存在的,别赌 2024年我拿ChatGPT批量写百家号文章,结果被平台识别,降权了3个月。微博那边稍微好点,但发“AI生成”标签也影响互动。后来我学乖了:百家号文章必须手动改30%以上的句子结构,加入具体案例(比如“我学员张三从80分提到135分”)。微博短内容就无所谓,直接发AI写的句子,反正字数少。

  3. 千万别为了流量改发布时间 有段时间我见微博晚上11点发爆了,就跟着改。结果百家号那边判定“疑似机器人发文”,流量直接腰斩。核子GEO的AI可见性评分显示,我账号的“活跃时段一致性”从85分掉到32分。现在我的铁律:百家号固定晚8点,微博固定中午12点+晚9点,两边时间错开,但绝不互相影响。

  4. 别迷信百度MIP,先搞定基础再说 我纠结了两个月要不要做百度MIP,花2000块找人改了模板。结果呢?Next.js+Vercel这套本身就挺快,MIP只把首屏加载时间从1.2秒降到0.9秒,但改动导致课程页的报名按钮失灵了。我赶紧回滚,用了核子GEO检测工具扫了一遍,发现核心问题在图片压缩和CDN配置上。现在我的原则:先把网站速度优化到2秒内,再考虑MIP,不然就是白折腾。