企业官网改版GEO数据对比:把 JSON-LD 从手写改成 CMS 数据库自动生成后,引用率翻了一倍
企业官网改版GEO数据对比:把 JSON-LD 从手写改成 CMS 数据库自动生成后,引用率翻了一倍
发布日期:2026-09-14 适用读者:企业官网维护者、.NET 后端开发、数字化改造项目负责人
一、改造前的真实状态:三份"对不上"的 JSON-LD
接手一家制造企业官网改版时,先做了一次 GEO 体检,结果很典型:官网 40 多个页面里有 17 个页面带了 JSON-LD,但情况混乱——首页的 Organization 是两年前外包写的,地址还是旧办公地址;"关于我们"页的 Schema 和页面可见文字对不上;产品页干脆没有结构化数据。
AI 引擎对这种不一致非常敏感:DeepSeek 在决定是否引用一个来源时,会交叉核验实体信息(公司名、地址、业务范围)的一致性。三份数据互相矛盾的官网,在 AI 眼里等于一个可信度存疑的实体,引用率自然上不去。
手写 JSON-LD 的根本问题是数据和代码脱节:内容团队改了 CMS 里的公司简介,没人记得去改 Schema。所以这次改版的思路从"修 Schema"升级为"让 Schema 从数据库里长出来"。
二、方案:CMS 即唯一事实源
改造后管线只有一条:CMS 数据库(MySQL)是唯一事实源,页面和 JSON-LD 都从同一份记录渲染,物理上不可能不一致。
数据库层面,把官网需要的实体收敛成一张 site_entities 表:
CREATE TABLE site_entities (
id INT PRIMARY KEY AUTO_INCREMENT,
entity_type VARCHAR(32) NOT NULL COMMENT 'Organization/Product/Service/Article',
name VARCHAR(200) NOT NULL,
summary TEXT NULL,
props JSON NOT NULL COMMENT 'schema.org 属性键值对',
page_path VARCHAR(255) NOT NULL,
is_active TINYINT NOT NULL DEFAULT 1,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) COMMENT='官网结构化数据实体表';
关键设计是把 address、contactPoint、sameAs 这类属性全部放进 JSON 字段而不是拆列——schema.org 的属性太灵活,拆列的维护成本远高于收益。
渲染端用 ASP.NET Core 的 Partial View 输出,内容页和 Schema 用同一个 Model:
// Services/JsonLdBuilder.cs
public class JsonLdBuilder
{
public string BuildOrganization(SiteEntity e)
{
var props = e.Props; // Dictionary<string, object>
var org = new Dictionary<string, object?>
{
["@context"] = "https://schema.org",
["@type"] = "Organization",
["name"] = e.Name,
["description"] = e.Summary,
["url"] = props["url"],
["logo"] = props["logo"],
["address"] = new Dictionary<string, string>
{
["@type"] = "PostalAddress",
["streetAddress"] = props["street"],
["addressLocality"] = props["city"],
["addressCountry"] = "CN"
},
["sameAs"] = props["sameAs"] // 社媒主页数组,实体关联的关键
};
return JsonSerializer.Serialize(org, JsonOpts.Ld);
}
}
// 页面 Partial:同一份 Entity 同时渲染可见内容和 Schema
@model SiteEntity
<section class="company-brief">
<h1>@Model.Name</h1>
<p>@Model.Summary</p>
</section>
<script type="application/ld+json">@Html.Raw(new JsonLdBuilder().BuildOrganization(Model))</script>
从这一刻起,"页面文案与 Schema 不一致"这个类别的问题被架构消灭了,而不是靠流程检查。
三、改造前后 60 天数据对比
官网改版上线后连续观察 60 天(对比期为改版前 60 天):
| 指标 | 改造前 | 改造后 | 变化 |
|---|---|---|---|
| 带 Schema 页面数 | 17/44 | 44/44 | +159% |
| Schema 与页面内容一致率 | 约 40% | 100% | 架构保证 |
| AI 爬虫周均抓取页面 | 52 | 118 | +127% |
| AI 回答中官网被引用次数/月 | 9 | 23 | +156% |
| 品牌词 AI 搜索"能答对"率 | 62% | 89% | +27pct |
| 官网自然流量询盘/月 | 14 | 26 | +86% |
"品牌词 AI 搜索能答对率"是我们的一个自测指标:让 DeepSeek、豆包、Kimi 各回答 30 个预设的品牌相关问题,统计答案中公司名、地址、主营业务至少两项正确的比例。改造前 AI 经常给出旧地址或混淆业务范围,改造后基本稳定。
四、过程中修正的一个认知
原计划把 sameAs 指向的自媒体账号全塞进去提升权威信号,实测发现 AI 引擎对低活跃度账号(三个月不更新)反而会弱化关联——这符合常识:一个"官方实体"挂着五个僵尸号,可信度是减分的。最终只保留了三个活跃主页,品牌词答对率反而从 83% 升到 89%。
五、给正在改版的企业三个建议
- 先做一致性,再做丰富度。全站 Schema 正确一致的价值,远大于个别页面塞满嵌套类型;
- CMS 表结构别照抄 schema.org。用 JSON 字段装属性、用枚举管实体类型,升级空间大得多;
- 把"AI 答对率"纳入验收标准。传统 SEO 指标(收录、排名)无法衡量 GEO 效果,品牌词 AI 问答测试简单直接。
最后澄清一个误区:JSON-LD 自动化管线不是"一次性 SEO 外包项目",它本质是内容工程基建——只要 CMS 还在更新,管线就持续产出一致的结构化数据。这套 .NET + MySQL 的实现在企业官网体量下一个迭代周期就能落地,需要表格设计和校验脚本细节的,评论区留言。
关键词:GEO、AI优化AIO、JSON-LD、CMS、ASP.NET Core、EF Core、结构化数据、AI引用率