7ustoo/automatic-munyun-machine

GitHub: 7ustoo/automatic-munyun-machine

本地运行的自动化求职工具,每日抓取并按简历匹配度排序职位,通过Telegram推送结果。

Stars: 0 | Forks: 0

# 自动 Munyun 机器 (AMM) ## 功能说明 - **每日100个职位批量抓取。** 在15个搜索查询(IAM、云安全、网络安全、M365、Linux等)上抓取 hiring.cafe。 - **简历感知排名。** 解析您的简历,按关键词重叠度对每个职位打分,按匹配百分比从高到低排序。 - **过滤噪音。** 过滤掉经理/主管/总监/销售工程师职位、政府安全许可职位、超出您YOE限制的职位、以及您列入黑名单的公司。 - **Telegram优先。** 周一至周五早上7点推送,按需 `/scrape`,以及 `/save N`、`/applied N`、`/reauth`、`/pause` 等命令可通过手机操作。 - **每日早晨可下载的.txt批量文件。** `jobs(YYYY-MM-DD).txt` 作为 Telegram 附件与消息流一起送达——便于搜索、可归档,可随时通过 `/export` 拉取。 - **本地优先。** 所有内容都在您的机器上运行。除了实际的 Telegram 消息,没有任何内容会离开您的电脑。 ## 安装 ### 一键安装(推荐) ``` iwr -useb https://raw.githubusercontent.com/7ustoo/automatic-munyun-machine/main/install.ps1 | iex ``` 这将: 1. 如果缺失则安装 Node.js + Git(通过 winget) 2. 克隆仓库到 `%LOCALAPPDATA%\automatic-munyun-machine\` 3. 安装 npm 依赖项 + Chromium(用于 Playwright) 4. 启动交互式设置向导 ### 手动安装(开发者) ``` git clone https://github.com/7ustoo/automatic-munyun-machine.git cd automatic-munyun-machine npm install npx playwright install chromium node scripts/setup-wizard.mjs ``` ## 设置向导 — 10个步骤,约3分钟 1. **Telegram机器人。** 向导会引导您通过 @BotFather 创建一个机器人,并验证令牌。 2. **Chat ID。** 向您的机器人发送任何消息,向导会自动检测您的 chat ID。 3. **hiring.cafe 登录。** 浏览器打开,您用 Google 登录一次。会话会持久保存。 4. **简历。** 三个选项: - **从磁盘选择**(默认)——打开 Windows 文件选择器对话框。点击您的 PDF / DOCX / MD 简历。 - **稍后通过 Telegram 上传**——跳过向导步骤,在设置完成后向机器人发送 `/resume` 并附上您的简历。 - **手动输入路径**——用于无头安装或特殊环境的备选方案。 5. **自动建议的职位标题。** 向导会读取您的简历并推荐10-12个搜索标题。全部接受、选择部分或保留默认。(如果您稍后上传则跳过——默认会应用直到您在上传后运行 `/jobs suggest`。) 6. **工作年限。** 您接受的职位列表上最大的 YOE。 7. **薪资底线。** 用于排名(高于底线的加分,低于底线的扣分)。 8. **安全许可过滤器。** 开关——过滤或包含政府安全许可职位。 9. **您的城市。** 自动地理编码用于早间天气预报。 10. **计划 + 完成。** 选择时间 + 日期。向导会注册 Windows 任务调度器,启动机器人,并发送最终的 ✅ ping 到您的 Telegram,让您知道设置已端到端完成。 设置完成后,机器人会在后台运行,每个工作日早上投递一批。每项向导答案之后都可以通过 Telegram 命令从您的手机上编辑。 ## Telegram 命令 ### 核心操作 | 命令 | 操作 | |---|---| | `/scrape`、`/daily`、`gm`、`morning` | 立即运行新的批量任务(1-2分钟)。可以随时运行。| | `/save N` | 在 hiring.cafe 上收藏职位 #N | | `/applied N` | 标记已申请(也会记录到 applications.md)| | `/why N` | 解释职位 #N 获得其匹配百分比的原因 | | `/export` | 将今天的批量下载为 `jobs(YYYY-MM-DD).txt` 文件。如果今天的批量尚未运行,则回退到最近的有日期的文件。| ### 设置——从您的手机上编辑(v0.3 新增) | 命令 | 操作 | |---|---| | `/settings` | 在一条消息中显示当前配置 | | `/resume` | 上传新简历(PDF/DOCX/MD);机器人会重新解析技能 | | `/jobs` | 列出当前搜索标题 | | `/jobs add "标题"` | 添加搜索标题 | | `/jobs remove "标题"` | 移除搜索标题 | | `/jobs suggest` | 机器人读取您的简历并推荐新标题 | | `/yoe N` | 设置最大工作年限 | | `/salary N` | 设置薪资底线,单位为 $K(例如 `/salary 120`)| | `/clearance on/off` | 切换政府安全许可过滤器 | | `/forms all|simple|long` | 申请表过滤器——`all`(默认),`simple`(Easy Apply,无需账户),`long`(仅多步骤申请)| | `/skip <公司>` | 不再显示此公司 | | `/unskip <公司>` | 撤销操作 | | `/city <名称>` | 更改天气城市(自动地理编码)| | `/schedule HH:MM` | 更改每日推送时间 | ### 维护 | 命令 | 操作 | |---|---| | `/auth` | 验证 hiring.cafe 登录 | | `/reauth` | 在您的电脑上触发重新登录 | | `/pause` | 停止每日7点推送 | | `/resume-bot` | 重新启用每日7点推送 | | `/forget all` | 清除已看到职位的记忆 | | `/forget last` | 取消记忆最近的批量 | | `/cancel` | 取消多步骤交互 | | `/weather` | 仅天气信息 | | `/version` | 显示运行版本和 GitHub 上的最新版本 | | `/update` | 从 GitHub 拉取最新版本 + 重启机器人 | | `/update skip` | 不通知当前最新版本 | | `/update check` | 重新检查 GitHub 是否有新版本 | | `/update notes` | 显示最新版本的发布说明 | | `/test`、`/ping` | 机器人健康检查 | | `/help` | 显示此列表 | ## 自定义 所有设置都存储在 `config.json`(由向导从 `config.example.json` 创建)中。随时编辑,下次运行时会获取更改: - **搜索查询** — 机器人运行的 hiring.cafe 搜索 - **过滤器** — 要跳过的公司、要过滤的职位标题模式、安全许可开关 - **评分权重** — 标题/证书/技能/合规性的权重 - **天气** — 您城市的经纬度 - **计划** — 时间 + 日期 ## 数据文件 | 文件 | 用途 | |---|---| | `.env` | Telegram 凭据(gitignored)| | `config.json` | 用户配置(gitignored)| | `data/cv-parsed.json` | 解析的简历关键词(gitignored)| | `data/cv.md` | 简历的 Markdown 副本(gitignored)| | `data/seen-jobs.json` | 已展示职位的本地记忆(gitignored)| | `data/applications.md` | 申请日志(gitignored)| | `data/browser-profile/` | Playwright Chromium 配置,包含 hiring.cafe 会话(gitignored)| | `data/auth-state.json` | 上次成功认证的时间戳 | | `data/today-batch-{date}.tsv` | 每天的批量文件,TSV 格式(机器可读)| | `data/jobs({date}).txt` | 每天的批量文件,纯文本格式(人类可读,作为 Telegram 附件发送)| | `data/daily-batch-{date}.log` | 每次运行的日志 | | `data/telegram-bot.log` | 机器人轮询日志 | 所有敏感内容都被 gitignored——您的令牌、会话 cookie、简历、申请历史都保留在本地。 ## 隐私 - **没有上传任何内容。** 唯一的出站流量:hiring.cafe(职位列表)、open-meteo(天气,无需 API 密钥)、Telegram(您的机器人令牌 + chat)。没有其他内容。 - **没有遥测。** AMM 不会收集、发送或聚合任何使用数据。 - **没有第三方 API。** 没有 OpenAI,没有 Anthropic,没有嵌入服务。纯本地关键词评分。 ## 成本 **0美元/月。** Telegram 免费。open-meteo 免费。Playwright 免费。Hiring.cafe 抓取使用您自己的带宽。 ## 架构 ``` ┌─────────────────┐ │ config.json │ ← user-editable │ cv-parsed.json │ └─────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ scripts/daily-batch.mjs │ │ (Playwright + scoring + Telegram) │ └─────────────────────────────────────────┘ ▲ │ │ ▼ ┌──────────┐ ┌────────────────┐ │ Task │ │ Telegram API │ │ Scheduler│ └────────────────┘ │ 7am │ └──────────┘ ┌────────────────┐ │ telegram-bot │ ← polls for /daily, │ .mjs │ /save, /applied, └────────────────┘ /reauth, etc. ▲ │ Your phone ``` 三个独立进程,都读写一个共享文件系统。没有服务器,没有云,没有外部状态。 ## 要求 - Windows 10 / 11(Mac 和 Linux 支持路线图上) - ~500 MB 磁盘空间(主要是 Chromium) - 用于7点推送的常开机(或者按需使用 `/daily`) - Telegram 账户 - hiring.cafe 账户(免费;通过 Google 登录) ## 路线图 - ✅ **v0.2** — 设置向导、一键安装、可配置一切 - ✅ **v0.3** — 18个新机器人命令、10步向导、智能简历解析、`/forms` 过滤器、`/jobs suggest`、`/why N` - ✅ **v0.4** — 可下载的 `.txt` 批量附件 + `/export` 命令 - ✅ **v0.4.1** — 原生 Windows 文件选择器用于简历步骤、Telegram 唯一设置路径、修复 PowerShell PATH 崩溃、libuv 断言修复、瞬时中断弹性 - ✅ **v0.5**(当前)— `/update` 命令、`/version` 命令、启动时 + 每日的更新通知、版本感知的机器人启动 ping - **v0.6** — Mac + Linux 支持、额外职位来源的插件架构(RemoteOK、YC、Greenhouse、Lever、Ashby) - **v1.0** — Tauri 桌面 GUI,带仪表板、历史日历、申请 Kanban - **v2.0** — 基于嵌入的排名 + 可选的 LLM 重排(自备 Anthropic 密钥)、可选的薪资数据库、浏览器扩展 ## 许可证 MIT——您可以随意使用。 ## 贡献 欢迎提交拉取请求。可能需要的贡献: - `setup-tasks.ps1`、`start-bot.cmd` 等的 Mac/Linux 等效版本 - `daily-batch.mjs` 中新 ATS 提供商的选择器 - `scripts/cv-keywords.json` 中的额外关键词领域(数据工程、软件、设计) ## 故障排除 ### 向导崩溃,显示 `spawn powershell ENOENT` 您的 `PATH` 缺少 `C:\Windows\System32`。已在 v0.4.1 中修复,但如果您在旧版本安装上或仍然发生问题:请直接使用绝对路径运行 `setup-tasks.ps1`。在 `cmd.exe` 中: ``` C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "%LOCALAPPDATA%\automatic-munyun-machine\scripts\setup-tasks.ps1" ``` 然后手动启动机器人: ``` schtasks /run /tn munyun-bot ``` ### 机器人在 Telegram 上不回复 1. 验证它正在运行:`schtasks /query /tn munyun-bot`(查看 State: Running)。 2. 重启:`schtasks /run /tn munyun-bot`。 3. 检查日志:`%LOCALAPPDATA%\automatic-munyun-machine\data\telegram-bot.log`(最后几行会告诉您什么崩溃了)。 4. 验证您的令牌 + chat ID 在 `.env` 中正确——尝试通过以下方式发送手动消息: node scripts\telegram-send.mjs "test" ### `/scrape` 显示"会话过期" 从您的手机上运行 `/reauth`——机器人会在您的笔记本电脑上弹出 Chromium 窗口,您用 Google 登录,关闭窗口。会话会自动保存。 ### 抓取0个职位或 DOM 相关崩溃 hiring.cafe 可能更改了他们的 HTML 结构。检查 `data/daily-batch-{date}.log` 获取具体错误,并在带上日志的情况下开 issue。 ### 批量中的职位不对 从您的手机编辑您的查询 / 过滤器——`/jobs add "标题"`、`/jobs remove "标题"`、`/skip <公司>`、`/yoe N`、`/salary N`、`/clearance on/off`。或直接编辑 `config.json` 并重新运行 `/scrape`。 ### 想从头开始 1. 停止并注销机器人: Get-Process node | Where-Object { (Get-CimInstance Win32_Process -Filter "ProcessId=$($_.Id)").CommandLine -match 'telegram-bot' } | Stop-Process -Force Unregister-ScheduledTask -TaskName 'munyun-bot' -Confirm:$false Unregister-ScheduledTask -TaskName 'munyun-daily-batch' -Confirm:$false 2. 删除安装目录: Remove-Item -Recurse -Force "$env:LOCALAPPDATA\automatic-munyun-machine" 3. 重新运行一键安装程序。 ### 简历步骤中文件选择器不打开 您要么使用的是没有 `System.Windows.Forms` 的精简 Windows 安装,要么是从无 GUI 会话运行(例如 SSH)。向导会自动回退到输入路径——粘贴您的简历的完整路径。或者选择选项2("稍后通过 Telegram 上传")并在设置完成后向机器人发送 `/resume`。
标签:AI合规, Chromium, DOCX解析, Git克隆, GNU通用公共许可证, IP 地址批量处理, MITM代理, Node.js, PDF解析, Playwright, PowerShell安装, Telegram机器人, Windows工具, 会话管理, 关键词匹配, 批量处理, 招聘网站, 效率工具, 数字取证, 文件解析, 本地优先, 每日任务, 求职工具, 求职自动化, 浏览器自动化, 特征检测, 简历匹配, 网络安全审计, 职位爬虫, 自动化脚本, 自定义脚本