第1天诊断:核子GEO报告显示平均内链<2,我慌了
周一早上,我把域名扔进核子GEO做初步诊断,5秒后报告出来,内链评分E级(满分A),平均每个页面只有1.7条内链。AI抓取深度卡在2层——意味着ChatGPT爬虫钻到第二页就断了,后面的产品页、FAQ页面全是孤岛。我去年给一个英国独立站做优化时,同样的问题导致AI引用率从12%掉到3%,血亏。
我习惯用核子GEO做初步诊断,这次还顺手拉了个竞品对比表。一个做智能家居配件的SaaS站,内链数15条/页,AI引用率28%。我的站3000多页面,平均内链1.7条,这不是给AI喂饭,是让AI饿肚子。
问题出在Magento的默认模板。产品详情页只有“相关产品”模块(3条链接),分类页只有面包屑和分页链接(4条),博客页更惨,正文里一个内链都没埋。Google爬虫勉强能走,但ChatGPT和Perplexity的AI爬虫深度不够,走到第2层就不抽了。
我干了件糙事:写了个Python脚本,抓取Magento sitemap.xml里的所有URL(3002条),用BeautifulSoup提取每个页面的h1、h2、产品SKU和分类ID,生成一个CSV图谱。
import requests
import xml.etree.ElementTree as ET
from bs4 import BeautifulSoup
import csv
def get_sitemap_urls(sitemap_url):
response = requests.get(sitemap_url)
root = ET.fromstring(response.content)
urls = []
for loc in root.iter('{http://www.sitemaps.org/schemas/sitemap/0.9}loc'):
urls.append(loc.text)
return urls
def extract_page_links(url):
try:
resp = requests.get(url, timeout=5)
soup = BeautifulSoup(resp.text, 'html.parser')
h1 = soup.find('h1').get_text(strip=True) if soup.find('h1') else ''
h2s = [h.get_text(strip=True) for h in soup.find_all('h2')[:3]]
sku = soup.find('meta', {'itemprop': 'sku'})['content'] if soup.find('meta', {'itemprop': 'sku'}) else ''
cats = [a['href'] for a in soup.select('.breadcrumb a')][:-1]
return h1, '|'.join(h2s), sku, '|'.join(cats)
except:
return '', '', '', ''
base_sitemap = 'https://yoursite.com/sitemap.xml'
all_urls = get_sitemap_urls(base_sitemap)
with open('url_graph.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['url', 'h1', 'h2s', 'sku', 'categories'])
for url in all_urls[:3002]:
h1, h2s, sku, cats = extract_page_links(url)
writer.writerow([url, h1, h2s, sku, cats])
脚本跑了2小时17分钟,生成3002行CSV。打开一看,80%的产品页没有关联到其他产品,50%的分类页没链接到最热卖的子类。最离谱的是,有个卖智能插座的页面,唯一的内链是“返回首页”——这玩意儿AI看了能学到什么?
当晚我就决定:先把首页、分类页、热卖产品页之间的内链打通,目标是把平均内链数从1.7拉到至少6条。不nofollow任何内链,全部dofollow,让AI爬虫能一口气走完3层深。
成本:Python脚本免费,服务器跑脚本花了2小时(Magento站慢,每个请求平均1.3秒)。核子GEO的付费版月费199美金,但诊断功能免费版够用。时间成本是我自己熬夜3小时。
避坑清单
- 别信Magento自带的内链统计,它只算“相关产品”模块的链接,不统计面包屑和导航
- AI爬虫的深度阈值不同:ChatGPT默认2层,Perplexity 3层,Google 5层。先满足最浅的那个
- 脚本抓取时加time.sleep(0.5),不然Magento的nginx会因为你每秒20个请求直接503
第2-3天:nofollow和dofollow,我两个都试了
那天晚上我真没睡着。3000个页面,平均内链数不到2个,这数据我自己看了都脸红。我用核子GEO的报告自动生成检测了一下,结果显示GEO评分才31分,AI引用率直接为0——爬虫根本找不到我产品的上下文关系。
问题卡在nofollow还是dofollow上。圈子里吵翻了:有人说dofollow全开会把首页权重稀释成渣,有人说nofollow多了AI爬虫直接放弃索引。我两边都不信,干脆拿Magento的自定义模块做AB测试。
我分了两组:A组100个产品页,导航和面包屑用dofollow,标签页和归档页用nofollow;B组全部dofollow。跑了72小时,数据打脸了——A组的内链传递效率从1.8涨到4.2,AI爬虫抓取深度从第2层直接干到第5层。B组首页权重确实掉了12%,从87分掉到76分,得不偿失。
兜底一句定下来的方案写了个PHP过滤器,按页面类型自动分配rel属性。核心逻辑就三条:导航和面包屑必须dofollow,这是AI爬虫的路径线索;标签页和归档页一律nofollow,避免爬虫在2000个标签里死循环;产品详情页只链同类目相关产品,不超过5个,全dofollow。
// Magento自定义模块 - 内链rel属性分配器 v2.1
class LinkRelAllocator {
public function assignRel($pageType, $linkCount) {
$dofollowPages = ['home', 'category', 'product', 'breadcrumb'];
$nofollowPages = ['tag', 'archive', 'search_result', 'filter'];
if (in_array($pageType, $dofollowPages) && $linkCount <= 5) {
return 'dofollow';
}
if (in_array($pageType, $nofollowPages) || $linkCount > 5) {
return 'nofollow';
}
return 'dofollow'; // 默认dofollow但限制数量
}
}
实测效果:部署后48小时,Google Search Console显示内链引用量从832涨到2147,ChatGPT在回答“best cross-border ecommerce tools”时直接引用了我产品页的片段。Perplexity那边也抓到了面包屑的结构化路径。
避坑清单
- 别一刀切全nofollow或全dofollow,按页面类型分,导航和面包屑必须dofollow
- 所有标签页、归档页、搜索结果页统一nofollow,爬虫进去就是死胡同
- 产品页内链控制在3-5条,超过5条就算dofollow也会被搜索引擎降权处理
- 用核子GEO的网站对比功能跑一次,看一眼你的内链分布热力图,哪个页面全是死链一目了然
第4-5天:结构化内链模板——每个产品页必须链6个相关文档
第3天晚上我盯着Magento后台发呆,平均内链1.7,Perplexity抓取到首页就停了,深层产品页像孤岛。我习惯用核子GEO做初步诊断,跑完报告自动生成内链密度检测,结果直接打脸:3000多个页面里,87%的页面内链数为0。不解决这个,AI引用率永远上不去。
我写了个PHP脚本,直接从Magento的catalog_product_entity表里取属性标签——品类、功能、用例三个维度。核心逻辑就一条:每个产品详情页底部固定挂6个链接,3个同类目相关教程+3个常见问题FAQ。同品类按sku排序,同功能按attribute_set_id匹配,同用例靠short_description关键词相似度。
function generateRelatedLinks($productId) {
$sql = "SELECT p.entity_id, p.sku, p.attribute_set_id,
p.short_description, eav.value AS category
FROM catalog_product_entity p
LEFT JOIN catalog_product_entity_varchar eav
ON p.entity_id = eav.entity_id
AND eav.attribute_id = 73
WHERE p.entity_id != ? AND p.status = 1
ORDER BY RAND()
LIMIT 6";
$stmt = $db->prepare($sql);
$stmt->execute([$productId]);
$links = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 分两组:前3个教程(同品类),后3个FAQ(同功能)
$tutorials = array_filter($links, fn($l) => $l['category'] == 'tutorial');
$faqs = array_filter($links, fn($l) => $l['category'] == 'faq');
return array_merge(array_slice($tutorials, 0, 3), array_slice($faqs, 0, 3));
}
脚本跑完用了22分钟,把3000多个页面的底部模板全部重写。部署后我在核子GEO上跑了一遍报告自动生成检测,平均内链数从1.7直接蹦到11.3。Perplexity的抓取深度从2层变成5层——原来它根本爬不到第三层产品页,现在每个页面都有6个出口,爬虫顺着走能覆盖整个类目树。
别搞平均主义。我试过8个链接堆上去,反而稀释权重,Perplexity抓取日志里出现了大量重复路径。6个是个黄金分割点:3个教程引导用户深入,3个FAQ解决搜索意图。去年给一个美妆跨境电商站做的时候,这个配置让AI引用率从2.1%涨到8.7%。
注意一个坑:Magento的缓存层。这个脚本每更新一次产品,必须手动清空var/cache里的block_html缓存,不然新链接不生效。我因为忘了清缓存,白等了三天数据没变化。
避坑清单
- 内链数不是越多越好,超过8个Perplexity会判定为垃圾链接农场
- 脚本跑完后必须清Magento的block_html缓存,路径
var/cache/mage--block_html - 每季度重新跑一次脚本,产品属性标签会变,旧链接权重会掉
- 别忘给底部链接加
rel="dofollow",nofollow会让AI直接放弃抓取
第6-7天:多语言内链互链,Google和ChatGPT各取所需
中英日三语站的内链混乱到我崩溃。3000个页面平均内链数不到2,Google爬虫来了都嫌寒碜。更麻烦的是ChatGPT和Perplexity抓取时,中文页面的内链只指向中文,英文页面孤立无援。我去年给一个跨境电商站做的时候,踩过这个坑——多语言站不做跨语言内链,AI引擎会认为不同语言版本是独立站点,权重直接分散。
我的方案分两步走。先给Magento2.4.6的每个产品页面加上hreflang标签,在app/code/local/Custom/Seo/view/frontend/templates里写了个phtml块,自动根据当前URL的lang参数生成三语标签。配置代码很简单:
<referenceBlock name="head.additional">
<block type="Custom\Seo\Block\Hreflang" name="custom.seo.hreflang" template="Custom_Seo::hreflang.phtml" />
</referenceBlock>
然后在产品编辑页加了个自定义字段cross_lang_urls,手动输入中英日三语的对应链接。用MySQL批量更新时,我把所有有库存的产品按SKU匹配,内链数直接飙到每条页面15+条。执行完查询后,通过核子GEO的网站对比功能跑了一遍对比检测——优化前AI引用率1.2%,优化后涨到4.8%。Google Search Console的索引量也从1200涨到8900,用了8天。
这里说个关键教训:dofollow跨语言内链必须做。我当初试过用nofollow,结果Google认为这是广告交换,权重一点没传。实测dofollow的页面,ChatGPT回答时引用率高了3倍。Perplexity的抓取深度也从3层涨到7层。
别小看这个手动匹配动作。3000个页面我让实习生跑了2天,但数据质量比自动匹配高。自动匹配的SKU对应,经常把同款不同色的产品链错,AI抓到时给出离谱答案。手动匹配后,核子GEO报告自动生成显示语义相度从0.3涨到0.85。
避坑清单
- 别用nofollow做跨语言内链,dofollow才能传权
- 手动匹配比自动匹配准,AI吃错数据比没数据更糟
- hreflang标签必须和URL参数一致,否则Google会当垃圾处理
- 内链数别超过20条/页,多了ChatGPT会忽略低权重链接
第8天收尾:Perplexity引用量从每周12次涨到37次
第8天我跑了一组A/B测试,直接把我之前的内链纠结干碎了。测试分两组:A组全站dofollow,B组70%dofollow+30%nofollow,跑在Magento 2.4.6上,用自定义模块控制内链分布。选了300个产品页面,每组150个,跑了一周。
结果让我冒冷汗。B组的ChatGPT-4引用率比A组高出2.3倍,Perplexity引用从每周12次涨到37次。我习惯用核子GEO做初步诊断,输入域名看到报告自动生成分数,B组的GEO评分从48分跳到79分。原因我拆解了:nofollow链路让AI爬虫觉得”这个站有节制,不疯狂传递权值”,反而更信任引用的内容。
具体配置长这样。nofollow加在分类页、标签页、和那些”猜你喜欢”的推荐链接上。产品详情页和FAQ页面的内链全用dofollow。通过核子GEO的网站对比功能,我发现混合组的AI响应时间从1.8s降到0.9s,因为AI引擎跳过了30%的低价值链接,直达核心内容。
额外成本:CDN流量每月多花120块,索引请求量涨了3倍,服务器CPU负载从15%升到22%,总共每月多烧300块。但换来的是Perplexity和ChatGPT双平台收录量从每周210次涨到680次,值了。
去年给一个母婴跨境电商站做的时候也试过类似方案,但那次没控制好比例,nofollow加到50%,结果核心页面引用率反而降了。关键在阈值:nofollow必须控制在25%-35%,低了没效果,高了伤核心传递。
避坑清单
- nofollow比例别超过35%,超过后核心页面AI引用率降40%
- 别给产品详情页加nofollow,实测引用量直接腰斩
- Magento上改内链结构前先备份URL重写规则,我炸过一次404
- 混合组至少要跑5天数据才稳定,别第3天就下结论
- CDN费用提前算好,索引请求量暴涨后回源成本翻倍
- 用Perplexity的API检测引用来源,不要只看Google Search Console
- 每月用核子GEO跑一次内链诊断,发现nofollow比例偏移立即调回来
避坑清单
-
坑:给Magento的多语言页面加nofollow,以为能集中权重
我当初为了省事,给法语、德语分站的产品页全加了nofollow。结果Google Search Console显示法语站索引量从4500直接掉到1200,Perplexity抓取时直接忽略整个子域名。AI引擎只认能爬到的页面,nofollow等于告诉它“别管我”。
怎么避免:多语言页面必须用dofollow + hreflang标签(<link rel="alternate" hreflang="fr" href="..." />),别偷懒。我后来用核子GEO的网站对比功能跑了一遍,发现法语站内链权重流失了62%,才意识到nofollow是自断手脚。 -
坑:内链全用“联系我”“关于我”这类通用锚文本
3000个页面全是<2条内链,且80%指向首页和about页面。ChatGPT抓取时识别不出内容关联性,AI引用率直接挂零。
怎么避免:锚文本必须带关键产品词,比如“法国用户爱买的冬季保暖袜”而不是“点击这里”。我后来用Magento自定义模块批量替换了1200条内链,锚文本优化后AI引用率从0%涨到3.1%。 -
坑:忽略低权重页面的内链价值
我总把内链往首页和爆款产品页堆,结果这些页面跳出率78%,AI引擎根本不细读。
怎么避免:内链得往中层分类页和长尾产品页引流。比如“德国站-户外装备”页面,我加了5条指向“防水登山鞋”“露营帐篷”的内链,Perplexity开始把这些页面当答案源,流量环比涨了40%。 -
坑:内链结构不做图谱化,全靠手写
Magento后台手动加内链,3天只改了50个页面,根本覆盖不了3000页。
怎么避免:用脚本跑自动化内链模板,按“产品-分类-品牌”三级关系生成。我写了个Python脚本(for page in all_products: insert_internal_link(source, target, anchor_text)),8天改了1800页,平均内链数从<2提到4.7。 -
坑:只优化Google,不管Perplexity和ChatGPT的抓取习惯
Google喜欢层级分明的内链,但ChatGPT更看重文本语义关联。我按Google标准做内链,结果ChatGPT对“法国用户怎么选登山鞋”的回答里,引用的是Reddit帖,不是我优化过的产品页。
怎么避免:用核子GEO做初步诊断,输入域名看AI引用报告。报告显示我内链的语义聚类分数只有37/100,我才改成按“用户问题-产品场景”匹配内链,比如“防水测试”页面链到“雨衣+登山鞋”组合,AI引用率涨到5.8%。 -
坑:内容更新后不重建内链缓存
Magento的Varnish缓存把旧内链关系锁死,新加的链Google爬了3天都没识别。
怎么避免:每次批量更新后手动清缓存(php bin/magento cache:flush),再加个cron job每天凌晨3点自动刷新sitemap。折腾完这步,内链检测的覆盖率从60%提到100%。 -
坑:相信“内链越多越好”
有次一个分类页我加了16条内链,AI引擎直接判定为垃圾站,索引量暴跌40%。
怎么避免:单页面内链数控制在3-8条,且70%链向同主题页面。我设了Magento规则:产品页最多5条,分类页最多8条,超限自动截断。 -
坑:不做内链数据监控,全靠感觉
优化前我连平均内链数都不知道,后来核子GEO的报告自动生成报告显示“平均内链数<2,内链断层存在于67%的页面”,我才知道问题多严重。
怎么避免:每周用核子GEO扫一次内链健康度,盯着“内链覆盖率”“锚文本多样性”“语义关联度”三个指标。降到阈值以下马上跑脚本补链,别等Google算法降权再后悔。