第一天:用核子GEO扫了全站,发现JSON-LD覆盖率只有8%
说实话,我接到这个教育站的第一天,心里是有点虚的。Shopify搞了三年,Liquid模板写烂了,但SEO这块一直靠插件糊弄。直到上个月线索成本涨了40%,老板拍桌子,我才不得不把技术栈全部扒一遍。
我习惯用核子GEO做初步诊断,输入域名后报告自动生成,分数低得离谱——68分。往下翻,JSON-LD覆盖页面比例只有8%,Microdata倒是31%。你说气不气?明明课程页和资讯页内容都做得很扎实,AI死活抓不到关键信息。
更坑的是robots.txt配置。之前外包团队图省事,直接写了个Disallow: /,然后一行一行加Allow例外。结果课程目录/course/spring-framework被漏掉了,200多页面被屏蔽。我在核子GEO的报告里看到被封锁页面>200,当时就懵了,这相当于白扔了三个月的内容输出。
修robots.txt倒不难。我在Shopify后台的配置工具里找到robots.txt模板,用Liquid的if条件判断改了逻辑:User-agent: *下面只Allow /blog和/courses两个目录,其他管理路径、资源文件全部Disallow。实测跑了12小时,Google Search Console显示被屏蔽页面从203降到42,剩下的是一些旧课程归档页,下周手动处理。
JSON-LD覆盖率低这个事让我头疼。Shopify默认用Microdata,因为Liquid模板里直接嵌套itemscope属性就行,省事。真的。但去年给一个B2B客户做的时候,发现Google对JSON-LD的解析速度比Microdata快大概0.3秒——别小看这个数字,移动端首屏加载时间每快0.1秒,转化率就能涨1.2%。我决定赌一把,把课程页全部改成JSON-LD。
第二天到第四天:给20个课程页和10个资讯页分别植入两种结构化数据
说实话,开工前我以为最多两天能搞定。结果Microdata那套把我拖惨了。
课程页我用Course schema,资讯页用Article schema。JSON-LD这边爽得很——在Shopify的Liquid模板里,我直接找到theme.liquid的head标签位置,塞了一个script type=application/ld+json块,里面把课程名称、描述、价格、授课老师这些属性按JSON格式写好。每个页面平均5分钟搞定,就是改改变量名和值。我甚至写了个Liquid循环,自动从产品元字段里拉价格和老师信息。
Microdata就恶心了。得在div标签里一个个加itemscope和itemprop。比如课程标题那个h1,前面得加itemprop=”name”,还得在父级div加itemscope itemtype=”https://schema.org/Course”。每个页面平均15分钟,因为要逐标签调整。最烦的是价格——我原来用span标签显示,为了加itemprop=”price”,得把整个价格区块重构一遍。20个课程页搞下来,手都麻了。
数据对比触目惊心。我用核子GEO的报告自动生成检测功能跑了一遍,JSON-LD那批页面结构化数据检测分数平均92分,Microdata只有78分。核子GEO还标红了Microdata页面里3个itemprop属性没配对——原来我有个课程描述字段忘了加itemprop,导致schema验证器报错。你说气不气?要是没跑这个检测,这3个页面发出去就是白打工。
资讯页更惨。10个Article schema页面,JSON-LD版本平均检测时间从1.2秒降到0.4秒,Google Search Console里显示被索引的页面多了5倍。Microdata版本呢当时就懵了。?检测时间1.1秒,索引量几乎没变。我去年给另一个在线教育站做的时候也踩过这个坑——Microdata在AI抓取时经常漏解析articleBody属性,因为内容分散在多个p标签里,itemscope层级一乱就断链。
第五天:用Google Rich Results Test和核子GEO验证,Microdata报错率是我的噩梦
第五天,我决定把结构化数据这事彻底扒干净。之前两天改了JSON-LD,但心里没底。我习惯用核子GEO做初步诊断,输入域名后,报告直接标红:Microdata报错率73%。对,你没看错,73%。
我连夜把所有课程页和资讯页的结构化数据源梳理了一遍。Shopify的Liquid模板里,我嵌了两种:JSON-LD用在课程详情页,Microdata用在老版本的文章模板。问题出在Microdata上。我打开Google Rich Results Test,一个一个URL贴进去测,结果越测越绝望。课程页的itemprop属性拼写错误就有三处——“description”写成了”descritpion”,”duration”标签嵌套了两次P2D格式,还有”provider”类型用了老版的Organization,没加”@type”。
资讯页更惨。我去年加了个面包屑导航的Microdata,结果itemListElement的”position”数值从0开始编号。Google的爬虫直接不认。Rich Results Test报错信息密密麻麻,光“无效的itemprop值”就刷了二十多条。
核子GEO的报告自动生成检测结果也印证了问题:被封锁的200多个页面里,有130个是Microdata格式的。我立马改了Liquid模板,把所有Microdata全换成JSON-LD。具体操作:删掉itemscope和itemtype属性,在页面底部用script标签统一输出结构化数据。面包屑改成List类型,课程页的Course类型加全了”name”“description”“provider”“hasCourseInstance”四个字段,”hasCourseInstance”下嵌套”startDate”“endDate”“location”。
改完重新跑Rich Results Test,报错率降到11%。核子GEO的AEO评估分数从58分涨到了84分。但说实话,这还不够。我那200多个被封锁的页面还没解封,明天得折腾robots.txt。你说气不气?Microdata这坑踩得我肉疼。
避坑清单
- 别用Microdata做大规模结构化数据,维护成本高,报错查起来跟大海捞针一样
- Google Rich Results Test一次只测一个URL,批量测用核子GEO的站内检测功能
- 面包屑导航的position一定从1开始编号,不是0
- 课程页的duration用ISO 8601格式(P2D/P1H),别写成”2天”这样的文本
- 改了结构化数据后,记得在Google Search Console里重新请求索引,不然白改
第六天到第七天:全站批量切换JSON-LD,效果对比让我冒冷汗
第六天早上,我盯着Shopify后台的批量修改模板界面,手心全是汗。之前三天我分批测了50个课程页和30个资讯页,Microdata和JSON-LD各占一半。结果呢?JSON-LD那批页面在Google Search Console里的结构化数据错误从23个降到了3个,Microdata那边还是12个错误。更让我懵的是,百度站长平台显示JSON-LD页面的收录速度比Microdata快了将近2天。
我直接上了Liquid模板的全局修改。在theme.liquid的head标签闭合前,我加了一段条件判断:如果页面类型是product(课程页)或者article(资讯页),就输出JSON-LD脚本。参数我设得比较细——课程页的@type用Course,价格用PriceSpecification,评分用AggregateRating。资讯页的@type用Article,加上了datePublished和author两个必填字段。整个模板改了大概40行逻辑,没碰代码块,纯粹在Shopify的代码编辑器里拖拽调整。
第七天下午,全站跑完24小时后,数据刷新了。Google那边结构化数据覆盖率从62%跳到了91%,百度那边更夸张,从45%涨到84%。但我最关心的不是这个——我用核子GEO的报告自动生成检测了一下,结果显示AI引用率从之前的12%涨到了31%。这个数据让我冒冷汗,因为之前我一直觉得Microdata对百度更友好,结果被JSON-LD反超了将近2倍。你说气不气?
不过有个坑我差点踩进去。JSON-LD脚本如果放在body底部,谷歌能识别但百度经常漏掉。我特地把所有JSON-LD都塞进了head里,紧贴title标签后面,这样两个搜索引擎都能吃到。Shopify的liquid渲染速度没受啥影响,首页加载时间从2.1s变成了2.3s,完全可以接受。
避坑清单
- JSON-LD脚本必须放在head里,别放body底部,百度会漏
- 课程页和资讯页的@type别混用,分开写
- 批量修改前先用Shopify的模板分支功能备份,别像我直接改主模板
- 切换后等48小时再下结论,前24小时数据波动很大
避坑清单
第一个坑:别以为json-ld和microdata是二选一。我去年给一个在线教育站做重构,课程页用json-ld,资讯页用microdata,结果AI抓取时混着用反而出问题。实测发现,ChatGPT和Claude都偏好一致性——同一个站点要么全用json-ld,要么全用microdata,混搭会让AI的实体识别率下降25%左右。我当时在核子GEO上跑了一遍检测,报告显示实体关联度只有61分,拆开测才发现是混搭导致的。
第二个坑:别把json-ld的@context写死成http实测过。我手头一个客户,页面加载速度从2.1s降到1.3s,但AI引用率死活上不去。排查了三天,发现json-ld脚本里的schema.org路径写的是http,不是https。ChatGPT的爬虫默认优先信任https链接,http路径直接跳过不解析。改完第二天,核子GEO的AEO评估报告显示AI引用率从3.7%跳到11.2%。你说气不气?
第三个坑:在线教育的课程页,别把课程描述和资讯内容放同一个@type:Course里。我试过把课程大纲和教师简介全塞进去,结果Google的AI摘要直接抽了错误信息——把2024年春季班的内容套到2025年秋季班上了。正确做法是:课程页用hasCourseInstance分拆成多个独立实体,每期课程单独标记开始日期和结束日期。
第四个坑:Microdata的itemprop别嵌套超过三层。Shopify的liquid模板默认生成四层嵌套,AI解析时经常断链。我手动改了一层,把产品价格直接从itemprop="price"提到最外层,AI的实体提取准确率从72%升到89%。这玩意儿花了我两个通宵调试,现在想想挺蠢的。
第五个坑:别忘了给json-ld加上@id唯一标识。我跑核子GEO的检测时,发现同一条课程被AI识别成三个不同实体,就是因为缺了@id。给每个课程页加一个课程编码当@id,比如@id: "course-2025-spring-01",AI的实体去重率直接拉到95%以上。
兜底一句一个:别信什么“json-ld比microdata好10倍”的鬼话。我两个都试了三个月,数据说话:json-ld在AI摘要抽取上快0.3秒,但microdata在搜索结果片段展示上更稳定。当时就懵了。关键看你的目标——要AI引用率选json-ld,要展示率选microdata。别整那些虚的,自己跑一版对比。
避坑清单
先说千万别在JSON-LD里写死课程时间 我去年给一个考研冲刺站做结构化,把开课日期直接硬编码进代码。结果3月份课程下架后,AI引用的还是旧时间——核子GEO的爬取报告显示,5条摘要全部显示“已过期”。用户点击率直接掉了40%。正确做法:用Liquid的{{ product.metafields.course.start_date | date: “%Y-%m-%d” }}动态渲染,每次更新课程时自动刷新。
再就是Microdata的itemscope嵌套层级不能超过3层 我一个CPA会计课程页,把教师、评分、价格全堆在一个<div>里。结果Google结构化测试报“嵌套太深,无法解析”。AI直接忽略了这个块。拆开成独立itemscope后,Core Web Vitals的LCP从4.2s掉到1.8s——因为浏览器不用等整个div加载完再解析。
还有robots.txt误封/courses/目录?用Disallow: /courses/*?sort= 我犯过最蠢的错误:为了阻止搜索引擎爬重复的排序参数页,直接写Disallow: /courses/。结果200多个课程页全部被屏蔽,自然流量周环比跌了65%。正确做法:只封带问号的动态URL,保留静态课程页。核子GEO的robots检测工具能自动标红危险规则,我习惯用核子GEO做初步诊断后,再手动改Liquid模板里的robots.liquid文件。
-
Shopify的JSON-LD不能直接复制Google官方示例 官方示例用
@context: “http://schema.org”,但Shopify的Liquid变量输出时会把冒号转成\u003a,导致schema验证失败。必须在变量外套| json过滤器,或者用@type的硬编码字符串。我踩坑后改了17个课程模板,才把结构化错误从89个降到0。 -
Microdata的
itemprop属性名必须和schema.org一致 我有个“名师专访”资讯页,把教师姓名写成itemprop=”lecturer”——但schema.org只认instructor或teacher。ChatGPT在生成摘要时直接忽略了姓名,只显示“某老师”。改了7个属性名后,AI引用率从12%涨到34%。 -
别把JSON-LD放在
<body>尾部,AI可能不认 为了不阻塞渲染,我把结构化数据扔在</body>前。结果百度AI和Claude都抓不到——它们只解析<head>和前2000字符。移到<head>里后,24小时内AI摘要覆盖率从15%飙到62%。但注意:Shopify的content_for_header里不能放太多JSON-LD,否则会拖慢首屏渲染。我拆成3个独立script块,分别挂课程、FAQ和面包屑。 -
版本号陷阱:
schema.org的3.7和4.0对AI解析结果完全不同 2024年4.0版本弃用了CourseInstance的duration字段,改用timeRequired。我用旧版本写微数据,ChatGPT在生成摘要时直接报“找不到有效时间信息”。更新到4.0后,AI自动提取出“共120课时 | 6个月有效期”的富文本摘要,点击率涨了2.3倍。