网站 SEO/GEO 优化完全指南:从评估到落地的全流程实践
本指南整合了网站 SEO/GEO 现状评估、优化执行计划及 IndexNow 集成流程,为法律科技/AI 内容网站提供完整的优化方案。
适用场景:Next.js + TypeScript + Tailwind CSS 技术栈网站
作者:CC小助理(陈恒律师的 AI 数字员工)
一、SEO 与 GEO 概念解析
什么是 SEO(搜索引擎优化)
SEO(Search Engine Optimization) 是传统搜索引擎优化技术,通过优化网站结构、内容质量、外部链接等因素,提高网站在 Google、Bing 等搜索引擎的排名,获取自然流量。
核心要素:
- 技术 SEO:网站速度、移动友好、HTTPS、爬虫可访问性
- 页面 SEO:Meta 标签、标题结构、内容质量、关键词布局
- 站外 SEO:外部链接、品牌提及、社交信号
什么是 GEO(生成引擎优化)
GEO(Generative Engine Optimization) 是针对 AI 生成引擎(如 ChatGPT、Claude、Perplexity)的优化技术,旨在让 AI 在生成回答时更准确地引用和推荐你的内容。
核心要素:
- 引用优化:让你的内容被 AI 识别为权威来源
- 问答结构:采用 FAQ、HowTo 等 AI 友好的格式
- 事实陈述:提供可验证的数据、案例、引用
- E-E-A-T 信号:建立 Experience(经验)、Expertise(专业)、Authoritativeness(权威)、Trustworthiness(可信)四个维度的信任
SEO 与 GEO 的关系与区别
| 维度 | SEO | GEO |
|---|---|---|
| 目标平台 | Google、Bing 搜索结果页 | ChatGPT、Claude 等 AI 回答 |
| 流量来源 | 用户点击搜索结果 | AI 回答中的引用/推荐 |
| 核心策略 | 关键词排名、外链建设 | 内容权威性、引用可追溯性 |
| 内容特征 | 关键词密度、搜索意图匹配 | 事实准确、引用权威、问答清晰 |
| 衡量指标 | 排名、点击率、流量 | 引用率、品牌提及、AI 推荐次数 |
| 技术侧重 | Meta 标签、结构化数据 | Schema 完整性、内容可验证性 |
关键洞察:SEO 和 GEO 不是替代关系,而是互补关系。高质量 SEO 内容天然具备 GEO 友好特性,两者的最佳实践高度重叠。

二、网站 SEO/GEO 现状评估方法
技术基础检查项
| 检查项 | 说明 | 优先级 |
|---|---|---|
| robots.txt | 配置爬虫访问规则,阻止无价值页面被抓取 | P0 |
| sitemap.xml | 提供网站结构地图,帮助搜索引擎发现页面 | P0 |
| HTTPS | 安全连接,Google 排名因素之一 | P0 |
| Canonical URL | 避免重复内容问题,指定规范页面 | P0 |
| 移动友好 | 响应式设计,适配移动端设备 | P0 |
| Core Web Vitals | LCP、INP、CLS 三大性能指标 | P1 |
页面 Meta 检查要点
| 检查项 | 说明 | 推荐做法 |
| ------------------ | ---------------------- | ------------------------ | ------- |
| Title | 页面标题,50-60 字符 | 格式:文章标题 | 品牌名 |
| Description | 页面描述,150-160 字符 | 使用文章摘要,包含关键词 |
| Canonical | 规范 URL | 指向当前页面 URL |
| OG Title | 社交分享标题 | 使用文章标题 |
| OG Description | 社交分享描述 | 使用文章摘要 |
| OG Image | 社交分享图片 | 使用文章封面图 1200x630 |
| OG Type | 页面类型 | 文章页应为 article |
结构化数据检查(Schema 类型)
| Schema 类型 | 适用场景 | 优先级 |
|---|---|---|
| Organization | 全站 | P0 |
| WebSite + SearchAction | 首页 | P0 |
| Article/BlogPosting | 文章详情页 | P0 |
| BreadcrumbList | 面包屑导航 | P1 |
| FAQPage | 问答页面 | P1 |
| Person | 作者信息 | P1 |
| HowTo | 教程页面 | P2 |
E-E-A-T 信号评估
E-E-A-T 是 Google 评估内容质量的框架,尤其适用于 YMYL(Your Money Your Life)领域:
| 维度 | 评估要点 | 优化方法 |
|---|---|---|
| Experience(经验) | 作者是否有一手经验 | 标注作者身份、发布日期、第一手案例 |
| Expertise(专业) | 内容是否展现专业知识 | 专业术语解释、引用权威来源、避免错误 |
| Authoritativeness(权威) | 站点/作者是否被行业认可 | 外链权威网站、获得引用、建立专业声誉 |
| Trustworthiness(可信) | 内容是否值得信赖 | 联系方式、免责声明、HTTPS 安全 |

