JSON-LD:独立于 HTML 的脚本格式

JSON-LD(JavaScript Object Notation for Linked Data)是一种基于 JSON 的语义标记格式,其核心特点是将结构化数据以脚本形式独立嵌入页面,不与 HTML 内容混杂,对页面结构侵入性低,是必应等搜索引擎推荐的首选格式。

必应明确推荐使用 Schema.org 这套语义标记标准(相比 RDFa 或 OpenGraph 更优先),而Schema.org支持的主流格式包括 JSON-LD 和 Microdata。

用法示例(标记一篇文章)

<script type="application/ld+json">
{
  "@context": "https://schema.org",  // 声明使用Schema.org标准
  "@type": "Article",  // 内容类型为“文章”
  "headline": "必应语义标记指南解析",  // 文章标题
  "description": "本文详细解释了必应推荐的Schema.org标记格式...",  // 描述
  "author": {  // 作者(嵌套一个“Person”类型)
    "@type": "Person",
    "name": "张三"
  },
  "datePublished": "2025-07-14",  // 发布日期
  "publisher": {  // 发布者(嵌套一个“Organization”类型)
    "@type": "Organization",
    "name": "示例科技博客"
  }
}
</script>

放置位置:通常放在页面的或中,作为独立的 script 标签;

关键属性:@context固定为https://schema.org,@type指定内容类型(如Article、Product),后续属性根据类型定义具体信息。

JSON-LD 与 Microdata 的对比与选择
维度 JSON-LD Microdata
与 HTML 的关系 独立脚本,不侵入 HTML 结构 嵌入 HTML 标签属性,与内容绑定
维护难度 易维护(数据与展示分离) 较复杂(修改 HTML 需同步调整标记)
支持的复杂度 适合复杂嵌套结构(如多层关系) 适合简单结构,复杂嵌套易混乱
搜索引擎推荐度 必应等更推荐(解析效率更高) 支持但优先级低于 JSON-LD

选择建议:

优先使用 JSON-LD,尤其是大型网站或内容结构复杂的页面(如电商产品页、多评论的文章页);若页面结构简单且需要标记与可见内容完全对应,可使用 Microdata。

DEMO

文章(Article) - JSON-LD 格式:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "人工智能在SEO中的应用",
  "description": "探索AI如何改变搜索引擎优化策略",
  "datePublished": "2025-06-15T08:00:00+08:00",
  "dateModified": "2025-07-10T14:30:00+08:00",
  "author": {
    "@type": "Person",
    "name": "李明",
    "url": "https://example.com/authors/liming"
  },
  "publisher": {
    "@type": "Organization",
    "name": "数字营销杂志",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png",
      "width": 600,
      "height": 150
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/ai-seo-guide"
  },
  "image": {
    "@type": "ImageObject",
    "url": "https://example.com/article-cover.jpg",
    "width": 1200,
    "height": 630
  },
  "keywords": "人工智能, SEO, 搜索引擎优化, 数字营销",
  "articleSection": "技术指南"
}
</script>

