案例:Tilda上的商店,受众遍布多个国家。看起来,您连接了JS货币转换小部件,价格在用户浏览器中重新计算——问题解决了。但是当您查看Search Console时,您会发现外国查询的自然流量没有增长。原因是搜索引擎看到的内容与购物者看到的内容不同。
根据一项跨境购物研究,92%的购物者更喜欢看到当地货币的价格,如果价格只显示外币,三分之一的购物者会放弃购物车。这听起来很明显——但有趣的是大多数商店如何解决这个问题,以及为什么这个解决方案会变成一个SEO问题。
JS转换如何工作
大多数货币转换小部件和脚本都按照一种方案工作:页面以原始货币加载价格,然后JS通过API获取汇率并直接在用户的浏览器中重新计算数字。
对于买家来说,这看起来很正常:他们登陆页面,一秒钟后看到了欧元价格。有时加载时会有轻微的闪烁,有时则没有。从视觉上看,它确实有效。
问题不在于用户看不到什么。问题在于搜索机器人看到的页面完全不同。
Googlebot 看到的内容
Googlebot 在初次渲染时会索引页面。根据 Google Search Central 的数据,JavaScript 的渲染可能会延迟:首先,页面的 HTML 版本会被索引,JS 可能会稍后处理,或者根本不处理。
这意味着原始货币(卢布,如果商店最初是俄罗斯的)的价格可能会出现在搜索结果中。德国用户输入查询,在结果中看到“4500 ₽”,点击后,只有在页面加载后价格才会重新计算为欧元。
这同时带来了两个问题。第一个:搜索结果中的摘要显示的是未本地化的价格——这降低了点击率。第二个:如果您使用微数据(schema.org/Product 带有 price 字段),它会以原始货币写入 HTML。搜索引擎会看到带有卢布的结构化数据,并以这种方式在富媒体结果中显示它们。
例如,如果您使用 Tilda,在页面代码中经常会看到元标签或 JSON-LD 标记,如 "price": "4500" 和 "priceCurrency": "RUB"。即使前端的 JS 脚本将显示替换为“€45”,读取原始 HTML 的搜索机器人仍会记录卢布价格,这将导致搜索结果中价格显示错误。
为确保搜索引擎看到您期望的货币,建议通过 Google 富媒体搜索结果测试检查页面。此工具将实时显示 Google 如何解释您的微数据。
有关商品结构化数据(包括价格和货币字段)的更多详细信息,请参阅 Google 关于商品结构化数据的官方文档。
为什么这比看起来更糟
假设您正在为德国市场推广一个页面。在 Google Merchant Center 或自然搜索结果中,买家期望看到欧元价格。如果您的微数据显示“4500 RUB”,这不仅不美观,Google 可能也不会在本地购物结果中显示您的产品。
针对特定市场的 SEO 策略意味着该页面上的内容与受众相符:语言、货币、上下文。JS 转换给人一种本地化的错觉,但可索引内容仍保持原始形式。
服务器端转换:它应该如何工作
当在服务器上进行货币转换时,用户的浏览器会收到一个已经准备好的页面,其中包含所需货币的价格。所有内容都已预先计算,浏览器会收到带有正确数字的现成 HTML。
Googlebot 看到买家看到的内容:欧元价格、正确的微数据、正确的摘要。本地化是完整的——同时适用于用户和搜索引擎。
在这种方法中,汇率取自可靠来源(例如,ECB 或其他 API),并在代理服务器端交付页面时应用。缓存按计划更新。用户在加载时永远不会看到“闪烁”。