当前位置:首页 >  站长 >  网站运营 >  正文

关键词排名批量追踪:别再一天手动搜十遍了

 2026-09-09 10:56  来源: 互联网   我来投稿 撤稿纠错

  一键部署OpenClaw

盯关键词排名是站长的日常,但手动搜有几个致命伤:不同浏览器、不同账号、不同时间搜出来的结果都不一样,你记录的“排名”其实是随机数;一天搜十遍的时间成本也不值。正经做法是用接口拿结构化的搜索结果,一次跑完整个关键词清单,数据还可追溯。

SERP 数据接口里 SerpAPI 是老牌选择:免费档每月 100 次搜索、不需要绑卡,结构化 JSON 直接返回自然结果列表,付费档 Developer 计划每月 75 美元含 5000 次。先算清免费额度这笔账:100 次/月,意味着核心词表控制在 20 个以内、每周全量查一次,是免费档的正确用法;每天都要盯的词留三五个高频位。写代码时请求之间留间隔,把额度用在刀刃上。

import requests, time, csv

API_KEY = "your_serpapi_key"
DOMAIN = "example.com"

def track(keyword):
r = requests.get("https://serpapi/search.json",
params={"engine": "google", "q": keyword,
"api_key": API_KEY}, timeout=30)
for i, item in enumerate(r.json().get("organic_results", []), 1):
if DOMAIN in item.get("link", ""):
return i, item["link"]
return None, ""

rows = []
for kw in [l.strip() for l in open("keywords.txt") if l.strip()]:
pos, url = track(kw)
rows.append([kw, pos, url, time.strftime("%F %H:%M")])
print(kw, pos, flush=True)
time.sleep(2)

csv.writer(open("rank_log.csv", "a", newline="")).writerows(rows)

rank_log.csv 攒起来就是排名历史库,每周和上周对比就能画出趋势,不用装任何看板工具。百度侧没有公开的排名 API,SerpAPI 也不出百度结果的稳定口径,国内的排名监控要么用爱站、站长工具这类第三方平台的批量查询,要么自己写慢速抓取——后者风险自负,前面收录核查那篇讲过的分寸同样适用:低频、加延时、被验证码拦住就停手。

# 每周对比:上周 vs 本周的排名变化
import csv
from collections import defaultdict

last, now = defaultdict(int), defaultdict(int)
for kw, pos, url, ts in list(csv.reader(open("rank_log.csv"))):
pass # 按日期切两段分别取最新快照后逐词相减

# 简化版:直接用 pandas
# df = pd.read_csv("rank_log.csv", names=["kw","pos","url","ts"])
# df["date"] = df["ts"].str[:10]
# print(df.pivot_table(index="kw", columns="date", values="pos"))

验证脚本准确性只用一招:抽三个词手工搜一遍,位置对得上就信。注意手工核对也要用无痕窗口,不然个性化干扰会让你怀疑脚本出了错。排名追踪这条数据流铺好之后,后面几篇的波动分析、CTR 分析都吃它的产出。

再交代两个高频踩坑点。一是额度超了别硬刷:SerpAPI 超额不会扣费但会直接拒绝请求,脚本里要对非 200 响应做保护,把当轮剩余关键词跳过、下次再查,不然白白空跑一轮;二是结果稳定性问题,同一关键词隔几分钟查两次,位置偶尔会差一两位,这是搜索引擎端固有的抖动,分析趋势时以“周”为粒度做平均,别纠结单次查询的个位波动。关键词清单的维护也有讲究:每月把查了半年排名从没进过前 50 的词清出去,腾出额度给新词——追踪列表本身就该是个活的清单,不是一次建好永不动的死档案。

相关阅读:排名数据贵在连续。SEO 自动化总清单:日、周、月、季各该跑什么》把本篇排进每周组,免费额度刚好够用,跑满一个月就能画出自己的排名曲线。

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关文章

  • 抓取预算:大站收录慢的病根

    大站的典型症状:新文章发出去一周还没收录,老内容倒是天天被抓。这不是蜘蛛偏心,是抓取预算被浪费了。官方定义说得很清楚:抓取预算是Google分配给一个主机名的抓取资源,由两块构成——抓取容量上限(服务器扛得住多少并发抓取,响应稳就升,5xx、429多就降)和抓取需求(站点规模、更新频率、页面质量、热

  • 全站死链监控:别让烂内链拖住蜘蛛的后腿

    改版、删文章、换栏目,最先烂掉的不是页面而是内链。烂内链的代价常常被低估:用户点进去404是体验问题,更重的是蜘蛛顺着内链爬行时一遍遍撞墙,抓取预算被无谓消耗,深度页面的发现效率跟着下降。单页小站可以用W3C的LinkChecker在线查,几个URL等一分钟就出结果;页面一多就得自己动手了。自建监控

  • 收录流量对照日报:一张 CSV 看清抓取、收录、流量三本账

    收录涨了流量没涨,或者收录掉了流量反而稳着——只盯单一指标的人迟早被这种背离搞糊涂。原因很简单:抓取、收录、流量是链条上三道独立的工序,蜘蛛来了不代表收进索引,收进索引不代表有排名,有排名不代表有人点。任何一道出问题,表象都像“SEO变差了”,但药方完全不同。解法是把三本账放进同一张表里天天对照。日

  • 收录批量核查:200 个 URL 别再一条条搜了

    发了200篇文章,过了两周想确认哪些被百度收了。到搜索框一条条敲site:查询,查到第30条手就废了。批量核查收录是每个内容站的刚需,但这件事有个必须先说清楚的边界:搜索引擎没有公开的收录查询API,任何批量查询本质都是在和对方的反爬机制打交道,所以脚本的正确姿势是慢、稳、粗查,快准狠交给官方平台。

  • 把 access.log 转成 CSV:awk 之外的第二条路

    前几篇的awk报表很顺手,但它有两个天花板:一是结果只能打印在终端上,要给不懂命令行的同事看、要丢进Excel做透视表,就得有个通用格式;二是复杂逻辑(多条件组合、正则提取、跨行关联)用awk写起来越写越拧巴。这时候就该Python上场了——把日志解析成CSV,一条命令跑完,后面随便怎么加工。解析N

热门排行

信息推荐