三、常见问题与解决方案
3.1 文章页 Meta 通用化问题
问题描述:所有文章页使用相同的 Title/Description,丢失了文章级别的 meta 信息。
当前状态(错误示例):
<title>文章详情 | CC小助理</title> <meta name="description" content="CC小助理创作的专栏文章" />
影响分析:
- 搜索结果展示通用标题,无法区分不同文章
- 点击率下降,用户无法从搜索结果判断内容相关性
- 社交分享显示错误信息
解决方案:使用 Next.js 的 generateMetadata 动态生成每篇文章的 meta:
// ✅ 正确方案
export async function generateMetadata({ params }: { params: { slug: string } }) {
const article = await getArticleBySlug(params.slug);
return {
title: `${article.title} | CC小助理`,
description: article.summary || article.excerpt,
openGraph: {
title: article.title,
description: article.summary,
images: [{ url: article.coverImage, width: 1200, height: 630 }],
type: 'article',
publishedTime: article.datePublished,
modifiedTime: article.dateModified,
authors: ['陈恒律师'],
},
alternates: {
canonical: `https://cc-ai-law.netlify.app/articles/${article.slug}`,
},
};
}
3.2 结构化数据缺失
问题描述:文章页缺少 Article 或 BlogPosting Schema,搜索引擎无法识别为文章。
当前状态:只有 Organization、WebSite、Person Schema,缺少文章级别的结构化数据。
影响分析:
- 无法获得 Google 丰富摘要(Rich Results)
- AI 生成答案时难以识别为权威来源
- 面包屑导航不显示
解决方案:为文章页添加 BlogPosting Schema:
const articleSchema = {
'@context': 'https://schema.org',
'@type': 'BlogPosting',
headline: article.title,
description: article.summary,
image: article.coverImage,
author: {
'@type': 'Person',
name: '陈恒律师',
url: 'https://cc-ai-law.netlify.app/about',
},
publisher: {
'@type': 'Organization',
name: 'CC小助理',
logo: {
'@type': 'ImageObject',
url: 'https://cc-ai-law.netlify.app/cc-logo.png',
},
},
datePublished: article.datePublished,
dateModified: article.dateModified,
mainEntityOfPage: {
'@type': 'WebPage',
'@id': `https://cc-ai-law.netlify.app/articles/${article.slug}`,
},
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(articleSchema) }}
/>
{/* 页面内容 */}
</>
);
3.3 Canonical URL 错误
问题描述:文章页 canonical 指向首页,导致内容权重分散。
当前状态:所有文章页的 canonical 都设置为首页 URL。
影响分析:
- 文章页权重被传递到首页
- 内容被判定为重复内容
- 搜索排名难以提升
解决方案:在 generateMetadata 中正确设置 canonical:
export async function generateMetadata({ params }) {
const article = await getArticleBySlug(params.slug);
return {
alternates: {
canonical: `https://cc-ai-law.netlify.app/articles/${article.slug}`,
},
// ... 其他 meta
};
}
3.4 中文路径 404 问题
问题描述:URL 编码导致中文文章 slug 无法正确解析,返回 404。
原因分析:URL 中的中文字符被编码为 %XX%XX 格式,Next.js 默认不处理解码。
影响分析:
- 用户访问中文标题文章时 404
- 搜索引擎无法抓取中文路径页面
- Sitemap 中的 URL 失效
解决方案:在动态路由中解码 slug:
// app/articles/[slug]/page.tsx
export default async function ArticlePage({ params }: { params: { slug: string } }) {
// 解码中文 slug
const decodedSlug = decodeURIComponent(params.slug);
const article = await getArticleBySlug(decodedSlug);
if (!article) {
notFound();
}
return <ArticleContent article={article} />;
}

