我用 Python AI 做了一套 SEO 优化工具从关键词挖掘到排名监控流量翻倍的秘密适合做网站、博客、内容平台想通过 SEO 获取免费流量的开发者和运营。本文用 Python AI 搭了一套完整的 SEO 工具链从关键词挖掘到内容优化到排名监控。背景SEO 是最持久的流量来源付费广告一停流量就没了。SEO 不一样——好的内容可以在搜索引擎上持续获得免费流量几个月甚至几年。但 SEO 有很多重复性工作挖掘关键词、分析竞品、优化内容、监控排名。用 Python 自动化这些工作效率提升 10 倍。工具链架构关键词挖掘 → 竞品分析 → 内容优化 → 排名监控 → 报告生成模块 1关键词挖掘importrequestsfrombs4importBeautifulSoupfromcollectionsimportCounterimportreclassKeywordMiner:关键词挖掘器defmine_from_search(self,seed_keyword,num_results10):从搜索引擎结果挖掘关键词# 搜索结果页的相关搜索relatedself._get_related_searches(seed_keyword)# 搜索建议suggestionsself._get_search_suggestions(seed_keyword)# 合并去重all_keywordslist(set(relatedsuggestions))returnall_keywordsdef_get_related_searches(self,keyword):获取相关搜索# 简化实现实际可以用搜索 APIurlfhttps://www.baidu.com/s?wd{keyword}try:resprequests.get(url,headers{User-Agent:Mozilla/5.0},timeout10)soupBeautifulSoup(resp.text,html.parser)# 提取相关搜索词related[a.get_text()forainsoup.select(.rs-link)]returnrelated[:20]except:return[]def_get_search_suggestions(self,keyword):获取搜索建议自动补全urlfhttps://suggestion.baidu.com/su?wd{keyword}actionopensearchtry:resprequests.get(url,timeout5)dataresp.json()returndata[1]iflen(data)1else[]except:return[]defanalyze_keywords(self,keywords):分析关键词价值results[]forkwinkeywords:results.append({keyword:kw,length:len(kw),words:len(kw.split()),has_number:bool(re.search(r\d,kw)),is_question:any(qinkwforqin[怎么,如何,什么是,为什么])})returnsorted(results,keylambdax:x[length])模块 2竞品分析classCompetitorAnalyzer:竞品内容分析器defanalyze_url(self,url):分析竞品页面try:resprequests.get(url,headers{User-Agent:Mozilla/5.0},timeout10)soupBeautifulSoup(resp.text,html.parser)# 提取标题titlesoup.find(title)titletitle.get_text()iftitleelse# 提取描述meta_descsoup.find(meta,attrs{name:description})descriptionmeta_desc[content]ifmeta_descelse# 提取正文bodysoup.find(body)textbody.get_text()ifbodyelse# 提取关键词密度wordsre.findall(r[\u4e00-\u9fff],text)word_freqCounter(words)# 提取 H 标签h_tags{}foriinrange(1,4):tagssoup.find_all(fh{i})h_tags[fh{i}][t.get_text()fortintags]return{url:url,title:title,description:description,word_count:len(text),top_keywords:word_freq.most_common(20),h_tags:h_tags,has_images:len(soup.find_all(img))0,has_code:len(soup.find_all(code))0orlen(soup.find_all(pre))0}exceptExceptionase:return{url:url,error:str(e)}defcompare_urls(self,urls):对比多个竞品页面results[]forurlinurls:analysisself.analyze_url(url)results.append(analysis)# 对比表格comparison{titles:[r.get(title,)forrinresults],word_counts:[r.get(word_count,0)forrinresults],has_code:[r.get(has_code,False)forrinresults],}returnresults,comparison模块 3内容优化建议defgenerate_seo_suggestions(article,target_keyword):用 AI 生成 SEO 优化建议promptf你是一个 SEO 专家。分析以下文章给出针对关键词 {target_keyword} 的优化建议。 文章标题{article.get(title,)}文章内容前 1000 字{article.get(content,)[:1000]}请从以下维度分析 1. 标题是否包含关键词建议如何优化 2. 开头 100 字是否包含关键词 3. 关键词密度是否合理2-5% 4. 是否有 H2/H3 结构化标题 5. 是否有内部/外部链接建议 6. Meta Description 建议150 字以内 输出格式 - 每个维度给出当前状态 优化建议 - 总体 SEO 得分1-100fromopenaiimportOpenAI clientOpenAI()responseclient.chat.completions.create(modelgpt-4,messages[{role:user,content:prompt}],temperature0.3)returnresponse.choices[0].message.content模块 4排名监控classRankMonitor:排名监控器def__init__(self,db_pathseo_monitor.db):importsqlite3 self.dbsqlite3.connect(db_path)self.db.execute( CREATE TABLE IF NOT EXISTS rankings ( id INTEGER PRIMARY KEY AUTOINCREMENT, keyword TEXT, url TEXT, position INTEGER, checked_at DATETIME DEFAULT CURRENT_TIMESTAMP ) )self.db.commit()defcheck_rank(self,keyword,target_url,search_enginebaidu):检查关键词排名ifsearch_enginebaidu:returnself._check_baidu(keyword,target_url)returnNonedef_check_baidu(self,keyword,target_url):百度排名检查urlfhttps://www.baidu.com/s?wd{keyword}rn50try:resprequests.get(url,headers{User-Agent:Mozilla/5.0},timeout10)soupBeautifulSoup(resp.text,html.parser)# 提取搜索结果resultssoup.select(.result h3 a)fori,resultinenumerate(results):hrefresult.get(href,)textresult.get_text()iftarget_urlinhrefortarget_urlintext:positioni1self.db.execute(INSERT INTO rankings (keyword, url, position) VALUES (?, ?, ?),(keyword,target_url,position))self.db.commit()returnpositionreturnNone# 未找到exceptExceptionase:print(f检查失败:{e})returnNonedefget_history(self,keyword,url,days30):获取排名历史cursorself.db.execute(SELECT position, checked_at FROM rankings WHERE keyword ? AND url ? AND checked_at datetime(now, ?) ORDER BY checked_at,(keyword,url,f-{days}days))returncursor.fetchall()defgenerate_report(self,keywords,target_url):生成排名报告report[]forkwinkeywords:rankself.check_rank(kw,target_url)historyself.get_history(kw,target_url,days7)report.append({keyword:kw,current_rank:rank,trend:self._calculate_trend(history),history:history})returnreportdef_calculate_trend(self,history):iflen(history)2:return→recenthistory[0][0]olderhistory[-1][0]ifrecentolder:return↑# 排名上升elifrecentolder:return↓# 排名下降return→模块 5完整 SEO 工具defrun_seo_workflow(target_url,target_keyword):完整 SEO 工作流print( SEO 优化工作流启动\n)# 1. 关键词挖掘print(Step 1: 关键词挖掘...)minerKeywordMiner()keywordsminer.mine_from_search(target_keyword)print(f 发现{len(keywords)}个相关关键词)# 2. 竞品分析print(\nStep 2: 竞品分析...)# 实际使用时替换为真实竞品 URLcompetitor_urls[https://competitor1.com/article,https://competitor2.com/article,]analyzerCompetitorAnalyzer()results,comparisonanalyzer.compare_urls(competitor_urls)print(f 分析了{len(results)}个竞品页面)# 3. 内容优化建议print(\nStep 3: 内容优化建议...)article{title:示例文章标题,content:文章内容...}suggestionsgenerate_seo_suggestions(article,target_keyword)print(f 生成了优化建议)# 4. 排名监控print(\nStep 4: 排名监控...)monitorRankMonitor()reportmonitor.generate_report(keywords[:5],target_url)foriteminreport:rankitem[current_rank]or未上榜print(f{item[keyword]}: 排名{rank}{item[trend]})print(\n✅ SEO 工作流完成)returnreport踩坑记录坑 1搜索引擎反爬症状批量查询排名时被封 IP。解决控制请求频率每次间隔 5-10 秒使用代理 IP 轮换。坑 2排名数据不准症状同一个关键词不同时间查结果不同。原因搜索引擎有个性化推荐、地域差异。解决用无痕模式、固定地域、多次查询取平均值。坑 3关键词密度计算不准症状中文分词不准确关键词密度计算有偏差。解决用 jieba 分词库替代简单正则匹配。坑 4AI 优化建议太泛症状AI 说建议优化标题但没给具体方案。解决在 prompt 里要求 AI 给出具体的修改后标题示例。坑 5排名监控不及时症状排名变化了但一周后才发现。解决设置定时任务每天自动检查排名变化并发送通知。总结3 条核心经验长尾关键词更容易排名。Python 自动化脚本比Python更容易排到首页。优先优化长尾词。内容质量 关键词堆砌。搜索引擎越来越智能堆砌关键词反而会被惩罚。写对用户有价值的内容才是王道。排名监控要持续做。SEO 是长期工程不是一次性优化。持续监控排名变化发现问题及时调整。你有做 SEO 优化吗有什么经验评论区交流。