当前位置: 首页 > news >正文

我用 Python + AI 做了一套 SEO 优化工具:从关键词挖掘到排名监控,流量翻倍的秘密

我用 Python + AI 做了一套 SEO 优化工具:从关键词挖掘到排名监控,流量翻倍的秘密

适合做网站、博客、内容平台,想通过 SEO 获取免费流量的开发者和运营。
本文用 Python + AI 搭了一套完整的 SEO 工具链,从关键词挖掘到内容优化到排名监控。

背景:SEO 是最持久的流量来源

付费广告一停,流量就没了。SEO 不一样——好的内容可以在搜索引擎上持续获得免费流量,几个月甚至几年。

但 SEO 有很多重复性工作:挖掘关键词、分析竞品、优化内容、监控排名。用 Python 自动化这些工作,效率提升 10 倍。

工具链架构

关键词挖掘 → 竞品分析 → 内容优化 → 排名监控 → 报告生成

模块 1:关键词挖掘

importrequestsfrombs4importBeautifulSoupfromcollectionsimportCounterimportreclassKeywordMiner:"""关键词挖掘器"""defmine_from_search(self,seed_keyword,num_results=10):"""从搜索引擎结果挖掘关键词"""# 搜索结果页的"相关搜索"related=self._get_related_searches(seed_keyword)# 搜索建议suggestions=self._get_search_suggestions(seed_keyword)# 合并去重all_keywords=list(set(related+suggestions))returnall_keywordsdef_get_related_searches(self,keyword):"""获取相关搜索"""# 简化实现:实际可以用搜索 APIurl=f"https://www.baidu.com/s?wd={keyword}"try:resp=requests.get(url,headers={"User-Agent":"Mozilla/5.0"},timeout=10)soup=BeautifulSoup(resp.text,"html.parser")# 提取相关搜索词related=[a.get_text()forainsoup.select(".rs-link")]returnrelated[:20]except:return[]def_get_search_suggestions(self,keyword):"""获取搜索建议(自动补全)"""url=f"https://suggestion.baidu.com/su?wd={keyword}&action=opensearch"try:resp=requests.get(url,timeout=5)data=resp.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,key=lambdax:x["length"])

模块 2:竞品分析

classCompetitorAnalyzer:"""竞品内容分析器"""defanalyze_url(self,url):"""分析竞品页面"""try:resp=requests.get(url,headers={"User-Agent":"Mozilla/5.0"},timeout=10)soup=BeautifulSoup(resp.text,"html.parser")# 提取标题title=soup.find("title")title=title.get_text()iftitleelse""# 提取描述meta_desc=soup.find("meta",attrs={"name":"description"})description=meta_desc["content"]ifmeta_descelse""# 提取正文body=soup.find("body")text=body.get_text()ifbodyelse""# 提取关键词密度words=re.findall(r'[\u4e00-\u9fff]+',text)word_freq=Counter(words)# 提取 H 标签h_tags={}foriinrange(1,4):tags=soup.find_all(f"h{i}")h_tags[f"h{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:analysis=self.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 优化建议"""prompt=f"""你是一个 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-100)"""fromopenaiimportOpenAI client=OpenAI()response=client.chat.completions.create(model="gpt-4",messages=[{"role":"user","content":prompt}],temperature=0.3)returnresponse.choices[0].message.content

模块 4:排名监控

classRankMonitor:"""排名监控器"""def__init__(self,db_path="seo_monitor.db"):importsqlite3 self.db=sqlite3.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_engine="baidu"):"""检查关键词排名"""ifsearch_engine=="baidu":returnself._check_baidu(keyword,target_url)returnNonedef_check_baidu(self,keyword,target_url):"""百度排名检查"""url=f"https://www.baidu.com/s?wd={keyword}&rn=50"try:resp=requests.get(url,headers={"User-Agent":"Mozilla/5.0"},timeout=10)soup=BeautifulSoup(resp.text,"html.parser")# 提取搜索结果results=soup.select(".result h3 a")fori,resultinenumerate(results):href=result.get("href","")text=result.get_text()iftarget_urlinhrefortarget_urlintext:position=i+1self.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,days=30):"""获取排名历史"""cursor=self.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:rank=self.check_rank(kw,target_url)history=self.get_history(kw,target_url,days=7)report.append({"keyword":kw,"current_rank":rank,"trend":self._calculate_trend(history),"history":history})returnreportdef_calculate_trend(self,history):iflen(history)<2:return"→"recent=history[0][0]older=history[-1][0]ifrecent<older:return"↑"# 排名上升elifrecent>older:return"↓"# 排名下降return"→"

模块 5:完整 SEO 工具

