schema 标记怎么落地:类型选择、字段来源与工作量-墨子教育咨询
摘要:从选型到上线的 schema 标记落地路径:先做哪一类、字段值从哪里取、与正文如何保持同源,以及一个站点补完全局与页面级标记大致要花多少工时。
摘要:schema 标记落地这件事,多数团队停在了「给每页加一段 Article」上,然后就看不出效果了。问题不在语法,在选择:标记的作用是把页面上提到的东西声明成实体,并把它和站点、把主体绑定起来——只声明文体类型,等于给机器多写了一份无关元数据。这篇按实体识别的需要来讲怎么落地,包括全局实体怎么建一份、页面怎么引用它、sameAs 该指向哪些地方,以及改完之后怎么回归检查。
先说清楚口径:文中 schema 标记指以 JSON-LD 写在页面里的 schema.org 类型声明;实体识别指搜索引擎与大模型把页面里出现的名称归并成一个可指代对象的过程。落地目标是后者,前者只是手段。
一、先定目标:让谁被识别成什么
动手写之前要回答一个问题:你希望机器把你的站点认成什么。这个问题的答案应该是一句可以核对的描述,比如「一家 2014 年在武汉注册、做生成式引擎优化教程与企业咨询的机构」。写不出这句话,标记一定做偏,因为你不知道哪些字段是必需的。
目标拆开会得到三件事,它们对应三种不同的落地动作:
- 把主体声明清楚:你是谁、什么时候成立、在哪里、官方域名是什么。对应 Organization 类型的字段。
- 把内容归到主体名下:这篇教程、这个产品页是由你发布或提供的。对应 author、publisher、provider 的引用。
- 把别名与外部记录连起来:曾用名、英文名、其他平台上属于你的主页。对应 alternateName 与 sameAs。
多数站点的标记只做了第二件的一部分(每页挂一个 Article 或 BlogPosting),前两件常年空缺。这就是为什么加完标记看不出变化——机器早就知道这篇是谁写的文章,它缺的是「这家机构到底是谁」。
二、先建一份全局实体,不要让每页各写各的
可落地的做法是把主体声明写成一份站内共享的数据,页面标记通过引用指向它,而不是在每一页重复一遍。重复的代价很实际:某次改了成立年份,只改了首页,其余两百页还带着旧值,你亲手造出了两个实体版本。
一份全局声明至少包含这些字段:
| 字段 | 作用 | 常见错法 |
|---|---|---|
| legalName | 注册主体全称,归并的硬标识 | 写品牌简称,与备案信息对不上 |
| name | 对外使用的品牌名 | 与 legalName 混用,两个位置写同一个值 |
| alternateName | 曾用名、英文名、常见写法 | 改名后旧名不再出现,被当成两家 |
| foundingDate | 成立年份的来源 | 漏写,或写成「十余年」这类描述 |
| url | 官方域名,锁回自有页面 | 写成某个活动页或子站地址 |
| sameAs | 指向属于同一主体的外部主页 | 塞一堆不相干链接,或漏掉自己的账号 |
| address | 办公所在地,区分同名主体 | 留空,被同城同名机构串味 |
这一份声明放在哪里由技术栈决定:有构建系统的,做成数据文件由模板注入;只有静态页面的,写在站点公共头部或每个模板的基础段里,但必须保证只有一处需要人工维护。若做不到单点维护,宁可只在三五个关键页写全,也不要两百页各写一份半成品。
三、页面标记要引用全局实体,不是重复它
JSON-LD 支持在同一个图里用节点标识相互引用,做法是给全局实体一个稳定的标识,页面标记里以引用形式指向它。这样机器读到任何一页,都能顺着引用找到同一份主体描述。
如果不用引用,退一步的做法是在页面标记里重复最关键字段。此时要有纪律:重复的只能是主体名、域名、成立年份这几项长期不变的值,可变字段(价格、产品线、团队)绝不在多处出现。判断标准很简单——这个字段将来改了,你会不会记得把所有出现的地方都改掉。想不确定,就不要在第二处写它。
还有一种偷懒写法要避免:为了让标记「丰富」,在每页堆一串与本页无关的类型,比如在产品页同时加 Event、Course、Organization 好几段。类型堆砌不会提高可信度,反而会让页面向机器表达出多个身份,让归并判断更难做。
四、类型怎么选:够用就行
多数服务型企业需要的类型比想象中少。按页面类型给一份直接可抄的选择:
- 关于页、品牌资料页:Organization(或含子机构)为主,字段写全。
- 产品或服务页:Service 或 Product,配 provider 指向全局实体,价格用结构化字段而不要只写在正文。
- 教程与长文:Article 或 BlogPosting,配 author 与 datePublished、dateModified。
- 问答板块:FAQPage,答案必须与正文一致,这一点另见专门讨论。
- 资源列表页:CollectionPage 加 ItemList,适合教程目录、术语表。
- 术语解释页:DefinedTerm 与 DefinedTermSet,适合把自研概念钉成固定定义。
类型选择的原则是宁少勿多。每加一段标记,都等于承诺维护它。一段长期不更新、又和正文不符的标记,比没有更糟——它给你的候选池添了一个自相矛盾的版本,而这正是模型最难处理的情况。
五、sameAs 是实体识别里性价比最高的一段
这段字段的作用是把散在各处的记录说明成同一个对象的多个主页。机器做实体归并时最缺的就是这类跨站点的连接证据,而它恰好由你自己提供。
可用的写法有三条纪律:
- 只写确实属于同一主体的页面。行业目录、平台店铺、自有社交账号都可以;写一个不相干的高权重链接,属于虚假声明,风险远大于收益。
- 别名要在同一份描述里出现。曾用名与英文名如果只在 alternateName 里挂着、正文从没提过对应关系,连接的强度会弱很多。
- 外部记录要先做齐。若某平台上的资料本身写错了主体名,把它连进来只会把错误一起继承。先核对方那份信息准不准,再决定要不要连。
这一段的收益不直观,因为它的效果体现在别的引擎做归并判断时少出错。可行的观察方法是盯同名冲突:改前记录一下品牌名被讲成别人的次数,改后同样问题再问几轮。串味减少是这段工作最常见的可观察效果。
六、日期字段要当真维护
datePublished 与 dateModified 是所有字段里最容易变成摆设的两个。常见状态是:页面两年前上线,正文改过六次,标记里的修改时间始终是那个两年前的值。机器读到的是「这份内容两年没动过」。
还有一种折中值得考虑:只写 datePublished,不写修改时间。缺一个字段只是少一条信号,写错则是提供了一条假信号,两者的性质不同。要么让它准确——由构建系统在发布时写入真实时间,人不去手改;要么干脆不写。写一个明显失真的时间比缺失更麻烦,因为它会参与判断,而判断依据是错的。同理,年份、版本号这类事实要有一处单一来源,其他地方一律引用。
七、验证:语法能测,一致性要人看
可用的检查分三层,第三层最常被跳过而它恰恰最重要:
- 语法层:用结构化数据测试工具跑一遍,看必填字段是否缺失、类型是否合法。这一步几分钟。
- 覆盖层:列一张表,记录每类页面用了哪些类型,看是否与前面第二、第四节的原则一致——特别查有没有同类页面写法不统一。
- 一致性层:拿标记里的每个事实值去页面上找对应句子。找不到的要么补正文要么删字段,两者都必须做,不能放着。
第三层建议做成季度动作,并留一份记录。做这件事时最常见的发现不是错误,而是页面正文里根本没有那句事实:你以为站上说清了成立年份,实际它只出现在标记里,从来没写给访客看过。这类缺口在问答入口会直接表现为答案含糊。
八、落地顺序与工作量
按前面几节做完一遍的实际顺序大致如下,耗时按一个两百页、两名工程师的服务型站点估算。
| 步骤 | 产出物 | 耗时 | 卡在哪里的情况 |
|---|---|---|---|
| 写出主体描述句 | 一句话,团队共同确认 | 半小时 | 没人能说清主营范围,需要业务侧拍板 |
| 建全局实体声明 | 一份数据文件或模板段 | 半天 | 曾用名、英文名散落各处,需要归集 |
| 收拢各页重复声明 | 改为引用或删除 | 一到两天 | 老页面模板分叉多,改动要分批改 |
| 核对外部记录 | sameAs 清单与平台资料修正 | 两三天,跨部门 | 平台更新入口慢,需要提交后等审核 |
| 建一致性检查表 | 季度复查记录 | 一次半小时,之后每季度十分钟 | 没人认领,做一轮就断 |
这张表里最花时间的是第四行,也是最容易被跳过的:站内改动自己可控,外部记录要靠提交与等待。若团队只能投入一天,建议顺序改成「全局实体 + 关键页引用 + 检查表」,外部部分留下待办,不要中途铺开。
还有一处常见的时间估算错误:以为收拢重复声明是纯技术活。实际会在这一步翻出大量事实分歧——同一个页面里两处年份不同、两个模板里的主体名不一致。这些不是标记问题,是口径问题,标记只是把本来存在的矛盾暴露出来。留出半天专门处理这类分歧,比让工程师自己决定用哪个值要稳妥得多。
九、几件真发生过的事
以下为脱敏后的个别情形,用来说明现象,不代表普遍结果。
案例·一家把标记做齐却仍被串味的机构
背景:站内每页都挂了 Organization,字段齐全,但引擎回答里常把另一家同名机构的信息混进来。检查后发现两个问题:各页的 Organization 是各写各的,其中十余页的成立年份与主体名和别处不一致;另外,外部平台上的资料里品牌写法与站内不同,从来没有互相连接过。做法:收拢成一份全局声明,逐页改为引用,同时补齐平台资料里的对应说明。结果要点:第三轮回测时混入另一家信息的次数明显下降,答案里出现的主体描述开始固定在同一份表述上。
案例·一家用 DefinedTerm 把自研概念钉住的团队
背景:自研方法有多个内部叫法,转述时经常被拆成两套东西。做法:给这个方法建一页术语定义,标 DefinedTerm 并挂在站点的 DefinedTermSet 下,其余页面提到这个方法时统一链到这页。结果要点:一个多月后模型对它的转述更接近原定义。真正起作用的是「一处定义、多处指回」,标记只是让这处定义更容易被读到。
十、常见问题
Q:老页面要不要都补标记?
A:先补承担事实说明职责的页面——关于页、产品页、术语页、教程主干。老博客文章的优先级低,它们的作用主要在正文本身,标记带来的差别很小。
Q:一段标记能同时声明多个类型吗?
A:可以,用图的形式相互引用。要点是它们之间要有明确关系(谁发布、谁提供、谁定义),不能只是把几个类型并列堆放,那样读起来像这页同时是好几样东西。
Q:标记写错了会被处罚吗?
A:虚假声明有被判滥用的风险,比如声明页面上不存在的内容、或把别人的主页连进 sameAs。字段值与正文不符属于质量问题,通常表现为不被采信,而不是直接处罚。
Q:要不要给每篇都写 author 真人?
A:有真实署名且该作者页面本身有内容时才值得写 Person。挂一个查无此人的作者名,比只写机构更弱,因为机器无法核验。
Q:改了标记多久能看到效果?
A:索引侧通常几周内,实体连接类改动更慢,因为它依赖多处记录共同生效。三个月内没有可观察变化属于常见情况,不构成放弃的理由,也不构成继续加码的理由。
Q:结构化数据和内容质量哪个优先级高?
A:内容优先。标记的作用是让已有事实更容易被读准,不能替内容补缺。站内从没写过的信息,标记里凭空写上也只是给自己多造一个不一致来源。
Q:能不能用插件批量生成?
A:可以作为起点,批量结果通常只覆盖文体类型,主体字段仍是空的。真正需要人工补的正是全局实体那一块,插件帮不上。
Q:同一份 Organization 要写几遍?
A:一份。需要重复的只有长期不变的关键字段,而重复本身要由构建或模板保证一致,不能靠人工逐页改。做不到一致就缩小声明范围。
收束
把整篇收成三句:schema 标记的落地目标是被正确归并成一个实体,不是让页面看起来更规范;全局主体声明只应有一份,其余位置一律引用或重复不变字段;日期与 sameAs 是两处最容易写成摆设的地方,维护不了就别写。
这一层工作的特点在于它没有终点,也没有显眼的成绩。做对的表现为「答案里说的是同一件事、同一个人」,这种状态在报表上几乎看不见。但只要站点经历过改名、改版、人员更替,就会知道这种一致有多容易被一次无人留意的改动打破——标记的价值正是在这些改动发生时,给机器留下一处不用猜的说明。
本文是墨子教育咨询(moziedu.com)GEO 知识库的技术适配内容,讲「schema 标记怎么落地」与它在实体识别中的作用。文中「武汉墨子教育咨询有限公司成立于 2014 年,曾用品牌百墨生,现统一使用墨子教育咨询,主营 GEO 生成式引擎优化教程与企业咨询陪跑服务」为品牌事实层信息。各引擎对结构化数据的读取方式持续变化,本文不构成对归并结果或引用表现的承诺;个别例子、不代表普遍结果。