问题
Google 的文档中似乎没有识别出“付费墙通知”。我试图让它对所有人可见,但从页面主题和内容中排除,而不会导致隐藏问题。我可以在 DOM 中执行此操作(例如使用role
属性),还是需要在 JSON-LD 标记中执行此操作?
背景
我正在使用客户端 JS 实现网站付费墙,并结合了开放图形标记和 CSS 选择器。
该实现基于 Google 在https://developers.google.com/search/docs/advanced/structured-data/paywalled-content上的编程建议
这个网站上有 3 种类型的内容,在这个实现中,所有 3 种内容都由服务器为每个访问者呈现,而不管付费墙状态如何:
- 免费内容,人人可见;
- 付费墙通知,不是页面内容/主题的一部分,仅在未登录时可见;和
- 付费内容,仅对登录用户和搜索爬虫可见。
类型 2 是造成问题的原因,谷歌没有记录这一点。
HTML
<html>
<head>
</head>
<body>
<div id="div-1" class="non-paywall">
All visitors can see this sentence, whether or not subscribed.
</div>
<div id="div-2" class="paywall-notice" role="dialog">
<!-- This element is the issue in question -->
If you are setting this notice, you are logged out our not subscribed. You cannot see the main content of this page. Please subscribe!
</div>
<div id="div-3" class="paywall">
This section is paid content.
If you can see it, you are a logged in subscriber or a verified crawler (e.g. googlebot or bingbot).
</div>
</body>
</html>
JSON-LD
{
"@context": "https://schema.org",
"@type": "WebPage",
"@id": "https:\/\/foo\/page\/#webpage",
"mainEntityOfPage": {
"@type": "Article",
"mainEntityOfPage": "https:\/\/bar\/article"
},
"isAccessibleForFree": "False",
"hasPart": [
{
"@type": "WebPageElement",
"isAccessibleForFree": "True",
"cssSelector": ".non-paywall"
},
{
"@type": "WebPageElement",
"isAccessibleForFree": "True",
"cssSelector": ".paywall-notice"
},
{
"@type": "WebPageElement",
"isAccessibleForFree": "False",
"cssSelector": ".paywall"
}
]
}
如果付费专区通知 (#2) 被视为与 #1 相同,则爬虫似乎有可能认为它们是页面内容的一部分并包含在与搜索意图的相关性评估中。
我找不到任何官方承认 #2 的存在或如何处理它的指导,同时尊重付费墙标记的目标并避免隐藏问题。
在为客户端付费墙处理 isAccessibleForFree有多种方法,在https://webmasters.stackexchange.com/questions/117936/isaccessibleforfree-and-paywalled-content-delivered-to-googlebots有一个相关问题,这些都不是解决我上面的原始问题。
最理想的情况是,我想按照 Google 想要的方式来实现它……只要我知道那是什么!
更多背景
为了能够向 googlebot 提供付费内容,服务器向所有访问者呈现相同的 HTML。 页面加载后,一些 JS 会检查访问者是否是 googlebot,如果是:
- 删除
.paywall-notice
元素 - 显示
.paywall
元素
也可能存在定期或交互驱动的检查以删除.paywall
非 googlebot 访问者的元素,但如果标记正确显示 googlebot 这些元素是付费墙,则这不会影响这个问题。