Catalog npm
PACKAGE EXPLORERView in registry

51job-cli

npm

前程无忧自动化 CLI:候选人列表、Hi聊发消息、获取简历、人才搜索、职位管理。基于 puppeteer-core/CDP 驱动本机 Chrome,适合 AI Agent 招聘自动化

51jobai-agentautomationcdpclipuppeteerrecruiting前程无忧
Versions collected2
Direct dependencies6From release 0.1.2
Last observed20 Oct, 20:23 UTC

README

Current package documentation

51job-cli

基于 puppeteer-core / CDP(Chrome DevTools Protocol)驱动本机浏览器的前程无忧(51job)企业招聘端自动化 CLI。 适合被 AI Agent 引擎、shell 脚本或其他无人值守工具直接拉起做管线编排。

核心特性

  • 真实浏览器驱动:直接外接本机的 Chrome 进程,登录态持久化本地,规避无头封号墙。
  • Agent/编排友好:全流程命令独立拆分并带有明确的退出码(0 成功 / 1 业务失败 / 2 可用机制墙);支持 --json 单文件结构化流式吐出。
  • 三段式反检测防御:浏览器启动参数伪装 + DOM 原型链修复 + HTTP CDP 网络层阻断,内置风控反弹和 15s 级强力跳转自恢复。

注:本仓库为原子能力调用 CLI。 你可能在寻找的「定时循环、基于画像初发筛选、简历日报整理」等调度侧工作流位于下游仓库的 skills/recruit-daily-51job/。


快速上手

1. 前置环境

  • Node.js: >= 20.0
  • 浏览器: 本机需已安装 Google Chrome 或 Microsoft Edge(均可自动探测到;自定义指定可用环境变量 CHROME_PATH 控制)。

2. 工具安装

全局直接安装为可执行命令(推荐)

npm install -g 51job-cli

或 Clone 源码编译调试:

git clone https://github.com/se7enfive/51job-cli.git && cd 51job-cli
npm install && npm run build
npm link

3. 配置(环境变量可选)

用户级复制一份预设的环境变量模板即可(可根据机器性能、使用习惯进行调整):

cp .env.example ~/.51job-cli/.env

CLI 命令集全览

共有 18 项主要可用动作模块(可随时键入 51job --help 查看全参数帮助):

基础验证类

命令描述
login打开并聚焦至 51job eHire 登录页面并立刻返回(登录态由后续 wait-login 或首个业务命令检测)。
wait-login [--timeout <秒>]轮询探测登录态;成功退出 0、超时退出 1(默认 300s)。
shutdown关闭常驻浏览器进程(Cookie / 会话资料仍保留在本地 Profile 目录)。
doctor环境自检(Chrome 路径、Node 版本、数据目录、浏览器模式)。只读。
update打印升级指引(实际执行 npm install -g 51job-cli@latest)。
probe开发调试:DOM 选择器校准快照(普通场景无用)。

工具箱(查询寻源流)

命令描述
list [--unread]工作台投递箱全职位聚合候选人流(不分职位;每人 index/姓名/时间/画像/未读)。序号与 chat --index 一致。按职位筛选请用 positions --candidates。
search <关键词>人才搜索池查询,支持十三维筛选(--exp/--age/--gender/--city/--residence/--edu/--school/--status/--industry/--func/--salary/--work-industry/--work-func),--json 输出对象 {keyword,count,hits,...}。--position <职位名>(与关键词互斥)按你发布的职位搜索:自动注入该职位期望工作地/学历筛选并锁定搜索范围(--scope my|org 选视图),显式 --city 等参数覆盖注入值。
recommend [岗位]人才望远镜推荐池(按岗位的系统推荐,不耗点数)。--greet/--inspect 可直接打招呼/查详情。
positions [--candidates <职位名>]职位管理页在招职位目录;--candidates 拉取该职位候选人,--source <auto|delivery|search> 控制来源(auto=按有无投递分派 / delivery=仅投递 / search=人才池搜索扩充),--scope <my|org> 切视图。
jd <名称> [--cat]抓取职位 JD 长文缓存到 ~/.51job-cli/jd/,--cat 直出正文。

