On-page 优化
On-page SEO——页面级别的精细优化,让搜索引擎准确理解你的内容。
On-page 优化要素
graph TD
ONPAGE[On-page SEO] --> TITLE[标题标签 Title]
ONPAGE --> META[Meta Description]
ONPAGE --> URL_S[URL 结构]
ONPAGE --> HEADING[标题层级 H1-H6]
ONPAGE --> CONTENT_O[内容优化]
ONPAGE --> INTERNAL[内链架构]
ONPAGE --> IMAGE[图片优化]
TITLE --> CLICK[影响点击率]
CONTENT_O --> RANK_C[影响排名]
INTERNAL --> CRAWL_I[影响抓取]
style ONPAGE fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style TITLE fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
标题标签优化
"""
Title 标签优化检查器
"""
from dataclasses import dataclass
@dataclass
class TitleChecker:
"""标题检查"""
title: str
keyword: str
brand: str = ""
def check(self) -> dict:
issues = []
tips = []
# 长度检查
length = len(self.title)
if length < 30:
issues.append(f"标题过短 ({length}字符, 建议 50-60)")
elif length > 60:
issues.append(f"标题过长 ({length}字符, 会被截断)")
else:
tips.append(f"长度合适 ({length}字符)")
# 关键词检查
if self.keyword.lower() in self.title.lower():
position = self.title.lower().index(self.keyword.lower())
if position < 10:
tips.append("关键词靠前, 很好!")
else:
tips.append("关键词存在, 但可再靠前")
else:
issues.append("标题中未包含目标关键词")
# 品牌检查
if self.brand:
if self.brand in self.title:
tips.append("包含品牌名")
else:
tips.append("可在末尾加 '| 品牌名'")
return {
"标题": self.title,
"长度": length,
"问题": issues if issues else ["无问题"],
"建议": tips,
"评分": "优" if not issues else "需改善",
}
titles = [
TitleChecker("Python 入门教程: 零基础 30 天学会编程 (2024 完整版)", "python 入门教程"),
TitleChecker("教程", "python"),
TitleChecker("这是一篇非常好的关于如何学习Python编程语言的入门级教程文章,强烈推荐初学者阅读", "python"),
]
print("=== Title 标签检查 ===")
for checker in titles:
result = checker.check()
print(f"\n标题: {result['标题']}")
print(f" 长度: {result['长度']}字符 | 评分: {result['评分']}")
for issue in result["问题"]:
print(f" ❗ {issue}")
for tip in result["建议"]:
print(f" ✓ {tip}")
标题层级与内容结构
graph TD
H1[H1: Python 入门教程] --> H2A[H2: 安装 Python]
H1 --> H2B[H2: 基础语法]
H1 --> H2C[H2: 实战项目]
H2A --> H3A1[H3: Windows 安装]
H2A --> H3A2[H3: Mac 安装]
H2B --> H3B1[H3: 变量与类型]
H2B --> H3B2[H3: 控制流]
H2B --> H3B3[H3: 函数]
H2C --> H3C1[H3: 计算器项目]
style H1 fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style H2A fill:#e8f5e9,stroke:#2e7d32
style H2B fill:#e8f5e9,stroke:#2e7d32
style H2C fill:#e8f5e9,stroke:#2e7d32
内链架构
"""
内链策略规划
"""
INTERNAL_LINK_STRATEGY = {
"支柱页面 Pillar": {
"角色": "主题权威页面, 覆盖宽泛关键词",
"长度": "3000-5000 字",
"内链": "链接到所有子页面",
"示例": "/python-tutorial/ (Python 教程总览)",
},
"子页面 Cluster": {
"角色": "深入特定子话题",
"长度": "1500-3000 字",
"内链": "链接回支柱页 + 相邻子页",
"示例": "/python-tutorial/variables/ (变量与类型)",
},
"内链规则": [
"1. 每个子页面至少链回一次支柱页",
"2. 使用描述性锚文本 (不用 '点击这里')",
"3. 每 300 字自然插入 1-2 个内链",
"4. 重要页面放在导航/面包屑中",
"5. 首页 3 次点击内可达任何页面",
],
}
print("=== 内链架构策略 ===")
for key, info in INTERNAL_LINK_STRATEGY.items():
if isinstance(info, dict):
print(f"\n【{key}】")
for k, v in info.items():
print(f" {k}: {v}")
elif isinstance(info, list):
print(f"\n【{key}】")
for rule in info:
print(f" {rule}")
On-page 检查清单
| 要素 | 最佳实践 | 影响 |
|---|---|---|
| Title | 50-60字, 关键词靠前 | CTR + 排名 |
| Meta Description | 120-155字, 含 CTA | CTR |
| URL | 短小、含关键词、用连字符 | 排名 + 用户体验 |
| H1 | 每页仅一个, 含关键词 | 排名 |
| H2-H3 | 有逻辑层级, 自然含关键词 | 排名 + 可读性 |
| 图片 ALT | 描述性文字, 含关键词 | 图片搜索 |
| 内链 | 描述性锚文本, 链接相关页 | 权重传递 |
| 内容长度 | 满足搜索意图即可 | 排名 |
行动清单
- [ ] 审查网站 Top 20 流量页面的 Title 标签,确保核心关键词出现在前 30 个字符内
- [ ] 用 Screaming Frog 爬取全站,筛选出缺失 Meta Description 或超过 160 字的页面并修复
- [ ] 为每个页面规划「支柱页 ↔ 子页面」内链关系,确保子页面有锚文本链接指向支柱页
- [ ] 检查孤立页面(无任何内链指入),在相关内容中补充指向它们的内链
- [ ] 确保每个 URL 只对应一个关键词,重叠关键词的页面考虑合并或差异化定位
- [ ] 检查所有图片 ALT 属性:描述性文字 + 自然包含关键词,避免堆砌
下一节:02-内容优化与语义SEO — 从关键词堆砌到语义相关实体,现代内容优化的完整框架。