defrun_seo_workflow(target_url,target_keyword):"""完整 SEO 工作流"""print("🔍 SEO 优化工作流启动\n")# 1. 关键词挖掘print("Step 1: 关键词挖掘...")miner=KeywordMiner()keywords=miner.mine_from_search(target_keyword)print(f" 发现{len(keywords)}个相关关键词")# 2. 竞品分析print("\nStep 2: 竞品分析...")# 实际使用时替换为真实竞品 URLcompetitor_urls=["https://competitor1.com/article","https://competitor2.com/article",]analyzer=CompetitorAnalyzer()results,comparison=analyzer.compare_urls(competitor_urls)print(f" 分析了{len(results)}个竞品页面")# 3. 内容优化建议print("\nStep 3: 内容优化建议...")article={"title":"示例文章标题","content":"文章内容..."}suggestions=generate_seo_suggestions(article,target_keyword)print(f" 生成了优化建议")# 4. 排名监控print("\nStep 4: 排名监控...")monitor=RankMonitor()report=monitor.generate_report(keywords[:5],target_url)foriteminreport:rank=item["current_rank"]or"未上榜"print(f"{item['keyword']}: 排名{rank}{item['trend']}")print("\n✅ SEO 工作流完成!")returnreport

踩坑记录

坑 1:搜索引擎反爬

症状:批量查询排名时被封 IP。

解决:控制请求频率(每次间隔 5-10 秒),使用代理 IP 轮换。

坑 2:排名数据不准

症状:同一个关键词,不同时间查结果不同。

原因:搜索引擎有个性化推荐、地域差异。

解决:用无痕模式、固定地域、多次查询取平均值。

坑 3:关键词密度计算不准

症状:中文分词不准确,关键词密度计算有偏差。

解决:用 jieba 分词库替代简单正则匹配。

坑 4:AI 优化建议太泛

症状:AI 说"建议优化标题",但没给具体方案。

解决:在 prompt 里要求 AI 给出具体的修改后标题示例。

坑 5:排名监控不及时

症状:排名变化了但一周后才发现。

解决:设置定时任务,每天自动检查排名变化并发送通知。

总结

3 条核心经验:

  1. 长尾关键词更容易排名。"Python 自动化脚本"比"Python"更容易排到首页。优先优化长尾词。

  2. 内容质量 > 关键词堆砌。搜索引擎越来越智能,堆砌关键词反而会被惩罚。写对用户有价值的内容才是王道。

  3. 排名监控要持续做。SEO 是长期工程,不是一次性优化。持续监控排名变化,发现问题及时调整。


你有做 SEO 优化吗?有什么经验?评论区交流。

http://www.jsqmd.com/news/1067768/

相关文章:

  • 在 AMD 显卡上部署 SGLang 推理服务,配置细节全记录
  • 维护开源项目时,如何把一条 Issue 回复写清楚
  • 一文搞懂:常用设计模式实战——AI生成代码时代,设计模式为什么是开发者的“终极护城河”?
  • 萨科微slkor6月18日每日芯闻,国际芯闻:
  • 基于800V直流架构的数据中心微电网技术经济评估
  • 如何快速搭建跨平台游戏串流服务器:Sunshine终极配置指南
  • 基于“端-边-云”架构的工业互联网组建与运维实战(附避坑指南)
  • AI Shell对话OBS,存储管理“说”着搞定
  • Vulkan 还是 ROCm,AMD 显卡跑大模型的后端之争终结篇
  • 终极指南:三步免费解锁WeMod专业版功能 - Wand-Enhancer完整教程
  • 3分钟掌握ViGEmBus:让你的电脑秒变游戏手柄工厂 [特殊字符]
  • AMD Ryzen调试神器SMU Debug Tool:释放CPU潜能的终极指南
  • 工业级检索“新宠”SPLADE:原理拆解与落地实践
  • 六大开源商城系统技术架构与功能对比分析
  • UUV_AUV六自由度模型(运动学+动力学+扰动)(Matlab代码实现)
  • MASLD模型中如何实现肝细胞特异性过表达?
  • 企业平台开发助手,kimi-k2.7-code 编写数据处理脚本,DMXAPI提供300款优质大模型API
  • 串口数据可视化利器:SerialPlot让嵌入式开发调试更直观
  • AMD 新本散热与性能模式,长时间跑大模型该怎么设置
  • 六自由度自平衡稳定平台:动态工况下的高精度稳姿技术与行业应用
  • 心肌缺血严不严重,怎么判断?
  • 终极指南:5分钟快速部署Sunshine游戏串流服务器,打造你的跨平台云游戏中心
  • E-Hentai下载器终极指南:如何快速免费下载完整画廊资源
  • Wand-Enhancer实战指南:三步解锁WeMod专业版完整功能
  • 实测5款录音转文字神器,这些免费版工具让我工作总结效率翻倍
  • 如何选择一家专业的兰州软件开发服务商?
  • 2026年企业级大模型聚合平台选型指南:六大方案技术解构与工程化路径
  • 《重启日记》第十三周|流量回落不内耗:落地小事,自有长期价值
  • 一份价值GitHub 17万star的CLAUDE.md 你值得拥有
  • 告别网盘限速!用Syncthing打造私有同步网盘