ScavioScavio
产品定价文档
登录开始使用
  1. 首页
  2. 教程
  3. 如何使用 SERP 和竞争对手分析构建 SEO 审核工具
教程

如何使用 SERP 和竞争对手分析构建 SEO 审核工具

使用 Scavio API 在 Python 中构建轻量级 SEO 审核工具。分析任何目标关键字集的 SERP 功能、竞争对手位置和内容差距。

获取免费API密钥API文档

SEO 审核工具检查网站及其竞争对手在一组目标关键字的搜索结果中的表现。它检查存在哪些 SERP 功能(特色片段、AI 概述、PAA 框)、竞争对手排名以及存在哪些内容差距。企业 SEO 工具每月花费数千美元。本教程使用 Scavio API 构建一个轻量级审核工具,该工具免费生成可操作的逐个关键字报告,超出了 API 使用成本。

前置条件

  • Python 3.10 或更高版本
  • 请求已安装库
  • Scavio API 密钥
  • 要审核的目标域和关键字列表

操作指南

步骤 1: 定义审核目标

设置您的目标域、竞争对手域和要审核的关键字列表。

Python
TARGET = "mysite.com"
COMPETITORS = ["competitor-a.com", "competitor-b.com"]
KEYWORDS = ["python api tutorial", "rest api guide", "api authentication best practices"]

步骤 2: 获取每个关键字的完整 SERP 数据

检索完整的 SERP 响应,包括有机结果、特色片段、AI 概述和 PAA。

Python
def audit_keyword(keyword: str) -> dict:
    r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
                      json={"query": keyword, "country_code": "us"})
    r.raise_for_status()
    return r.json()

步骤 3: 分析 SERP 特征和位置

对于每个关键字,检查存在哪些 SERP 功能以及目标域和竞争对手的排名。

Python
def analyze(keyword: str, data: dict) -> dict:
    organic = data.get("organic_results", [])
    target_pos = next((r["position"] for r in organic if TARGET in r.get("link", "")), None)
    competitor_pos = {}
    for c in COMPETITORS:
        pos = next((r["position"] for r in organic if c in r.get("link", "")), None)
        competitor_pos[c] = pos
    return {
        "keyword": keyword,
        "target_position": target_pos,
        "competitors": competitor_pos,
        "has_featured_snippet": bool(data.get("featured_snippet")),
        "has_ai_overview": bool(data.get("ai_overview")),
        "paa_count": len(data.get("people_also_ask", [])),
    }

步骤 4: 生成审核报告

对所有关键字运行审核并打印格式化的摘要报告。

Python
def run_audit() -> None:
    print(f"SEO Audit for {TARGET}\n" + "=" * 40)
    for kw in KEYWORDS:
        data = audit_keyword(kw)
        result = analyze(kw, data)
        pos = result["target_position"]
        print(f"\n{kw}")
        print(f"  Your rank: {'#' + str(pos) if pos else 'not ranked'}")
        print(f"  AI Overview: {result['has_ai_overview']}, PAA: {result['paa_count']}")

Python 示例

Python
import os
import requests

API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
TARGET = "mysite.com"
KEYWORDS = ["python api tutorial", "rest api guide"]

def fetch(q): 
    r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
                      json={"query": q, "country_code": "us"})
    r.raise_for_status()
    return r.json()

def analyze(kw, data):
    organic = data.get("organic_results", [])
    pos = next((r["position"] for r in organic if TARGET in r.get("link", "")), None)
    return {"keyword": kw, "position": pos, "ai_overview": bool(data.get("ai_overview")), "paa": len(data.get("people_also_ask", []))}

if __name__ == "__main__":
    for kw in KEYWORDS:
        result = analyze(kw, fetch(kw))
        print(f"{kw}: {'#' + str(result['position']) if result['position'] else 'not ranked'} | AI: {result['ai_overview']} | PAA: {result['paa']}")

JavaScript 示例

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
const TARGET = "mysite.com";
const KEYWORDS = ["python api tutorial", "rest api guide"];

async function fetch_(q) {
  const res = await fetch(ENDPOINT, {
    method: "POST",
    headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({ query: q, country_code: "us" })
  });
  return res.json();
}

function analyze(kw, data) {
  const organic = data.organic_results || [];
  const match = organic.find(r => r.link.includes(TARGET));
  return { keyword: kw, position: match?.position || null, aiOverview: !!data.ai_overview, paa: (data.people_also_ask || []).length };
}

async function main() {
  for (const kw of KEYWORDS) {
    const data = await fetch_(kw);
    const r = analyze(kw, data);
    console.log(`${r.keyword}: ${r.position ? "#" + r.position : "not ranked"} | AI: ${r.aiOverview} | PAA: ${r.paa}`);
  }
}
main().catch(console.error);

预期输出

JSON
SEO Audit for mysite.com
========================================

python api tutorial
  Your rank: #6
  AI Overview: true, PAA: 4

rest api guide
  Your rank: not ranked
  AI Overview: false, PAA: 3

相关教程

  • 如何使用 Scavio API 每天跟踪 SEO 排名
  • 如何使用搜索 API 自动进行竞争对手分析

常见问题

大多数开发者在15到30分钟内完成本教程。您需要一个Scavio API密钥(免费套餐即可)和可用的Python或JavaScript环境。

Python 3.10 或更高版本. 请求已安装库. Scavio API 密钥. 要审核的目标域和关键字列表. Scavio API密钥注册即送50个免费积分。

可以。免费套餐注册即送50个积分,完全足够完成本教程并构建一个可运行的原型解决方案。

Scavio提供原生LangChain包(langchain-scavio)、MCP服务器以及适用于任何HTTP客户端的REST API。本教程使用 the raw REST API, 但您可以根据需要适配您选择的框架。

相关资源

Best Of

2026年最佳代理机构 SEO 报告 API

Read more
Best Of

2026 年最佳基于队列的 SERP API

Read more
Comparison

Semrush API vs Raw SERP API

Read more
Solution

构建可预测成本的SEO API层

Read more
Use Case

SEO 仪表板原始 API

Read more
Use Case

AppSumo SEO 工具到 API 迁移

Read more

开始构建

使用 Scavio API 在 Python 中构建轻量级 SEO 审核工具。分析任何目标关键字集的 SERP 功能、竞争对手位置和内容差距。

获取免费API密钥阅读文档
ScavioScavio

面向AI智能体的实时搜索API。搜索所有平台,不仅仅是Google。

产品

  • 功能
  • 定价
  • 控制台
  • 联盟计划

开发者

  • 文档
  • API参考
  • 快速开始
  • MCP集成
  • Python SDK

替代方案

  • Tavily替代方案
  • SerpAPI替代方案
  • Firecrawl替代方案
  • Exa替代方案

工具

  • JSON格式化
  • cURL转代码
  • Token计数器
  • 全部工具

© 2026 Scavio. 保留所有权利。

Featured on TAAFT
服务条款隐私政策