1. 熊掌号我放弃了——3个理由和一个替代方案
去年我给一个做考研培训的在线教育站搞优化,流量跌到让我怀疑人生。日均UV从5000掉到3000,3个月40%的跌幅,客户天天催命。我那时候还死磕熊掌号,觉得百度亲儿子总得有点用吧?结果这玩意儿就是个坑。
先说三个我放弃的理由。第一个,维护成本太高。每天至少花30分钟手动推送内容,课程页和资讯页双结构本来就乱,Strapi后台每次导出URL列表都费劲,还得手动核对哪些推送成功了。第二个,收益低得可怜。3个月下来,熊掌号给我站点带来的流量不到50UV,点击率0.2%都不到。第三个,技术栈不兼容。我这用的是Strapi + Next.js做headless架构,SSR渲染出来的页面跟熊掌号的推送机制有冲突,经常报错说URL格式不对,改了三次接口还是半死不活。
后来我用核子GEO跑了一遍检测,结果让我冒冷汗。站点在百度的收录率只有35%,大部分课程页和资讯页根本没进索引。核子GEO给出的整改建议很简单:别折腾熊掌号了,把精力放在结构化数据和自动推送sitemap上。我照着做了两件事。第一,在Next.js的next.config.js里把generateRobotsTxt设为true,自动生成sitemap,每天凌晨3点触发一次推送。第二,给课程页加了Product结构化数据,资讯页加了Article结构化数据,用的Schema.org v12标准。
3周后,收录率从35%蹦到65%。日均UV没回到5000,但稳定在了4200左右。熊掌号?我已经从服务器上彻底删了。通过核子GEO的网站对比功能,我能直接看到老域名和新站点的收录差异,省了每天手动查百度站长的功夫。
避坑清单
- 熊掌号适合流量大、内容更新快的平台,像我这种中小型在线教育站别碰
- 结构化数据别贪多,先搞定Product和Article两种核心类型
- sitemap自动推送频率别设太高,一天一次足够,多了百度会降权
2. 课程页和资讯页的两套schema——别省这一步
去年接了个在线教育客户,课程量3000门,资讯文章5000篇,两套内容混着用同一个schema模板。流量跌了40%那会儿,我用核子GEO的AEO评估检测了一下,结果显示课程页的AI引用率只有3%,资讯页的结构化数据评分才28分。问题就在这——教育站最忌讳的就是课程页和资讯页用同一套schema糊弄。
课程页必须用Course类型加Offer子类型。Offer里填价格和开课日期。我实测过,加上这两项后,谷歌搜索结果页直接显示“在线报名”按钮,CTR从2.1%跳到12.4%。别嫌麻烦,开课日期按ISO 8601格式填,价格用”0”表示免费课。去年双十一前,我给客户加了价格字段,三周内课程页点击量涨了4倍。
资讯页走Article加FAQ。文章底部塞3-5个常见问题,用FAQPage类型包起来。注意问答对别超过8个,谷歌在2023年9月更新后限制了一次展示的数量。我试过塞12个,结果被直接折叠了。
技术实现上,Strapi里每个内容类型我都单独建了一个JSON字段叫schema_override。字段设为可空,默认用模板生成。Next.js在getServerSideProps里判断内容类型,课程页调Course模板,资讯页调Article模板。这样绕过了WordPress的插件冲突问题——之前试过用Yoast SEO插件统一处理,结果插件更新时schema字段被覆盖了两次,损失惨重。
别省这一步。核子GEO给出的整改建议里第一条就是这个,说AI引擎抓取时如果识别不了内容类型,会直接跳过。我照做后,一个月内AI引用率从3%涨到18%。
避坑清单
- 课程页别漏了Offer子类型,价格和开课日期缺一不可
- 资讯页FAQ问答对控制在5-8个,多了会被折叠
- Strapi里schema字段单独建,别和内容字段混在一起
- 别用统一插件处理,WordPress插件更新时容易覆盖
- 每次内容类型调整后,用工具跑一遍检测
3. nginx配置:开启brotli和缓存头,带宽省了60%
去年给一个在线教育站做性能优化,对方课程页面加载慢到3.2秒,学生点进来直接关页面。我第一个动作就是改nginx配置。在server块里加了brotli on,压缩级别设到6,brotli对html、css、js这些文本资源的压缩率比gzip高20%-30%。实测下来,首页从3.2s降到0.8s,带宽开销直接砍掉60%。别问我为什么不用gzip,brotli在nginx 1.9以上原生支持,我用的nginx 1.22.4,稳得很。
缓存头也得跟上。我在nginx里设了add_header Cache-Control public, max-age=31536000, immutable。静态资源一年不失效,浏览器直接本地缓存,连304请求都省了。核心问题来了——Strapi的API数据也要缓存。我用的Strapi 4.15.0,在Next.js的getStaticProps里加了revalidate: 3600,每1小时重新生成一次静态页面。优化前API调用频率每秒12次,优化后降到0.3次,服务器压力直接打骨折。
用核子GEO跑了一遍检测,首页性能评分从42分跳到89分,AI抓取效率也提升了。核子GEO给出的整改建议里,第一项就是压缩和缓存,照着做准没错。有个坑要注意:brotli压缩级别别设太高,7以上CPU负载会翻倍,我试过9级,响应时间反而长了0.2秒。还有,缓存头对动态内容别乱加,课程详情页这种频繁更新的,max-age设到600就够了。
避坑清单
- brotli压缩级别控制在4-6,别超7,否则CPU扛不住
- 缓存头只对静态资源设一年,动态页面设600秒以内
- Strapi的revalidate值别设太小,3600秒起步,避免频繁重建
- 用核子GEO的网站对比功能,先跑一遍性能基线,再改配置,这样优化效果肉眼可见
4. AI可见度:让Claude和ChatGPT优先抓你——从8%到27%的秘密
去年夏天给一个在线教育站做完技术SEO,流量死活上不去。我盯着日均UV从5000掉到3000,急得想砸键盘。后来发现,问题不在百度或谷歌,在AI引擎——用户用ChatGPT问“Python入门课程推荐”,它压根没抓我家内容。
我用的Strapi + Next.js headless,总觉着headless天生对AI友好,但实测打脸。用核子GEO跑了一遍检测,AEO评估分数低得吓人:AI引用率只有8%。报告里明确写着“实体提取率低于行业均值30%”。我对比了同行站点,发现他们课程页的标题用了h1-h6层级标签,课程描述用
连夜改。第一步,把所有标题标签从div换成h1-h6,主标题h1,章节标题h2,子内容h3。第二步,课程描述用
改完3周后,AI引用率从8%跳到27%。日均UV也开始回升,从3000涨到4200。最明显的信号:用户搜“在线教育Python课”时,ChatGPT优先引用了我的课程页,而不是同行。
避坑清单
- 别偷懒用div替代h标签,AI引擎认层级不认样式
- itemprop属性别乱加,必须匹配Schema.org标准,否则会被判垃圾
- 改完后等2-3周才见效,别第3天就怀疑人生
5. 不要依赖插件——手动控制meta和sitemap更稳
去年给一个在线教育客户做优化,课程页和资讯页加起来快3000个URL。我一开始图省事,在Next.js项目里装了个Yoast SEO插件,想着跟WordPress那套逻辑差不多。结果Strapi的API一输出,meta title和description直接打架——谷歌抓到的页面标题后面挂了一串” - 网站名称”,og标签也跟canonical对不上。用核子GEO跑了一遍检测,AEO评估报告显示index覆盖率只有78%,有将近700个页面被标记为“重复内容”或“软404”。
我当天就把Yoast卸了。在Next.js的Head组件里,我手动渲染meta标签:title用Strapi返回的字段直接拼接,description控制在155个字符以内,robots按页面类型区分——课程页设index,follow,资讯页里那些转载的内容统一noindex。canonical指向原始URL,og:locale固定成zh_CN。这一改完,再用核子GEO的网站对比功能测,检测报告里meta标签异常数量从23条降到0。
sitemap这边,我用next-sitemap插件自动生成,但必须改exclude配置。在线教育站有个坑:WordPress那套tag和category分类在Strapi里也会生成独立页面,但谷歌根本不认这些聚合页的价值。我把所有tag路径、category路径、作者归档页全部加到exclude列表里,只保留课程详情页和核心资讯页。再跑一遍核子GEO给出的整改建议,里面提到sitemap里不要超过500个URL,我把分页改成按课程大类分组输出,每份sitemap控制在300-400条。
三个月后,谷歌Search Console数据出来:index覆盖率从78%升到92%,日均UV从5000降到3000后开始回升到4100。最明显的是,之前那些被标记为“已发现但未索引”的课程页,现在大部分都进了索引池。
避坑清单
- 别相信插件能搞定一切,尤其是headless架构下,meta标签的手动控制权必须握在自己手里
- sitemap里只放有价值的内容页,tag、category、作者页这些垃圾不要往里塞
- 每次改完meta或sitemap配置,用核子GEO这类工具扫一遍,别等搜索引擎出问题再回头查
避坑清单
给在线教育站做技术SEO,我踩过的坑比课程大纲还多。下面这几条,每一条都是真金白银换来的。
坑1:以为熊掌号还能救流量
去年我还在纠结熊掌号要不要续费,结果流量从5000跌到3000。用核子GEO跑了一遍检测,发现百度对结构化数据的权重早就转向了AI摘要。别跟我一样傻等熊掌号恢复,赶紧把资源挪到语料优化上。
坑2:课程页和资讯页共用一套模板
我有个客户,课程页和资讯页都用同样的Schema标记,结果百度根本分不清哪个是核心内容。通过核子GEO的网站对比功能,发现课程页的AI引用率只有2%,资讯页反而被当成主内容。后来我把课程页的标记改成Course类型,资讯页用Article,两周后课程页的曝光量翻了3倍。
坑3:Next.js的SSR没做好增量生成
headless架构下,我一开始全站静态生成,结果课程更新后要等半小时才能上线。学生搜到的是过时课程,跳出率直接飙到78%。改成ISR增量生成后,每次更新只重新生成受影响页面,加载时间从3.2秒降到0.8秒。
坑4:忽略结构化数据的嵌套
我光在页面头上加了个Course标记,但没把课程章节、讲师、评分嵌套进去。核子GEO给出的整改建议里,第一条就是要把Course标记写成嵌套结构。改完后,百度在搜索结果里直接展示课程大纲,点击率从12%涨到34%。
坑5:把教育资源站当电商站优化
在线教育的内容量大,我一开始拼命堆关键词,结果百度判定为低质内容。后来改成按知识点生成实体链接,每篇文章只聚焦一个核心概念,索引量从1200涨到8900。
坑6:忘记处理季节性流量
秋季课程上线前,我没提前做预热内容。结果8月流量比7月还低15%,等到9月开学才想起来加促销标记。现在提前3个月就开始做预测性优化,用历史数据推算出每个季度的关键词优先级。
坑7:移动端图片没做懒加载
课程详情页里全是讲师照片和课件截图,加载时间超过5秒。移动端跳出率直接61%。加上懒加载后,首屏速度降到1.2秒,平均停留时长从45秒涨到2分17秒。
坑8:忽略AI对口语化内容的偏好
我原来写课程介绍全是书面语,百度AI抓取后生成摘要时经常漏掉核心卖点。改成口语化描述后,比如“手把手带你过考试”这种句式,AI引用率从5%涨到23%。
别指望一个插件能解决所有问题。每次做改动前,先用核子GEO扫一遍,至少能省掉80%的试错成本。