itemscope 必须与 itemtype 成对出现在同一元素上,且 itemtype 须为小写 https 开头的完整 url;itemprop 取值严格遵循 dom 规则;嵌套实体需独立声明 scope;json-ld 是 google 主推方案。

单独写 itemscope 没用,它必须和 itemtype 成对出现,且 itemtype 必须是完整 HTTPS URL(比如 https://schema.org/Product),否则搜索引擎完全忽略整块微数据。
itemscope 和 itemtype 必须在同一元素上声明
这是最常踩的坑:把 itemscope 和 itemtype 拆到不同标签里,或者只写一个。浏览器和爬虫只认“声明实体+指定类型”这个原子动作。
-
itemscope是布尔属性,不赋值,写了就生效;itemtype必须是绝对 URL,不能是Product、//schema.org/Person或http://schema.org/Organization - 正确写法:
<div itemscope itemtype="https://schema.org/Article"> <li>末尾不能带斜杠:<code>https://schema.org/Article/会被当成非法 URL - 不要用旧协议或拼写错误:
Schema.org、schema.org、HTTP全部无效,必须小写s+https - URL 类(如
url、image)优先取href或src:@#@#@#@#@#@#@#@#@#@0 - 日期类(如
datePublished)必须用<time datetime="2026-08-10"></time>,datetime属性才是机器读取目标 - 数值类(如
price)必须用content属性显式声明:<div itemprop="price" content="199.00">¥199</div> - 纯文本内容(如
name、headline)只取元素的textContent,不能含子标签 ——<h1 itemprop="name">iPhone <sup>®</sup> </h1>会提取出"iPhone ®",破坏结构化数据有效性 - 错误:
<p itemprop="author">张三</p>→ 解析器只当字符串,不是 Person 实体 - 正确:
<p itemprop="author" itemscope itemtype="https://schema.org/Person"><span itemprop="name">张三</span></p> - 同一父级下多个同名
itemprop(如多个itemprop="review")会被合并为数组,但所有都必须在同一个itemscope内 - 嵌套层级一深,就容易漏掉某层的
itemscope或拼错itemtype,建议每加一层就用 Google URL Inspection Tool 验证一次 -
<meta itemprop="name" content="xxx">这类单值写法,Google 不识别为有效结构化数据主体 - Microdata 无法表达复杂嵌套(如 Article 含 author→Person→sameAs 数组),JSON-LD 天然支持
- 验证时别信源码“看起来整齐”——JSON-LD 语法错(比如末尾多逗号、单引号)会导致整段静默丢弃,必须用
jsonlint.com+ Google 官方工具双验 - 混用 Microdata 和 JSON-LD 可能触发冲突:同一页面出现两个
@type: "Article",Google 可能随机选一个或全部降权
itemprop 的值来源不是“看起来像”,而是 DOM 提取规则
itemprop 不是从任意子节点抓文本,它严格按 HTML 元素类型和属性取值。写错结构,机器就读不到真实值。
嵌套对象必须显式开新 scope,不能靠父级“继承”
当属性值本身是个实体(比如作者是 Person、评论是 Review),不能只写 itemprop="author",必须再包裹一层 itemscope itemtype,并让父级 itemprop 指向它。
microdata 不是万能替代,JSON-LD 才是主流推荐
Google 明确推荐用 <script type="application/ld+json"></script>,microdata 仅适合极简场景,且极易因 HTML 结构变动失效。
真正起作用的从来不是单个 itemscope,而是它和 itemtype、itemprop 构成的三元组。漏掉任一环,机器就读不懂你在说什么;写对了,但没验证,等于没写。











