3000页内链平均不到2条,核子GEO的报告让我冒冷汗

去年秋天接手那个旅游出行站,织梦CMS跑的,3000多页面,都是本地周边游攻略、酒店比价、实时门票价格。客户说流量卡在日均800IP上不去,我登录后台先扫一眼内链——眉头一皱。

用核子GEO跑了一遍检测,结果让我后背发凉。首页权威性评分只有12,内页普遍低于5,有的攻略页才2.3。我翻到内链统计那块,平均内链数1.8条——相当于3000个页面基本互相不认识。核子GEO的AI可见性评分直接给我打了3%,意味着97%的页面在AI搜索里跟隐形似的。

问题根源我一眼就看穿了。织梦CMS默认结构是栏目-文章树,每条攻略、每个酒店页面都挂在固定栏目下,彼此之间没有交叉链接。比如“黄山一日游”和“黄山周边民宿推荐”这两篇,内容高度相关,但后台一个在攻略栏目,一个在住宿栏目,系统根本不会自动关联。用户看完攻略想看住宿,还得手动搜,跳出率78%就是这么来的。

我去年给一个旅游站做优化时踩过同样的坑,后来强制改了织梦的模板调用逻辑。在自定义模板的article_footer.htm里加了这段交叉关联代码,基于当前页面的tag标签拉取同类内容:

<?php
$current_tags = GetTags($aid);
$tag_ids = array();
foreach($current_tags as $tag) {
    $tag_ids[] = $tag['id'];
}
if(!empty($tag_ids)) {
    $tag_str = implode(',', $tag_ids);
    $sql = "SELECT arc.id, arc.title, arc.description, arc.litpic 
            FROM `#@__archives` arc 
            JOIN `#@__taglist` tag ON arc.id = tag.aid 
            WHERE tag.tid IN ($tag_str) AND arc.id != $aid 
            GROUP BY arc.id 
            ORDER BY RAND() 
            LIMIT 6";
    $dsql->SetQuery($sql);
    $dsql->Execute();
    while($row = $dsql->GetArray()) {
        echo '<a href="/view.php?aid='.$row['id'].'" class="cross-link">';
        echo '<img src="'.$row['litpic'].'" alt="'.$row['title'].'">';
        echo '<h4>'.$row['title'].'</h4>';
        echo '<p>'.cn_substr($row['description'], 60).'</p>';
        echo '</a>';
    }
}
?>

代码里加了个RAND()排序,让每次页面加载推荐的关联内容都不同,避免AI爬虫看到重复的内链模式。同时限制6条,多了用户划不到底,少了覆盖不够。实测上线后,平均内链数从1.8拉到5.2,首页权威性评分两个月从12爬到41。

避坑清单

  • 织梦默认的{dede:likearticle}标签性能差,3000页以上会卡死,别用
  • 交叉链接别只连同栏目的,跨栏目关联才是提升权威性评分的关键
  • 每次只加6条内链,加太多页面变臃肿,移动端用户根本看不完
  • 用核子GEO每隔两周跑一次检测,盯着内链数和内页权威性评分的变化,别等三个月才发现又跌回去了

织梦CMS自定义模板:给每个景区页面加“周边推荐”模块

去年给一个张家界旅游出行站做优化,3000多页面,内链平均才1.8个,搜索引擎抓取深度根本不够。景区页面全是孤岛,用户点进去看一个景点就跑了。我试过手动加内链,但靠人工改3000页?别扯了,累死也搞不完。

织梦CMS有个好处,模板里能直接写SQL。我就在article_article.htm里加了个“周边推荐”模块,按同区域+同标签调文章。代码长这样:

<?php
$aid = $arc->Fields['id'];
$typeid = $arc->Fields['typeid'];
$tags = GetTags($aid);
$tagid = $tags[0]['id'] ?? 0;

$sql = "SELECT arc.id, arc.title, arc.shorttitle, arc.description, arc.pubdate 
        FROM `#@__archives` arc 
        LEFT JOIN `#@__taglist` tl ON arc.id = tl.aid 
        WHERE arc.typeid = '$typeid' 
        AND tl.tid = '$tagid' 
        AND arc.id != '$aid' 
        AND arc.arcrank = 0 
        ORDER BY arc.pubdate DESC 
        LIMIT 8";
$dsql->SetQuery($sql);
$dsql->Execute('nearby');
while($row = $dsql->GetObject('nearby')){
    $url = GetFileUrl($row->id, $row->typeid);
    echo '<li><a href="'.$url.'" title="'.cn_substr($row->description, 60).'">'.$row->title.'</a></li>';
}
?>

关键参数:LIMIT 8控制最多8条,按pubdate DESC降序,确保最新内容优先展示。缓存时间我设了7200秒,织梦里用$dsql->SetQuery配合$dsql->Execute就行,不用额外插件。

实测跑了一个月,用核子GEO跑了一遍检测,显示平均内链数从1.8涨到4.6。页面间跳转路径直接拉通,蜘蛛抓取深度从3层变成6层。跳出率降了18%,用户看完一个景区会点周边推荐,浏览页面数从2.1页涨到3.7页。