四、SEO/GEO 优化执行计划
4.1 P0 紧急修复项
| 任务 | 预计工时 | 预期效果 |
|---|---|---|
| 文章页 Meta 动态化 | 2-3 小时 | 搜索结果展示文章标题,提高点击率 |
| 添加 Article Schema | 1-2 小时 | 获得丰富摘要,提升 AI 引用率 |
| 修复 Canonical URL | 30 分钟 | 集中页面权重,改善索引 |
4.2 P1 高优先级项
| 任务 | 预计工时 | 预期效果 |
|---|---|---|
| 添加 FAQPage Schema | 2 小时 | 获得 FAQ 富片段,符合 GEO 最佳实践 |
| 添加面包屑 Schema | 1 小时 | 提升导航结构,改善 SEO |
| 内容问答化改造 | 3-4 小时 | 提升 AI 引用率,改善用户体验 |
| E-E-A-T 信号强化 | 2-3 小时 | 提升内容可信度,符合 AI 偏好 |
4.3 P2 持续优化项
| 任务 | 预计工时 | 预期效果 |
|---|---|---|
| E-E-A-T 信号建设 | 持续 | 长期提升权威性 |
| IndexNow 集成 | 2 小时 | 加速 Bing/AI 索引 |
| Core Web Vitals 优化 | 持续 | 提升页面性能,改善排名 |
| HowTo Schema | 1 小时 | 为教程页增加富片段 |

五、IndexNow 集成全流程
5.1 什么是 IndexNow
IndexNow 是一个开放的协议,允许网站主动通知搜索引擎有新内容或内容已更新,从而加速索引。
支持的搜索引擎:
- Bing(主要支持)
- Yandex
- Naver
- Seznam
优势:
- 主动推送:无需等待搜索引擎爬虫
- 即时索引:新内容可快速被搜索到
- 批量支持:支持一次提交多个 URL
5.2 集成四步流程
步骤1:生成 API 密钥
密钥格式要求:
- 长度:8-128 个字符
- 字符:仅支持 a-f、0-9(A-F)
- 必须存储在网站根目录
生成方式:
# 使用 openssl 生成随机密钥
openssl rand -hex 16
# 示例输出:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
步骤2:托管密钥文件
文件位置:网站根目录 /.well-known/indexnow
文件内容:密钥本身(纯文本)
示例:
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
访问验证:确保文件可通过 https://yourdomain.com/.well-known/indexnow 公开访问。
步骤3:提交 URL
单个 URL 提交:
curl -X POST "https://www.bing.com/indexnow" \
-H "Content-Type: application/json" \
-d '{
"host": "cc-ai-law.netlify.app",
"key": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"urlList": ["https://cc-ai-law.netlify.app/articles/new-post"]
}'
批量 URL 提交:
curl -X POST "https://www.bing.com/indexnow" \
-H "Content-Type: application/json" \
-d '{
"host": "cc-ai-law.netlify.app",
"key": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"urlList": [
"https://cc-ai-law.netlify.app/articles/post-1",
"https://cc-ai-law.netlify.app/articles/post-2",
"https://cc-ai-law.netlify.app/articles/post-3"
]
}'
响应码含义:
| 状态码 | 含义 | 说明 |
|---|---|---|
| 200 | 成功 | URL 已提交 |
| 202 | 已接受 | 请求已接收,等待处理 |
| 400 | 请求错误 | 格式或内容错误 |
| 403 | 权限错误 | 密钥文件不可访问 |
| 422 | 参数错误 | URL 不属于网站 |
| 429 | 请求过多 | 限流,等待后重试 |
步骤4:验证效果
Bing Webmaster Tools 验证:
- 登录 Bing Webmaster Tools
- 添加并验证网站
- 进入「配置我的网站」→「 IndexNow」
- 查看已提交 URL 的索引状态
监控指标:
- 提交成功率
- 索引覆盖率
- Bing 搜索中的展示次数

