Alaska45l/jobbot
GitHub: Alaska45l/jobbot
一个基于异步架构的求职自动化流水线,通过Dorking、隐蔽爬虫和词法评分系统实现零LLM成本的精准简历投递。
Stars: 0 | Forks: 0
JobBot 是一个异步的潜在客户开发和自动联系流水线,专为定向求职设计。它利用 dorking 技术收集目标,通过隐蔽爬虫提取联系人数据(管理层/HR),并使用带有速率限制的 SMTP 引擎发送根据 Lead Scoring 系统 contextualized 的简历。
##

为什么选择 JobBot?(架构与理念)
JobBot 源于现实需求和对当前招聘生态系统的失望。在通过传统门户(ZonaJobs、Randstad、Bumeran、LinkedIn)发送申请数月且回复率极低之后,我决定改变策略,回归基础:直接将 CV 送到公司门口。但我不想在一个下雨的下午步行去送,而是决定将其自动化。
在 GitHub 上寻找冷邮件自动化或 OSINT 工具时,我发现了一个问题:目前几乎所有的仓库都只是简单的“wrapper”,需要信用卡支付昂贵的生成式 AI API(OpenAI、Claude)费用,仅仅为了读取基本的 HTML。
因此,我在严格的技术理念下构建了 JobBot:
* **确定性优于幻觉**:该 Bot 不使用 LLM 进行分类任务。它采用纯 Python 编写的词法引擎,结合正则表达式和加权词典。它评估严格的规则来决定发送哪份 CV,且不出错。
* **零成本与高效率**:异步架构(asyncio + Playwright)旨在消耗最少的资源。单个 Chromium 进程管理多个上下文,允许编排器在本地运行,无需在 API tokens 上花费一分钱。
* **“精细强力”的 OSINT**:该 Bot 不是盲目发送垃圾邮件,而是利用智能搜索绘制本地企业网络(Mar del Plata),绕过过滤器,抓取人力资源邮箱,并应用速率限制(Jitter)以维护 SMTP 服务器的声誉。
JobBot 是街头投递简历行为的数字化,转化为一个异步流水线。
##

架构与功能
* **Dorking 引擎**:在搜索引擎中自动化高级查询(site:、intext: 操作符),按区域和行业将相关域名植入数据库。
* **隐蔽爬虫 (Playwright)**:并发异步导航,具备指纹规避功能(webdriver 欺骗、User-Agents/Viewports 轮换)。在网络层面阻止媒体加载以优化带宽。
* **Lead Scoring**:本地词法分析器,评估渲染后的 HTML 以分配相关性得分(0-100+),并决定哪种 CV 配置文件(CV_Tech 或 CV_Admin_IT)最适合目标公司。
* **智能调度器**:支持 Dry-Run、队列处理和随机等待时间(jitter)的 SMTP 客户端,以规避垃圾邮件过滤器和账户封锁。
* **持久状态**:基于 SQLite 的 90 天域名冷却系统和活动记录,以防止重复发送。
##

流水线使用
系统通过一个 wrapper 脚本 (start_bot.sh) 操作,该脚本注入环境变量并分三个独立阶段执行 CLI。
### 阶段 1:种子收集 (Dorking)
根据指定行业向本地数据库填充候选 URL。
```
./start_bot.sh --dork --rubros "software house" "clínica" "estudio contable" --limite-dork 30
```
### 阶段 2:提取与评分 (Scraping)
部署并发 headless browsers 访问种子,提取企业邮箱和 LinkedIn 资料并计算公司得分。
```
./start_bot.sh --scrape --concurrencia 5
```
### 阶段 3:SMTP 分发 (Mailing)
按最低得分筛选目标并执行邮件发送。强烈建议先使用 --dry-run 安全地审核消息构建情况。
```
# 终端审计(不打开 SMTP 连接)
./start_bot.sh --mail --dry-run --min-score 30
# 批量 10 个发送的实际执行
./start_bot.sh --mail --min-score 30 --limite 10
```
##

CLI 参考
| 参数 | 类型 | 默认值 | 描述 |
| :--- | :--- | :--- | :--- |
| --dork | Flag | False | 执行搜索模块 (DuckDuckGo)。 |
| --rubros | List | (内部) | 要搜索的行业(例如 "QA testing" "soporte técnico")。 |
| --limite-dork | Int | 10 | 每个行业提取的域名数量。 |
| --scrape | Flag | False | 执行 Playwright 提取模块。 |
| --concurrencia | Int | 3 | 并行 Playwright 线程数。 |
| --mail | Flag | False | 执行 SMTP 引擎。 |
| --min-score | Int | 55 | 数据库中考虑公司合格所需的最低得分。 |
| --limite | Int | 0 | 当前执行中发送的最大邮件数。 |
| --dry-run | Flag | False | 模拟发送并记录生成的输出而不实际发送。 |
##

环境配置
JobBot 需要有效的凭据和环境变量配置才能运行。这些必须在 start\_bot.sh 文件中定义:
```
# SMTP 服务器(推荐:Gmail 配合 App Password)
export SMTP_HOST="smtp.gmail.com"
export SMTP_PORT="587"
export SMTP_USER="tu_correo@gmail.com"
export SMTP_PASS="tu_app_password_de_16_caracteres"
# 发件人 Profile
export SENDER_NAME="Tu Nombre"
export GITHUB_USER="TuUsuarioGitHub"
export LINKEDIN_USER="TuUsuarioLinkedIn"
```
**所需目录结构:**
PDF 文件必须位于项目根目录下的 cvs/ 文件夹中,以便附件引擎检测到它们:
* cvs/CV\_Tech.pdf
* cvs/CV\_Admin\_IT.pdf
##

数据库管理
所有元数据存储在 jobbot.db 中。要重置指标、释放 90 天冷却期或擦除数据库 (Wipe),请使用您首选的 SQL 客户端(例如 sqlite3):
```
-- Limpiar historial de envíos (reinicia el cooldown)
DELETE FROM campanas_envios;
-- Wipe total (Borrar inteligencia recolectada)
DELETE FROM contactos;
DELETE FROM empresas;
```
*免责声明:此工具专为个人使用和优化时间而设计。请始终配置合理的速率限制,并避免向低分目标发送未经请求的邮件。*
标签:BSD, ESC4, OSINT, Playwright, Python, SMTP, SQLite, 反检测, 异步编程, 招聘, 招聘工具, 数据挖掘, 无后门, 求职辅助, 潜在客户开发, 特征检测, 线索评分, 网络调试, 自动化, 营销自动化, 计算机取证, 谷歌Dorking, 逆向工具, 邮件群发, 销售自动化