__ __ ________
/ /___ / /_ / ____/ /___ __ __
__ / / __ \/ __ \/ / / / __ `/ | /| / /
/ /_/ / /_/ / /_/ / /___/ / /_/ /| |/ |/ /
\____/\____/_.___/\____/_/\__,_/ |__/|__/
一句话说清楚: JobClaw 是一个开源的 AI 求职 Agent——自动抓岗位、用大模型帮你匹配、一键批量投递,投完还给你发 Telegram/Discord 消息汇报。
你要做的,就是写好简历,然后等面试通知。
每个找过工作的人都懂:
- Boss直聘刷到手酸,一个个点进去看 JD,看完觉得不太行,退出来继续刷
- 好不容易看到一个还行的,点"立即沟通",想半天打招呼说啥,发完又没下文
- 一天下来投了十几个,回复的寥寥无几,时间全花在重复劳动上
- 有些岗位 HR 三个月没上线了,你还在那认真写打招呼语——投了个寂寞
- LinkedIn 也要刷,拉勾也要看,多平台来回切,脑子都乱了
- 投完之后石沉大海,哪个回了、哪个没回,全靠记忆
你的时间应该花在准备面试和提升自己上,不是当人肉投递机器。
| 步骤 | 人工操作 | JobClaw |
|---|---|---|
| 🔍 搜岗位 | 多平台来回切,关键词一个个试 | 自动抓取 Boss直聘 + LinkedIn |
| 📖 看 JD | 一个个点开,人肉阅读判断匹不匹配 | LLM 智能匹配,打分 + 给出匹配理由 |
| 💬 打招呼 | 想措辞、复制粘贴、一个个发 | 自动生成打招呼语,支持模板变量 |
| 📤 投简历 | 点「立即沟通」重复 100 遍 | 自动批量投递高匹配岗位 |
| 🧹 过滤垃圾 | 全靠直觉,经常投到僵尸岗 | HR 活跃度过滤,跳过僵尸岗 |
| 📊 跟进状态 | Excel?备忘录?全靠脑子? | Telegram / Discord 实时通知 |
简单说:你配好简历和偏好,JobClaw 帮你 24 小时无休投递。
不是简单的关键词匹配,而是用大模型理解你的背景和岗位要求,给出匹配分数 + 匹配理由。
三种 LLM 认证方式(优先级递减):
| 优先级 | 方式 | 费用 | 说明 |
|---|---|---|---|
| 🥇 | Claude OAuth | 免费 | 白嫖 Claude Code 订阅额度,零 API 费用! |
| 🥈 | Anthropic API Key | 按量付费 | 直接调用 Claude API |
| 🥉 | OpenAI API Key | 按量付费 | 调用 GPT 系列模型 |
💡 省钱秘籍: 如果你有 Claude Code 订阅($20/月),JobClaw 可以直接复用你的 OAuth token 调用 Claude,不额外花一分钱。Token 过期会自动刷新,完全无感。
这不是简单的 API 调用——Boss直聘没有公开投递 API。JobClaw 用 Playwright 模拟真人浏览器操作,完整复现投递流程:
- 打开岗位页面 → 点击"立即沟通"
- 输入打招呼消息 → 点击发送
- 等待随机延迟 → 下一个
防封策略:
- ⏱️ 随机延迟:每次投递间隔 3-8 秒(可配置),模拟人类节奏
- 📅 每日上限:默认 100 次/天,避免触发风控
- 👻 僵尸岗过滤:跳过 HR 超过 N 天未活跃的岗位(默认 7 天)
- 🔄 防重复投递:JSON 历史记录,已沟通过的自动跳过
- 🤖 验证码检测:遇到验证码自动暂停,发 Telegram 通知你人工处理
打招呼消息模板:
你好!我对贵公司 $title 岗位很感兴趣,$name,方便聊聊吗?
支持变量:$company(公司名)、$title(岗位名)、$name(HR 名字)
jobclaw login— 弹出浏览器,交互式登录,cookie 自动保存到~/.jobclaw/cookies/jobclaw login --check— 检查已保存的 cookie 是否还有效- 优先级:
.env中配置的 cookie > 持久化文件 > 提示你重新 login - 支持 Boss直聘 + LinkedIn
投递完成后自动汇报:
- Telegram Bot — 配置
TELEGRAM_BOT_TOKEN+TELEGRAM_CHAT_ID - Discord Webhook — 配置
DISCORD_WEBHOOK_URL
git clone https://github.com/VPC-byte/jobclaw.git
cd jobclaw
pip install -e .playwright install chromium# 登录 Boss直聘(弹出浏览器,手动扫码/登录)
jobclaw login --platform boss
# 登录 LinkedIn
jobclaw login --platform linkedin
# 一次性登录所有平台
jobclaw login --platform all
# 检查 cookie 是否有效
jobclaw login --platform boss --checkcp .env.example .env编辑 .env,根据需要填写(详见下方配置说明)。
cp profiles/example.yaml profiles/me.yaml编辑 profiles/me.yaml——你的技能、期望薪资、偏好城市等。
# 完整流程:抓取 → 匹配 → 投递 → 通知
jobclaw run --profile profiles/me.yaml --query "Python 工程师"跑起来之后去喝杯咖啡,等 Telegram 通知就行 ☕
# 登录 Boss直聘
jobclaw login --platform boss
# 登录 LinkedIn
jobclaw login --platform linkedin
# 登录所有支持的平台
jobclaw login --platform all
# 设置登录超时(分钟)
jobclaw login --platform boss --timeout 5
# 检查 cookie 有效性(不弹浏览器)
jobclaw login --platform boss --check# 抓取 Boss直聘上的岗位
jobclaw scrape --platform boss --query "后端工程师" --limit 20
# 抓取 LinkedIn
jobclaw scrape --platform linkedin --query "AI Engineer" --limit 10
# 全平台抓取
jobclaw scrape --platform all --query "Python 开发" --limit 30💡 先用
scrape看看抓到的岗位质量,再决定要不要跑完整流程。
# 基础用法
jobclaw run --profile profiles/me.yaml --query "AI 工程师"
# 指定平台 + 限制数量
jobclaw run --platform boss --profile profiles/me.yaml --query "大模型工程师" --limit 20
# 全平台
jobclaw run --platform all --profile profiles/me.yaml --query "后端开发" --limit 50jobclaw validate-profile --profile profiles/me.yaml确认你的 YAML 格式没问题再跑,避免跑到一半报错。
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 核心运行时 | |||
JOBCLAW_ENV |
否 | development |
运行环境 |
JOBCLAW_LOG_LEVEL |
否 | INFO |
日志级别 |
JOBCLAW_HEADLESS |
否 | true |
浏览器是否无头模式(调试时设 false 看操作过程) |
JOBCLAW_MAX_JOBS |
否 | 30 |
单次最大处理岗位数 |
JOBCLAW_REQUEST_TIMEOUT |
否 | 30 |
网络请求超时(秒) |
| LLM 配置 | |||
CLAUDE_CREDENTIALS_PATH |
否 | 自动检测 | Claude OAuth 凭证路径(默认 ~/.claude/.credentials.json) |
CLAUDE_MODEL |
否 | claude-sonnet-4-6 |
Claude OAuth 使用的模型 |
ANTHROPIC_API_KEY |
否 | - | Anthropic API Key |
OPENAI_API_KEY |
否 | - | OpenAI API Key |
JOBCLAW_LLM_MODEL |
否 | gpt-4o-mini |
OpenAI 使用的模型 |
| 平台 Cookie | |||
BOSS_COOKIE |
否 | - | Boss直聘 cookie(优先于持久化文件) |
LINKEDIN_COOKIE |
否 | - | LinkedIn cookie |
| Boss直聘专属 | |||
BOSS_GREETING |
否 | - | 打招呼模板,支持 $company $title $name 变量 |
BOSS_APPLY_DELAY_MIN |
否 | 3.0 |
投递间隔最小秒数 |
BOSS_APPLY_DELAY_MAX |
否 | 8.0 |
投递间隔最大秒数 |
BOSS_DAILY_LIMIT |
否 | 100 |
每日投递上限(1-150) |
BOSS_SKIP_INACTIVE_DAYS |
否 | 7 |
跳过 HR 多少天未活跃的岗位 |
| 通知 | |||
TELEGRAM_BOT_TOKEN |
否 | - | Telegram Bot Token |
TELEGRAM_CHAT_ID |
否 | - | Telegram Chat ID |
DISCORD_WEBHOOK_URL |
否 | - | Discord Webhook URL |
| 网络 | |||
HTTP_PROXY |
否 | - | HTTP 代理 |
HTTPS_PROXY |
否 | - | HTTPS 代理 |
🆓 Claude OAuth 零成本方案: 安装 Claude Code CLI(
npm i -g @anthropic-ai/claude-code)并登录你的订阅账号,JobClaw 会自动检测~/.claude/.credentials.json中的 OAuth token,无需任何 API Key,零额外费用。Token 过期前会自动刷新。
name: "张三"
email: "zhangsan@example.com"
years_experience: 3
summary: >
全栈开发,擅长 AI/ML 应用、云基础设施和 DevOps。
目前在找 AI Agent 相关的岗位。
skills:
- Python
- TypeScript
- LLM/Agent 开发
- Kubernetes
- Docker
- AWS/GCP
desired_roles:
- AI Agent 开发工程师
- 大模型应用工程师
- 后端开发(AI 方向)
preferences:
locations:
- "深圳"
- "remote"
salary_min: 25000
salary_max: 50000
work_schedule: "双休"
industries:
- AI
- Web3
- Cloud
deal_breakers:
- "996"
- "大小周"
- "无社保"+---------------------+
| Profile Loader | 你的简历 / 求职画像 (YAML)
+----------+----------+
|
v
+---------------------+ +----------------------+
| Scraper Layer |----->| Unified Job Objects |
| Boss直聘 / LinkedIn | | (Pydantic 标准化) |
+----------+----------+ +----------+-----------+
| |
v v
+---------------------+ +----------------------+
| LLM Matcher |----->| 匹配分数 + 匹配理由 |
| Claude OAuth/API/ | | (SSE streaming) |
| OpenAI | +----------+-----------+
+----------+----------+ |
| v
+---------------------+ +----------------------+
| Auto Applier |----->| 投递状态 |
| Boss直聘 / LinkedIn | | 已投 / 失败 / 跳过 |
+----------+----------+ +----------+-----------+
| |
+------------+---------------+
v
+--------------------+
| Notification Layer |
| Telegram / Discord |
+--------------------+
jobclaw/
applier/ # 自动投递
base.py # 投递器基类
boss.py # Boss直聘投递(打招呼 + 防封策略)
linkedin.py # LinkedIn Easy Apply
captcha.py # 验证码检测 + 通知
history.py # 投递历史记录(防重复)
auth/ # 登录认证
browser_login.py # Playwright 交互式浏览器登录
cookie_manager.py # Cookie 持久化管理
claude_auth.py # Claude OAuth 凭证读取
token_refresh.py # OAuth token 自动刷新
matcher/ # LLM 匹配引擎
llm_matcher.py # 多 provider 匹配打分
models/ # Claude API 客户端
claude_api.py # Claude API 封装
streaming.py # SSE streaming + retry/backoff
notifier/ # 通知
telegram.py # Telegram Bot 通知
discord.py # Discord Webhook 通知
profile/ # 画像加载
loader.py # YAML 画像解析
scraper/ # 爬虫
base.py # 爬虫基类
boss.py # Boss直聘抓取
linkedin.py # LinkedIn 抓取
cli.py # CLI 入口(Click)
config.py # 配置管理(pydantic-settings)
domain.py # 数据模型(Pydantic)
profiles/
example.yaml # 画像模板
docs/
architecture.md # 架构设计文档
tests/
test_models.py # 测试
| 平台 | 抓取 | 投递 | 说明 |
|---|---|---|---|
| Boss直聘 (zhipin.com) | ✅ | ✅ | Playwright 模拟打招呼 |
| ✅ | ✅ | Easy Apply 自动投递 | |
| 拉勾 (Lagou) | 🔜 | 🔜 | 适配器开发中 |
| 前程无忧 (51Job) | 🔜 | 🔜 | 适配器开发中 |
欢迎 PR!特别欢迎:
- 🔌 新平台适配器(拉勾、前程无忧、猎聘……)
- 🧠 更好的匹配策略(prompt 调优、多维度评分)
- 🔒 稳定性改进(反爬对抗、断点续跑)
- 📢 新通知渠道(微信、飞书、钉钉)
pip install -e .[dev]
pytest -q提 PR 前请跑测试、加类型标注、更新相关文档。
自动化操作求职平台可能受到平台条款和当地法律的限制。请在合法合规、个人授权范围内使用本项目。作者不对滥用行为承担责任。
MIT License — 详见 LICENSE。