Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • 搜索未来:SEO与GEO双引擎实战手册
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • Rust 开发入门
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • 搜索未来:SEO与GEO双引擎实战手册
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • Rust 开发入门
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 11.3 边缘函数返回精简版内容给AI机器人

11.3 边缘函数返回精简版内容给AI机器人

在生成式搜索时代,AI机器人(如 GPTBot、ClaudeBot、Bytespider)和传统搜索引擎爬虫(如 Googlebot)对内容的需求存在显著差异。传统爬虫需要完整的 HTML 页面以进行索引和排名,而 AI 机器人通常只提取核心文本信息用于训练或生成答案。边缘函数(Edge Function)提供了一种高效、灵活的解决方案,允许你根据请求来源动态返回不同版本的内容,从而优化资源消耗并提升 AI 机器人的数据提取效率。

11.3.1 为什么需要精简版内容?

  • 降低带宽与计算成本:AI 机器人通常不需要 CSS、JavaScript、图片或复杂的布局。返回精简版内容(仅包含核心文本和结构化数据)可显著减少传输数据量。
  • 提升数据提取速度:精简内容去除了噪音,使 AI 机器人能更快地定位到关键信息(如定义、步骤、结论)。
  • 避免内容污染:防止 AI 机器人抓取到广告、弹窗、用户评论等非核心内容,从而影响生成答案的准确性。
  • 控制引用内容:通过精心设计的精简版内容,你可以主动引导 AI 机器人引用你希望被展示的特定段落,而非随机抓取。

11.3.2 边缘函数的工作原理

边缘函数运行在 CDN 边缘节点上(如 Cloudflare Workers、AWS Lambda@Edge、Vercel Edge Functions、Akamai EdgeWorkers)。当请求到达时,函数会检查 User-Agent 或其他请求头,判断是否为已知的 AI 机器人爬虫。如果是,则返回一个预定义的精简版内容(通常为纯文本或精简 HTML),否则返回完整的页面。

基本流程:

  1. 请求到达 CDN 边缘节点。
  2. 边缘函数检查 User-Agent 或自定义请求头。
  3. 若匹配 AI 机器人列表,则从缓存或源站获取精简版内容并返回。
  4. 若不匹配,则正常请求源站返回完整页面。

11.3.3 实现方案:以 Cloudflare Workers 为例

以下是一个使用 Cloudflare Workers 实现的边缘函数示例,用于识别 AI 机器人并返回精简版内容。

// AI 机器人 User-Agent 列表
const AI_BOTS = [
  'GPTBot',
  'GoogleOther',
  'CCBot',
  'ClaudeBot',
  'Bytespider',
  'DeepSeek-Bot',
  'PerplexityBot',
  'YouBot',
  'ChatGPT-User'
];

// 精简版内容生成函数(示例)
function generateLightweightContent(request) {
  // 实际应用中,这里可以返回从缓存或源站获取的纯文本内容
  // 或者直接返回一个预定义的 JSON/HTML 片段
  const originalUrl = new URL(request.url);
  const path = originalUrl.pathname;
  
  // 假设我们有一个映射表,根据路径返回对应的精简内容
  const contentMap = {
    '/article/how-to-seo': 'SEO 的核心步骤包括:关键词研究、技术优化、内容创建和链接建设。',
    '/faq/what-is-geo': 'GEO(生成引擎优化)是针对 AI 生成式搜索的优化策略。',
    '/product/ai-tool': '我们的 AI 工具提供自动化内容生成和优化功能。'
  };

  const content = contentMap[path] || '未找到对应内容。';
  
  // 返回精简版 HTML(无 CSS/JS)
  return new Response(
    `<html><body><main>${content}</main></body></html>`,
    {
      headers: {
        'Content-Type': 'text/html; charset=utf-8',
        'X-Robots-Tag': 'noindex, follow', // 可选:防止精简版被索引
        'Cache-Control': 'public, max-age=3600'
      }
    }
  );
}

// 主处理函数
async function handleRequest(request) {
  const userAgent = request.headers.get('User-Agent') || '';
  const isAIBot = AI_BOTS.some(bot => userAgent.includes(bot));

  if (isAIBot) {
    return generateLightweightContent(request);
  }

  // 非 AI 机器人,正常请求源站
  return fetch(request);
}

// 注册事件监听
addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request));
});

