跳至正文
Shopify · Google SEO

Shopify 面包屑与品牌信息结构化数据:能标什么,不该标什么

// / / 光算科技

面包屑标注能不能让搜索结果里出现一条路径,前提是页面上真的有这条路径,而且点得进去。品牌信息那部分能标的比大多数人以为的少得多,写多了反而是在给自己挖坑。这两件事经常被混在一起做,结果是一套标注描述了不存在的层级,另一套声称了不存在的资质。

面包屑标注解决的是层级表达,不是排名

Google 的面包屑结构化数据文档对它的作用说得很克制:页面上的面包屑表示该页面在站点层级里的位置,能帮助用户理解和浏览站点,用户可以从轨迹的最后一级逐级向上走。文档里还有一句关键的话——Google 使用页面正文中的面包屑标注来对信息归类。正文这个词要留意,层级必须是页面上真实存在、用户看得见的东西;藏在 head 里只写给爬虫看的一套层级,与页面实际导航对不上,就没有意义。

能标与不该标的分界:层级要真实存在,信息要可核实

层级要真实存在,信息要可核实(光算 · 示意图)

先确认页面上真的有这条路径

Shopify 主题的产品页面包屑多半靠集合上下文生成。同一件产品从 A 集合点进去,显示的是「首页 > A 集合 > 产品」;从 B 集合点进去,路径跟着变;直接粘贴产品地址打开时没有集合上下文,模板往往退化成「首页 > 产品」,有些主题干脆不显示。三次访问三条路径,标注跟着哪一条就值得想清楚。

  1. 从首页点进一个集合页,再点进某件产品,记下面包屑的每一级。
  2. 换一个集合,再点进同一件产品,对比第二次结果。
  3. 直接粘贴产品地址打开,看第三次结果。
  4. 三次不一致时做决定:统一成一条与导航一致的路径,或者不标。不要标一条页面上根本没有的层级。
  5. 决定之后,抽查两个集合、两类产品,确认模板在所有情况下都按同一个规则输出,而不是只在默认情况下正确。

如果主题允许,最稳的做法是把面包屑的层级固定为「首页 > 一级分类 > 产品」,一级分类取导航里的分类,而不是取用户从哪个集合进来。这样标注与导航、与站点结构一致,也不会因为入口不同而漂移。

数据长什么样

面包屑用 BreadcrumbList 表达,核心是 itemListElement 数组,每项一个 ListItem,带 position 和 name,中间的层级带 item 地址。下面是 Google 文档里同构的最小示例。

核对面包屑的三步:工具只能查结构,查不出层级对不对

工具只能查结构,查不出层级对不对(光算 · 示意图)

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "首页", "item": "https://example.com/" },
    { "@type": "ListItem", "position": 2, "name": "户外装备", "item": "https://example.com/collections/outdoor" },
    { "@type": "ListItem", "position": 3, "name": "折叠水壶" }
  ]
}
</script>

最后一项没有 item 字段,因为它是当前页面自身。position 从 1 开始且要连续,name 用页面上显示的那个名称,item 必须是绝对地址。中间某一级如果页面上不可点击,或者名字改了而标注没改,这条路径对用户就是错的——面包屑的价值在于用户能顺着它一级级往上走,标了却走不通,比不标更糟。

用 JSON-LD 还是微数据,Google 的文档允许选择,重点是结构与值正确,格式本身不是分界线。同一个页面里不要一半用 JSON-LD 一半用微数据去描述同一条路径,也不要为了多凑一段而在页脚再插一份简化版面包屑标注——多出来的那份只会让来源更难定位。

集合页与文章页的层级从哪来

产品页的层级还能靠集合上下文推出来,集合页就不行了:Shopify 的集合没有父级字段,二级分类的从属关系只存在于导航和集合命名里。所以给集合页写面包屑时,层级要照导航现有的结构写,不要让模板按集合标题去猜。一份典型结构是「首页 > 户外装备 > 露营炊具」,前提是导航里确实存在「户外装备」这一层并且能点进去;导航里没有这层,标出来就是凭空的。

博客文章的情况不一样。文章天然挂在某个博客下,路径通常是「首页 > 博客 > 文章标题」,这是页面上真实成立的关系,照实写就好,不需要为了显得层级深再去造一条分类路径。文章页的结构与选题方向写在Shopify 博客 SEO 那篇里。

品牌信息:能被文档支持的只有很小一块

Google 的产品结构化数据文档除了讲产品标注,还建议为电商业务的政策单独提供结构化数据,并且要把它们嵌在 Organization 标注下面,文档里点到的是退换货政策与会员计划两项。这句话值得细读:Organization 在这里的角色是承载业务政策的位置,文档没有说标注 Organization 本身会换来排名或者额外的结果展示。把品牌信息标注当成品牌曝光手段,方向就偏了。

