SEO & GEO 实战经验

保哥笔记 — 张文保的博客

二十年SEO优化实战经验,深耕GEO优化(生成式引擎优化),为多家出海头部品牌DTC独立站提供长期SEO代运营服务和SEO顾问咨询服务。已发布 1961 篇文章,提供 117 款免费 SEO/GEO 工具。

参加深圳跨境潮流品牌私享晚宴

参加深圳跨境潮流品牌私享晚宴

保哥作为嘉宾受邀参加由钛动科技、Seel、万里汇、TikTok、Tec-Match、CEO领航社联合举办的深圳跨境潮流品牌私享晚宴。

参加奇赞三周年庆典嘉宾讲师答谢晚宴

参加奇赞三周年庆典嘉宾讲师答谢晚宴

在奇赞三周年晚宴荣获"灯塔奖"之际,SEO专家保哥分享获奖感言,阐述与奇赞因"价值连接"而产生的共鸣,感恩平台与伙伴,并承诺将持续深耕专业、赋能跨境行业。

参加若聚凡星主办的2026中国谷歌SEO&GEO大会

参加若聚凡星主办的2026中国谷歌SEO&GEO大会

保哥参加由若聚凡星主办的"2026中国谷歌SEO&GEO大会",作为嘉宾讲师,详细拆解了大型站点的SEO×GEO增长体系。

在艾维第66期DTC品牌独立站出海一号位战略课上的分享

在艾维第66期DTC品牌独立站出海一号位战略课上的分享

保哥应艾维的邀请,于2026年3月28日,在艾维第66期DTC品牌独立站出海一号位战略课上分享《从SEO到GEO:帮助企业构建可持续增长的AI搜索引用工程》。

  • 把OpenAI那份商品数据上传规范整份拆了一遍:64个字段里只有9个必填,availability留空会让整行商品当场被拒,变体那三个字段配错会静默把一组变体拆成互不相干的独立商品。文章按回报排出四步落地顺序,从确认自己在不在名单上开始,到按品类补该补的可选字段。

    ChatGPT购物推荐65%只从商品feed里挑
  • 做法是把131个英文独立站首页与商品页上所有以井号开头的链接取下来,连同解析成绝对地址后只多一个井号的那一类,按HTML规范里滚动到片段的四步逐条判定目标在不在。同时把页面上所有按名字指认别人的属性一起量了一遍——label的for、输入框的form、以及aria那一族。这里踩过一个坑:第一遍把单值属性也按空格拆成了多个名字,算出label有一半指不到,改对分类之后真实数字是另一个量级,两个口径都写在文里。死锚点最后按第三方组件的钩子与…

    页内锚点三成指不到目标,点下去地址栏变了页面不动
  • 做法是用真实浏览器逐页打开131个英文独立站的首页与商品页,把每个页面上所有带id的元素连同标签名、当场可不可见、往上四层的祖先链一并取下来,按名字分组找出撞名的那些。统计前先把内联SVG导出时自动生成的图层名和写成空字符串的id剔到另外两栏,否则排行榜会被Figma的默认图层名占满。再拿服务端吐出的原始HTML与渲染完的DOM逐页对照,判断这些撞名是模板带来的还是脚本后加的;另挑30个站的首页做两组对照,桌面视口连读三遍再换手机视口读…

    id重复的页面占六成,浏览器只认第一个,而它多半看不见
  • UPC、EAN、JAN、ISBN都是GTIN的格式,Merchant Center的属性表里从来没有过UPC这一栏,手上有码直接填进gtin就是标准做法。这篇把8位UPC-E展开成12位的算法、受限号段与优惠券号段、只有MPN时该填哪一栏、identifier_exists什么时候才允许填no、页面上gtin与mpn与sku与brand四个字段各自的分工,以及Shopify那个藏在变体库存区块里的条形码栏,逐条对着官方文档写清楚,最后附…

    没有GTIN能填UPC码吗?GMC里没有UPC这一栏
  • 实验台把53个英文独立站392个商品页的JSON-LD节点全部取下,对每一个Product节点上的url与@id补全成绝对地址,再与页面自身地址逐字比对,据此判断这一页能不能指出它的主体。第一版比对忽略了查询参数,得到的通过率虚高三十多个百分点,翻查具体案例后改成完整地址严格比对。随后逐项统计@id、url、mainEntityOfPage的写入率与取值形态,把WebPage节点、结构化数据里的商品名与页面h1、以及同一页内的h1数量一…

    商品页的结构化数据里,一半找不到哪个节点是这一页
  • 做法是把同一批页面上的form元素连同它的action、method、enctype、novalidate、提交按钮与全部隐藏域一并取下来,按站内签名合并重复渲染的表单,再把每个收邮箱的输入框与它所在的那张表逐一对上,看去向写在哪儿。跨域判据取注册域比较,不看子域;隐藏域按名字归成八类用途,并记下取值长度。另外对每个页面再取一次原始HTML,与渲染后的DOM逐页对照,用来区分“页面本来就这么写”和“脚本后来插进去的”。

    表单提交交给谁?收邮箱那张表一半没写去向
  • 实验台用真实浏览器逐页打开53个英文独立站的392个商品页,等页面渲染完成后取出全部application/ld+json脚本,递归遍历每一个带@type的对象,按类型和它在JSON结构里的位置分别计数,同时记录字节量与脚本标签数。为了把模板复制与变体展开这两种不同的膨胀来源分开,每个站另外抽取了主推款与长尾款做同站对照;三个拿不到真实商品页的站——反爬拦截、跳转首页、地址全部失效——从统计中整体剔除。最后用加长等待时间的第二轮采集做自…

    一张礼品卡的结构化数据119KB,同一段配送政策抄了60遍
  • 实验台从60个英文独立站的公开商品清单接口取回43912件在售商品的描述字段,先按站算空值率并观察整体分布形态,再用逐站剔除法看单个站对行业指标的影响幅度。随后给每一件空值商品跑一遍归因,按站级用法、非商品条目、占位测试、整条半成品四档依次往下扣。最后用真实浏览器打开商品页,把JSON-LD里的description与页面meta描述取出来跟接口值三方对照——正是这一步推翻了第一档的扣减依据,把2542件从待定改判回真缺,缺口最终从最初…

    商品描述空了5537件,其中2542件出自同一个站
  • 实验台从60个英文独立站的公开商品清单接口取回43912件在售商品的品牌字段,先按站算出主品牌,再把每一个非主品牌的取值做三级归一化——去掉重音符号、把与号换成and、砍掉地区码与公司后缀,据此把它们分成同一品牌的别写、字面空值、真正的另一个牌子三类,并逐条做字符级差异归因。随后用真实浏览器逐站打开商品页,等页面渲染完成后取出JSON-LD里Product节点的brand属性,与接口值一件件对照,判断这些取值有多少原样进入了搜索引擎读取…

    商品品牌字段一个空的都没有,17个站把自己写成了好几个牌子
  • 量法是同一个地址问五遍:普通GET、带压缩的Range、不带压缩的Range、只要末尾一百字节、一次要两段、以及一个不可能满足的越界范围,每一遍都记原始字节数而不只是状态码;再对同一批站的CSS与JS各问一遍做对照;最后在自己的nginx上把动态压缩、预压缩、不压缩三档摆开,逐个开关复现。

    Range请求回了200,里面却连全文的千分之一都不到