目录

SEOMachine:AI驱动的SEO优化与内容生成智能体

SEOMachine:AI驱动的SEO优化与内容生成智能体

1. 学习目标

通过本文你将掌握:

  • 理解 SEOMachine 的核心价值和设计理念
  • 熟练安装和配置工具
  • 掌握 SEO 分析与内容生成的完整管道
  • 理解多 AI 提供商和多爬虫的架构设计
  • 定制和扩展 SEO 自动化功能
  • 最佳实践和常见问题解决

2. 项目概述

2.1 什么是 SEOMachine

“SEO AI Agent - Analyze Google Search competition, generate SEO-optimized content”

SEOMachine 是一个开源的 SEO AI Agent,能够:

  • 分析 Google 搜索竞争
  • 生成 SEO 优化内容
  • 关键词研究
  • 竞品分析
  • 排名追踪

核心价值

痛点解决方案
SEO 分析耗时AI 自动分析 SERP
内容优化难实时数据驱动的优化建议
关键词研究繁琐多源数据聚合分析
竞品监控难自动化的竞品追踪
排名追踪麻烦定期排名报告

2.2 项目数据

指标数值
Stars5.1k
Forks298
Watchers27
贡献者11 人
最新版本seomachine-v1-alpha-5 (2026-02-26)
许可证MIT
最新提交2026-04-04(3天前)

2.3 技术栈

├── TypeScript 89.1%  — 核心逻辑
├── Python 10.9%     — 爬虫脚本
└── 其他            — 配置/脚本

核心技术组件

组件技术说明
AI 推理OpenAI/Anthropic/Azure/Ollama/Groq/DeepSeek多提供商支持
网页爬虫Firecrawl/Crawl4AI/Playwright多源爬虫
CLITypeScript命令行界面
配置YAML配置文件
代理AI AgentsSEO 任务自动化

3. 系统架构

3.1 整体架构

┌─────────────────────────────────────┐
│           用户交互层                  │
│  seomachine CLI ←→ 配置文件         │
└─────────────────────────────────────┘
                    ↓
┌─────────────────────────────────────┐
│           AI 推理层                  │
│  OpenAI ←→ Anthropic ←→ Azure      │
│  Ollama ←→ Groq ←→ DeepSeek        │
└─────────────────────────────────────┘
                    ↓
┌─────────────────────────────────────┐
│           SEO 任务层                  │
│  SERP分析 ←→ 内容生成 ←→ 关键词研究 │
│  竞品分析 ←→ 排名追踪              │
└─────────────────────────────────────┘
                    ↓
┌─────────────────────────────────────┐
│           数据爬取层                  │
│  Firecrawl ←→ Crawl4AI ←→ Playwright│
└─────────────────────────────────────┘

3.2 项目结构

seomachine/
├── src/
│   ├── agents/           # AI 代理
│   │   ├── seo-agent.ts
│   │   └── content-agent.ts
│   ├── crawlers/         # 爬虫模块
│   │   ├── firecrawl.ts
│   │   ├── crawl4ai.ts
│   │   └── playwright.ts
│   ├── providers/         # AI 提供商
│   │   ├── openai.ts
│   │   ├── anthropic.ts
│   │   └── ...
│   ├── tasks/            # SEO 任务
│   │   ├── serp-analysis.ts
│   │   ├── keyword-research.ts
│   │   └── ...
│   └── cli.ts             # CLI 入口
├── config.yaml            # 配置文件
├── package.json
├── tsconfig.json
└── README.md

3.3 工作流程

SEO 分析与内容生成管道

1. 配置 AI 提供商和爬虫
   ↓
2. 输入目标关键词或 URL
   ↓
3. SERP 分析(爬取搜索结果)
   ↓
4. 竞品内容分析
   ↓
5. 关键词研究(提取搜索量、竞争度)
   ↓
6. AI 生成 SEO 优化内容
   ↓
7. 输出报告(Markdown/HTML/JSON)

4. 安装与配置

4.1 环境要求

要求版本
Node.js≥ 18.0
npm/yarn最新版
Python≥ 3.10(可选)

4.2 安装步骤

全局安装(推荐)

npm install -g seomachine

验证安装

seomachine --version
# seomachine v1.0.0

4.3 配置 AI 提供商

配置 OpenAI

seomachine auth --set-openai-key <your-api-key>

配置 Anthropic

seomachine auth --set-anthropic-key <your-api-key>

配置多个提供商

seomachine auth --set-openai-key <key>
seomachine auth --set-anthropic-key <key>
seomachine auth --set-groq-key <key>

4.4 config.yaml 配置

# seomachine.yaml
project:
  name: "my-seo-project"
  url: "https://example.com"
  
providers:
  default: "openai"
  openai:
    model: "gpt-4"
    temperature: 0.7
  anthropic:
    model: "claude-sonnet-4"
    
crawlers:
  default: "firecrawl"
  firecrawl:
    api-key: "${FIRECRAWL_API_KEY}"
  crawl4ai:
    api-url: "http://localhost:3000"
    