实际写的时候把三类东西分开:

  • 页面上确实存在、用户能读到的:品牌名、公司主体、联系方式、退换货与配送条款、所在地。这些应该出现在页面内容里,缺失的是内容,不是标注。
  • 页面结构支持标注的:上面那类业务政策,以及面包屑层级。
  • 不该标的:没有的资质、认证、评分、获奖、合作方。没有真实来源的信息不要进任何结构化数据,这一点没有例外。

评分是最容易被乱用的字段。产品评价类标注需要真实的评价来源与页面展示,页面上没有评价却标了评分,属于标注与可见内容不一致,一旦被人工核到,处理的是整个店铺的标注资格,而不是某一个字段。评价数据从哪里来、页面怎么显示,属于内容层面的事,先把评价体系做出来再谈标注。

另一处常见做法是给页脚的公司信息加 Organization 标注。它在全站重复出现,本身不算错,但要确认里面写的名称、地址、联系方式与页面上显示的一致;开了多市场之后,不同市场的页面可能由不同主体承担,别让一份标注里的说法与另一个市场页面上的说法互相打架。

发布前查一次,发布后要理解两件事

面包屑文档给出的顺序值得照做:先确认页面能被访问,没有被 robots.txt、noindex 或登录要求挡住;再用富媒体测试工具验证并修掉致命错误;页面没问题就可以请求重新抓取;最后提交 sitemap,方便后续变化被及时发现。非致命的问题也值得顺手修,文档把这类提示描述为有助于提高标注质量,但不影响是否有资格获得增强展示。

发布后要接受两件事。第一,验证通过不代表会显示。面包屑这块,文档只说功能在桌面端、在所有提供 Google 搜索的地区和语言可用;结果增强是否出现由各个搜索体验自行决定,并且会随时间变化。第二,测试工具与报告给出的状态是搜索引擎的解读,不是页面的绝对真相,两边的差别单独写过一篇:富媒体结果核对:报告与实际展示的差距。整页字段该怎么逐项对(价格、库存、评价、运费这些同一批页面上的信息),步骤在产品结构化数据核对里;面包屑的层级对不对,要靠上面那三步走查,工具看不出来。

同一页出现两套面包屑,是这类标注最常见的失败方式

Shopify 上的典型事故是主题自带一套 BreadcrumbList,某个 SEO 或评价类应用又注入一套,两套层级还不一样——一套带集合,一套不带;一套名字取自产品标题,一套取自菜单。搜索引擎在同一个页面上收到两份相互竞争的层级声明。

排查只做三步:在当前页源码里搜索 BreadcrumbList,数一数出现几次;出现两次以上时定位来源,看它是主题模板输出还是应用注入的;决定留哪一套,然后处理另一套。区分这两者有个简单办法,用页面源码和渲染后的 HTML 各看一次——主题输出的通常在源码里就有,只靠脚本加上去的要等渲染。渲染与源码的差别,Google 关于 JavaScript 与 SEO 的说明把边界讲得比较细:Google 能看的是渲染后可见的内容,服务器端渲染或预渲染能让这件事更确定,而且不是所有抓取方都能执行脚本。

面包屑、导航、URL 要放在一起看

面包屑描述层级,导航决定用户和爬虫能不能走到那一层。Shopify 的菜单在后台的内容菜单里维护,显示在主题的哪个位置由主题设置决定,官方的菜单与链接说明只讲了这一层;至于菜单该放几个一级分类、悬停与点击怎么兼容,属于主题层设计,取舍写在大型菜单与导航设计那篇。导航里如果一级分类指的是一个带参数的筛选地址,或者指向空集合,面包屑标得再整齐也没用。

URL 形态同样影响层级表达。同一件产品能通过集合路径和产品路径两种地址访问时,面包屑该用哪一条要跟 canonical 的处理保持一致,这类问题在同一件产品出现两种路径那篇里按主题里 within 的用法查过一遍。

哪些情况不值得为它花时间

站内只有一层分类、产品页上一级就是首页时,面包屑能表达的信息本来就有限,标注它属于合规但收益很低,把时间放在集合页本身的标题、正文与内链上回报更高,思路见集合页 SEO:标题、描述、正文与内链怎么安排。业务政策那块同理:退换货、配送、联系方式的页面还没写或者写得含糊,先写页面,结构化数据是把已有事实说清楚,不能替代缺失的内容;外贸站这几页通常在外贸建站阶段就要定下来,后面再补成本更高。