结论是用 script 标签内嵌 JSON-LD 是当前最稳妥、Google 最推荐的 LocalBusiness 结构化数据实现方式;因其与 HTML 解耦、容错性强、解析优先级高,而 Microdata 和 RDFa 易受模板变动、JS 动态渲染及 DOM 嵌套错误影响失效。

直接说结论:用 script 标签内嵌 JSON-LD 是当前最稳妥、Google 最推荐的 LocalBusiness 结构化数据实现方式,不是加 meta,也不是靠 class 名硬猜。
为什么不用 Microdata 或 RDFa 标记 HTML 元素
Microdata(比如在 div 上加 itemscope itemtype="https://schema.org/LocalBusiness")理论上可行,但实际中极易因模板变动、CMS 渲染顺序、JS 动态注入内容而失效。RDFa 更复杂,且 Google 已明确表示对 JSON-LD 的解析优先级和容错性更高。
常见错误现象:Rich Results Test 工具报 “No structured data detected”,但页面明明写了 itemprop="name" —— 很可能因为属性没正确嵌套,或父级 itemscope 被意外截断。
- 模板里
div被 CMS 自动闭合,导致itemprop悬空 - JS 后续修改了 DOM,但 Microdata 不随 DOM 更新自动重解析
- 多语言站点中,
itemprop值被 i18n 插件异步替换,结构化数据仍读取初始 HTML 值
JSON-LD 必须填哪些字段才可能出本地富结果
Google 不强制所有字段,但以下 7 个是触发“本地商家卡片”(含电话、营业时间、评分等)的硬门槛。缺任意一个,大概率只当普通网页索引,不进本地搜索增强池。
立即学习“前端免费学习笔记(深入)”;
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
-
@context必须是"https://schema.org" -
@type必须是"LocalBusiness"(注意大小写,不是"localbusiness") -
name:必须与 NAP(Name-Address-Phone)在线一致,不能是“优惠价”“限时特惠店”这类营销话术 -
address:必须是PostalAddress对象,且包含streetAddress、addressLocality、addressRegion、postalCode、addressCountry -
telephone:格式要带国家码,如"+86 21 1234 5678";纯数字如"12345678"会被忽略 -
url:必须是该商家主页的绝对 URL,且与 Google Business Profile(原 GMB)后台填写的网站一致 -
sameAs:至少填一个主流平台主页(如微信公众号、大众点评、美团链接),帮助 Google 关联实体
营业时间怎么写才不被误判为“全天营业”
openingHoursSpecification 是最容易写错的部分。用字符串如 "Mo-Su 09:00-18:00" 看似简洁,但 Google 不识别这种简写 —— 它只认每个工作日单独声明的 DayOfWeek 对象。
错误示例:"openingHours": "Mo-Fr 09:00-17:00" → Rich Results Test 显示 “Invalid value for openingHours”
正确写法(片段):
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "09:00",
"closes": "17:00"
}
- 周末不同?必须拆成两个独立对象,不能合并
dayOfWeek数组 - 中午休息?需额外加一个
"dayOfWeek": ["Monday"], "opens": "13:00", "closes": "18:00" - 节假日临时调整?Google 目前不支持动态节日规则,只能手动更新或通过 Search Console 提交变更
上线后怎么快速验证有没有生效
别只信插件或 CMS 自带的“结构化数据检测”按钮,它们常缓存旧版本或跳过 script 内容。
- 用 Google 官方
Rich Results Test工具,粘贴**线上 URL**(不是本地 HTML 文件) - 若提示 “Page fetched successfully” 但无数据,检查是否被 robots.txt 屏蔽,或服务器返回了
X-Robots-Tag: noindex - 确认
script标签在<head>或<body>顶部,且未被 JS 删除(比如某些 A/B 测试 SDK 会清空所有script[type="application/ld+json"]) - 上线 3–5 天后,在 Search Console 的 “Enhancements > Events”(注意:这里也管 LocalBusiness)看是否有“Valid with warnings”条目
最容易被忽略的一点:地址里的 addressRegion 必须用标准行政区划名(如 "Shanghai",不是 "SH" 或 "Hu Dong"),否则 Google 无法地理定位,整个 LocalBusiness 就退化成普通 Organization。


















