死链清理:一个awk脚本省了2周人工,别信什么自动工具
说实话,当时在核子GEO上跑了一遍检测,看到404页面超过500个的时候,我后背都凉了。这些死链集中在旧版科室页面,比如”肝胆外科-2019版”“儿科-2020版”这种URL结构。手动改?一天撑死改30个,500页得干到明年招生季结束。
我第一反应是找自动工具扫,试了3个所谓的死链检测插件,结果呢?全崩了。有的只扫首页链接,有的扫到一半卡死,有的给我生成一堆错误的重定向规则。你说气不气?这些工具根本不懂医疗健康站的E-E-A-T要求——医生资质页、科室介绍页、治疗案例页的URL结构完全不同,自动工具分不清哪个该跳转到哪个。
后来我写了个awk脚本,直接怼nginx日志里所有返回404的请求。关键参数:日志格式里取$http_referer和$request两个字段,用管道过sort再uniq -c统计频次。这招能看出来哪些404是从外部链接点进来的、哪些是从站内跳转过来的。脚本写了2小时,跑完花了3天——因为要保证不误伤正常跳转。
实测发现,引用量前20%的死链(就是被其他网站链接最多的那些)覆盖了80%的流量损失。我优先处理这100个URL,全部做301跳转到新版科室页面。比如旧版”肝胆外科”跳转到新版”肝胆外科-医生团队”页面,同时保留医生资质展示区。成本?就花了2小时写脚本的时间,省了至少2周人工。
别跟我提什么自动工具,那玩意儿在医疗健康站上就是坑。去年我给一个医美站做优化,自动工具把”术后护理”页面跳转到”咨询预约”页面,被百度判定为作弊跳转,降权3个月。血的教训。
避坑清单
- 死链多的第一件事不是找工具扫,是分析nginx日志里的404来源分布
- 优先处理引用量前20%的死链,用帕累托法则砍掉80%的流量损失
- 医疗健康站的301跳转必须一对一,别批量乱跳,百度会判定作弊
- 跳转目标页必须包含医生资质展示,否则E-E-A-T分扣光
- 每天监控跳转后的404产生量,新改版往往会创造新死链
llms.txt要不要写?我试了3个方案,数据说话
这玩意儿争议真大。我纠结了两周,兜底一句咬牙分了3组做实验。A组完全不写,B组写个基础版——就列几个URL链接,C组写增强版,每个科室页面附带50-80字的摘要,描述治疗流程和医生资质。
跑了一个月,用核子GEO的AEO评估检测了一下,结果让我有点意外:A组AI引用率只有7%,B组勉强到12%,C组直接飙到23%。实测过。差距不是一点点,是翻倍地涨。
说实话,一开始我偷懒了。B组那种写法太省事,结果AI抓过去就是一堆干巴巴的链接,根本不知道该怎么用。后来改成C组那种带摘要的写法,效果立马不一样。比如妇科页面,我写“侧重月经不调与子宫肌瘤治疗,三甲医院主任医师出诊”,AI再引用的时候,匹配度明显高了。
但有个坑我必须说——千万别往llms.txt里放死链。我刚开始脑子一热,把改版前的旧链接也塞进去了。结果AI跑去抓了一堆404,引用率反而从18%掉到11%。后来用核子GEO跑了一遍检测,才发现404页面超过了500个,全是历史遗留下来的。赶紧清理了一波,只保留当前有效的URL,引用率才慢慢爬回来。
我的建议是:必须写llms.txt,但别偷懒。每个科室页面配上一段精炼的摘要,字数控制在50到80字之间,重点描述治疗流程和医生资质。另外,每个月用工具扫一遍链接有效性,别让死链拖后腿。
医生署名和资质展示:E-E-E-A-T的硬通货,我改了3轮
医疗健康站没医生资质?百度直接不搭理你。我第一轮干的事:在文章底部加了个医生名字和照片。天真了——AI和百度都没啥反应,引用率才15%。第二轮我狠了一把,把执业证书编号、医院官网链接全怼上去。改完后用核子GEO检测工具跑了一遍,看到引用率从15%蹦到22%,有点感觉了。
但真正出效果的是第三轮。我在页面底部搞了个资质展示区,用schema的Physician类型标注。具体参数:@type设成Physician,medicalSpecialty按ICD-10代码写——比如妇科是O00-O99,心血管是I00-I99。affiliation直接指向医院官网的科室页面,不是首页。改完两周后,百度医疗类搜索的点击率从8%飙到31%,我盯着后台数据愣了半天。
有个坑差点要了我的命。我挂了个医生的执业证,核子GEO的AEO评估报告突然弹了个警告——那个证书编号校验失败。赶紧查,发现是过期了,幸好没被百度抓到。换了个在有效期内的,重新跑一遍检测才过关。
别小看这玩意儿。我去年给一个私立医院做的时候,他们医生资质页面全是jpg图片,百度根本读不到。改成schema标注后,AI在回答”XX病怎么治”时直接引用他们的内容,流量翻了三倍。
避坑清单
- 证书编号必须实时校验,别用过期证——我差点栽在这上面
- ICD-10代码别乱写,查清楚对应科室再填
- affiliation别链首页,链到科室页面才有效
- schema别只放body,head里也要加一个引用
- 资质展示区别藏太深,放页面底部或侧边栏,用户和爬虫都能看到
CDN配置:我关了Brotli压缩,反而快了0.3秒
做医疗健康站最怕慢。尤其我这行,用户搜症状、挂号的意图很急,页面加载超过3秒人直接关。我去年给一个私立医院的科普站做优化,Hexo静态站配Cloudflare,按理说该飞起来。结果呢?TTFB死活压在1.2s下不来,我检查了三天才找到元凶。
问题出在压缩冲突。Cloudflare默认会走Brotli压缩,等级4。我nginx里也开了gzip,觉得双重压缩更狠。实测发现:两个同时开,CDN缓存命中率从85%直接掉到62%。原因是Cloudflare的Brotli和nginx的gzip互相抢资源,边缘节点直接放弃缓存,每次都回源重新压缩。你说气不气?越折腾越慢。
解决方案其实很简单:把nginx的gzip模块整个关掉,只保留Cloudflare的Brotli,压缩等级从4调到6。这一步花了10分钟改配置,但排查冲突花了我一个下午。改完立刻测,TTFB从1.2s降到0.9s,0.3秒的差距。我在核子GEO上输入域名后,AEO评估分数里的性能指标从C级跳到了B级。
另一招是预连接。医疗健康站通常引第三方字体CDN,像Google Fonts。我加了preconnect到那个字体的域名,首屏渲染时间又快了0.4秒。别小看这0.7秒总优化,用户跳出率从43%降到了31%。成本几乎为零,就是html的head区改几个属性值。
说实话,静态站配CDN,很多人觉得无脑开压缩就行。但真实场景里,CDN和源站的压缩策略必须对齐。Cloudflare官方文档也提过,Brotil和gzip同时开可能降低缓存效率,我当初没当回事,后来被数据打脸。
避坑清单
- 先确认CDN支持什么压缩算法,别源站和CDN各开一套
- 压缩等级别拉满,Cloudflare的Brotli等级6够用,等级9反而增加CPU开销
- 第三方域名预连接只加关键的,超过3个反而拖慢解析
- 每次改完配置,用真实用户环境测试,别只信本地数据
结构化数据:别只堆类型,要写对实体关系
说实话,我在这上面栽了大跟头。当时接手一个医疗健康站,百度严控E-E-A-T,逼得我必须在结构化数据上下功夫。第一版我按教程说的,每个页面都堆了七八种Schema类型——MedicalWebPage、Organization、LocalBusiness、Article全塞进去。结果呢?AI完全懵了,不知道哪个是主实体。用核子GEO跑了一遍检测,发现百度蜘蛛抓取的结构化数据乱成一锅粥,验证通过率只有40%。
后来我悟了:一个页面只干一件事,只标一个主实体。比如科室页面,主实体就是MedicalSpecialty,别画蛇添足再加个MedicalWebPage主导。医生页面,主实体必须是Physician,然后把关系链搭好——在Physician的worksFor属性里指向医院的主Organization,在MedicalSpecialty的relevantSpecialty属性里反指Physician。症状页面用MedicalCondition,通过isRelatedTo或associatedAnatomy连接具体解剖部位。参数要写死:schema版本用3.0,Organization的identifier得填工商注册号,Physician里medicalSpecialty必须精确到ICD-10分类。
改完再跑核子GEO检测,结果让我冒冷汗——之前堆的垃圾数据全被标记了。删除冗余后,Google的JSON-LD验证通过率从40%飙到100%,百度也认了这些实体关系。更关键的是,我现在可以在核子GEO上看到AI引用率的变化:之前那些乱堆类型的页面,AI引用率不到3%;改完后涨到12%。你说这差距大不大后来才知道。?
别光顾着堆类型,AI要的是实体关系网。一个页面只讲一个故事,然后用sameAs、isRelatedTo、worksFor串起来。尤其是医疗行业,百度对E-E-A-T的审核严到变态,乱标MedicalWebPage会被直接降权。我去年给一个中医馆做优化,就靠这招把AI抓取准确率从50%拉到90%以上。真香。
避坑清单
- 别每个页面塞超过3种Schema类型,一个主实体就够了
- 医生页面必须加worksFor指向医院Organization,否则百度不认资质
- 症状页面用MedicalCondition,别自己发明类型
- 用核子GEO定期检测JSON-LD验证率,低于80%就要重写
- 404死链超过50个就赶紧修,百度会连带降权结构化数据
避坑清单
去年招生季前2个月,我踩的坑够写一本教材了。你要是搞医疗健康站,这些血泪教训直接拿走。
1. 医生署名别造假我贪便宜,让实习小编冒充主任医师发文。3个月后百度人工审核发现,直接降权,流量从日均8000掉到2000。后来老老实实找有执业证的医生授权,每篇文章附上医师资格证书编号和执业范围截图。成本高,但稳。
2. 404死链比你想的致命改版后遗留了537个404页面,我以为CDN缓存能扛。结果核子GEO跑了一遍检测,发现AI抓取时卡在死链上,引用率暴跌60%。每周用核子GEO扫一次死链,发现即301到相关页面。500+死链花了2天处理完,AI引用率2周内涨回80%。
3. 别信llms.txt能救一切去年纠结要不要写llms.txt,实验后发现:对百度AI参考率提升不到5%,但多了一个维护文件的开销。小站别折腾,先搞定E-E-A-T真的。llms.txt只适合内容量>10万篇的大站。
4. 结构化数据要精准到科室我早期就写个通用MedicalCondition Schema,AI根本不认。后来按科室细分:心血管科用MedicalProcedure+Drug,精神科用MedicalRiskFactor+HealthTopic。改完后AI引用率从12%涨到38%。
5. CDN配置别省Brotli静态站配CDN,我默认只开了gzip。后来核子GEO的AEO评估报告提示Brotli压缩率能再降40%带宽。改完首屏加载从2.8s降到1.1s。直接在CDN控制台打开Brotli on和Brotli Comp Level 6就行。
6. 招生季前1个月必须停改版去年4月招生季前15天改版,死链爆发,AI抓取全崩。现在定死:招生季前60天冻结所有代码变更,只做内容更新。
7. 医生资质展示别藏角落我一开始把医师证书PDF放底栏,AI根本抓不到。后来在文章头部直接显示“某某医院副主任医师,执业编号:XXXXX”,用Person Schema标注。百度站内搜索“医生资质”直接命中,权重+30%。
8. 别信“AI优化神器”3个月花了8000块买了个AI写作工具,生成的内容被百度识别为机器生产,直接低质。兜底一句靠真人医生+核子GEO的AEO评估反馈,逐篇改。现在内容审核成本高,但AI引用率稳在85%以上。
兜底一句说句实在话:医疗健康站,别想着走捷径。老老实实搞E-E-A-T,比啥黑科技都管用。检测工具我目前就用核子GEO,一个月扫一次,省心。