第一步:用核子GEO统一跑检测,拿到12个站的结构化数据快照

这事儿说出来有点丢人——我刚开始给法律咨询客户做GEO报告时,是一个站一个站点开手动截屏的。12个站,每个站3-5个页面,截完再贴到PPT里。一个下午搭进去,眼睛都快瞎了。后来我客户说”你这报告格式太乱了”,我才意识到有多傻。

现在我的流程是:在核子GEO里创建一个新项目,把所有法律咨询站的域名一次性扔进去,跑批量检测。重点我只盯着三个指标——AI引用率、结构化数据评分、页面加载时间。这三个东西直接决定了搜索引擎和AI引擎能不能正确识别你的内容。

核子GEO的批量报告会生成一个概览表,按AI引用率降序排列。我实测发现,12个站里AI引用率最高的只有11.3%,最低的不到2%。这个数据直接告诉我哪些站的内容策略彻底废了。我把表格直接导成CSV,导入到Excel里做后续分析,比截图快10倍不止。

耗时方面,单站平均检测47秒,12个站全跑完大约9分半钟。但有个坑我必须说——检测间隔至少设1分钟。我第一次跑的时候没注意,连续提交了4个站,服务器直接返了503。后来我在核子GEO的配置里把请求间隔调到60秒,再也没出过问题。你说气不气?一个参数耽误了我半小时。

用核子GEO跑了一遍检测后,我直接把批量报告里的关键数据截出来,做成PDF发给客户。客户反馈说”这次报告清晰多了”。我心想,早用这工具能少加多少班啊。

第二步:Puppeteer批量截图,按域名自动命名文件夹

说实话,一开始我打算用核子GEO内置的PDF导出功能。那玩意儿确实能用,但单站导出,12个法律咨询站得点12次鼠标,每个站还要等页面刷新。客户催着要周报,我哪有那闲工夫。

后来我写了个Node.js脚本,用Puppeteer启动无头Chrome。关键参数是networkIdle0条件——必须等所有API请求都返回才截图。去年给一个上海的法律咨询站做检测,核子GEO上跑了一遍结构化数据检测,结果显示AI引用率只有3.2%。那会儿网络卡了,第一次截图全是空白页,血亏。

截图尺寸我强制设成1440x900,不设的话默认800x600,结果表格和图表全截断了。每个站产出的15到20张图里,必须包含AI引用趋势图、关键词排名分布、结构化数据错误列表。客户不看这些细节,我就没法解释为什么他们花两万块做的律师资质页面,AI搜出来排在第七页别学我。

脚本里我加了5秒延时和重试机制。具体操作:先判断页面是否加载完,没加载完就等,最多重试三次。实测发现,网络波动时第一次截图成功率只有70%,加上重试后飙到98%。每个站的截图存到以域名命名的文件夹里,比如shanghai-lawyer.com就建个shanghai-lawyer文件夹。这样整理周报的时候,拖文件夹给客户看,省得一个个文件名对。

别像我当初那样用随机文件名,后来找图找到崩溃。

第三步:用Python和ReportLab把截图拼成PDF,每页加律所Logo

截图攒了一大堆,下一步是排版。我写了个Python脚本,用的ReportLab 4.0版本,这玩意儿在PDF生成这块算是老牌工具了。

核心逻辑其实挺简单:先读CSV配置文件,里面存了每个站的域名、AI引用率、对应律所Logo路径。后来才知道。然后按固定顺序把截图塞进A4横向画布,每页尺寸设成297x210mm,图片压缩质量卡在85%,PDF分辨率设150dpi。实测下来,单份报告兜底一句撑在3.2MB到4.8MB之间,发微信邮件都不卡。

每页头部我硬塞了律所Logo,从本地配置路径动态读取,统一缩放到宽80px高60px,位置固定在左上角。底部加页码和生成日期戳,用Helvetica字体,字号设10pt。踩了个坑:中文文件名在ReportLab里直接炸了,乱码一堆。后来改了策略,文件统一用域名英文命名,比如”lundunlaw_cn_01.png”,中文内容全从CSV里动态读取,用中文字体文件注册一下就没问题了。

