Skip to content

vanch007/job-search-agent

Repository files navigation

Job Search Agent - 智能求职助手

Python FastAPI Playwright

基于 Playwright 和 AI 的多平台招聘信息采集与智能分析工具,帮助求职者找到最匹配的岗位并获得简历优化建议。

✨ 项目亮点

  • 🤖 AI 智能分析: 集成 Vertex AI Gemini 和 OpenAI,深度分析简历与岗位匹配度
  • 🌐 多平台采集: 支持 Boss直聘、猎聘、智联招聘等主流招聘平台
  • 📄 简历解析: 支持 PDF、Word、文本格式的简历自动解析
  • 📊 智能匹配: AI 分析匹配度并给出简历优化建议
  • 🎯 面试准备: 针对目标岗位生成个性化面试问题和答案建议
  • 📈 技能分析: 可视化展示技能差距并提供提升建议
  • 🖥️ Web 管理界面: 现代化的 Web UI,可视化管理所有功能
  • 🔐 登录状态管理: Playwright 持久化 Cookie,无需重复登录

🚀 快速开始

第 1 步: 环境准备

# 进入项目目录
cd /Users/vanch/jobSearch

# 使用 UV 创建虚拟环境并安装依赖
uv sync

# 安装 Playwright 浏览器
uv run playwright install chromium

如果未安装 UV,请先安装: curl -LsSf https://astral.sh/uv/install.sh | sh

第 2 步: 配置环境变量

# 复制示例配置
cp .env.example .env

# 编辑配置
vim .env

主要配置项:

  • LLM_PROVIDER: 选择 vertex_aiopenai
  • GOOGLE_CLOUD_PROJECT: 使用 Vertex AI 时需要设置
  • OPENAI_API_KEY: 使用 OpenAI 时需要设置

第 3 步: 启动服务

# 启动 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>

Web UI 功能

  1. 仪表盘: 查看求职进度统计和匹配分布
  2. 简历管理: 上传简历或输入文本,AI 自动分析提取技能和经验
  3. 任务管理: 创建和管理多平台采集任务
  4. 岗位查看: 浏览采集到的岗位,支持筛选和搜索
  5. 智能匹配: 选择简历与岗位进行 AI 匹配分析
  6. 面试准备: 针对高分匹配岗位生成个性化面试建议
  7. 设置: 配置匹配权重、采集参数等偏好

🔧 LLM 配置

Vertex AI Gemini(推荐)

使用与 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

OpenAI API

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/ 目录,后续采集将自动使用保存的登录状态。

⚠️ 注意事项

  1. 反爬虫: 招聘平台有反爬虫机制,请合理设置采集频率
  2. 登录状态: 如果遇到验证码,需要重新登录
  3. 数据安全: 简历数据仅保存在本地
  4. API 费用: 使用 LLM 会产生 API 调用费用

📄 许可证

MIT License

🙏 致谢

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors