猎聘 CLI (liepin-cli)
What this is
- 包名:
@viyzhu/liepin-cli(npm 全局安装后得到liepin命令) - 本质:本地 Node/TypeScript CLI,通过 puppeteer-core 驱动本机已安装的 Chrome/Edge(不自带浏览器内核),模拟招聘者端操作
lpt.liepin.com - 不是托管 API:智能体在本机终端跑
liepin,用户需已登录(或调用liepin login)
Prerequisites
- Node.js ≥ 20
- Chrome / Edge:自动检测 Windows / macOS / Linux 常见安装路径;检测失败时手动设置
CHROME_PATH# macOS export CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" - 凭据:不要把账号 cookie、token 等敏感信息提交到仓库。猎聘通过
liepin login在本地浏览器登录即可
How to run
liepin无参:打印帮助并退出(没有交互式 REPL,所有命令都是一次性执行)- 一次性命令:
liepin <subcommand> ...,执行完即退出 - 全局选项:
--json以结构化 JSON 输出(便于 AI Agent 解析);--help/-h打印帮助;--version/-v打印版本
常用子命令
登录
liepin login
搜索人才
# 基础搜索
liepin search 前端工程师
# 带筛选条件
liepin search 前端工程师 --city 北京 --experience 3-5年 --salary 20-30K
查看简历
# resumeId = search / recommend / talent 返回的 resume_id
liepin resume <resumeId>
推荐 / 人才库
liepin recommend # 平台推荐候选人
liepin talent # 个人人才库
liepin joblist # 当前账号下的职位列表(取 jobId 用于 greet)
主动打招呼(重点)
这一步是
boss-cli不擅长、但猎聘上招聘方每天都做的事:拿到候选人 ID 后一键打招呼。
# usercId = search / recommend / talent 返回的 user_id
liepin greet <usercId> --ejobId <jobId>
--ejobId 强烈建议传,作用是关联到具体职位 + 触发平台对招呼语 / 权限的校验;不传也能跑(走默认路径),但有些职位不传 ejobId 会失败(platform 校验)。LPT 接口走 com.liepin.im.b.chat.to-chat2,使用职位预设招呼语,不支持自定义消息文本——如需个性化文案,先打招呼建立会话,再在 IM 里发。
聊天管理
liepin chatlist # 聊天列表
liepin chatmsg <oppositeImId> # 与某候选人的聊天记录(imId = chatlist 返回的 im_id)
命令参数
下表参数名与代码 src/toolset/*.ts 中的 *Options 字段完全一致;位置参数用 <> 标记,命名参数用 -- 前缀。
| 命令 | 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
search |
query |
位置 | — | 关键词(必填) |
--city |
命名 | — | 城市(如:北京、上海) | |
--experience |
命名 | — | 工作经验(如:3-5年) | |
--salary |
命名 | — | 薪资范围(如:20-30K) | |
--degree |
命名 | — | 学历(如:本科) | |
--industry |
命名 | — | 行业 | |
--page |
命名 | 1 | 页码(0 基,内部会 -1) | |
--limit |
命名 | 20 | 返回条数(最大 40) | |
recommend |
--jobTitle |
命名 | — | 岗位关键字(模糊匹配) |
--jobId |
命名 | — | 直接指定 ejobId | |
--page |
命名 | 1 | 页码 | |
--limit |
命名 | 20 | 返回条数(最大 40) | |
talent |
query |
位置 | — | 关键词(必填) |
--city |
命名 | — | 城市 | |
--experience |
命名 | — | 工作经验 | |
--salary |
命名 | — | 薪资范围 | |
--degree |
命名 | — | 学历 | |
--page |
命名 | 1 | 页码 | |
--limit |
命名 | 20 | 返回条数 | |
resume |
talentId |
位置 | — | 简历 ID(search / recommend / talent 返回的 resume_id,必填;代码字段名为 talentId) |
chatlist |
--limit |
命名 | 30 | 返回条数 |
chatmsg |
oppositeImId |
位置 | — | 对方 imId(chatlist 返回的 im_id,必填) |
--limit |
命名 | 50 | 返回消息数(最大 100) | |
greet |
usercId |
位置 | — | 候选人 user_id(必填;字段名是 usercId 不是 userId) |
--ejobId |
命名 | '' |
关联职位 ID(强烈建议传;不传也能跑,部分职位不传会失败) | |
joblist |
--status |
命名 | '' |
职位状态过滤(10 审核中 / 11 招聘中 / 12 已暂停 / 13 已关闭 / 20 审核未通过) |
--page |
命名 | 1 | 页码 | |
--limit |
命名 | 20 | 返回条数(最大 40) | |
login |
--timeout |
命名 | 120 | 登录等待超时(秒) |
skill |
action |
位置 | install |
目前仅支持 install,传 uninstall 等其他值会报错 |
故障排除
Chrome 未找到(自动检测失败)
export CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
# Windows 常见路径
# set CHROME_PATH="C:\Program Files\Google\Chrome\Application\chrome.exe"
登录失败
- 确认 Chrome 已安装并能正常打开
- 检查网络
- 手动在浏览器登录一次后再用 CLI(Cookie 可能因过期被踢)
Skill 安装路径
# 默认复制到 ~/.claude/skills/liepin-cli/
# 卸载:手动删除该目录
# 自定义安装路径:
export LIEPIN_SKILL_TARGET_DIR="$HOME/my-skills/liepin-cli"
liepin skill install
When not to use this skill
- Boss 直聘的同类操作:走
boss-cli - 不需要登录就能访问的公开页面抓取:直接 web fetch / scrape
- 已下载到本地的简历文件本身的解析 / 抽取:这是简历解析 skill 的事,与本 skill 无关