tasks:
  serp-analysis: true
  keyword-research: true
  competitor-analysis: true
  content-generation: true

5. 核心功能详解

5.1 SERP 分析

自动爬取 Google 搜索结果

// src/tasks/serp-analysis.ts
interface SERPResult {
  position: number;
  title: string;
  url: string;
  snippet: string;
  domain: string;
  cached: boolean;
  similar: string[];
}

async function analyzeSERP(query: string): Promise<SERPResult[]> {
  // 爬取 SERP
  const results = await crawler.search(query, { limit: 20 });
  
  // 提取关键信息
  return results.map(r => ({
    position: r.position,
    title: r.title,
    url: r.url,
    snippet: r.snippet,
    domain: extractDomain(r.url),
    cached: r.cached ?? false,
    similar: r.similar ?? []
  }));
}

SERP 分析输出

{
  "query": "best SEO tools 2026",
  "totalResults": 1250000000,
  "results": [
    {
      "position": 1,
      "title": "Semrush - All-in-one SEO Tool",
      "url": "https://www.semrush.com",
      "domain": "semrush.com",
      "wordCount": 1500,
      "headings": ["Features", "Pricing", "FAQ"],
      "links": 45000
    }
  ],
  "featuredSnippet": {...},
  "peopleAlsoAsk": [...]
}

5.2 关键词研究

// src/tasks/keyword-research.ts
interface KeywordData {
  keyword: string;
  searchVolume: number;
  difficulty: number;
  cpc: number;
  competition: 'low' | 'medium' | 'high';
  relatedKeywords: string[];
}

async function researchKeywords(seed: string): Promise<KeywordData[]> {
  // 获取关键词数据
  const keywords = await aiProvider.expandKeywords(seed);
  
  // 获取搜索量/竞争度
  const enriched = await Promise.all(
    keywords.map(async (kw) => ({
      ...kw,
      ...await getKeywordMetrics(kw.keyword)
    }))
  );
  
  return enriched
    .sort((a, b) => b.searchVolume - a.searchVolume)
    .slice(0, 50);
}

5.3 竞品分析

// src/tasks/competitor-analysis.ts
interface CompetitorAnalysis {
  url: string;
  domain: string;
  daMoz: number;
  paMoz: number;
  backlinks: number;
  topKeywords: KeywordPosition[];
  contentAnalysis: ContentMetrics;
}

async function analyzeCompetitor(url: string): Promise<CompetitorAnalysis> {
  // 爬取竞品页面
  const page = await crawler.crawl(url);
  
  // 分析页面 SEO
  const onPage = analyzeOnPage(page);
  
  // 获取外链数据
  const backlinks = await backlinkApi.getBacklinks(url);
  
  // 获取排名数据
  const rankings = await serpApi.getRankings(url);
  
  return {
    url,
    domain: extractDomain(url),
    daMoz: backlinks.domainAuthority,
    paMoz: backlinks.pageAuthority,
    backlinks: backlinks.total,
    topKeywords: rankings.keywords.slice(0, 10),
    contentAnalysis: onPage
  };
}

5.4 AI 内容生成

// src/agents/content-agent.ts
interface ContentRequest {
  targetKeyword: string;
  competitorUrls: string[];
  wordCount: number;
  tone: 'professional' | 'casual' | 'technical';
}

async function generateSEOContent(req: ContentRequest): Promise<string> {
  // 1. 获取竞品内容摘要
  const competitorSummaries = await Promise.all(
    req.competitorUrls.map(url => summarizeContent(url))
  );
  
  // 2. 构建提示词
  const prompt = buildPrompt({
    keyword: req.targetKeyword,
    summaries: competitorSummaries,
    wordCount: req.wordCount,
    tone: req.tone
  });
  
  // 3. 调用 AI 生成
  const content = await aiProvider.generate(prompt);
  
  // 4. SEO 检查
  const optimized = await optimizeForSEO(content, {
    keyword: req.targetKeyword,
    minWordCount: req.wordCount
  });
  
  return optimized;
}

6. 使用指南

6.1 基本命令

运行 SEO 项目

seomachine run "your project url or project name"

分析关键词

seomachine keywords "best SEO tools 2026"

竞品分析

seomachine analyze https://competitor.com

生成内容

seomachine generate "best SEO tools" --word-count 2000

排名追踪

seomachine track --keywords "SEO tools,content marketing"

6.2 交互模式

# 启动交互模式
seomachine interactive

# 在交互模式中
seomachine > set project https://my-site.com
seomachine > analyze competitors
seomachine > generate content "best SEO tools"
seomachine > report

6.3 输出格式

# 指定输出格式
seomachine run "project" --format markdown
seomachine run "project" --format html
seomachine run "project" --format json

7. 多 AI 提供商架构

7.1 提供商配置

