OpenHR — Boss Zhipin automated recruitment agent
All 6 major modules passed acceptance ✅
Project path:~/clawd/projects/openhr/
⚠️ Security warning (must read)
- Boss Zhipin has strict anti-scraping mechanisms, so all operation intervals must be ≥ 5 seconds
- Daily greeting limit is 100 times(Boss official product limit, cannot be bypassed)
- Must pause when a CAPTCHA appears, and continue only after manual handling is completed
- Account ban risk notice: frequent operations and abnormal behavior may trigger risk control and lead to account bans
- Must use a headed browser(has an interface, will pop up windows), cannot use headless
- First-time use requires manual QR code login
- It is recommended to first use
--dry-run for testing, and run it officially after confirming there are no issues
Routing table
| Trigger words |
Submodule |
Execution script |
Description |
| Login Boss / boss login |
boss-login |
scripts/boss_login.py |
QR code login + Cookie persistence |
| Auto greet / openhr greet / boss greet / greet |
boss-greet |
scripts/boss_greet.py |
Traverse and screen + personalized greetings |
| Start chat engine / openhr chat |
chat-engine |
scripts/chat_engine.py |
Monitor replies + LLM intelligent follow-up |
| Resume parsing / openhr resume |
resume-parser |
scripts/resume_parser.py |
Extract resume information |
| Upload to Feishu / openhr feishu |
resume-parser |
scripts/feishu_upload.py |
Write to Feishu multi-dimensional table |
| View candidates / openhr candidates |
boss-greet |
scripts/boss_greet.py --list |
List screened candidates |
| Recruitment monitoring / openhr monitor |
chat-engine |
scripts/chat_engine.py --monitor |
Continuously monitor chat messages |
| View recruitment progress / openhr status |
— |
Directly read status |
Summarize greet_count.json + chat_logs |
| Start recruitment |
boss-greet |
scripts/boss_greet.py |
Full recruitment process entry point |
Module overview
| Module |
Script |
Purpose |
| Login |
scripts/boss_login.py |
QR code login + Cookie persistence |
| Risk control |
scripts/anti_detect.py |
Random intervals + CAPTCHA detection + account ban warning |
| Greeting |
scripts/boss_greet.py |
Automatic screening + personalized greetings |
| Chat |
scripts/chat_engine.py |
Monitor replies + LLM intelligent follow-up |
| Resume |
scripts/resume_parser.py |
Resume information extraction |
| Feishu |
scripts/feishu_upload.py |
Feishu multi-dimensional table writing |
| Knowledge base |
scripts/knowledge_base.py |
Scripts + job requirement management |
Quick start
Step 1: Log in to Boss Zhipin
cd ~/clawd/projects/openhr
python scripts/boss_login.py
- The first run will pop up a browser QR code
- Use the Boss Zhipin APP to scan the QR code and confirm login
- Cookies are automatically persisted to
data/cookies/boss_cookies.json
- Subsequent runs do not require repeated login (if the Cookie expires, you need to scan the QR code again)
Step 2: Dry-run test (strongly recommended)
cd ~/clawd/projects/openhr
python scripts/boss_greet.py --dry-run
- Only screen candidates,do not send any messages
- Preview the greeting scripts, and run formally after confirming there are no issues
- View
data/logs/dry_run.json to learn about the simulation results
Step 3: Formal Greeting
cd ~/clawd/projects/openhr
python scripts/boss_greet.py
- Default daily limit of 100 times (automatically complies with Boss restrictions)
- All operation intervals are randomized between 5-15 seconds (built-in risk control protection)
- Run logs are output in real time, and can be interrupted at any time with Ctrl+C
Step 4: Start the Chat Engine
cd ~/clawd/projects/openhr
python scripts/chat_engine.py
- Monitor new messages, and LLM generates intelligent replies
- Supports multiple chat modes (proactive follow-up, passive response, onboarding follow-up, etc.)
- Chat records are stored in
data/chat_logs/
View recruitment progress
# 直接读取状态文件
cat ~/clawd/projects/openhr/data/greet_count.json
# 或运行 status 命令
cd ~/clawd/projects/openhr
python -c "
import json, os
gc = json.load(open('data/greet_count.json'))
print(f'打招呼总数: {gc.get(\"total\",0)}')
print(f'今日打招呼: {gc.get(\"today\",0)}')
print(f'昨日打招呼: {gc.get(\"yesterday\",0)}')
logs = sorted([f for f in os.listdir('data/chat_logs') if f.endswith('.json')])
print(f'聊天记录数: {len(logs)}')
"
Resume parsing + Feishu sync
# 解析简历(支持 PDF、DOCX、图片)
cd ~/clawd/projects/openhr
python scripts/resume_parser.py <简历文件路径>
# 上传解析结果到飞书多维表格
python scripts/feishu_upload.py <简历文件路径>
Feishu configuration:config/feishu.json(app_id and table_id need to be filled in)
Configuration Files
| File |
Description |
config/anti_detect.json |
Risk control parameters (intervals, CAPTCHA detection rules) |
config/feishu.json |
Feishu multidimensional table configuration (app_id, table_id, fields) |
config/templates.json |
Greeting script templates (8 scenarios) |
config/llm.json |
LLM model configuration (provider, model, api_key) |
data/knowledge/ |
Job requirements, script library, chat modes, feedback templates |
Detailed documentation for submodules
Quick Command Reference
cd ~/clawd/projects/openhr
# 登录
python scripts/boss_login.py
# 打招呼(测试)
python scripts/boss_greet.py --dry-run
# 打招呼(正式)
python scripts/boss_greet.py
# 列出候选人
python scripts/boss_greet.py --list
# 聊天引擎
python scripts/chat_engine.py
# 聊天监控
python scripts/chat_engine.py --monitor
# 简历解析
python scripts/resume_parser.py path/to/resume.pdf
# 飞书上传统一简历
python scripts/feishu_upload.py path/to/resume.pdf