SEO-38:SEO 自动化与脚本编写

王尘宇 网站优化 3

SEO 自动化与脚本编写 是通过 Python、JavaScript 等编程语言和 API 接口,自动化执行重复性 SEO 任务(数据收集、排名监控、报告生成、技术审计等),提升工作效率和准确性的技术能力。


为什么需要 SEO 自动化?

重复性工作

SEO 日常重复任务:

❌ 每日排名检查(30 分钟/天)
❌ 周报数据整理(2 小时/周)
❌ 死链检测(1 小时/周)
❌ 竞争对手监控(1 小时/周)
❌ 报告制作(2 小时/周)

合计:约 10 小时/周

自动化价值

效率提升:

手动:10 小时/周
自动化:1 小时/周(检查 + 调整)
效率提升:90%

准确性提升:

手动:人为错误 5-10%
自动化:错误率<1%

价值释放:

节省时间用于:
- 策略思考
- 内容创作
- 外链建设
- 客户沟通

王尘宇案例

案例:自动化排名监控

背景:需要监控 500 个关键词排名

手动方案:
- 每天人工查询
- 整理 Excel
- 制作图表
- 时间:2 小时/天

自动化方案:
- Python 脚本自动查询
- 自动存入数据库
- 自动生成报告
- 时间:10 分钟/天检查

结果:
- 时间节省:92%
- 数据更准确
- 可实时监控

SEO 自动化场景

场景 1:排名监控 ⭐⭐⭐⭐⭐

自动化内容:

- 定时查询关键词排名
- 存储历史数据
- 排名变化告警
- 自动生成报告

技术实现:

语言:Python
库:requests, BeautifulSoup, pandas
API:SERP API、Ahrefs API
频率:每日/每周

场景 2:技术审计 ⭐⭐⭐⭐⭐

自动化内容:

- 死链检测
- 重定向追踪
- Meta 标签检查
- 页面速度监控
- 结构化数据验证

技术实现:

语言:Python
库:Screaming Frog API, requests
频率:每周/每月

场景 3:报告生成 ⭐⭐⭐⭐⭐

自动化内容:

- 数据收集整合
- 图表自动生成
- PDF/PPT 导出
- 邮件自动发送

技术实现:

语言:Python
库:pandas, matplotlib, reportlab
API:Google Analytics API, Search Console API
频率:每周/每月

场景 4:竞争对手监控 ⭐⭐⭐⭐

自动化内容:

- 对手排名变化
- 对手新外链
- 对手新内容
- 价格/产品变化

技术实现:

语言:Python
库:requests, BeautifulSoup
API:Ahrefs API, SEMrush API
频率:每日/每周

场景 5:内容优化 ⭐⭐⭐⭐

自动化内容:

- 关键词密度检查
- 内链建议
- 图片 ALT 检查
- 可读性分析

技术实现:

语言:Python
库:BeautifulSoup, NLTK
频率:发布前

场景 6:外链发现 ⭐⭐⭐⭐

自动化内容:

- 品牌提及监控
- 未链接提及发现
- 外链机会识别
- 外联列表生成

技术实现:

语言:Python
库:requests, BeautifulSoup
API:Mention API, Ahrefs API
频率:每周

编程基础

推荐语言:Python

为什么选择 Python?

✅ 语法简单
✅ SEO 库丰富
✅ 社区活跃
✅ 跨平台
✅ 免费开源

基础语法示例

Hello World:

print("Hello SEO!")

变量和数据类型:

# 字符串
keyword = "SEO 优化"

# 数字
search_volume = 1000

# 列表
keywords = ["SEO", "优化", "网站"]

# 字典
keyword_data = {
    "keyword": "SEO 优化",
    "volume": 1000,
    "difficulty": 50
}

循环:

# for 循环
keywords = ["SEO", "SEM", "PPC"]
for kw in keywords:
    print(f"关键词:{kw}")

# while 循环
count = 0
while count < 10:
    print(count)
    count += 1

函数:

def check_ranking(keyword, url):
    """检查关键词排名"""
    # 实现代码
    ranking = get_ranking(keyword, url)
    return ranking

# 调用函数
result = check_ranking("SEO 优化", "example.com")
print(f"排名:{result}")

实用 SEO 脚本

脚本 1:批量检查死链 ⭐⭐⭐⭐⭐

import requests
from bs4 import BeautifulSoup

def check_links(url):
    """检查页面死链"""
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')

    links = soup.find_all('a', href=True)
    dead_links = []

    for link in links:
        href = link['href']
        try:
            resp = requests.head(href, timeout=5)
            if resp.status_code >= 400:
                dead_links.append({
                    'url': href,
                    'status': resp.status_code
                })
        except:
            dead_links.append({
                'url': href,
                'status': 'Error'
            })

    return dead_links

# 使用
dead_links = check_links("https://example.com")
print(f"发现 {len(dead_links)} 个死链")
for link in dead_links:
    print(f"{link['url']} - {link['status']}")

