JSON-LD 和 HTML 描述同一位表演者

describing the same performer by JSON-LD and HTML

正如 google 在 Introduction to Structured Data 中所说:

Markup should not be used to hide content not visible to users in any form, since it might create a misleading or deceptive search experience. For example, if the JSON-LD markup describes a performer, the HTML body should describe that same performer.

我想知道是否有一种特定的方法可以在 JSON-LD 和 HTML 代码中添加相同的数据,或者我可以使用任何我喜欢的方式来表示我的 html 代码(与 JSON-LD 中的内容相同)? ,例如:

<!-- script -->
<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "Question",
    "text": "What is attr_accessor in Ruby?",
    "text": "I am having difficulty understanding Ruby attr_accessors, can someone explain them?",
    "acceptedAnswer": {
        "@type": "Answer",
        "text": "the answer for this qustion is bla bla bla bla",
        "dateCreated": "2010-12-01T22:01Z",
        "author": {
            "@type": "Person",
            "name": "someuser"
        }
    }
}
</script>
<!-- html -->
<div>
<h1>What is attr_accessor in Ruby?</h1>
<p class="question">I am having difficulty understanding Ruby attr_accessors, can someone explain them?</p>
<p class="answer">the answer for this qustion is bla bla bla bla</p>
</div>

这可以通过 jQuery/Javascript 完成,但如果您不熟悉这些,这可能是使用 Google 跟踪代码管理器动态生成结构化数据的一个很好的用例。

使用GTM的基本流程:

  • 您在 Google 标签管理器中创建一个 "Custom HTML" 标签,其中包含您的整个 JSON 脚本。

  • 根据您的需要,您可以将 GTM 的内置变量用于页面上的 select 特定 HTML 元素。您可能需要创建一个 "user-defined variable",它基本上包含 Javascript 到 select 特定 HTML 元素的内容。

  • 在您的 JSON 脚本中 - 您想要动态的键将指向您定义的 GTM 变量。

  • 您可以通过添加 GTM 'Trigger' 指定要将脚本添加到哪些页面。

  • 在页面加载时,GTM 将根据该特定页面的内容动态填充您的 JSON-LD 脚本。

这是非常可扩展的,特别是当您尝试将结构化数据添加到博客文章或产品页面时,它们都使用相同的模板,因此具有相同的基本 HTML 结构。

有几个教程可以引导您完成此操作,我不会 link 到这里,但可以通过谷歌搜索 "dynamically generated structured data google tag manager" 轻松找到它们。