候选人来源选择(AI/脚本必须先判断)

已投递 / 已聊天 / 已在人才管理列表 → talent-detail
主动人才搜索池 / search 返回的 hits → inspect
人才望远镜推荐池                 → recommend --inspect

不要混用 inspect 和 talent-detail:两者访问的是不同候选人来源。talent-detail --hi 是免费「回复」(只打开聊天面板);inspect --hi 是搜索池「立即Hi聊」(消耗点数)。两者都不会替你发送普通文字,发送文字需先打开会话再运行 chat + send。

最小调用示例:

# 已投递候选人:查看简历
51job talent-detail 张三 --strict --json

# 搜索池候选人:先搜索,再查看详情
51job search "测绘工程师" --json
51job inspect 张三 --json

# 已知稳定简历 ID:优先使用直链
51job talent-detail --resume-id <简历ID> --json
51job inspect --resume-id <简历ID> --json

执行管线(原子级会话动作)

命令描述
inspect <姓名> [--job <岗位>] [--index <序号>] [--hi]仅用于主动人才搜索池:查看搜索结果中的候选人简历(只读不耗点数)。不要用它查已投递/已聊天候选人;后者用 talent-detail。--hi 执行搜索池「立即Hi聊」(消耗点数,不是普通文字回复)。支持 --resume-id <简历ID> [--job-id <职位ID>] 直链;直链 --hi 必须带 --job-id。
talent-detail <姓名> [--strict] [--hi]仅用于已投递、已聊天或已在人才管理列表中的候选人:从人才管理页查看结构化简历。不要用它查主动搜索池候选人;后者用 inspect。--hi 只点击免费「回复」打开沟通面板,不发送普通文字,也不是搜索池「立即Hi聊」。支持 --resume-id 直链;直链 --hi 需同时带 --job-id。
preview <姓名>在线简历截图存档到 ~/.51job-cli/ocr/(每日次数有限;51JOB_RESUME_OCR=1 才上传云端 OCR,opt-in)。
greet [姓名] [--job <岗位>] [--by-index <序号>] [--dry-run] [--no-confirm]搜索池候选人的 Hi聊一站式命令:搜索筛选 → 定位 → 详情摘要 → 人机确认 → 发出。写操作耗点数;--dry-run 只看不发。已投递/已聊天候选人不要用 greet,请用 talent-detail + chat/send。成功 0 / 点数不足或失败 1。
chat [姓名] [--index <序号>] [--unread] [--strict]打开已投递/聊天候选人的聊天会话(供后续 send/action 使用),不发送消息。不要把 search 结果序号直接当作 chat --index;chat --index 只认 list 输出的序号。
send --text <文案>向当前已打开的聊天会话发送一条普通文字;必须先 chat,一次只发送一遍,不自动重试。
action <操作> [--no-confirm]会话业务动作:resume(索要简历)/unsuitable(不合适)/note(备注)/wechat(换微信)/phone(换电话)/interview(约面试)。写操作默认人机确认。

隐私、数据与安全指引

为保证跨平台多环境与个人信息规范体系防泄露:

  • 数据出境同意事项(OCR Opt-in):preview 对于人选全记录抓取的默认保存格式只提供本机纯位图 PNG 镜像快照(默认保存在 ~/.51job-cli/ocr/)。它不会执行跨网上传云打码,除非用户清晰配置环境变量 51JOB_RESUME_OCR=1 声明 opt-in(采用百度智能云组件)。
  • 清理历史隐私数据:所有的留档缓存快照(如截屏照片、JSON)、调试缓存都统一支持并应规范定期实施:
    51job clean
    
  • 单环境浏览器(端口占用):系统在驱动 Chrome 会以远程 CDP (Websocket)建立端口连接通道。这要求系统只被受控使用(切忌在多进程高危权限的合租服务器不经虚拟化跑该软件,有通过端口跳层控制用户 51job 控制后台账户的操作权限风险)。

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 2

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.2Registry latest1 Sept 20266
0.1.129 Aug 20266

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 20:23 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:339c7a4c5e403169b9d1c0a767c76128409a7ecf30b68361a23e685ebe8be0a1