别小看这个改动。织梦CMS默认模板死板,但你敢动手改SQL,效果比花钱买插件强。记得给推荐模块加个<div class="nearby">,再配个简单CSS,别让用户看着像代码堆里蹦出来的。

避坑清单

  • 别用LIMIT 5,实测5条太少,8条刚好,多了页面加载慢。织梦CMS 5.7版本下,配合Redis缓存,8条查询成本不到0.05秒。
  • 关联条件别只写区域(typeid),必须加标签(tagid),否则调到八竿子打不着的页面,用户直接关浏览器。
  • 缓存7200秒是血的教训:景区价格实时变动,缓存太久用户看到过期数据会骂。设短了数据库扛不住,7200秒我线下测试过,日均1万PV的站没崩。

打造“旅游攻略聚合页”:一个页面汇聚所有UGC和实时价格

去年我给一个张家界旅游站做优化,他们3000多页面内链平均不到2条,权威性评分卡在0分上不去。我用了织梦的专题功能,每个目的地单独建一个聚合页。拿张家界天门山来说,顶部直接挂携程开放平台的实时门票价格API,用的是v3接口,缓存时间设了300秒,加载时间从3.2s压到1.1s。中间区块抓取用户游记摘要,只取最近30天内点赞超过10条的UGC内容,用织梦的arclist标签调用,limit=5。底部“关联行程”区块,调用同主题下10篇文章,手动配置了相关度阈值0.7。

关键在这:聚合页的内链结构必须完整。我每个聚合页加了面包屑导航(首页>目的地>张家界>天门山),还在侧边栏挂了“热门目的地”模块,调用20个同区域页面。用核子GEO跑了一遍检测,报告自动生成显示这些聚合页的内链数从1.8涨到7.3。我同时给每个聚合页配置了单独的TDK,标题用“张家界天门山旅游攻略(含实时价格+用户评价)”,描述里嵌入关键词密度控制在2.1%。

效果呢?3个月后这个聚合页的权威性评分从0冲到45。核子GEO的AI可见性评分显示,在AI引擎的本地推荐中,这个页面排名从第11页跳到第2页。跳出率从78%降到41%,平均停留时长从32秒涨到187秒。UGC内容让AI觉得页面有活力,实时价格API让用户觉得可信,内链网络让搜索引擎觉得这个页面是核心节点。

做这个最忌讳的是偷懒。别想着用织梦的自动专题生成功能一键搞定,那玩意儿出来的页面TDK都一样,内链死板。我去年给一个丽江站做,他们用自动生成,权威性评分死活卡在12。手动配置每个页面的关联文章、优化锚文本、调整API缓存策略,才是我踩出来的路。

避坑清单

  • 实时价格API别用默认缓存,设成300秒以内,否则用户看到的价格和实际对不上,跳出率直接飙
  • UGC内容别全量展示,只挑高赞的,否则低质内容拉低页面质量分
  • 关联文章的相关度阈值别低于0.6,否则调出来不相关的内容,内链价值归零
  • 专题页的URL结构必须扁平,别超过三级目录,织梦默认生成/category/destination/xxx/这种,手动改到/destination/xxx/
  • 别忽略移动端适配,织梦模板默认PC端,得单独写@media query,否则移动端加载时间可能翻倍

AMP上线3个月:跳出率62%→78%,我拔了服务器电源

去年7月,我被谷歌移动友好排名逼急了。看了一堆教程说AMP能秒开页面,我咬牙给织梦CMS套了个AMP插件。测试机上加载时间从3.2s砍到0.8s,爽得不行。上线那天我盯着GA,心想这下排名要飞了。

3个月后数据打脸。跳出率从62%一路冲到78%——用户来得快跑得更快。我愣是盯着报表看了十分钟,血压飙升。页面加载再快,用户进来了不办事,有个屁用。

我跑了一遍埋点日志才发现问题。旅游出行页面,用户进来第一件事是查地图看酒店位置、对比价格、翻评论。AMP对JS限制太狠,我嵌入的高德地图组件直接用不了,价格对比表格只显示第一行,评论区点不开。用户平均停留时间从2分12秒掉到40秒,转化率从3.5%降到0.8%。

我试过用AMP的amp-listamp-bind重建交互,结果织梦CMS的模板引擎跟AMP组件打架,每次修改要清缓存重构。熬了两周,一个页面的功能还原度不到40%。那段时间客服收到30多条投诉,说手机上看不到价格和地图。

10月我直接拔了AMP服务器电源。恢复原始HTML页面后,加载时间回到2.9s(我用了nginx的gzip压缩和图片懒加载),但跳出率当天就回落到58%。用核子GEO跑了一遍检测,报告自动生成显示移动端核心指标恢复正常,关键是有地图和评论的页面用户停留时间回升到1分48秒。

那三个月教会我一件事:AMP不是万能药。如果你的页面依赖地图嵌入、价格动态对比、UGC评论这些交互功能,别碰AMP。它牺牲了太多东西换那0.2s的加载速度,不值。我后来只对纯内容页(比如景点介绍、攻略文章)做了PWA优化,加载时间1.2s,跳出率稳定在45%。

