基于 Playwright 和 AI 的多平台招聘信息采集与智能分析工具,帮助求职者找到最匹配的岗位并获得简历优化建议。
- 🤖 AI 智能分析: 集成 Vertex AI Gemini 和 OpenAI,深度分析简历与岗位匹配度
- 🌐 多平台采集: 支持 Boss直聘、猎聘、智联招聘等主流招聘平台
- 📄 简历解析: 支持 PDF、Word、文本格式的简历自动解析
- 📊 智能匹配: AI 分析匹配度并给出简历优化建议
- 🎯 面试准备: 针对目标岗位生成个性化面试问题和答案建议
- 📈 技能分析: 可视化展示技能差距并提供提升建议
- 🖥️ Web 管理界面: 现代化的 Web UI,可视化管理所有功能
- 🔐 登录状态管理: Playwright 持久化 Cookie,无需重复登录
# 进入项目目录
cd /Users/vanch/jobSearch
# 使用 UV 创建虚拟环境并安装依赖
uv sync
# 安装 Playwright 浏览器
uv run playwright install chromium如果未安装 UV,请先安装:
curl -LsSf https://astral.sh/uv/install.sh | sh
# 复制示例配置
cp .env.example .env
# 编辑配置
vim .env主要配置项:
LLM_PROVIDER: 选择vertex_ai或openaiGOOGLE_CLOUD_PROJECT: 使用 Vertex AI 时需要设置OPENAI_API_KEY: 使用 OpenAI 时需要设置
# 启动 Web 服务
uv run python main.py server
# 或使用 uvicorn
uv run uvicorn web_server:app --host 0.0.0.0 --port 8000 --reload访问 http://localhost:8000,使用默认账号 admin / admin123 登录。
# 分析简历
uv run python main.py resume --file /path/to/resume.pdf
# 登录招聘平台(手动登录保存状态)
uv run python main.py login --platform boss
# 运行采集任务
uv run python main.py scrape --task-id 0
# 快速搜索
uv run python main.py scrape --keyword "Python开发" --platform boss --location 北京
# 执行岗位匹配
uv run python main.py match --resume-id <简历ID>- 仪表盘: 查看求职进度统计和匹配分布
- 简历管理: 上传简历或输入文本,AI 自动分析提取技能和经验
- 任务管理: 创建和管理多平台采集任务
- 岗位查看: 浏览采集到的岗位,支持筛选和搜索
- 智能匹配: 选择简历与岗位进行 AI 匹配分析
- 面试准备: 针对高分匹配岗位生成个性化面试建议
- 设置: 配置匹配权重、采集参数等偏好
使用与 gemini-cli 相同的凭据配置:
# 确保已登录 Google Cloud
gcloud auth application-default login
# 设置项目
export GOOGLE_CLOUD_PROJECT=your-project-id在 .env 中设置:
LLM_PROVIDER=vertex_ai
GOOGLE_CLOUD_PROJECT=your-project-id
LLM_PROVIDER=openai
OPENAI_API_KEY=your-api-key
OPENAI_BASE_URL=https://api.openai.com/v1
/Users/vanch/jobSearch/
├── main.py # CLI 入口
├── web_server.py # Web 服务
├── config.json # 任务配置
├── requirements.txt # 依赖
├── .env.example # 环境变量模板
│
├── src/
│ ├── config.py # 配置管理
│ ├── utils.py # 工具函数
│ │
│ ├── llm/ # LLM 集成
│ │ ├── base.py # 基类
│ │ ├── vertex_ai.py # Vertex AI 实现
│ │ ├── openai_handler.py
│ │ └── prompts/ # Prompt 模板
│ │
│ ├── resume/ # 简历处理
│ │ ├── parser.py # 简历解析
│ │ ├── analyzer.py # 简历分析
│ │ └── models.py # 数据模型
│ │
│ ├── scrapers/ # 采集器
│ │ ├── base.py # 基类
│ │ ├── boss.py # Boss直聘
│ │ ├── liepin.py # 猎聘
│ │ └── zhaopin.py # 智联招聘
│ │
│ ├── matching/ # 匹配分析
│ │ ├── scorer.py # 匹配评分
│ │ └── skill_analysis.py # 技能分析
│ │
│ ├── interview/ # 面试建议
│ │ └── coach.py # 面试教练
│ │
│ └── database/ # 数据库
│ ├── models.py # ORM 模型
│ └── unified_db.py # 统一数据库
│
├── templates/ # Web UI 模板
│ ├── dashboard.html # 仪表盘
│ ├── settings.html # 设置
│ └── ...
├── static/ # 静态资源
└── data/ # 数据存储
├── resumes/ # 简历
├── jobs/ # 岗位数据
├── matches/ # 匹配结果
└── states/ # 登录状态
首次使用需要手动登录各招聘平台:
# 以非 headless 模式打开浏览器进行登录
uv run python main.py login --platform boss登录成功后,Cookie 会保存到 data/states/ 目录,后续采集将自动使用保存的登录状态。
- 反爬虫: 招聘平台有反爬虫机制,请合理设置采集频率
- 登录状态: 如果遇到验证码,需要重新登录
- 数据安全: 简历数据仅保存在本地
- API 费用: 使用 LLM 会产生 API 调用费用
MIT License
- ai-goofish-monitor - 架构设计参考
- Playwright - 浏览器自动化
- FastAPI - Web 框架
- Vertex AI - LLM 服务