Shopify Google 渠道

Google 拒的不是 Feed,是落地页:Merchant Center 的多格式变体陷阱

一个卖书的 Shopify 商家,每本书都有纸质、电子、有声三种格式。他用 feed 管理应用把所有数字版从 Google Merchant Center 数据源里排除干净——然后自动审核继续拒登他的纸质书条目。feed 从来不是问题的全部:Google 审的是被提交 URL 的落地页,而那个页面上,电子书仍然在同一个购买表单里一键可买。这篇讲清分界线,和三条有官方文档依据的出路。

TL;DR: Google 的「Unsupported Shopping content」政策明文列出电子书和数字图书属于不可推广的购物内容——数字格式必须留在 Google 展示面之外。但从 feed 里排除只完成了一半:Merchant Center 的自动审核评估的是被提交 URL 的落地页,不只是你提交的数据。当电子书/有声书以可选择、可购买的变体形式存在于同一个产品 URL 上,爬虫看到的就是「一个被提交的 offer,落地页上挂着不受支持的数字商品在售」——feed 再干净也照拒。分界线是:文案里提及「同时提供电子版」允许;把电子版做成被提交 URL 上可购买的变体不允许。三条出路:把格式拆成独立产品(A);做一个只渲染实体变体的代理页面模板,用 requires_shipping 过滤(B);在 GMC 里加属性规则、用 excluded_destination 做 feed 卫生(C)——必要,但单靠它治不了本。

这是我们的 Shopify Google 渠道实战系列第 1 篇。选题证据是一个真实的 Shopify 社区帖子(主题 658986,全文按田野报告标注):一个多格式图书出版商做了最直觉的 feed 层修复,拒登继续;13 个回答之后,仍没有采纳答案。

问题

发帖人 casacarlini 每本书都卖纸质 + 电子 + 有声三个版本,数字版「是业务的重要部分」,从店铺下架不现实。他用 feed 管理应用把所有数字版从数据源里排除——每个 feed 工具都宣传这个修复——然后 Google 的自动审核继续标记他的纸质书条目。

诊断的突破来自一位真的去审计了他目录的回答者(dropfeed):**480 个产品里有 423 个,把 Audiobook / Ebook / Paperback / Hardcover 做成了同一个产品的 Format 选项变体。**四种格式共享一个 URL、一个 item group。这一个结构性事实,解释了为什么所有 feed 层的修复全部无效。

根因:三条有文档的事实,撞在一起

  1. Google 购物政策不支持电子书。「Unsupported Shopping content」政策页明确列出「eBooks and digital books(不含有声书)」——PDF、ePub、MOBI——属于不可推广的内容。所以数字格式必须留在 Google 的展示面之外。这没问题。

  2. Google 审的是落地页,不只是 feed。落地页要求文档写明:当落地页包含多个产品「例如变体」时,你产品数据里的那个产品必须是页面的主要焦点,页面显示的价格必须与产品数据一致。link 属性文档补充:每个产品或产品变体只提交一个链接——而 Google 自己的结构化数据文档演示了变体如何通过 URL 参数预选(如 ?size=small&color=green)。

  3. **在被提交的 URL 上,电子书依然可以购买。**因为电子书和有声书是同一个 Shopify 产品的变体,纸质书 URL 渲染出的同一个加入购物车表单里,格式选择器仍然允许顾客选中——并购买——数字版。自动审核抓取那个 URL,看到的是:一个被提交的 offer,其落地页上挂着一个不受支持的数字商品在售。

社区帖子最终收敛出一个精确的分界线(田野报告,与上述政策页一致):

这就是为什么过滤 feed 毫无效果:商家清理干净的是 Google 读取的数据,而不是 Google 访问的页面。把平装版设为默认选中(让纸质价格先加载)也救不了——数字选项仍然在同一个表单里,一键可达,仍然可买,同一个 URL。

还有一个更安静的放大器:结构化数据。如果产品页的 JSON-LD 为数字变体输出了 offers(很多主题和应用都会),那么即使人类看到的只是一个下拉框,Google 的爬虫也能把电子书读成一个 offer。Google Search Central 的文档描述了 ProductGroup 模式——hasVariantvariesByproductGroupID——用于变体同属一个父产品的页面。对真正的多格式页面,这是正确标记;但当其中一些变体属于不受支持的内容时,它就是负债。

最小复现

