竞品 SERP 周报自动化:每周一早上 9 点自动生成

做 SEO 的应该都写过竞品周报------每周手动查竞品排什么词、谁进前五、谁掉了。一次小半天,还容易漏。

这篇文章讲怎么把竞品周报做成全自动:每周一早上 9 点,一份报告自动生成发到群/邮箱。全程不用人管。

整体思路

竞品周报 = 定时抓 → 对比上周 → 生成报告 → 推送。

下面以 SerpBase 的 /google/search 接口为例。

第一步:竞品词表

先把要监控的词列好。两类:

  • 竞品品牌词:竞品名、竞品产品名
  • 行业核心词:你所在的行业高频词
python 复制代码
KEYWORDS = [
    "竞品A",
    "竞品B",
    "行业词1",
    "行业词2",
]

第二步:定时抓取

python 复制代码
import requests
from datetime import datetime

def fetch_top5(keyword):
    r = requests.post(
        "https://api.serpbase.dev/google/search",
        headers={"X-API-Key": "你的key"},
        json={"q": keyword, "hl": "zh-CN", "gl": "cn"},
        timeout=10,
    )
    r.raise_for_status()
    organic = r.json().get("organic", [])
    return [
        {"rank": i + 1, "title": x.get("title", "")[:30], "link": x.get("link", "")}
        for i, x in enumerate(organic[:5])
    ]

第三步:存历史,对比

每周抓一次,存下来,对比上周:

python 复制代码
import json, os

def load_prev():
    if os.path.exists("prev.json"):
        return json.load(open("prev.json", encoding="utf-8"))
    return {}

def save_curr(data):
    json.dump(data, open("prev.json", "w", encoding="utf-8"), ensure_ascii=False)

def build_report():
    prev = load_prev()
    curr = {kw: fetch_top5(kw) for kw in KEYWORDS}
    lines = ["## 竞品 SERP 周报", f"时间: {datetime.now():%Y-%m-%d}", ""]

    for kw in KEYWORDS:
        lines.append(f"### {kw}")
        old = prev.get(kw, [])
        new = curr[kw]
        if old and new:
            # 找出变化
            for item in new:
                rank = item["rank"]
                before = next((p["rank"] for p in old if p["link"] == item["link"]), None)
                mark = ""
                if before and before != rank:
                    mark = f" (从{before}变)"
                lines.append(f"{rank}. {item['title']}{mark}")
        else:
            for item in new:
                lines.append(f"{item['rank']}. {item['title']}")
        lines.append("")

    save_curr(curr)
    return "\n".join(lines)

第四步:推送

生成完报告,推送到目标。两种常见:

发邮件:

python 复制代码
import smtplib
from email.mime.text import MIMEText

def send_email(body):
    msg = MIMEText(body, "plain", "utf-8")
    msg["Subject"] = "竞品 SERP 周报"
    msg["From"] = "you@example.com"
    msg["To"] = "team@example.com"
    with smtplib.SMTP("smtp.example.com", 587) as s:
        s.starttls()
        s.login("you", "pass")
        s.send_message(msg)

发群(飞书/钉钉 webhook):调 webhook 就行,几行代码。

第五步:定时跑

GitHub Actions 每周一早上:

yaml 复制代码
name: competitor-weekly
on:
  schedule:
    - cron: "0 1 * * 1"   # 周一 1 点 UTC(北京 9 点)
jobs:
  weekly:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
      - run: pip install requests
      - run: python weekly.py
        env:
          SERPBASE_API_KEY: ${{ secrets.SERPBASE_API_KEY }}

效果

以前:每周手动 2-3 小时,容易漏。

现在:周一早上自动生成,看一眼变化就行。

注意

  1. 固定 hl/gl:周报对比才有意义
  2. 别盯太细:一天的变化可能是噪声,周维度看趋势
  3. 成本:几十个词一周一次,一个月几美元

完整参数和响应字段参考:serpbase.dev/docs。这套周报,我搭完就没再手动做过。

相关推荐
VIP_CQCRE2 小时前
Ace Data Cloud 创收联盟:把 AI 能力变成可运营的产品
ai·aigc·api·云服务·开发者工具
VIP_CQCRE5 小时前
Ace Data Cloud 创收联盟:把 AI 能力变成可持续业务的两条路径
ai·api·云服务
VIP_CQCRE21 小时前
用 Ace Data Cloud 快速接入 OpenAI Chat Completions API:兼容官方格式,更适合开发者落地
ai·大模型·openai·api·ace data cloud
VIP_CQCRE1 天前
用 Ace Data Cloud 自动化运营 CSDN:AI 写作、配图、发布与数据复盘
ai·自动化·api·csdn·acedatacloud
2603_965148112 天前
抖音/快手直播选品:用API快速匹配爆款与低价货源
开发语言·python·自动化·api
Java小卷3 天前
低调好用的API接口管理工具 - APIEagle
api
VIP_CQCRE4 天前
用 Cherry Studio 接入 Ace Data Cloud:一个 Token 打通 Claude、GPT、Gemini、DeepSeek 等主流模型
ai·大模型·api·cherry studio·ace data cloud
VIP_CQCRE5 天前
用 GitHub 做开发者营销:把 Ace Data Cloud 的 API 能力变成可运行项目
ai·github·api·开发者工具·acedatacloud
万邦科技Lafite6 天前
天猫商品评论API:评价内容中的用户情感倾向分析
人工智能·api·电商开放平台·淘宝开放平台·api开放接口