WeChat AI Radar 技能文档
技能概述
项目路径: ~/wechat_ai_radar/
微信朋友圈AI雷达是一个完整的自动化内容采集+分析系统,核心流程:
微信朋友圈滚动截图 → AI视觉提取内容 → 存储数据库 → AI分类聚合分析 → 生成结构化简报
核心架构
模块说明
| 模块 | 路径 | 功能 |
|------|------|------|
| config.py | ~/wechat_ai_radar/config.py | 全局配置(坐标、API、日志等) |
| app.py | ~/wechat_ai_radar/app.py | 主程序入口,支持多模式运行 |
| run_300.py | ~/wechat_ai_radar/run_300.py | 采集300条帖子完整流程脚本 |
| automation/ | automation/scroll_moments.py | PyAutoGUI模拟滚动截图 |
| extractor/ | extractor/moments_extractor.py | AI视觉从截图提取朋友圈内容 |
| db/ | db/database.py | SQLite数据库读写 |
| ai/ | ai/classify.py, ai/summarize.py | AI分类和聚合分析 |
| reports/ | reports/daily_report.py | 日报生成器 |
关键配置参数
朋友圈窗口坐标(已校准)
WECHAT_MOMENTS_FALLBACK_X = 0 # 朋友圈窗口x坐标(屏幕左上角)
WECHAT_MOMENTS_FALLBACK_Y = 0 # 朋友圈窗口y坐标
WECHAT_CONTENT_WIDTH = 550 # 内容区宽度
WECHAT_CONTENT_HEIGHT = 969 # 内容区高度
滚动鼠标目标 = (275, 484) # 内容区中心
滚动参数
SCROLL_COUNT = 50 # 默认滚动次数
SCROLL_INTERVAL = 1.0 # 滚动间隔(秒)
SCROLL_AMOUNT = -300 # 每次滚动像素量(负值=向上)
SCROLL_MOUSE_CLICKS = 3 # 每次滚动执行几次scroll调用
AI API配置
AI_API_URL = "https://api.qingyuntop.top/v1" # 青禾聚合API
AI_API_KEY = config.AI_API_KEY # 从config读取
AI_MODEL = "gpt-4o-mini"
AI_MAX_TOKENS = 4000
AI_TEMPERATURE = 0.7
AI_REQUEST_DELAY = 1.0 # API请求间隔(秒)
AI_BATCH_SIZE = 10 # 每批处理数量
使用方式
方式一:完整采集流程(采集 + 分析 + 简报)
cd ~/wechat_ai_radar && uv run python run_300.py
流程:
- 自动打开/激活微信
- 执行150次滚动截图(约300条帖子)
- AI视觉提取内容 → 存入
moments.db - AI聚合分析
- 生成简报(Markdown格式)
目标:约300条帖子 / 耗时约15-20分钟
方式二:仅采集截图(不分析)
cd ~/wechat_ai_radar && uv run python -c "
from automation.open_wechat import WeChatOpener
from automation.scroll_moments import MomentsScroller
import config
opener = WeChatOpener()
opener.activate_wechat()
scroller = MomentsScroller(scroll_count=50, scroll_interval=1.5)
screenshots = scroller.scroll_full(capture=True)
print(f'截图完成: {len(screenshots)} 张')
"
方式三:基于已有数据生成简报
已有 extracted_*.json 数据文件时,直接生成简报:
cd ~/wechat_ai_radar && uv run python reports/generate_daily_report.py
日报结构(用户指定框架):
# 今日朋友圈热点
## 🔥 热门关键词
## 📈 热门分类(AI/活动/创业/SaaS/出海/促销)
## 💼 商机发现(AI合作/合作需求/创业动态/投资动态)
## 👥 高频人物
## 🧠 AI总结
方式四:app.py 多模式运行
# 仅滚动截图
uv run python app.py scroll
# OCR文字提取(需要paddleocr)
uv run python app.py ocr
# AI分析已有数据
uv run python app.py analyze
# AI总结
uv run python app.py summarize
# 生成日报
uv run python app.py report
# 启动定时任务(每天21:00自动运行)
uv run python app.py schedule --hour 21 --minute 0
数据文件路径
| 用途 | 路径 |
|------|------|
| 数据库 | ~/wechat_ai_radar/data/moments.db |
| 截图目录 | ~/wechat_ai_radar/screenshots/ |
| 报告目录 | ~/wechat_ai_radar/reports/ |
| 日志目录 | ~/wechat_ai_radar/logs/ |
| 最新提取数据 | ~/wechat_ai_radar/data/extracted_YYYYMMDD_HHMMSS.json |
数据库结构
-- moments 表
id, content, author, image_path, created_at, hash,
likes, comments, is_analyzed, category, keywords,
people, companies, business_opportunity, sentiment, summary
# 读取数据示例
from db.database import Database
from db.storage import Storage
db = Database()
storage = Storage(db)
moments = storage.get_recent(days=7, limit=100)
for m in moments:
print(f"[{m.author}] {m.content[:50]}")
已封装的便捷脚本
1. reports/generate_daily_report.py
- 输入:
extracted_*.json文件 - 输出:Markdown格式日报 + Word文档
- 框架:热门关键词/分类/商机/人物/AI总结
2. reports/daily_report_to_docx.py
- 将日报数据转换为Word文档(A4横向,蓝色主题)
3. extract_and_analyze.py
- 批量处理截图 → AI提取 → 存入数据库
前置要求
# 安装依赖
cd ~/wechat_ai_radar && uv sync
# 核心依赖(pyproject.toml)
pyautogui, Pillow, python-dateutil, openai, httpx, APScheduler
已知限制
- 窗口必须可见:朋友圈窗口需在屏幕上可见(不能最小化)
- 坐标依赖屏幕布局:已校准为 (x=0, y=0) 屏幕左上角布局
- Mac专属:使用PyAutoGUI + macOS特定配置
- OCR可选:paddleocr未安装时跳过OCR,使用AI视觉提取替代
快捷命令汇总
# 完整采集+简报
cd ~/wechat_ai_radar && uv run python run_300.py
# 快速生成日报(基于已有JSON)
cd ~/wechat_ai_radar && uv run python reports/generate_daily_report.py
# 生成Word版日报
cd ~/wechat_ai_radar && uv run python reports/daily_report_to_docx.py
# 采集50次滚动截图
cd ~/wechat_ai_radar && uv run python -c "
from automation.open_wechat import WeChatOpener
from automation.scroll_moments import MomentsScroller
opener = WeChatOpener()
opener.activate_wechat()
scroller = MomentsScroller(scroll_count=50, scroll_interval=1.5)
screenshots = scroller.scroll_full(capture=True)
print(f'完成: {len(screenshots)} 张截图')
"