不需要碰 Google,在开发店上就能复现这套机制——失败是结构性的,Liquid 层可见:

  1. 建一个产品 dune,选项 FormatPaperback($18,需要物流)、Ebook($9,数字)、Audiobook($15,数字)。
  2. 用你喜欢的任何方式,把数字版从 Google feed 里排除。
  3. 打开预选了平装的 URL:/products/dune?variant=<平装变体ID>
  4. 查看源代码。加入购物车表单提交的是变体 id,而 Format 选择器里三个选项齐全。任何渲染或解析这个页面的爬虫,都会在被提交的 URL 上看到三个可购买的 offer——其中两个是数字商品。

Feed 层排除已验证;页面层暴露原样。拒登以商家报告的精确形状复现。

路线 A —— 把格式拆成独立产品(结构性修复)

纸质、电子、有声各做一个独立 Shopify 产品。只把纸质产品发布到 Google 展示面;数字产品留在店铺里,从纸质页用文字链接过去(「同时提供电子版 / 有声版」)。被提交的纸质 URL 只提供实体格式——这正是能通过审核的形态。

商家的反对是真实的:这会让目录膨胀 3-4 倍(他的原话)。缓解手段存在但不消除成本——批量编辑器、metafield 驱动的交叉链接;要程序化控制可用 Admin GraphQL API(publicationCreate 把产品发布到渠道;渠道可见性是产品级的,标签/metafield 本身不控制同步)。

路线 B —— 代理页面:每个标题一个「仅实体」报价页(主题修复)

保留变体结构。创建一个替代页面模板,只渲染指定产品的实体变体,把这些代理 URL 提交给 Google。

Shopify 主题架构支持替代模板:模板指派给页面,Liquid 模板让你完全控制标记。在模板里用 all_products['your-handle'] 取产品,用 requires_shipping 过滤变体——实体商品为 true,数字商品为 false:

{%- comment -%} templates/page.print-proxy.liquid {%- endcomment -%}
{%- assign book = all_products['dune'] -%}

<h1>{{ book.title }} — 纸质版</h1>

<form method="post" action="/cart/add">
  <label for="fmt">格式</label>
  <select id="fmt" name="id">
    {%- for variant in book.variants -%}
      {%- if variant.requires_shipping -%}
        <option value="{{ variant.id }}">
          {{ variant.title }} — {{ variant.price | money }}
        </option>
      {%- endif -%}
    {%- endfor -%}
  </select>
  <button type="submit">加入购物车</button>
</form>

这套做法买到的,逐条对应官方要求:

两个有文档的约束必须尊重:

代理路线在社区帖中被提出(Maxime_StoreCanary,建立在另一位贡献者的提醒之上);上面的机制是让它能跑起来的、有文档的 Liquid 部件。比路线 A 多写模板,但保住了目录。

路线 C —— GMC 属性规则 + excluded_destination(feed 卫生修复)

帖子里 feed 侧的答案(EmmanuelFlossie)无论选哪条结构路线都值得做。在 Merchant Center 里,「feed rules」已改名为属性规则(attribute rules)(Google 改的,属性规则文档页上写明了)。在你的数据源上加一条规则:当标题匹配数字标记时(如「title contains ebook」),设置 excluded_destination,从 Shopping ads、free listings、display 等全部排除。excluded_destination 属性的文档用途正是这个:阻止产品出现在指定展示面。

要理解路线 C 做什么、不做什么:

同步侧:Google & YouTube 应用把 Shopify 的产品数据同步到 Merchant Center,可自动可手动——无论哪种同步,属性规则都作用于数据到达之后,这正是它能兜住渠道侧可见性设置漏网之鱼的原因。

检查清单

Agent 能接的那段活

选哪条路线是一次性的架构决策。持续的活在它周围:新书上架时重新审计目录(423/480 这个比例就是一个产品一个产品积出来的),盯 Merchant Center 的新拒登,核验每个被提交 URL 是否仍然只渲染受支持的 offer,带上证据去提复审。这是一个定期的监控循环——正是店铺运营 Agent 能接管的活:检查、对照政策、把异常连同证据一起交给人。我们做开箱即用的 Agent 来接这类循环,如果你的周末也耗在这种事上,可以看看。


上文已对照 Google 官方文档(Unsupported Shopping content 政策、落地页要求、link 与 excluded_destination 属性文档、属性规则、产品变体结构化数据)与 Shopify 官方文档(Liquid all_products 与 variant 对象、主题模板架构、Admin GraphQL publicationCreate,latest stable 2026-07)核验,核验时间 2026 年 8 月。社区帖内容(商家目录审计、「可购买变体」诊断、代理页建议、属性规则配方)为 Shopify 社区主题 658986 的田野报告,出现处均已标注。