前言
招聘季,HR每天要在Boss直聘、猎聘等平台筛候选人,再逐一复制微信号、手动发好友申请、等对方通过后再发面试通知——少则几十人,多则上百人,机械操作占去大量精力,真正用于判断候选人的时间反而被压缩。WechatApi 基于 iPad 协议的个人微信 HTTP API,让这些重复动作交给程序完成,HR 只需维护一张候选人表,系统就能自动加好友、自动发通知,大幅释放人力。
一、招聘场景的痛点拆解
1.1 手动操作量有多大
以一家中型互联网公司为例,技术岗位旺季单周可能需要主动接触 200 名候选人:
| 环节 | 传统手动方式 | 耗时(单人次) | 100人合计 |
|---|---|---|---|
| 从招聘平台复制微信号 | 手动复制粘贴 | ~20 秒 | ~33 分钟 |
| 发送好友申请并填写验证语 | 逐条输入 | ~40 秒 | ~67 分钟 |
| 等待通过后发面试邀请 | 手动监控、手动发送 | ~30 秒 | ~50 分钟 |
| 面试前一天提醒 | 再次手动发送 | ~20 秒 | ~33 分钟 |
| 合计 | 约 3 小时 |
这还不算候选人未通过好友申请、需要二次跟进的情况。一旦招聘节奏加快,人工操作便成为瓶颈。
1.2 企业微信为何满足不了这个场景
企业微信有官方 API,但其核心限制决定了它不适合主动触达陌生候选人:外部联系人需要先关注企业公众号或企业认证才能建立联系,而大多数候选人根本不会主动添加你的企业微信。个人微信才是候选人日常沟通的主阵地,加好友的通过率也远高于企业微信。
二、WechatApi 的技术原理
2.1 iPad 协议与普通脚本的区别
市场上常见的微信自动化方案大致分为三类:基于 PC 客户端 Hook(注入 dll)、基于 Web 微信接口(已基本废弃)、基于移动端协议模拟。
WechatApi 采用 iPad 协议,即在服务器端模拟一台 iPad 客户端与微信服务器通信。与 PC Hook 相比,iPad 协议的优势在于:
- 无需在本地安装客户端:所有操作通过 HTTP API 调用,HR 系统可以部署在自己的服务器上,与微信设备完全解耦。
- 多账号统一管理:每个
appId对应一个登录设备(一个微信账号),可以同时管理十几个 HR 专属微信号,不同招聘线分账号操作。 - 稳定性更高:iPad 协议经历了微信多轮版本迭代,相比 Web 协议存活周期更长。
调用范式非常简洁,所有接口统一为 HTTP POST + JSON,请求头携带 VideosApi-token 作为鉴权凭证,业务参数中 appId 标识操作的设备(账号),返回体统一格式 {"ret":200,"msg":"ok","data":{...}}。
pythonimport requests
BASE_URL = "https://api.example-wechatapi.net" # 实际 endpoint 以控制台为准
TOKEN = "your-videos-api-token" # 在 newmanager.wechatapi.net 获取
APP_ID = "your-device-appId" # 登录设备的 appId
headers = {
"VideosApi-token": TOKEN,
"Content-Type": "application/json"
}
def add_friend(wechat_id: str, remark: str, verify_msg: str):
"""向指定微信号发送好友申请"""
payload = {
"appId": APP_ID,
"wxId": wechat_id, # 候选人微信号
"remark": remark, # 备注名(可选)
"verifyMsg": verify_msg # 验证消息
}
resp = requests.post(f"{BASE_URL}/wechat/friend/add", json=payload, headers=headers)
return resp.json()
result = add_friend(
wechat_id="candidate_wxid_example",
remark="张三-后端工程师-2026春招",
verify_msg="您好,我是XX公司HR小李,看到您的简历很感兴趣,想加您微信进一步沟通~"
)
print(result)
# {"ret": 200, "msg": "ok", "data": {"taskId": "xxx"}}
三、自动加候选人好友:完整实操流程
3.1 数据准备阶段
在开始自动化之前,HR 需要准备好一张结构化的候选人列表。推荐以 CSV 或数据库表的形式维护,字段包括:
candidate_id:内部候选人 IDwechat_id:微信号(从招聘平台沟通记录中获取)name:姓名position:岗位interview_time:拟定面试时间(YYYY-MM-DD HH:MM格式)status:当前状态(pending_add/friend_added/notified/reminded)add_time:发起加好友时间note:备注
3.2 批量发送好友申请
好友申请需要控制节奏,不能无限速发送。根据实际运营经验,单账号每天主动添加建议控制在 30~50 人以内,超出可能触发风控。多个 HR 账号可以分摊候选人池。
pythonimport time
import csv
import requests
BASE_URL = "https://api.example-wechatapi.net"
TOKEN = "your-videos-api-token"
headers = {"VideosApi-token": TOKEN, "Content-Type": "application/json"}
def add_friend_batch(candidates: list, app_id: str, daily_limit: int = 40):
"""
批量加好友,控制速率
candidates: [{"wechat_id": ..., "name": ..., "position": ...}, ...]
"""
added = 0
for c in candidates:
if added >= daily_limit:
print(f"已达今日上限 {daily_limit},停止添加")
break
verify_msg = (
f"您好{c['name']},我是XX公司招聘负责人,"
f"看了您投递的{c['position']}岗位简历,"
f"想进一步沟通,期待通过~"
)
payload = {
"appId": app_id,
"wxId": c["wechat_id"],
"remark": f"{c['name']}-{c['position']}-{app_id[:6]}",
"verifyMsg": verify_msg
}
resp = requests.post(f"{BASE_URL}/wechat/friend/add", json=payload, headers=headers)
data = resp.json()
if data.get("ret") == 200:
print(f"[OK] 已发申请:{c['name']}")
added += 1
else:
print(f"[ERR] 发送失败:{c['name']},原因:{data.get('msg')}")
# 两次请求之间随机间隔 8~15 秒,模拟人工节奏
time.sleep(8 + (added % 7))
3.3 监听好友通过事件
发出申请后,系统需要实时感知哪些候选人通过了好友请求,以便触发下一步的面试通知。个人微信 API 支持 Webhook 回调,当账号有新好友通过时,服务端会将事件推送到你配置的回调 URL。
json{
"appId": "your-device-appId",
"event": "friend_verify_pass",
"data": {
"wxId": "candidate_wxid_example",
"nickName": "张三",
"headImgUrl": "https://...",
"verifyTime": "2026-06-13T10:32:00Z"
}
}
你的后端服务接收到此事件后,应当:
- 根据
wxId查询候选人表,更新status为friend_added。 - 若候选人已有排定的面试时间,立即触发面试通知发送。
- 若尚未排定时间,可先发送一条欢迎语,引导候选人确认档期。
四、自动发送面试通知与提醒
4.1 面试邀请通知模板
好友添加成功后,第一条消息非常关键,既要表达诚意,又要清晰传递面试信息。建议设计两种模板:正式邀约型和轻松沟通型,根据岗位层级选择。
pythondef send_interview_invitation(app_id: str, wx_id: str, candidate: dict):
"""发送面试邀请通知"""
msg = (
f"您好 {candidate['name']}!\n\n"
f"感谢您投递 **{candidate['position']}** 岗位~\n"
f"我们诚邀您参加面试:\n\n"
f"📅 时间:{candidate['interview_time']}\n"
f"📍 地点:北京市朝阳区XX大厦B座12层(或视频面试,链接另发)\n"
f"⏱ 预计时长:1~1.5小时\n\n"
f"请确认是否方便,如需调整时间请直接回复,我会尽快重新安排。\n"
f"期待与您相见!"
)
payload = {
"appId": app_id,
"toWxId": wx_id,
"msgType": "text",
"content": msg
}
resp = requests.post(f"{BASE_URL}/wechat/message/send", json=payload, headers=headers)
return resp.json()
4.2 面试前一天自动提醒
面试爽约率是 HR 的一大头疼问题。在面试前一天下午发送提醒,可将爽约率降低 30%~50%。用定时任务(cron)在每天下午 3 点扫描次日有面试的候选人并发送提醒:
bash# 使用 crontab 设置定时任务
# 每天 15:00 执行面试提醒脚本
0 15 * * * /usr/bin/python3 /opt/hr-bot/remind_tomorrow.py >> /var/log/hr-bot/remind.log 2>&1
提醒内容示例:
您好张三,明天(6月14日)上午10:00 您有一场在XX公司的面试,地点:北京朝阳区XX大厦B座12层,预计1~1.5小时。如有变化请及时告知,感谢~
4.3 候选人状态流转全图
整个自动化流程可以用一个简洁的状态机描述:
| 状态 | 含义 | 触发条件 | 下一步动作 |
|---|---|---|---|
pending_add | 待发送好友申请 | 初始录入 | 调用加好友 API |
add_sent | 好友申请已发出 | 加好友 API 返回 200 | 等待 Webhook 回调 |
friend_added | 好友已通过 | 收到 friend_verify_pass 事件 | 发送面试邀请 |
notified | 面试通知已发送 | 消息发送 API 返回 200 | 等待面试前一天 |
reminded | 面试提醒已发送 | 定时任务触发 | 流程结束 |
rejected | 候选人拒绝或失联 | HR 手动标记 | 归档 |
五、多账号管理与风控注意事项
5.1 账号分工建议
在实际招聘场景中,不建议所有操作集中在一个微信号上。推荐按如下维度拆分:
- 按招聘线拆分:技术岗账号、产品岗账号、运营岗账号各自独立,候选人收到消息时会看到对应方向的 HR 名字,更具针对性。
- 按城市拆分:北京、上海、深圳分属不同账号,本地候选人体验更亲切。
- 备用账号池:保留 1~2 个热备账号,主力账号异常时能无缝切换。
WechatApi 的微信 API 对接方案支持在控制台统一管理多个 appId,切换账号只需更换请求体中的 appId 字段,业务逻辑层无需大改。
5.2 频率控制与行为模拟
微信官方对账号的行为模式有一定的风控检测,以下是经过验证的安全操作建议:
- 加好友频率:同一账号单日主动添加不超过 50 人,两次请求之间随机间隔 8~20 秒。
- 消息发送频率:批量发消息时,每条之间间隔至少 3~5 秒,避免等间隔规律触发检测。
- 新账号预热:新登录的
appId前 3 天不要立即高频操作,先正常使用(发几条消息、浏览朋友圈)再开始批量任务。 - 验证语多样化:不要所有候选人收到完全相同的验证消息,在模板中加入姓名、岗位等变量,使每条消息都略有不同。
- 时段选择:主动加好友操作集中在工作日上午 9:00~11:30 和下午 14:00~17:30,避免深夜操作。
5.3 合规提醒
自动化工具是提效手段,但必须以真实招聘需求为前提:
- 只添加确实有意向的候选人,不做无目的的批量爬量。
- 验证消息如实说明来意,不冒充他人或使用欺骗性语言。
- 候选人明确拒绝后立即停止后续消息触达。
- 建议在 HR 系统中保留操作日志,便于内部审计。
六、系统集成与扩展:从工具到完整 HR 机器人
6.1 与 ATS 系统对接
大多数企业已有 ATS(Applicant Tracking System,候选人追踪系统),如 Greenhouse、Taleo 或自研系统。WechatApi 的 HTTP API 天然适合与 ATS 集成:
- ATS 产生新的"邀约"记录 → 触发 Webhook 通知自动化服务 → 调用 WechatApi 加好友/发消息。
- WechatApi 的回调事件(好友通过、候选人回复)反向写入 ATS,更新候选人状态。
- HR 在 ATS 界面操作,微信层面的自动化对 HR 完全透明。
6.2 接入 AI 意图识别
候选人有时会在微信里直接提问:"可以改时间吗""面试是线上还是线下""需要带什么材料"。如果每条消息都需要 HR 人工回复,自动化的价值就会大打折扣。
借助微信机器人开发的 Webhook 消息回调,可以将候选人的消息投递到 NLP 模块(如接入大模型 API)进行意图识别,自动回复常见问题:
- 改期请求 → 自动回复可用时段 + 触发重新排期逻辑。
- 地址询问 → 自动发送公司位置 + 地图小程序卡片。
- 资料询问 → 自动回复所需材料清单。
- 复杂问题 → 标记为"需人工介入",推送通知给 HR。
这样 HR 只需处理真正需要判断的对话,其余 80% 的常规问答由机器人完成。
6.3 数据统计与效果追踪
自动化流程的价值需要用数据来衡量。建议在系统中统计以下指标:
| 指标 | 计算方式 | 参考基准 |
|---|---|---|
| 好友通过率 | 通过人数 / 申请人数 | 健康值 40%~65% |
| 面试到场率 | 实际到场 / 发出邀约 | 健康值 55%~75% |
| 消息打开响应率 | 候选人回复 / 发送消息数 | 健康值 30%~50% |
| 单个 HR 月处理候选人数 | 总操作人数 / HR 人数 | 引入自动化后可提升 3~5 倍 |
七、快速上手步骤汇总
- 注册账号:访问 newmanager.wechatapi.net/dashboard 注册,获取
VideosApi-token。 - 登录设备:在控制台扫码登录一个 HR 专用微信号,获取对应的
appId。 - 配置 Webhook:在控制台设置回调 URL,指向你的服务器,接收好友通过和消息事件。
- 部署自动化脚本:参考本文代码,部署加好友和消息发送逻辑,连接候选人数据库。
- 设置定时任务:配置 cron,每天自动扫描需要发送提醒的候选人。
- 小规模测试:先用 5~10 个真实候选人跑通全流程,确认状态流转正确再全量启用。
小结
招聘 HR 在微信上的大量重复操作——加好友、发邀约、发提醒——完全可以通过 WechatApi 的 个人微信 API 实现自动化。核心逻辑并不复杂:维护一张候选人状态表,调用加好友接口,监听 Webhook 回调,在合适的时机发送消息。难点在于频率控制和多账号管理,本文给出的参数建议已经过实际场景验证。
对于招聘规模较大的团队,进一步把消息回调接入 AI 意图识别、与 ATS 系统打通,可以构建一套完整的智能招聘助手,让 HR 真正把精力放在候选人评估和雇主品牌建设上,而不是被机械的消息操作消耗。
有意落地的团队可参考 WechatApi 官方文档 获取完整 API 列表和参数说明,控制台注册免费试用。
