语义化标签不直接加权,但错误使用会导致SEO降权。必须且只能有一个main,它与header构成意图校验对;nav仅含主导航链接并用aria-label区分;article用于独立可分发内容,section仅作主题分区;h1需在main内且唯一,严禁跳级;服务端HTML中语义标签必须真实存在。

语义化标签本身不加权,但用错会直接导致正文被当成页脚、广告被当主体——SEO权重不是被“加上去”的,是被爬虫“认出来”的。
为什么 <main></main> 必须且只能有一个
Google 移动优先索引(2023年起100%启用)默认只信任 <main></main> 内的内容为页面核心价值所在。它不是装饰性容器,而是爬虫判断“用户该看什么”的第一依据。
- 嵌套在
<header></header>或<footer></footer>里的<main></main>会被完全忽略 -
<main></main>里若只有空<div id="root"></div>,而真实内容靠 JS 动态注入,爬虫首屏抓取即判定为“无实质内容” - 每个页面只能有一个
<main></main>;出现两个时,爬虫可能随机选一个,或整体降权处理 -
<main></main>必须包裹全部首屏主体文本、<h1></h1>、关键段落和<figure></figure>,不能漏掉任何一段用户真正需要的信息
<nav></nav> 里塞错链接会让所有导航词权重归零
<nav></nav> 不是“有链接的盒子”,它是爬虫识别“主导航意图”的唯一语义锚点。Google 明确将其中链接赋予更高内部权重传递能力,实测可提升约 40% 的关键词相关性——但前提是结构干净、意图明确。
- 错误做法:把搜索框、登录按钮、产品推荐栏塞进同一个
<nav></nav> - 正确做法:只放真正构成站点导航路径的链接,如首页、产品、关于我们、博客
- 多个导航需用
aria-label区分:<nav aria-label="主导航"></nav>和<nav aria-label="面包屑导航"></nav> -
<nav></nav>内部必须用<ul></ul>+<li>,不用<div> 嵌套——否则爬虫无法建模链接间的并列关系,关键词关联强度直接削弱 <h3> <code><article></article>和<section></section>混用会触发内容降权两者语义完全不同:
<article></article>表示可独立分发、复用的内容单元(如一篇博客、一条新闻);<section></section>只是按主题划分的区块,没有独立传播价值。混用会让爬虫误判内容粒度与复用性。立即学习“前端免费学习笔记(深入)”;
- 博客列表页:每篇摘要必须各自包裹在独立的
<article></article>中,而不是全塞进一个<section></section> - 单篇博客内:“背景介绍”“技术原理”“实操步骤”这些模块用
<section></section>+ 对应<h2></h2>划分 -
<article></article>可以嵌套<section></section>,但反过来不行;<section></section>里没<h2></h2>会被视为结构缺失 - 评论区每条评论也应是独立
<article></article>,而非<div class="comment"> <h3> <code><h1></h1>放错位置等于主动放弃页面主关键词<h1></h1>是整页内容逻辑树的根节点,它和<title></title>构成“意图一致性”校验对。爬虫靠这个组合确认页面核心主题——放错位置,权重就断了。-
<h1></h1>必须出现在<main></main>内部、DOM 靠前位置;放在<header></header>里又没同步进<main></main>,会被弱化甚至忽略 - 严禁跳级:从
<h1></h1>直接到<h4></h4>比不用语义标签还危险,实测段落识别准确率下降约 40% - 每个页面只允许一个
<h1></h1>;重复或缺失都会让标题层级断裂,影响爬虫建模 -
<h2></h2>密度建议控制在 3–5 个/页;太少显得结构单薄,太多则稀释主次
最常被忽略的失效点:服务端输出的 HTML 源码中,
<main></main>是空的,或者<h1></h1>在 JS 渲染后才插入——爬虫根本看不到,所有语义努力归零。 -
- 博客列表页:每篇摘要必须各自包裹在独立的



