脚本 2:批量获取 Title 和 Meta ⭐⭐⭐⭐⭐

import requests
from bs4 import BeautifulSoup
import pandas as pd

def get_page_meta(urls):
    """批量获取页面 Meta 信息"""
    results = []

    for url in urls:
        try:
            response = requests.get(url, timeout=10)
            soup = BeautifulSoup(response.text, 'html.parser')

            title = soup.title.string if soup.title else ''
            meta_desc = soup.find('meta', attrs={'name': 'description'})
            description = meta_desc['content'] if meta_desc else ''

            results.append({
                'url': url,
                'title': title,
                'description': description,
                'title_length': len(title),
                'desc_length': len(description)
            })
        except Exception as e:
            results.append({
                'url': url,
                'title': 'Error',
                'description': str(e)
            })

    return pd.DataFrame(results)

# 使用
urls = [
    "https://example.com/page1",
    "https://example.com/page2",
    # ... 更多 URL
]

df = get_page_meta(urls)
df.to_excel("meta 信息.xlsx", index=False)
print(f"已处理 {len(df)} 个页面")

脚本 3:排名监控脚本 ⭐⭐⭐⭐⭐

import requests
import pandas as pd
from datetime import datetime

def check_google_ranking(keyword, domain):
    """检查 Google 排名(简化版)"""
    # 实际使用建议使用 SERP API
    url = f"https://www.google.com/search?q={keyword}"
    headers = {
        'User-Agent': 'Mozilla/5.0'
    }

    response = requests.get(url, headers=headers)

    # 解析搜索结果,查找域名位置
    # 这里简化处理
    ranking = 0  # 实际应解析 HTML 获取排名

    return {
        'date': datetime.now().strftime('%Y-%m-%d'),
        'keyword': keyword,
        'domain': domain,
        'ranking': ranking
    }

# 批量检查
keywords = ["SEO 优化", "西安 SEO", "网站优化"]
domain = "example.com"

results = []
for kw in keywords:
    result = check_google_ranking(kw, domain)
    results.append(result)

# 保存结果
df = pd.DataFrame(results)
df.to_excel(f"排名监控_{datetime.now().strftime('%Y%m%d')}.xlsx", index=False)

脚本 4:自动生成 SEO 报告 ⭐⭐⭐⭐

import pandas as pd
import matplotlib.pyplot as plt
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas

def generate_seo_report(data, output_file):
    """生成 SEO 报告 PDF"""
    c = canvas.Canvas(output_file, pagesize=A4)
    width, height = A4

    # 标题
    c.setFont("Helvetica-Bold", 24)
    c.drawString(100, height - 50, "SEO 月度报告")

    # 日期
    c.setFont("Helvetica", 12)
    c.drawString(100, height - 80, f"报告日期:{datetime.now().strftime('%Y-%m-%d')}")

    # 数据表格
    c.setFont("Helvetica", 10)
    y = height - 120

    c.drawString(100, y, "关键词")
    c.drawString(250, y, "当前排名")
    c.drawString(350, y, "上月排名")
    c.drawString(450, y, "变化")

    y -= 20
    for row in data:
        c.drawString(100, y, row['keyword'])
        c.drawString(250, y, str(row['current']))
        c.drawString(350, y, str(row['previous']))
        change = row['current'] - row['previous']
        c.drawString(450, y, f"{change:+d}")
        y -= 20

    c.save()
    print(f"报告已生成:{output_file}")

# 使用
data = [
    {'keyword': 'SEO 优化', 'current': 3, 'previous': 5},
    {'keyword': '西安 SEO', 'current': 2, 'previous': 3},
    # ... 更多数据
]

generate_seo_report(data, "SEO 报告.pdf")

脚本 5:竞争对手外链监控 ⭐⭐⭐⭐

import requests
import json

def monitor_competitor_backlinks(api_key, domain):
    """监控竞争对手外链(使用 Ahrefs API)"""
    url = "https://openapi.ahrefs.com/v1/backlinks"
    params = {
        'target': domain,
        'limit': 100,
        'token': api_key
    }

    response = requests.get(url, params=params)
    data = response.json()

    # 处理数据
    backlinks = []
    for item in data.get('backlinks', []):
        backlinks.append({
            'source_url': item['src_url'],
            'target_url': item['target_url'],
            'anchor': item['anchor'],
            'domain_rank': item['domain_rank']
        })

    return backlinks

# 使用
api_key = "your_api_key"
competitors = ["competitor1.com", "competitor2.com"]

for competitor in competitors:
    backlinks = monitor_competitor_backlinks(api_key, competitor)
    print(f"{competitor}: 发现 {len(backlinks)} 个外链")
    # 可以保存到数据库或文件

API 集成

Google APIs

Search Console API:

from googleapiclient.discovery import build