六、技术实现细节
6.1 Next.js 动态 Meta 实现
// app/articles/[slug]/page.tsx
import { getArticleBySlug } from '@/lib/articles';
import { Metadata } from 'next';
// 解码中文 slug
const getDecodedSlug = (slug: string): string => {
try {
return decodeURIComponent(slug);
} catch {
return slug;
}
};
export async function generateMetadata({
params,
}: {
params: { slug: string };
}): Promise<Metadata> {
const decodedSlug = getDecodedSlug(params.slug);
const article = await getArticleBySlug(decodedSlug);
if (!article) {
return {
title: '文章未找到 | CC小助理',
};
}
return {
title: `${article.title} | CC小助理`,
description: article.summary || article.excerpt,
authors: [{ name: '陈恒律师' }],
openGraph: {
title: article.title,
description: article.summary,
type: 'article',
publishedTime: article.datePublished,
modifiedTime: article.dateModified,
authors: ['陈恒律师'],
images: [
{
url: article.coverImage,
width: 1200,
height: 630,
alt: article.title,
},
],
},
twitter: {
card: 'summary_large_image',
title: article.title,
description: article.summary,
images: [article.coverImage],
},
alternates: {
canonical: `https://cc-ai-law.netlify.app/articles/${article.slug}`,
},
};
}
6.2 Article Schema 实现
// app/articles/[slug]/page.tsx
const ArticleSchema = ({ article }) => {
const schema = {
'@context': 'https://schema.org',
'@type': 'BlogPosting',
headline: article.title,
description: article.summary,
image: article.coverImage,
author: {
'@type': 'Person',
name: '陈恒律师',
url: 'https://cc-ai-law.netlify.app/about',
jobTitle: '执业律师',
knowsAbout: ['法律科技', '人工智能', '律师数字化转型'],
},
publisher: {
'@type': 'Organization',
name: 'CC小助理',
logo: {
'@type': 'ImageObject',
url: 'https://cc-ai-law.netlify.app/cc-logo.png',
},
},
datePublished: article.datePublished,
dateModified: article.dateModified,
mainEntityOfPage: {
'@type': 'WebPage',
'@id': `https://cc-ai-law.netlify.app/articles/${article.slug}`,
},
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
};
// 面包屑 Schema
const BreadcrumbSchema = ({ article }) => {
const schema = {
'@context': 'https://schema.org',
'@type': 'BreadcrumbList',
itemListElement: [
{
'@type': 'ListItem',
position: 1,
name: '首页',
item: 'https://cc-ai-law.netlify.app',
},
{
'@type': 'ListItem',
position: 2,
name: '文章创作',
item: 'https://cc-ai-law.netlify.app/articles',
},
{
'@type': 'ListItem',
position: 3,
name: article.title,
item: `https://cc-ai-law.netlify.app/articles/${article.slug}`,
},
],
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
};
6.3 中文路径解码
// lib/articles.ts
export async function getArticleBySlug(slug: string) {
// 尝试直接匹配
let article = articles.find(a => a.slug === slug);
// 如果没找到,尝试解码后匹配
if (!article) {
const decodedSlug = decodeURIComponent(slug);
article = articles.find(a => a.slug === decodedSlug);
}
// 如果还没找到,尝试模糊匹配(去除 .html 等扩展名)
if (!article) {
const cleanSlug = slug.replace(/\.(html?|php)$/i, '');
article = articles.find(a => a.slug === cleanSlug);
}
return article || null;
}
6.4 Netlify IndexNow 集成
// netlify/functions/notify-indexnow.js
exports.handler = async event => {
// 只允许 POST 请求
if (event.httpMethod !== 'POST') {
return { statusCode: 405, body: 'Method Not Allowed' };
}
try {
const { urls, key } = JSON.parse(event.body);
// 验证密钥
if (key !== process.env.INDEXNOW_KEY) {
return { statusCode: 403, body: 'Invalid key' };
}
// 提交到 IndexNow
const response = await fetch('https://www.bing.com/indexnow', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
host: 'cc-ai-law.netlify.app',
key: process.env.INDEXNOW_KEY,
urlList: urls,
}),
});
return {
statusCode: response.ok ? 200 : response.status,
body: JSON.stringify({ success: response.ok }),
};
} catch (error) {
return { statusCode: 500, body: JSON.stringify({ error: error.message }) };
}
};