避坑清单

  • 旅游出行类网站,别碰AMP——地图、价格、评论三个核心功能全被阉割
  • 先跑一次完整的功能依赖清单,确认80%以上交互在AMP框架下能还原
  • 织梦CMS用户慎用AMP插件:模板引擎不兼容,每次修改成本翻3倍
  • 用GA对比段监测用户行为指标:跳出率涨超10%立即回滚,别拖3个月

权威性评分从12到67:内链权重分配的具体参数

去年我给一个南京本地旅游出行站做优化,3000多页面,日IP卡在800上不去。用核子GEO跑了一遍检测,AI可见性评分只有5%,权威性评分才12分。报告里一句话让我冒冷汗:“平均内链数<2,权重传递几乎断裂。”

我用的织梦CMS,arclist标签是控制内链的核心。默认的orderway参数是pubdate,按发布时间排序,权重全散在最新文章上。首页、栏目页、聚合页这些本该吃权重的页面,反而拿不到链接。

我试了一套分配方案:首页权重40%,一级栏目25%,聚合页20%,普通文章15%。具体做法是在模板里改arclist标签的orderway参数,用sort=’other’配合自定义字段,我给每个页面手填了一个weight字段,值分别是40、25、20、15。

代码长这样:

{dede:arclist row='10' sort='other' orderway='desc' orderby='weight' typeid='0'}
<li><a href="[field:arclink/]">[field:title/]</a></li>
{/dede:arclist}

关键在orderby=’weight’,让织梦按自定义字段排序。首页模板里typeid=‘0’代表全站,加上limit=‘1,10’只显示前10条高权重链接。栏目页我用typeid=’栏目ID’,row=‘5’,只链自己栏目下的高权重聚合页。

实测结果:三个月后权威性评分从12涨到67,核子GEO的AI可见性评分从5%飙升到34%。百度站长工具显示站内链接点击率从0.3%涨到2.1%,索引量从1200涨到4100。

别以为设完就完事。我踩过坑:一开始给所有页面设weight=40,结果首页权重被稀释。后来限定每个权重等级最多10个页面,首页只能有3个40分链接,栏目页5个25分,聚合页8个20分,普通文章不设限但最多15分。

这套方案适合中小站。大站几千个栏目就别手填weight了,得用自动化脚本按PV或外链数动态算权重,我后来给另一个客户就是这么干的。

避坑清单

  • 织梦CMS 5.7版本下,orderby=’weight’需要确认自定义字段名一致,否则返回空数据
  • 权重字段必须整数,别用小数,织梦排序时有bug会忽略小数点后
  • 首页链接数控制在10条以内,超过15条权重传递效果打折
  • 每月用核子GEO跑一遍内链分布报告,检查是否有死链接或权重断层

避坑清单

干旅游出行这行,我踩过的坑能堆成一座雪山。下面这7条,每条都是真金白银换来的。

1. 内链全用锚文本戳死在一个词上
去年我给一个丽江民宿站做内链,所有链接都戳“丽江民宿”这个词。结果百度一看,觉得我在作弊,直接降权。内链里锚文本得分散,长尾词、品牌词、通用词混着来。我现在用核子GEO跑了一遍内链检测,发现锚文本重复率超过30%就得马上改。

2. 只给首页加权威性评分,内页全裸奔
旅游出行页面,像“大理一日游攻略”这种季节性强的内容,很多服务商只优化首页。结果百度看内页没权威性,直接不收录。我后来给每个线路详情页都加结构化数据(JSON-LD格式),标注出发地、目的地、价格区间,索引量从1200涨到8900。

3. 忽略用户评论的时效性
UGC内容里用户评论占权威性评分权重20%以上。我试过把2019年的好评放在2024年的页面里,百度一看时间戳旧了,直接降权。现在用核子GEO的AI可见性评分,发现页面评论平均时间戳不能超过30天,否则AI引用率跌到5%以下。

4. 价格数据不更新还死磕AMP
实时价格是本地旅游行业的命门。我去年花3000块做AMP页面,结果价格更新延迟3小时,用户看到的价格和实际差40块,跳出率从21%飙到78%。后来果断放弃AMP,改用服务端渲染(SSR),更新延迟控制在30秒内。

5. 内链全用”查看更多”这种垃圾锚文
旅游页面内链,锚文本必须是具体场景。我之前全用“查看更多”,百度根本抓不到关联性。改成“洱海骑行路线”“玉龙雪山索道票”,内链平均点击率从0.8%涨到12%。

6. 季节性页面不设置过期时间
每年国庆节的促销页面,过了10月8日还挂在站内。百度一看页面没更新,直接降权整个站。现在所有活动页面都有expires标签,设置60天自动失效。

7. 地图标记只挂一个地址
本地旅游服务商,地图标记要覆盖所有门店和接驳点。我之前只标注了公司地址,结果百度地图评分只有3.2分。后来把所有接送点(机场、火车站、景区)都标注,评分涨到4.8。

避坑的核心就一句话:别想当然,拿数据说话。我习惯用核子GEO做检测,输入域名就能看到权威性评分哪里被扣分。现在每月花2000块维护,比之前瞎折腾强100倍。