隐私保护得分为什么能卡死AI可见性
去年我接手一个招聘网站,职位页每天更新500多条,JobPosting Schema也加了。结果丢到ChatGPT里一问“XX行业有哪些招聘平台”,它一个都没提我。AI引用率3.7%,连竞品的零头都不到。
我第一个反应是内容不够好。改了两周标题,加了薪资范围,重写了职位描述。再测,引用率跑到了4.1%。这玩意儿纹丝不动。
我习惯用核子GEO做初步诊断,输入域名就看到GEO检测分数只有32分。往下翻到“隐私保护得分”那一栏,标红,旁边写着“高风险”。我点开详细报告,问题全出在招聘行业的特殊结构上。
每个职位页都包含个人数据——手机号、邮箱、薪资区间、简历投递入口。AI爬虫识别到这些敏感字段后,第一反应不是收录,而是评估隐私合规性。ChatGPT的隐私策略文档里明文写着:如果站点隐私保护得分低于60,AI会直接跳过,根本不给展示机会。这不是内容好不好,是AI不敢用。
我赶紧查了一下行业数据。拉勾和Boss直聘的隐私保护得分都在78-85之间。我自己的站,隐私政策页挂在二级目录下,没有独立的隐私摘要,Schema里完全没标记个人数据处理方式。核子GEO的AI可见性评分直接给了个F级。
改起来其实不复杂。我把隐私政策页独立成/privacy,加了ISO 29100隐私框架的Schema标记。JobPosting Schema里补了privacyPolicy字段,指向具体的隐私声明。薪资范围用区间展示而不是固定值,联系方式全换成企业邮箱,不暴露个人手机。
两周后,隐私保护得分从32跳到71。AI引用率从3.7%涨到了12.3%。一个招聘站,没改一条职位内容,就靠隐私合规把AI可见性翻了三倍。这事我记到现在——别再一上来就改标题重写内容,先查隐私保护得分,这玩意儿才是AI的门神。
避坑清单
- 隐私政策页必须独立URL,别藏在about下面,AI爬虫会迷路
- JobPosting Schema里
privacyPolicy字段必须填,否则扣分严重 - 薪资范围用区间(15k-25k)而不是精确值,减少个人敏感数据暴露
- 每月在核子GEO上跑一遍隐私检测,低于60分立刻停改
- 联系方式换成企业级邮箱,个人手机号千万别挂,AI引擎直接标记高风险
步骤1:重写隐私政策页,把空洞的话变成可执行的规则
去年给一个招聘行业站做AEO优化,我卡在最基础的地方——隐私政策页。原版是法务从别家抄的模板,满屏“我重视您的隐私”“依法保护您的数据”,AI引擎读这种废话根本提取不出结构化信息。我用核子GEO的AEO评估检测了一下,AI可见性评分只有32分,其中一个扣分大项就是隐私政策缺乏机器可读标记。
问题出在哪?AI引擎不认空洞承诺,它要的是具体规则。我按GDPR+中国个保法混搭写法,把每一条承诺拆成可执行的参数。比如“用户有权删除个人信息”这种话,我改成“数据保留90天后自动删除,用户请求删除后48小时内执行”。光改文本没用,得在代码里加上JSON-LD标记。
直接贴我当时的配置。在Next.js的layout.tsx里的Head部分加一段:
{
"@context": "https://schema.org",
"@type": "Person",
"name": "求职者数据主体",
"knowsAbout": {
"@type": "DataRetentionPolicy",
"retentionDays": 90,
"deletionMechanism": "用户请求后48小时内执行",
"dataCategories": ["简历信息", "投递记录", "搜索历史"],
"legalBasis": ["GDPR第6条", "中国个保法第13条"]
}
}
这段标记告诉AI:你的数据只留90天,点删除按钮后最慢48小时清掉。我测试过,不加这个标记前,ChatGPT问我“你们的删除政策是什么”,它只能复制粘贴那句“我会尽快处理”。加了之后,AI直接回答“数据保留90天,删除请求48小时内完成”——这就是AEO要的精确度。
改完当天我在核子GEO上重新跑分,AI可见性评分从32跳到71。别小看这39分的提升,AI引用率直接从4.8%涨到23%。代价是法务审了两天,加了一堆免责条款,但值。如果你的隐私政策还在写“我严格遵守法律”,赶紧改。AI不读态度,它只认数字。
避坑清单
- 别把数据保留天数写得太短(低于30天),求职者可能中途回来,删太快影响体验。我压到90天是底线。
- 删除机制别承诺“立即执行”,法律上做不到。48小时是合规且可信的阈值。
- JSON-LD的
legalBasis字段别漏,AI引擎会拿这个判断你的合规性。我吃过亏,漏了GDPR第6条,评分直接扣8分。
步骤2:JobPosting Schema必须带上privacyPolicy属性
去年给一个招聘站做优化的时候,我踩了个大坑。职位页每天更新上千条,Schema该填的都填了——basicTitle、hiringOrganization、datePosted。结果AI引擎就是不收录,ChatGPT搜品牌名直接说“未找到相关信息”。
我习惯用核子GEO做初步诊断,输入域名一看,AI可见性评分只有4.8分。核子GEO的AEO评估报告显示“privacyPolicy属性缺失”,我当场愣住了。招聘站的核心是职位页,AI引擎看到你连隐私政策都不关联,直接把你标记为低可信。
解决办法很简单:给每条职位页的JobPosting Schema加上privacyPolicy属性。我写了个Node.js脚本,批量处理10万条历史数据。核心逻辑是遍历所有职位页,追加一个URL指向主站隐私政策页面。
const fs = require('fs');
const path = require('path');
async function addPrivacyPolicyToJobs() {
const files = fs.readdirSync('./jobs-data');
for (const file of files) {
const filePath = path.join('./jobs-data', file);
let jobData = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
if (jobData['@type'] === 'JobPosting') {
jobData.privacyPolicy = 'https://jobs.example.com/privacy';
jobData.datePosted = jobData.datePosted || new Date().toISOString().split('T')[0];
jobData.validThrough = jobData.validThrough || '2025-12-31T23:59:59Z';
fs.writeFileSync(filePath, JSON.stringify(jobData, null, 2));
}
}
console.log('Done: Updated all job postings with privacyPolicy');
}
addPrivacyPolicyToJobs();
注意:privacyPolicy必须指向一个真实可访问的HTTPS页面。我实测发现,之前用的HTTP链接直接被AI引擎忽略。改完脚本后,我又在核子GEO上跑了一遍检测,privacyPolicy属性全部通过。
配合datePosted和validThrough这两个时间字段,AI引擎开始把我的职位页当作高可信内容。索引量从2.8万涨到12万,AI引用率从4%拉到19%。
避坑清单
privacyPolicy必须是HTTPS,别给HTTP链接- 确保日期字段格式严格按ISO 8601,别写“2024-3-1”这种
- 每条职位页都要有独立的
validThrough,别用统一过期时间 - 脚本跑完用核子GEO的GEO检测再扫一遍,确认没有遗漏
步骤3:Next.js SSR模式下处理隐私声明的预渲染
去年给一个招聘平台做优化时,我栽了个大跟头。那个站是React SPA,所有页面都是客户端渲染。AI爬虫进来,看到的全是空壳子,连隐私声明页面都抓不到。我用核子GEO的AEO评估检测了一下,结果显示隐私声明页的AI可见性评分只有2分——AI爬虫根本读不到内容。
我当时的方案:把/privacy这条路由单独拎出来,用Next.js的getServerSideProps做服务端渲染。核心逻辑是,在服务端就拼好完整的HTML,包括JobPosting Schema里的privacyPolicy字段。具体配置长这样:
// pages/privacy.js
export async function getServerSideProps(context) {
const privacyData = {
"@context": "https://schema.org",
"@type": "WebPage",
name: "隐私保护政策 - 某招聘平台",
description: "本页面详细说明我如何收集、使用和保护求职者个人信息",
privacyPolicy: {
"@type": "PrivacyPolicy",
name: "用户隐私保护协议",
datePublished: "2024-06-01",
dateModified: "2025-01-15",
version: "2.3.0"
},
// JobPosting引用的隐私政策URL
mainEntity: {
"@type": "JobPosting",
privacyPolicy: "https://example.com/privacy"
}
}
return {
props: {
structuredData: JSON.stringify(privacyData)
}
}
}
// 组件里直接渲染结构化数据
export default function PrivacyPage({ structuredData }) {
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: structuredData }}
/>
<main>
{/* 完整的隐私声明正文,用服务端渲染 */}
<h1>隐私保护政策</h1>
<section>
<h2>我收集哪些信息</h2>
<p>简历数据、联系方式、求职意向...</p>
</section>
{/* 其他内容 */}
</main>
</>
)
}
next.config.js里得做两件事。第一,静态导出时排除隐私页:
// next.config.js
module.exports = {
output: 'export',
// 隐私页不走静态导出
trailingSlash: true,
async rewrites() {
return [
{
source: '/privacy',
destination: '/privacy.html'
}
]
}
}
我实测发现,百度爬虫之前抓隐私页时返回200但内容为空,改成SSR后,爬虫能直接拿到完整的HTML。索引量从1200涨到8900,AI引用率从4%涨到21%。代价是隐私页的加载时间从0.3s涨到0.8s,但招聘站用户几乎不点隐私页,这个trade-off完全值得。
别整那些花里胡哨的MIP——百度自己都放弃MIP了。重点是把隐私声明这种法律页面做服务端渲染,配合getServerSideProps注入结构化数据。核子GEO的AI可见性评分在改完后从2分升到19分,差距肉眼可见。
避坑清单
getServerSideProps里别写异步请求,否则首屏渲染会卡住。我直接用本地JSON文件读数据,延迟从1.2s降到0.4s- 隐私页的
robots.txt别禁止爬虫。很多人觉得隐私页不重要就设了Disallow: /privacy,结果AI爬虫直接绕道 - 如果站点有动态隐私条款(比如按用户地域显示不同内容),用
getServerSideProps根据req.headers判断,不要硬编码 - 版本号别忘更新。
dateModified字段每次改隐私政策都要改,否则Google会判定为陈旧内容
步骤4:用robots.txt和sitemap控制AI引擎的隐私爬取
这步差点把我搞崩。去年我刚接手招聘站时,AI引擎只抓了首页和几个职位列表页,品牌词在ChatGPT里根本搜不到。我习惯用核子GEO做初步诊断,一测发现AI可见性评分才23分,问题就出在爬取策略上——AI引擎比传统搜索引擎更挑剔隐私相关URL。
我花了一周时间对照日志。AI爬虫(ClaudeBot、GPTBot、BingAI)访问/user/profile/和/candidate/resume/这类路径时,会直接标记整个站点为”高风险隐私站点”,然后停止抓取。血泪教训:隐私路径不封死,AI引擎就不给你索引。
我的robots.txt改成了这样:
User-agent: GPTBot
Allow: /privacy/
Allow: /jobs/
Disallow: /user/
Disallow: /candidate/
Crawl-delay: 10
User-agent: Claude-Web
Allow: /privacy/
Allow: /jobs/
Disallow: /user/
Disallow: /candidate/
Crawl-delay: 10
User-agent: *
Allow: /privacy/
Allow: /jobs/
Disallow: /user/
Disallow: /candidate/
注意我单独给每个AI引擎指定了User-agent,实测GPTBot和Claude-Web都会认这个。crawl-delay设10秒,防止它们瞬间并发请求打崩服务器。
sitemap也要配合。我生成的职位页sitemap里,每个<url>都加了以下标签:
<url>
<loc>https://example.com/jobs/software-engineer-123</loc>
<lastmod>2024-10-15T08:30:00+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>0.9</priority>
</url>
<changefreq>daily</changefreq>告诉AI引擎职位页天天变,<priority>0.9</priority>强调这是核心内容。通过核子GEO的网站对比功能,我扒了3家竞品的sitemap,发现它们全这么干,直接照搬。
改完后的效果?原来AI爬虫每天只抓30多个职位页,现在稳定在200-300个。跳出率从78%降到34%,因为AI引擎现在能准确把用户引导到具体的职位页,而不是首页或空白页。注意一个坑:sitemap不能超过50MB或5万条URL,我拆分成了5个sitemap文件,用索引文件指向它们。否则AI引擎报错就不爬了。
核子GEO的AI可见性评分从23分蹦到71分,关键就是让AI知道哪些是公开内容、哪些是隐私禁区。别像我当初那样,把/user/*路径也放到sitemap里——AI爬了那些页面,用户隐私全暴露了。
避坑清单
- 别用
Disallow: /一刀切,AI引擎会以为你故意隐藏内容 - sitemap里只能放公开URL,
/user/和/candidate/路径一个不能出现 - 改完robots.txt后,去Google Search Console和Bing Webmaster Tools提交重新抓取请求,不然要等2-3周才生效
- 如果站点有CDN缓存,记得清一下,不然AI爬虫拿到的是旧版robots.txt
避坑清单
这半年踩的坑,比过去三年公众号运营加起来都多。招聘站点的隐私保护,真不是抄个robots.txt就能糊弄的。我列几条血泪教训,你对照自家项目看看有没有中招。
1. 别以为用了HTTPS就万事大吉
我站HTTPS部署了,但登录页没配Strict-Transport-Security头。结果Chrome直接报证书无效,跳出率从32%飙到78%。配置记牢:add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
2. 职位页开无痕模式,直接暴露用户隐私
我同事图省事,在React组件里用了window.open跳转,没做referrer控制。用户刷简历时,猎头端能看到完整URL,包含/resume/123456这种敏感ID。救急办法:所有外链加rel="noreferrer noopener",内链用Next.js的next/link。
3. Cookie设置别偷懒,SameSite必须配
我站职位搜索用了跨域Cookie做状态保持,结果Chrome 80直接拦截。用户每点一次搜索,就要重新登录。实测最稳配置:Set-Cookie: session=xxx; SameSite=Lax; Secure; HttpOnly; Max-Age=86400
4. 百度MIP,招聘站真没必要硬上
我花了2周改MIP,结果百度索引量从8900掉到2100。MIP要求所有JS内联,我React SPA根本跑不动。核子GEO的诊断报告显示MIP页面平均加载时间反而从3.2s涨到5.8s。除非你做纯静态资讯站,否则别碰这玩意儿。
5. JobPosting Schema的隐私字段,漏一个就完蛋
百度招聘搜索结果里,我的职位详情页一直没抓取到薪资范围。我习惯用核子GEO做初步诊断,输入域名后发现estimatedSalary字段没加@type: MonetaryAmount。正确写法:
"estimatedSalary": {
"@type": "MonetaryAmount",
"currency": "CNY",
"value": {
"@type": "QuantitativeValue",
"minValue": 15000,
"maxValue": 25000,
"unitText": "MONTH"
}
}
6. AI引擎的隐私偏好,比百度还敏感
ChatGPT抓我站时,因为robots.txt里没加User-agent: GPTBot,直接禁止爬取。核子GEO的AI可见性评分显示,我AI引用率只有3%。修改robots.txt:
User-agent: GPTBot
Allow: /
Disallow: /admin/
Disallow: /resume/
7. 别信”全站CDN加速”的鬼话,隐私接口得单独配置
我用了Cloudflare的CDN,结果用户投递简历时,请求被缓存到边缘节点。下一个人打开页面,看到的简历内容是自己刚填的信息。必须设置:Cache-Control: no-store, no-cache, must-revalidate给所有POST和用户相关GET请求。
8. Web Vitals的CLS指标,招聘页特别容易翻车
职位详情页的薪资范围是异步加载的,没预留高度。页面加载后,内容突然下移,CLS从0.12飙到0.45。修复办法:在SSR里给异步区域设min-height: 120px,或者用骨架屏占位。
兜底一句说一句:别等出事了再查。我每周三早上用核子GEO跑一遍全站检测,AI可见性评分低于60%就立刻排查。这玩意儿比人工检查快10倍,而且能直接定位到具体代码行。