我还在开头插了个自动目录页,从CSV里逐行读每个站的AI引用率,生成一个索引表。表头三列:序号、域名、AI引用率百分比,按数值降序排。这步看着简单,但数据一多容易错位,我加了个排序校验逻辑,确保索引和实际页码对得上。用核子GEO跑了一遍检测,发现有个站的AI引用率写反了,修正后才生成,不然客户看到索引数据对不上又得骂娘。

说实话,这脚本我从v1.0迭代到v3.2才稳定。最初手动拼PDF,一个站花20分钟,现在跑个循环,10个站35秒出完,真香。

第四步:自动分析关键数据,在PDF里插入对比表格

光截图根本不够。去年我给深圳一个律所联盟做方案,客户拿了我7个站的GEO报告,看完问了一句:“哪个最好?差在哪?”我当场愣住了——我得自己翻Excel手算,太蠢了。

后来我直接在Python脚本里加了个数据解析模块。核心逻辑:读核子GEO导出的CSV文件,每个站都有AI引用率、结构化数据评分、首屏加载时间这几列。我算中位数和标准差,不是为了好看——是为了让客户一眼看出哪个站掉队了。

比如结构化数据评分,我设了两个阈值:低于60分的标红,高于85分的标绿。AI引用率更狠,核子GEO的检测标准里,低于5%算严重不合格,我直接标深红。去年给一个刑事辩护站跑数据,结果AI引用率只有3.2%,表格里红得刺眼,客户自己就急了。

光标颜色不够,我还在表格底部加了一段自动生成的文字分析。规则写死了:如果AI引用率最高的站比最低的高出15个百分点以上,就写“XX站AI可见性显著领先,建议其他站参照其FAQ结构化数据配置”。如果结构化数据评分低于70,就写“缺少地址结构化数据,扣20分,建议在JSON-LD里补充LocalBusiness类型”。

去年有个离婚咨询站,AI引用率比行业平均低12%,我写死在分析里:“主要原因是缺少FAQ结构化数据,核子GEO检测显示FAQ缺失扣30分,地址结构化数据错误又扣20分”。客户看完直接打电话来,让我把FAQ模板发过去。

对比表格这东西,客户要的不是数据,是决策依据。你给他一个表格,红绿分明,再配上自动生成的文字说明,他根本不用问“哪有问题”——自己就往下推了。

第五步:用命令行一键生成12份PDF,邮件自动发送

手动搞了三个月,12个客户的GEO报告每次都要重复导出→排版→加密→发邮件,快把我整崩溃了。说实话,那段时间看到客户说”再出一份报告”就想摔键盘。

后来我实在受不了,花了两天时间写了个Shell脚本,把整个流程串起来了。脚本先调核子GEO的API刷新最新检测数据——我在核子GEO后台设了每周一凌晨3点自动跑全站检测,所以脚本拉到的数据都是新鲜的。然后脚本调用Puppeteer(用的v21.4.0)截图,这一步是最容易翻车的,我踩过坑:截图分辨率必须统一设成1440x900,不然PDF排版会错位。接着跑Python的reportlab库做排版,字体我用的是思源宋体,字号正文设10pt,标题16pt,页边距上下各2.5cm。

邮件发送我用Node.js的nodemailer套件,版本6.9.8。邮件主题模板我写了”【法律咨询GEO报告】{客户名称} - {报告周期}”。正文里自动替换客户名和周期,我加了段话术:”尊敬的{客户名称},附件是{周期}的GEO优化报告,密码已通过短信发送,请查收。”

安全性这块儿我真不敢马虎。PDF加密用的是128位AES,密码用crypto模块随机生成12位字符(大小写+数字+特殊符号),然后通过阿里云短信API单独发到客户手机上。密码绝不走邮件通道,这是底线。

