返回文章列表
技术教程

网站 SEO/GEO 优化完全指南:从评估到落地的全流程实践

2026-04-11· 阅读时间约 14分钟

网站 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 的关系与区别

维度SEOGEO
目标平台Google、Bing 搜索结果页ChatGPT、Claude 等 AI 回答
流量来源用户点击搜索结果AI 回答中的引用/推荐
核心策略关键词排名、外链建设内容权威性、引用可追溯性
内容特征关键词密度、搜索意图匹配事实准确、引用权威、问答清晰
衡量指标排名、点击率、流量引用率、品牌提及、AI 推荐次数
技术侧重Meta 标签、结构化数据Schema 完整性、内容可验证性

关键洞察:SEO 和 GEO 不是替代关系,而是互补关系。高质量 SEO 内容天然具备 GEO 友好特性,两者的最佳实践高度重叠。

SEO vs GEO 对比概念图


二、网站 SEO/GEO 现状评估方法

技术基础检查项

检查项说明优先级
robots.txt配置爬虫访问规则,阻止无价值页面被抓取P0
sitemap.xml提供网站结构地图,帮助搜索引擎发现页面P0
HTTPS安全连接,Google 排名因素之一P0
Canonical URL避免重复内容问题,指定规范页面P0
移动友好响应式设计,适配移动端设备P0
Core Web VitalsLCP、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 结构化数据缺失

问题描述:文章页缺少 ArticleBlogPosting 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 Schema1-2 小时获得丰富摘要,提升 AI 引用率
修复 Canonical URL30 分钟集中页面权重,改善索引

4.2 P1 高优先级项

任务预计工时预期效果
添加 FAQPage Schema2 小时获得 FAQ 富片段,符合 GEO 最佳实践
添加面包屑 Schema1 小时提升导航结构,改善 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 Schema1 小时为教程页增加富片段

优化执行路线图


五、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 验证

  1. 登录 Bing Webmaster Tools
  2. 添加并验证网站
  3. 进入「配置我的网站」→「 IndexNow」
  4. 查看已提交 URL 的索引状态

监控指标

  • 提交成功率
  • 索引覆盖率
  • Bing 搜索中的展示次数

IndexNow 集成流程图


六、技术实现细节

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互动到下次绘制≤ 200msJS 分割、defer/async
CLS累计布局位移≤ 0.1固定图片尺寸、字体 display:swap

内容更新与重新提交

何时重新提交

  • 发布新文章时
  • 重大内容更新时
  • 修复 SEO 问题后

提交方式

  1. 手动提交:通过 Google Search Console 或 Bing Webmaster Tools
  2. IndexNow:自动推送到 Bing
  3. Sitemap 更新:确保 sitemap 包含最新 URL

监控仪表盘示意


八、总结与最佳实践清单

10 条 SEO 最佳实践

  1. 动态生成 Meta:每篇文章使用唯一的 Title 和 Description
  2. 正确设置 Canonical:指向当前页面 URL,避免重复内容
  3. 完整的 Schema:添加 Article/BlogPosting、Organization、Person 等 Schema
  4. 优化 Core Web Vitals:确保 LCP ≤ 2.5s、INP ≤ 200ms、CLS ≤ 0.1
  5. 响应式设计:适配所有设备,Google 优先索引移动版
  6. HTTPS 安全:全站使用 HTTPS,提升信任度
  7. 结构化内容:使用 H1/H2/H3 标题层级,清晰的内容结构
  8. 内部链接:相关文章互相链接,提升爬虫抓取效率
  9. 外部权威链接:引用权威来源,提升内容可信度
  10. 定期更新:保持内容新鲜度,定期审查和更新

5 条 GEO 最佳实践

  1. 问答式内容:采用 FAQ、HowTo 等 AI 友好的格式
  2. 事实陈述:提供可验证的数据、案例、引用来源
  3. E-E-A-T 信号:强化专业背景、资质、可信度信号
  4. 直接回答:在内容开头提供 TL;DR 摘要
  5. 原创性洞察:提供独特观点,而非简单复述已有内容

常见误区提醒

误区正确做法
所有页面使用相同 Title动态生成每页唯一 Title
忽略 Schema 结构化数据添加 Article/BlogPosting 等 Schema
忽视 Core Web Vitals定期检测并优化性能指标
内容纯叙事,无问答结构改造为问答式、AI 友好格式
忽视 E-E-A-T 信号强化作者背景、资质、引用来源
一次性优化后不监控持续监控效果,定期迭代优化

最佳实践清单卡片


附录:工具推荐

SEO 验证工具

工具用途链接
Schema Markup Validator验证 JSON-LDhttps://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 InsightsCore Web Vitalshttps://pagespeed.web.dev/
GTmetrix页面加载分析https://gtmetrix.com/
WebPageTest详细性能报告https://webpagetest.org/

更新日志

  • 2026-04-11:初版发布,整合评估报告和优化计划
下一篇没有更早的文章了
下一篇 没有更新的文章了