食谱(Recipe) - JSON-LD 格式

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Recipe",
  "name": "番茄意大利面",
  "author": {
    "@type": "Person",
    "name": "米其林厨师 Marco"
  },
  "datePublished": "2025-03-20",
  "description": "经典意大利风味,酸甜可口,20分钟完成",
  "image": [
    "https://example.com/recipe-main.jpg",
    "https://example.com/recipe-steps.jpg"
  ],
  "recipeYield": "2人份",
  "prepTime": "PT10M",
  "cookTime": "PT15M",
  "totalTime": "PT25M",
  "recipeCategory": "晚餐",
  "recipeCuisine": "意大利",
  "keywords": "意大利面, 番茄, 素食",
  "nutrition": {
    "@type": "NutritionInformation",
    "calories": "450 calories",
    "fatContent": "15 g",
    "carbohydrateContent": "65 g",
    "proteinContent": "12 g"
  },
  "recipeIngredient": [
    "300g 意大利面",
    "4个成熟番茄",
    "1个洋葱",
    "2瓣大蒜",
    "30g 橄榄油",
    "盐和胡椒调味",
    "50g 帕玛森奶酪"
  ],
  "recipeInstructions": [
    {
      "@type": "HowToStep",
      "text": "将番茄用开水烫一下,去皮切碎;洋葱和大蒜切碎"
    },
    {
      "@type": "HowToStep",
      "text": "锅中加热橄榄油,炒香洋葱和大蒜,加入番茄煮10分钟"
    },
    {
      "@type": "HowToStep",
      "text": "按照包装说明煮意大利面至八分熟,沥干水分"
    },
    {
      "@type": "HowToStep",
      "text": "将煮好的面加入番茄酱中,继续煮2-3分钟至入味"
    },
    {
      "@type": "HowToStep",
      "text": "撒上帕玛森奶酪和新鲜罗勒叶即可"
    }
  ]
}
</script>

在原有网站基础上实现 JSON-LD 的方法(核心:数据绑定)
是的,核心就是将页面已有的数据(如文章标题、产品价格等)动态填充到 JSON-LD 模板中,步骤如下:

  1. 确定页面内容类型,创建 JSON-LD 模板
    根据页面类型(如文章、产品、活动),从 Schema.org 选择对应的类型(Article、Product 等),定义模板结构。例如,文章页的模板可能是:

    {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "[文章标题]", // 待填充的变量
    "datePublished": "[发布时间]", // 待填充的变量
    "author": {

     "@type": "Person",
     "name": "[作者名]"  // 待填充的变量

    }
    // 其他属性...
    }

  2. 从现有页面数据中提取变量值
    页面的内容数据(标题、时间等)通常存储在数据库中,或在渲染页面时已生成(如 PHP、Python、JavaScript 动态输出的内容)。例如:
    文章标题可能来自数据库的 article.title 字段;
    发布时间可能来自 article.publish_time 字段。
  3. 将变量动态填充到模板,生成最终的 JSON-LD 脚本
    通过后端语言(如 PHP、Java)或前端 JavaScript,将变量值插入模板,生成完整的 JSON-LD,并嵌入页面的 或 中。
    示例:后端动态生成(以 PHP 为例,假设文章数据存在 $article 变量中)
 <!-- 原有页面的文章标题(用户可见) -->
    <h1><?php echo $article['title']; ?></h1>
    
    <!-- 动态生成的 JSON-LD(搜索引擎可见,用户不可见) -->
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Article",
      "headline": "<?php echo $article['title']; ?>",  // 绑定文章标题
      "datePublished": "<?php echo $article['publish_time']; ?>",  // 绑定发布时间
      "author": {
        "@type": "Person",
        "name": "<?php echo $article['author_name']; ?>"  // 绑定作者名
      },
      "description": "<?php echo $article['summary']; ?>"  // 绑定摘要
    }
    </script>


关键注意事项
数据一致性:JSON-LD 中的数据必须与页面实际内容一致(如标题、价格不能虚构),否则可能被搜索引擎判定为作弊。
嵌入位置:建议放在 中,或 内靠近内容的位置,不影响页面加载性能。
动态更新:如果页面内容更新(如产品价格变动),JSON-LD 也需同步更新(通过后端重新渲染或前端重新生成)。
验证:用 Schema.org 验证器 检查生成的 JSON-LD 是否格式正确,避免语法错误(如逗号遗漏、引号不匹配)。
通过这种方式,现有网站可以低成本地实现 JSON-LD 标记,无需大规模重构,只需在页面中 “附加” 一段结构化数据即可。

创建和集成JSON-LD到WordPress主题的详细步骤

该部分仅登录用户可见

最后修改:2025 年 07 月 21 日
如果觉得我的文章对你有用,请随意赞赏