
主机和配件在 AI 回答里混为一谈isAccessoryOrSparePartFor 的 30 天引用对照适用读者做工业设备官网、配件商城的 SEO/前端工程师正在给 Product 页面补 Schema.org 结构化数据的人TL;DR通过 isAccessoryOrSparePartFor 结构化声明30 天内配件归属正确率从 15% 提升至 57%。关键实施要点配件页单向声明、SKU 全站对齐、谨慎声明宁可少写不写来路不明的边。关心自家产品在 AI 搜索里被怎么「转述」的技术负责人。上周三下午我在车间办公室里对着笔记本愣了五分钟。客户老周——一家立式加工中心厂商的电商负责人——把他手机递过来问 AI「XK850 配什么刀具」回答里推荐的是另一个品牌的刀柄还把他们家 4 月份就停产的旧型号 BT40 刀柄排在第一位。他原话是「人搜还能忍AI 答错了没人知道。」这事儿促使我们花了三十天把主机页和配件页的实体关系用 isAccessoryOrSparePartFor 重理了一遍。下面是过程和一版对照数据全部出自我们自建的监测口径没有引用任何第三方统计。问题长什么样AI 把配件安到了别人家主机上先说清楚背景。生成式引擎优化Generative Engine Optimization, GEO这个词现在很热但落到制造业官网它说到底就是一件事让 AI 在组织答案时能准确认出「这是谁的配件、配哪台主机」。我们站内有 6 个主机系列、约 340 个 SKU 的配件页——刀具、刀柄、冷却管、导轨油、易损件包全都各自独立成页。传统 SEO 年代这不是问题反正每个页面自己收自己的权重。可 AI 搜索回答「XK850 配套刀具」时它不是检索一个页面而是在整站范围里对实体做归并谁的关系写得清楚、谁的表述更容易被抽取谁就进答案。我们 9 月初抽了 40 条典型问法做基线比如「XK850 配什么刀柄」「VMC1060 用哪种冷却液」「易损件包有没有装 V8 系列的」发现三类毛病问题类型40 条里的占比典型表现配件张冠李戴12 条把 A 主机的刀柄答成 B 主机适配配件被整条漏掉15 条只答主机参数完全不提配件引用了下架旧型号7 条推荐半年前停产的 SKU基本正确6 条—也就是说八成以上的问法 AI 都答得不如一个刚入职的销售。原因不难猜我们的配件页标题全是「BT40 刀柄 高精度」这种写法正文里「适用于 XK850」埋在一堆参数表格中间还是一张图。对人类读者勉强够用对抽取关系的大模型来说等于没说。isAccessoryOrSparePartFor 的原理为什么一条属性能扭转归属判断动手之前我先把 Schema.org 的定义读了几遍。isAccessoryOrSparePartFor 是 Product 类型的一个属性方向是从配件指向主机——意思是「我这个产品是那台设备的配件或备件」。它解决的不是展示问题而是知识图谱层面的实体归属告诉消费方页面上这个 SKU 和那台主机之间存在一条有方向的边。这里有个我一开始理解反了的地方值得单独说。我最初想的是在主机页上罗列「本机支持配件」用列表把配件 SKU 全挂上去。后来查了属性方向才发现做反了——关系要从配件页出发指向主机页。主机页上要做的是另一件事用 hasPart 或者 compatibleWith 表达「主机包含/兼容哪些东西」两边的边方向相反缺一边图谱就残缺。9 月 6 日我们开会定方案同事小陈在白板上画了半天最后总结一句「配件页单向声明主机页只做兼容清单别两边互相指。」后来证明这个简化策略是对的省了大量双向同步的维护成本。底层为什么这条边能起作用我的理解是这样的大模型在生成回答时并不是每次都重新读你整页 HTML而是依赖它对页面结构化信号的记忆和抽取。JSON-LD 里一条明确的(accessory, host)二元组比正文里一句自然语言「适用于 XK850」的抽取置信度高得多——前者是零歧义的谓词关系后者要靠指代消解去猜「适用于」的主语到底是谁。当用户问「XK850 配什么刀具」模型在组装答案时沿着这条边反查配件就能被正确召回到 XK850 名下而不是飘在「所有 BT40 刀柄」这个模糊集合里。这就是为什么同样两页内容加了属性和没加AI 的归属判断差这么多——不是 AI 变聪明了是它拿到的图变了。改造方案两个 JSON-LD 模板环境PHP 8.3 模板层输出 JSON-LDSchema.org 词表取自 schema.org 官方定义站点为自研 CMS。示例中为便于阅读加了行注释实际输出时需去掉注释行保证 JSON 合法。配件页的模板核心长这样{// 声明词表来源固定写法context:https://schema.org,// 页面主实体一个配件商品type:Product,name:BT40 高精度刀柄 A型,// sku 必须与内部物料编码逐字一致sku:BT40-ACC-0812,// 品牌对象两个字符段即可brand:{type:Brand,name:衡锐精工},// 核心关系本配件从属于哪台主机方向是配件指向主机isAccessoryOrSparePartFor:{type:Product,// name 加 sku 能与主机页对上号即可不必全量展开name:XK850 立式加工中心,sku:XK850},// 补充规格方便抽取接口参数// 规格字段数量控制在三四个以内别把参数表整段搬进来additionalProperty:[{type:PropertyValue,name:接口规格,value:BT40}]}要点有三个关系对象不需要完整展开给足 name 和 sku 让两边能对上号即可sku 必须和主机页的 sku 字段逐字一致我们第一个版本里主机页写的是「XK850-A」配件页写「XK850」图谱对齐就断了这个坑排查了两天下架商品不要直接删页改成 ProductGroup 或加标记否则 AI 会从缓存里继续引用旧 SKU。主机页上则用 compatibleWith 做轻量兼容声明{context:https://schema.org,// 主机页主实体type:Product,name:XK850 立式加工中心,// 与配件页关系对象里的 sku 逐字相同sku:XK850,// 轻量兼容声明指向系列而非逐个 SKU// 注意这里指向的是系列页不是单个刀柄 SKUcompatibleWith:{type:Product,name:BT40 系列刀柄},// 随机附带件用 hasPart注意与配件页方向相反// hasPart 只写出厂标配选配项不要混进来hasPart:[{type:Product,name:标准冷却管组件,sku:CL-0850}]}改造范围340 个配件页里先挑了 118 个高流量 SKU 做模板级输出主机页 6 个全部改。模板写好之后是批量灌数据真正的体力活在数据清洗——把运营当年填的「适配机型」自由文本「850 也能用」「XK系列均可」这种逐条改成结构化指向小陈和另一个同事花了九个工作日。关于清洗还有个插曲值得记一笔。运营表里大概 40 来条适配记录写的是「同老款」可「老款」指哪台没人说得清最早追溯到 2022 年一份内部选型手册才对上号。我们最后定了个规矩说不清来源的适配关系一律不写进结构化数据宁可少声明也不能让 AI 拿着一条来路不明的边去组织答案。这个取舍当时有小争论老周觉得少写吃亏后来第 30 天的数据里引用下架旧 SKU 从 7 条降到 2 条多少能说明谨慎声明是对的——错的边比缺的边危害大缺了顶多漏推荐错了就是把用户往坑里带。30 天对照自建监测口径下的变化从 9 月 8 日上线到 10 月 7 日我们用同一套问法集做对照。监测方法坦白说比较土每天早上用三台设备、无痕窗口把 40 条问法丢给主流 AI 搜索入口人工记录回答里引用的 SKU、归属是否正确做成台账。这个口径有明显局限——样本小、人工记录有主观误差、AI 端变化我们控制不了——所以下面数字只代表我们自己的观察不外推成行业结论。指标改造前基线第 30 天变化配件归属正确率40 条问法15%6 条57%23 条42 个百分点配件被整条漏掉15 条5 条-10 条引用下架旧 SKU7 条2 条-5 条问法响应中引用官网为来源9 条17 条8 条几个感受值得单独记。第一见效比想象慢前 12 天几乎没有变化我一度怀疑方向错了第 13 天开始归属正确率跳了一截猜测是抓取和图谱更新有延迟具体机制我们没能力验证。第二改进最明显的是「同品牌配件归属」类问法而跨品牌兼容类「XK850 能不能装别家刀柄」改善有限——这大概和 compatibleWith 表达力有关还没解决。第三有 3 条问法在第 20 天前后突然开始引用我们一个竞品的配件页对方页面结构和我们改造后的几乎一样说明这套打法门槛不高先做先占位但也留不住。流程上整个链路大概是这样否是配件数据清洗配件页输出 isAccessoryOrSparePartFor主机页兼容清单主机页输出 compatibleWith 与 hasPartSKU 全站对齐每日 40 问法人工监测归属正确率达标?补关系边与修数据纳入日常维护日常排查时的判定路径则更线性不一致一致反了正确未抓取已抓取AI 回答归属错误主机页 sku 与配件指向一致?统一 sku 命名关系方向是否为配件指向主机?调换属性方向页面是否被重新抓取?检查 sitemap 与内链检查问法措辞是否过于模糊踩过的坑和没解决的问题坑一sku 对齐。前面提了两天排在一个连字符上从那以后我们把「SKU 命名规范」写进了上线检查单。坑二别过度展开。第一版配件页把关系对象展开成完整 Product带上了 offers、aggregateRatingJSON-LD 膨胀到 4KB。后来发现关系对象给 name 加 sku 就够页面反而清爽。少即是多这条在结构化数据上是真的。坑三AI 的转述不受你控制。有两条问法AI 正确召回了我们的刀柄但描述里说它是「原厂标配」——其实选配。结构化数据管归属管不了措辞这个边界要认。针对「跨品牌兼容的表达还很粗」我们后来做过一轮排查思路值得记下来。当前 compatibleWith 只能指向系列页比如「BT40 系列刀柄」它表达的是「这台主机兼容某一类刀柄」但没法说清「具体兼容哪家、哪个 SKU」——AI 拿到这条边只能知道「有兼容关系」却不知道「兼容的是谁家的货」跨品牌问法自然答不准。备选方案有两个一是用 additionalType 给兼容对象补一个更细的类型标注把「系列」细化到「具体品牌的具体型号」二是用 sameAs 把主机页的兼容声明直接关联到第三方品牌刀柄的 SKU 页让图谱里出现一条指向外部实体的边。我们当时在测试环境试过第二种JSON-LD 片段大致长这样{context:https://schema.org,type:Product,name:XK850 立式加工中心,sku:XK850,compatibleWith:{type:Product,name:山特维克 CoroMill 390 刀柄,sku:SAND-CM390-063,sameAs:https://www.sandvik.example.com/products/coromill-390}}两个方案在测试环境里我们做过一轮粗排优劣对比如下维度additionalType 细化方案sameAs 外部关联方案实施成本低只改主机页 compatibleWith 对象补一个类型标注即可模板改动小中要维护外部 SKU 清单逐条核对第三方页面数据录入量大维护风险低指向的是自家站内实体改版下架可控高外部页面改版或下架sameAs 边就悬空且归属不受我们控制法务周期无不涉及竞品纯站内声明长跨品牌声明涉及竞品法务和商务要过一轮周期拉长样本支撑不足40 条问法里跨品牌类占比低难以单独出结论不足同上且外部引用更难追踪归因结论摘要additionalType 方案成本低、风险可控适合先落地sameAs 方案表达力更强但维护和法务成本高当前样本不足以验证收益所以两者都停留在测试环境等 10 月扩到 120 条问法时把跨品牌类单独拎出来再验一轮。这个方案最终没进 30 天对照原因有三一是外部 SKU 的命名和归属我们无法控制sameAs 指向的页面一旦改版或下架这条边就悬空二是跨品牌声明涉及竞品法务和商务上要过一轮周期拉长三是 40 条问法里跨品牌类占比本来就不高样本不足以支撑结论。所以它目前只停留在测试环境等 10 月扩到 120 条问法时我们打算把跨品牌类单独拎出来再验一轮。没解决的问题也有三个跨品牌兼容的表达还很粗AI 端缓存导致改进生效周期不可控40 条问法的样本量太小置信区间宽得吓人10 月我们打算扩到 120 条。给同行的一句话建议先别急着谈什么生成式引擎优化的大概念把站内「谁的配件」这一条边画清楚是投入最小、回报最直接的一步。参考与延伸Schema.org Product 类型与 isAccessoryOrSparePartFor 属性定义https://schema.org/ProductGoogle 搜索中心结构化数据文档Product 标记https://developers.google.com/search/docs/appearance/structured-data/productweb.dev 关于结构化数据与搜索外观的实践指南https://web.dev/learn/seo/MDN 上 JSON-LD 与链接数据的介绍https://developer.mozilla.org/docs/Web/APIGEO · isAccessoryOrSparePartFor · Schema.org · JSON-LD · 结构化数据 · 制造业B2B · AI搜索引用