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 模板中,步骤如下:
确定页面内容类型,创建 JSON-LD 模板
根据页面类型(如文章、产品、活动),从 Schema.org 选择对应的类型(Article、Product 等),定义模板结构。例如,文章页的模板可能是:{
"@context": "https://schema.org",
"@type": "Article",
"headline": "[文章标题]", // 待填充的变量
"datePublished": "[发布时间]", // 待填充的变量
"author": {"@type": "Person", "name": "[作者名]" // 待填充的变量
}
// 其他属性...
}- 从现有页面数据中提取变量值
页面的内容数据(标题、时间等)通常存储在数据库中,或在渲染页面时已生成(如 PHP、Python、JavaScript 动态输出的内容)。例如:
文章标题可能来自数据库的 article.title 字段;
发布时间可能来自 article.publish_time 字段。 - 将变量动态填充到模板,生成最终的 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主题的详细步骤
此处评论已关闭