// src/providers/index.ts
const PROVIDERS = {
  openai: {
    client: OpenAIClient,
    models: ['gpt-4', 'gpt-4-turbo', 'gpt-3.5-turbo']
  },
  anthropic: {
    client: AnthropicClient,
    models: ['claude-3-opus-4', 'claude-3-sonnet-4', 'claude-3-haiku']
  },
  azure: {
    client: AzureOpenAIClient,
    models: ['gpt-4', 'gpt-35-turbo']
  },
  ollama: {
    client: OllamaClient,
    models: ['llama2', 'mistral', 'codellama']
  },
  groq: {
    client: GroqClient,
    models: ['mixtral-8x7b', 'llama2-70b']
  },
  deepseek: {
    client: DeepSeekClient,
    models: ['deepseek-chat']
  }
};

7.2 动态提供商切换

// 根据任务选择最优提供商
async function selectProvider(task: SEOTask): Promise<AIProvider> {
  const provider = PROVIDERS[task.preferredProvider] 
    ?? PROVIDERS.openai;
  
  // 检查 API 配额
  if (await provider.isRateLimited()) {
    // 切换到备用提供商
    return selectAlternateProvider(task);
  }
  
  return provider;
}

8. 多爬虫架构

8.1 爬虫配置

// src/crawlers/index.ts
const CRAWLERS = {
  firecrawl: {
    class: FirecrawlCrawler,
    features: ['javascript-rendering', 'screenshots', 'links']
  },
  crawl4ai: {
    class: Crawl4AICrawler,
    features: ['fast', 'markdown', 'html']
  },
  playwright: {
    class: PlaywrightCrawler,
    features: ['full-control', 'cookies', 'stealth']
  }
};

8.2 爬虫选择策略

任务推荐爬虫原因
动态页面PlaywrightJS 渲染完整
批量爬取Firecrawl速度快
Markdown 提取Crawl4AI结构化输出
截图需求Firecrawl内置截图
// 自动选择最优爬虫
function selectCrawler(task: CrawlTask): Crawler {
  if (task.needsJS) return CRAWLERS.playwright;
  if (task.needsScreenshot) return CRAWLERS.firecrawl;
  return CRAWLERS.crawl4ai;
}

9. 最佳实践

9.1 API 配额管理

// 多提供商负载均衡
class ProviderPool {
  private providers: AIProvider[];
  
  async generate(prompt: string): Promise<string> {
    // 轮询可用提供商
    for (const provider of this.providers) {
      if (!await provider.isRateLimited()) {
        return provider.generate(prompt);
      }
    }
    // 全部限流,等待后重试
    await this.waitForQuota();
    return this.generate(prompt);
  }
}

9.2 缓存策略

// SERP 结果缓存
const serpCache = new LRUCache<string, SERPResult[]>({
  max: 1000,
  ttl: 1000 * 60 * 60 * 24 // 24小时
});

async function getSERPWithCache(query: string): Promise<SERPResult[]> {
  const cached = serpCache.get(query);
  if (cached) return cached;
  
  const result = await crawler.search(query);
  serpCache.set(query, result);
  return result;
}

9.3 错误处理

try {
  await seomachine.run(project);
} catch (error) {
  if (error instanceof RateLimitError) {
    console.log('API 限流,等待后重试...');
    await sleep(60000);
    return seomachine.run(project);
  }
  if (error instanceof CrawlError) {
    console.log('爬取失败,切换爬虫...');
    return seomachine.run(project, { crawler: 'playwright' });
  }
  throw error;
}

10. 常见问题

Q: API 限流怎么办?

# 配置多个 API Key
seomachine auth --set-openai-key <key1>
seomachine auth --set-openai-key-2 <key2>

Q: 爬取失败?

# 切换爬虫
seomachine run "project" --crawler playwright

Q: 如何提高生成质量?

# 使用更强的模型
seomachine config set default-provider anthropic
seomachine config set anthropic.model claude-3-opus-4

Q: 批量处理大项目?

# 使用批处理模式
seomachine batch --file projects.csv --parallel 5

11. 与类似工具对比

工具平台AI 生成多爬虫多提供商
SEOMachineCLI/API⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
SemrushSaaS⭐⭐⭐
AhrefsSaaS⭐⭐⭐
SurferSEOWeb⭐⭐⭐⭐

SEOMachine 优势

  • 完全开源可定制
  • 支持自托管
  • 多 AI 提供商灵活切换
  • 多爬虫适应性强
  • 开源社区活跃

12. 总结

SEOMachine 是 SEO 智能自动化的利器:

特性说明
AI 驱动多提供商生成高质量内容
多爬虫Firecrawl/Crawl4AI/Playwright
多提供商OpenAI/Anthropic/Groq/DeepSeek 等
开源免费MIT 许可证
高度可定制TypeScript 源码

适用场景

  • SEO 机构批量优化
  • 内容农场自动化
  • 中小企业 SEO
  • 竞品监控与追踪
  • 内容营销团队

🦞 每日08:00自动更新