def get_search_console_data():
    service = build('searchconsole', 'v1')

    request = {
        'startDate': '2026-01-01',
        'endDate': '2026-01-31',
        'dimensions': ['query', 'page'],
        'rowLimit': 1000
    }

    response = service.searchanalytics().query(
        siteUrl='https://example.com',
        body=request
    ).execute()

    return response

Google Analytics API:

from googleapiclient.discovery import build

def get_ga_data():
    analytics = build('analyticsreporting', 'v4')

    body = {
        'reportRequests': [{
            'viewId': 'YOUR_VIEW_ID',
            'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}],
            'metrics': [{'expression': 'ga:sessions'}],
            'dimensions': [{'name': 'ga:source'}]
        }]
    }

    response = analytics.reports().batchGet(body=body).execute()
    return response

Ahrefs API

import requests

def get_ahrefs_data(domain, api_key):
    url = "https://openapi.ahrefs.com/v1/domain"
    params = {
        'target': domain,
        'token': api_key
    }

    response = requests.get(url, params=params)
    return response.json()

百度站长 API

import requests

def submit_urls_to_baidu(site_url, token, urls):
    """提交 URL 到百度"""
    api_url = f"http://data.zz.baidu.com/urls?site={site_url}&token={token}"

    headers = {'Content-Type': 'text/plain'}
    data = '\n'.join(urls)

    response = requests.post(api_url, headers=headers, data=data)
    return response.json()

自动化工具

无代码自动化

Zapier:

连接不同应用
自动触发工作流
示例:新排名数据 → Google Sheets → 邮件通知

Make (Integromat):

可视化自动化
多应用集成
适合非技术人员

SEO 自动化工具

Rank Math Pro:

WordPress SEO 自动化
自动添加 Schema
自动内链建议

WordLift:

AI 驱动内容优化
自动 Schema 标记
知识图谱构建

王尘宇实战建议

18 年经验总结

  1. 从简单开始
  2. 先自动化最简单重复的工作
  3. 逐步学习编程
  4. 不要一开始就搞复杂的

  5. ROI 优先

  6. 优先自动化耗时最多的任务
  7. 计算投入产出比
  8. 不要为了自动化而自动化

  9. 测试很重要

  10. 脚本要测试
  11. 监控运行状态
  12. 设置错误告警

  13. 文档不可少

  14. 记录脚本功能
  15. 写使用说明
  16. 方便交接维护

  17. 持续学习

  18. 学习 Python 基础
  19. 关注新工具
  20. 参加技术社区

西安企业建议

  • 培养团队技术能力
  • 与本地技术公司合作
  • 参加技术交流活动
  • 重视自动化工具投资

常见问题解答

Q1:没有编程基础能学吗?

答: 能。建议:
- 从 Python 基础开始
- 网上教程很多
- 2-3 个月可入门
- 边学边实践

Q2:自动化会出错吗?

答: 会。所以:
- 要设置监控
- 定期检查结果
- 保留手动复核

Q3:需要买什么工具?

答:
- 基础:免费工具 + Python
- 进阶:API 访问权限
- 高级:自动化工具订阅

Q4:自动化会影响 SEO 吗?

答: 不会。自动化只是:
- 数据收集
- 报告生成
- 监控告警
不影响搜索引擎判断

Q5:多久能收回学习成本?

答:
- 基础脚本:1-2 个月
- 中级自动化:3-6 个月
- 高级系统:6-12 个月
长期回报很高


总结

SEO 自动化与脚本编写核心要点:

  • 🐍 Python 基础 — 语法简单,库丰富
  • 📊 应用场景 — 排名监控、报告生成、技术审计
  • 🔧 实用脚本 — 死链检查、Meta 获取、排名追踪
  • 🔌 API 集成 — Google、Ahrefs、百度
  • 🤖 自动化工具 — 无代码 + 有代码方案

王尘宇建议: SEO 自动化是提升效率的关键技能。花 3 个月学习 Python 基础,将让你未来 10 年受益。


关于作者

王尘宇
西安蓝蜻蜓网络科技有限公司创始人
2008 年开始从事互联网相关工作,拥有 18 年实战经验

专业领域:
- 网站建设与优化
- SEO 搜索引擎优化
- GEO 生成引擎优化
- 竞价推广与 SEM 运营
- 自媒体营销

联系方式:
- 🌐 网站:wangchenyu.com
- 💬 微信:wangshifucn
- 📱 QQ:314111741
- 📍 地址:陕西西安

提供服务:
- SEO 自动化咨询
- 脚本定制开发
- 企业网站整站优化
- SEO 团队培训

欢迎西安及全国的企业朋友交流合作!


本文最后更新:2026 年 3 月 18 日
版权声明:本文为王尘宇原创,属于"SEO 高级策略系列"第 38 篇,转载请联系作者并注明出处。
下一篇:SEO-39:SEO 案例分析:从 0 到 10 万流量

标签: SEO

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~