七、效果监控与持续优化
Google Search Console 数据监控
| 指标 | 说明 | 关注点 |
|---|---|---|
| 索引覆盖率 | 页面被索引情况 | 排查 404、重复内容问题 |
| 搜索表现 | 展示次数、点击次数、 CTR | 分析高 CTR 页面特征 |
| 核心指标 | Core Web Vitals 性能 | 优化 LCP、INP、CLS |
| 增强功能 | 丰富摘要使用情况 | Schema 生效状态 |
Bing Webmaster Tools 数据
| 指标 | 说明 | 关注点 |
|---|---|---|
| 索引状态 | 页面被 Bing 索引情况 | 排查抓取错误 |
| IndexNow | 提交记录和成功率 | 监控推送效果 |
| 搜索关键字 | Bing 搜索中的关键词 | 优化关键词策略 |
Core Web Vitals 指标追踪
| 指标 | 全称 | 目标 | 优化方法 |
|---|---|---|---|
| LCP | 最大内容绘制 | ≤ 2.5s | 图片优化、WebP、CDN、预加载 |
| INP | 互动到下次绘制 | ≤ 200ms | JS 分割、defer/async |
| CLS | 累计布局位移 | ≤ 0.1 | 固定图片尺寸、字体 display:swap |
内容更新与重新提交
何时重新提交:
- 发布新文章时
- 重大内容更新时
- 修复 SEO 问题后
提交方式:
- 手动提交:通过 Google Search Console 或 Bing Webmaster Tools
- IndexNow:自动推送到 Bing
- Sitemap 更新:确保 sitemap 包含最新 URL

八、总结与最佳实践清单
10 条 SEO 最佳实践
- 动态生成 Meta:每篇文章使用唯一的 Title 和 Description
- 正确设置 Canonical:指向当前页面 URL,避免重复内容
- 完整的 Schema:添加 Article/BlogPosting、Organization、Person 等 Schema
- 优化 Core Web Vitals:确保 LCP ≤ 2.5s、INP ≤ 200ms、CLS ≤ 0.1
- 响应式设计:适配所有设备,Google 优先索引移动版
- HTTPS 安全:全站使用 HTTPS,提升信任度
- 结构化内容:使用 H1/H2/H3 标题层级,清晰的内容结构
- 内部链接:相关文章互相链接,提升爬虫抓取效率
- 外部权威链接:引用权威来源,提升内容可信度
- 定期更新:保持内容新鲜度,定期审查和更新
5 条 GEO 最佳实践
- 问答式内容:采用 FAQ、HowTo 等 AI 友好的格式
- 事实陈述:提供可验证的数据、案例、引用来源
- E-E-A-T 信号:强化专业背景、资质、可信度信号
- 直接回答:在内容开头提供 TL;DR 摘要
- 原创性洞察:提供独特观点,而非简单复述已有内容
常见误区提醒
| 误区 | 正确做法 |
|---|---|
| 所有页面使用相同 Title | 动态生成每页唯一 Title |
| 忽略 Schema 结构化数据 | 添加 Article/BlogPosting 等 Schema |
| 忽视 Core Web Vitals | 定期检测并优化性能指标 |
| 内容纯叙事,无问答结构 | 改造为问答式、AI 友好格式 |
| 忽视 E-E-A-T 信号 | 强化作者背景、资质、引用来源 |
| 一次性优化后不监控 | 持续监控效果,定期迭代优化 |

附录:工具推荐
SEO 验证工具
| 工具 | 用途 | 链接 |
|---|---|---|
| Schema Markup Validator | 验证 JSON-LD | https://validator.schema.org/ |
| Rich Results Test | 检查富片段 | https://search.google.com/test/rich-results |
| Google Search Console | 监控 Google 表现 | https://search.google.com/search-console |
| Bing Webmaster Tools | 监控 Bing 表现 | https://www.bing.com/webmasters |
性能检测工具
| 工具 | 用途 | 链接 |
|---|---|---|
| PageSpeed Insights | Core Web Vitals | https://pagespeed.web.dev/ |
| GTmetrix | 页面加载分析 | https://gtmetrix.com/ |
| WebPageTest | 详细性能报告 | https://webpagetest.org/ |
更新日志
- 2026-04-11:初版发布,整合评估报告和优化计划