itemscope必须与itemtype成对出现在同一元素上,且itemtype必须是schema.org的完整https url;itemprop需在后代元素中显式声明,嵌套实体要求itemprop与itemscope紧贴同标签。

itemscope 必须和 itemtype 成对出现在同一元素上
单独写 itemscope 没有意义,浏览器和搜索引擎解析器会直接忽略。它只是一个布尔标记,表示“从这里开始一个独立实体”,但必须立刻配上 itemtype 才能定义这个实体的类型。
常见错误包括:
- 把
itemscope和itemtype拆到父子元素上,比如外层<div itemscope>、内层 <code><section itemtype="https://schema.org/Product"></section>——这完全不生效 - 只加
itemscope,指望子元素自动继承类型——不行,类型必须显式声明在同一个起始标签里 - 用相对路径或缩写写
itemtype,例如itemtype="Product"或itemtype="./schema#Organization"——必须是完整 HTTPS URL - 必须以
https://schema.org/开头,不能是http、www.schema.org或旧版http://data-vocabulary.org/ - 大小写敏感:写成
https://schema.org/organization(小写)会被忽略 - 不能多斜杠或少斜杠:
https://schema.org/Organization/(末尾多斜杠)无效 - 类型要贴合页面主体:企业介绍页用
Organization,不是Product;个人博客首页用Person或WebPage,别硬套BlogPosting -
itemprop必须出现在itemscope元素的**后代元素**中,且不能跨层级悬空 - 值必须来自用户可见文本,或标准辅助标签:
<meta itemprop="sku" content="A123">、<time itemprop="datePublished" datetime="2026-08-11"></time> - 不能靠 CSS 隐藏内容(
display: none或visibility: hidden),否则大概率被跳过 - URL 类字段(如
image、url)必须用<link itemprop="image" href="...">或<meta itemprop="url" content="...">,不能包裹<img>
正确写法只有一种:<div itemscope itemtype="https://schema.org/Organization">
<h3>itemtype 值必须是 schema.org 的完整 HTTPS URL</h3>
<p><code>itemtype 不是随便起的名字,它是结构化数据的“身份证”。解析器只认官方注册过的类型地址,且协议、域名、路径都必须严格匹配。
验证要点:
查类型最稳的方式是直接打开 https://schema.org/,搜关键词,点进具体类型页,复制顶部的 URL。
没 itemprop 的 itemscope 就是空壳
itemscope + itemtype 只是画了个框,框里什么都没有。Google Rich Results Test 会报 “0 个属性”,富摘要根本不会出现。
真正让数据被读取的是 itemprop,但它有硬性约束:
例如标记公司 Logo:<link itemprop="logo" href="https://example.com/logo.png">,而不是 <img itemprop="logo" src="...">。
嵌套实体必须用 itemprop 紧贴包裹
当某个字段本身是个对象(比如 author 是 Person,address 是 PostalAddress),嵌套的 itemscope 必须作为该 itemprop 的**直接子元素**。
错误示范:<div itemprop="author"><div itemscope itemtype="https://schema.org/Person">张三</div></div>——itemprop="author" 没绑定到任何 itemscope,整个嵌套块被丢弃。
正确写法:<div itemprop="author" itemscope itemtype="https://schema.org/Person">张三</div>。注意 itemprop 和 itemscope、itemtype 在同一个标签上,中间不能隔层。
这种紧贴要求容易被忽略,尤其在 CMS 输出或组件化结构中——模板里多套一层 <div class="wrapper"> 就可能破坏语义链。</div>