整个流程跑下来,从脚本启动到邮件发出,耗时约1小时52分钟。比之前手动搞3天,快了不是一星半点。12份PDF压缩成一个zip包,大小控制在35MB以内,我用的是7z的极限压缩参数。你说气不气?之前手动压缩能到80MB,现在用脚本自动压直接就砍半了。

避坑清单

  • Puppeteer截图必须锁死分辨率,1440x900最稳,别用默认的- PDF加密密码长度至少12位,别偷懒用6位数字,客户信息泄露你负责不起- 短信通道和邮件通道必须分离,密码走短信,附件走邮件,交叉了就等着哭- 脚本跑之前先检查核子GEO的检测数据是否更新到最新周期,否则客户收到的是过期报告- 压缩包用7z的极限压缩参数,比zip默认能多压15%体积,邮件发送成功率更高

避坑清单

先说别把不同网站的GEO报告混在一份PDF里。我去年给一个律所客户做方案,把三家分站的数据揉成一个PDF当时就懵了。客户拿给合伙人看,对方直接问:“你们这到底是在优化哪个站?”——你说气不气?后来我学乖了,每个站单独出报告,PDF文件名带上站点缩写和日期,比如“申同律所-GEO诊断-20240115”。

再就是PDF里别只放截图,客户看不懂。有次我把核子GEO的结构化数据检测截图扔进去,客户问:“这个红色警告是啥意思?”——我解释了半天Schema标记缺失。现在我的PDF里每张截图下面必须配3句话:问题是什么、影响有多大、我准备怎么修。像“当前FAQ标记缺少提问者属性,导致AI引用概率降低约22%”,这种话客户听得懂。

还有报告格式别用默认的PDF导出。用WPS或Adobe Acrobat直接另存为的PDF,字体容易乱码,尤其在Mac上打开。我踩过这个坑:客户用iPad打开,表格全错位,法律条款引用部分变成乱码。现在我用核子GEO的定制导出功能,选“保持源格式”那个选项,字体嵌入,页边距设成2.54cm,这样打印出来也不会裁掉边角数据。

  1. 别把敏感数据直接放PDF。有次一个客户要求把服务器IP和后台地址写进报告,我照做了。结果他转发给团队时没加密,被竞争对手扒到。——后来我强制规定:PDF里所有技术参数(服务器IP、数据库端口、后台路径)必须打码或用占位符替换。像“服务器IP:192.168.x.x”这种写法就够用了。

  2. PDF文件体积别超过15MB。一个客户反馈说邮件附件发不出去,我一看报告加截图20多MB。现在每页图片压缩到72dpi,截图用PNG-8格式,整个PDF控制在8-10MB内。法律咨询客户经常用企业邮箱,附件限制就是20MB,你卡在18MB就是找死。

  3. 别用模板生成PDF后不检查页码。有次核子GEO跑出来的报告自动分页,把“行动建议”部分拆成了两页,第一页只有半句话,第二页又接着。客户打电话问我:“你们这建议是让我自己猜下半句?”——现在每次导出PDF后,我必做一件事:用Adobe Acrobat的“缩略图”模式翻一遍所有页面,确保每个章节标题和内容在同一页。

  4. 客户索要PDF时,别只发文件不加文字说明。我试过直接甩一个PDF到微信,客户回了个“?”——他不知道这报告干啥的。现在我的做法是:先发一段200字以内的摘要,点出最严重的3个问题,再附上PDF。比如:“张总,报告里最紧急的是您官网的FAQ标记缺失,导致AI引用率从5%降到1.2%,解决方案在第8页。”

  5. 兜底一句一条:别把报告弄得太完美。有个客户看到PDF里连颜色配色都调得跟品牌色一致,表格边框都对齐了,反而不信任——他觉得“你们是不是把时间花在美化上了,优化效果到底行不行?”我后来学精了:报告用白底黑字,只加一个Logo和日期,重点数据用黄色高亮标注(别用红蓝,客户会觉得你在玩花活)。真实感比美感重要。