11.3.4 动态内容适配策略

对于动态页面(如产品详情页、博客文章),边缘函数需要从源站获取内容并提取核心部分。以下是一个更高级的方案:

  1. 源站提供 API 端点:在源站创建一个专门为 AI 机器人服务的 API 端点(如 /api/lightweight?url=xxx),返回 JSON 格式的核心内容(标题、摘要、正文、结构化数据)。
  2. 边缘函数缓存:边缘函数缓存 API 响应,避免每次请求都回源。
  3. 内容提取规则:如果无法修改源站,边缘函数可以抓取完整页面,然后使用正则表达式或 HTML 解析器(如 cheerio)提取 <main>、<article> 或特定 class 内的文本。

示例:使用 Cloudflare Workers + HTMLRewriter 提取核心内容

class ContentExtractor {
  constructor() {
    this.text = '';
    this.inContent = false;
  }

  element(element) {
    // 只提取 <main> 或 <article> 内的内容
    if (element.tagName === 'main' || element.tagName === 'article') {
      this.inContent = true;
    }
  }

  text(text) {
    if (this.inContent) {
      this.text += text.text;
    }
  }

  end(element) {
    if (element.tagName === 'main' || element.tagName === 'article') {
      this.inContent = false;
    }
  }
}

async function handleRequest(request) {
  const userAgent = request.headers.get('User-Agent') || '';
  const isAIBot = AI_BOTS.some(bot => userAgent.includes(bot));

  if (isAIBot) {
    const originalResponse = await fetch(request);
    const extractor = new ContentExtractor();
    const transformed = new HTMLRewriter()
      .on('main', extractor)
      .on('article', extractor)
      .transform(originalResponse);
    
    const body = await transformed.text();
    return new Response(
      `<html><body><main>${extractor.text}</main></body></html>`,
      { headers: { 'Content-Type': 'text/html; charset=utf-8' } }
    );
  }

  return fetch(request);
}

11.3.5 针对不同 AI 机器人的差异化策略

不同的 AI 机器人可能对内容格式有不同偏好。例如:

  • GPTBot:偏好纯文本或简洁的 HTML。
  • Bytespider(字节跳动):可能更关注视频元数据和结构化数据。
  • DeepSeek-Bot:对逻辑链条和结构化内容敏感。

你可以通过边缘函数实现差异化响应:

const botSpecificConfig = {
  'GPTBot': { format: 'text/plain', includeSchema: false },
  'Bytespider': { format: 'application/json', includeSchema: true },
  'DeepSeek-Bot': { format: 'text/html', includeSchema: true, includeLogicChain: true }
};

async function handleRequest(request) {
  const userAgent = request.headers.get('User-Agent') || '';
  const matchedBot = AI_BOTS.find(bot => userAgent.includes(bot));
  
  if (matchedBot) {
    const config = botSpecificConfig[matchedBot] || { format: 'text/html', includeSchema: false };
    // 根据 config 生成不同格式的精简内容
    return generateCustomContent(request, config);
  }

  return fetch(request);
}

11.3.6 注意事项与最佳实践

  • 不要屏蔽所有 AI 机器人:完全屏蔽可能导致你的内容在生成式搜索中消失。边缘函数应返回有价值的内容,而非空响应或 403 错误。
  • 保持内容一致性:精简版内容应与完整页面内容一致,避免因差异导致 AI 模型生成错误答案。
  • 缓存策略:为精简版内容设置合理的 Cache-Control 头部,减少源站压力。但注意,AI 机器人可能不遵循缓存指令。
  • 日志与监控:记录 AI 机器人的访问日志,分析哪些内容被频繁抓取,以便优化精简版内容的质量。
  • 避免过度优化:不要为了迎合 AI 机器人而制造虚假或重复内容,这可能导致被判定为垃圾内容。
  • 测试:使用 curl 或 Postman 模拟不同 User-Agent 请求,验证边缘函数是否正确返回精简版内容。

11.3.7 总结

边缘函数返回精简版内容给 AI 机器人,是全栈工程师在 GEO 时代的一项关键技能。它不仅能优化资源消耗,还能主动控制 AI 机器人对内容的解读和引用。通过动态适配、差异化策略和合理的缓存机制,你可以确保你的内容在生成式搜索中保持高可见性和高准确性。

Last Updated:: 5/9/26, 4:30 PM