招聘冷邮件智能生成工具 - 基于候选人简历文本自动生成 Cold Email
Project description
ColdMsg - 招聘冷邮件智能生成工具
基于候选人简历文本,利用 LLM 自动匹配职位并生成专业的招聘 Cold Email。
功能特性
- 智能匹配:AI 根据候选人技术背景自动匹配最合适的职位
- 模板可配:邮件模板各字段均可自定义,支持占位符变量替换
- 多种使用方式:Python 库 / CLI 命令行 / Web 界面
- 职位管理:支持 YAML/JSON 导入导出,Web 端增删改查
- 配置灵活:
.env+config.yaml+ 环境变量三层优先级
安装
pip install cold-msg
或从源码安装:
git clone https://github.com/example/cold-msg.git
cd cold-msg
pip install -e .
快速开始
1. 配置环境变量
cp .env.example .env
编辑 .env 文件,填入 LLM 相关配置:
LLM_MODEL=deepseek-v3.1-terminus
COLDMSG_SENDER_NAME=Michael
COLDMSG_TEAM_NAME=高端招聘团队
2. 准备职位列表
在项目根目录创建 config.yaml:
sender_name: Michael
team_name: 高端招聘团队
company_desc: 国际知名大型科技公司
llm_model: deepseek-v3.1-terminus
jobs:
- job_title: 大模型Agent专家
qualification: Agent,Agentic技术,博士,5年+经验
location: 北上深等
- job_title: 编译器实验室专家
qualification: 编译器技术精通,MLIR,LLVM,GCC,AI编译等
location: 北上深杭等
email_template:
sender_name: Michael
team_name: 高端招聘团队
company_desc: 国际知名大型科技公司
greeting: "您好{FullName},"
intro: "我来自{TeamName},很冒昧的给您发邮件。"
body: "我负责{CompanyDesc}招聘,向您推荐\"{JobTitle}\"的职位。"
location_line: "职位地点: {Location}"
closing: "如果您有兴趣具体了解的话,可以留个电话或者微信~"
sign_off: "祝颂商祺"
signature: "Michael"
使用方式
Python 库
from cold_msg import generate_cold_email
result = generate_cold_email(
resume_text="张三,10年AI研发经验,精通大模型训练、推理优化..."
)
if result.match_job_title:
print(f"推荐职位: {result.recommend_title}")
print(result.email_content)
else:
print("未匹配到合适职位")
CLI 命令行
# 生成冷邮件
cold-msg generate "张三,10年AI研发经验,精通大模型训练、推理优化..."
# 指定模型和输出文件
cold-msg generate "简历文本" --model deepseek-v3.1-terminus -o result.json
# 输出原始 JSON
cold-msg generate "简历文本" --raw
# 启动 Web 界面
cold-msg web --port 6060
# 查看配置
cold-msg config show
# 管理职位
cold-msg jobs list
cold-msg jobs add --title "高级算法工程师" --qual "NLP, LLM, 3年+" --loc "北京"
cold-msg jobs import --file jobs.yaml
cold-msg jobs export --file jobs.json
# 管理邮件模板
cold-msg template show
cold-msg template set greeting "您好{FullName},您好!"
cold-msg template preview
cold-msg template reset
Web 界面
cold-msg web
浏览器访问 http://127.0.0.1:6060,提供三个页面:
| 页面 | 路径 | 功能 |
|---|---|---|
| 生成邮件 | / |
粘贴简历文本,一键生成冷邮件 |
| 职位管理 | /jobs |
增删改查职位,支持 YAML 导入导出 |
| 模板配置 | /config |
自定义邮件模板各字段,实时预览 |
REST API
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/generate |
生成冷邮件 |
| GET | /api/config |
获取当前配置 |
| POST | /api/config |
保存配置 |
| GET | /api/jobs |
获取职位列表 |
| POST | /api/jobs |
更新职位列表 |
| POST | /api/jobs/import-yaml |
YAML 导入职位 |
| GET | /api/email-template |
获取邮件模板 |
| POST | /api/email-template |
更新邮件模板 |
| POST | /api/email-template/preview |
预览模板 |
生成邮件请求示例:
curl -X POST http://127.0.0.1:6060/api/generate \
-H "Content-Type: application/json" \
-d '{"resume_text": "张三,10年AI研发经验,精通大模型训练..."}'
邮件模板占位符
| 占位符 | 含义 | 替换来源 |
|---|---|---|
{FullName} |
候选人全名 | AI 从简历自动识别 |
{TeamName} |
招聘团队名称 | 配置项 team_name |
{CompanyDesc} |
公司描述 | 配置项 company_desc |
{JobTitle} |
推荐职位名称 | AI 根据匹配结果填入 |
{Location} |
职位工作地点 | AI 根据匹配职位填入 |
项目结构
cold_msg/
├── __init__.py # 包入口
├── cli.py # CLI 命令行接口 (typer)
├── core/
│ ├── config.py # 配置管理 (dataclass + yaml + dotenv)
│ ├── prompt.py # Prompt 构建
│ ├── llm.py # LLM 调用 (llmdog)
│ └── generator.py # 核心生成器
└── web/
├── app.py # Flask Web 应用 + REST API
└── templates/ # HTML 模板
├── index.html
├── config.html
└── jobs.html
配置优先级
从高到低:
- 环境变量 —
LLM_MODEL,COLDMSG_SENDER_NAME等 .env文件 — 项目根目录config.yaml— 项目根目录- 内置默认值
开发
# 安装开发依赖
pip install -e ".[dev]"
# 代码检查
ruff check .
# 类型检查
mypy cold_msg
# 运行测试
pytest
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cold_msg-0.1.0.tar.gz
(28.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
cold_msg-0.1.0-py3-none-any.whl
(32.9 kB
view details)
File details
Details for the file cold_msg-0.1.0.tar.gz.
File metadata
- Download URL: cold_msg-0.1.0.tar.gz
- Upload date:
- Size: 28.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a79628e417d62f2fd07f0cb9ab95da4077de3ef84f5907ba65d79b9dad9f872
|
|
| MD5 |
54641f8501b5e919a90e1b211c49a36b
|
|
| BLAKE2b-256 |
c7dbd4d1c967d12d9ef48969c324590160dc40ebbba32a1b5a9dcd9068bae5ff
|
File details
Details for the file cold_msg-0.1.0-py3-none-any.whl.
File metadata
- Download URL: cold_msg-0.1.0-py3-none-any.whl
- Upload date:
- Size: 32.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7074918d4c2387c78c6c898b5495a0c4e0bf80c35adce79521b4d8b2e947d26
|
|
| MD5 |
40fb61d082fc4ae11739f12ba28ef26d
|
|
| BLAKE2b-256 |
b73fa0553a822d2d1c588c0f08e268aee148d12b91a732fb83c4c5b430f1855d
|