agentleFS
Glen-WeiGlen-Wei/headhunter-skills/send-headhunting-email/SKILL.md

send-headhunting-email

Skill18 starsChanged 3 months agoMITView on GitHub

猎头/招聘建联邮件全流程技能。发送侧:用户只需给材料(JD文件/文章标题/GitHub链接/姓名+学校),自动联网搜寻候选人信息,按可配置的邮件风格发送建联邮件。回复侧:候选人回复邮件后,自动做背景调查(ORCID/dblp/Google Scholar 多源交叉)并输出结构化 CV 总结(身份/年龄估算/方向/亮点/联系方式)。零指挥、零提示语。

The file

Files
SKILL.md

Send Headhunting Email (猎头建联邮件)

概述

核心原则:用户给什么,自动处理什么,无需用户指挥步骤。

用户只需扔过来材料,自动完成:搜候选人→找邮箱→读/编JD→生成邮件→发送。全程自动。

仅当搜索结果不唯一时停下来让用户确认。

本 Skill 只包含通用操作逻辑,不含任何个人信息。发件邮箱、顾问称呼、微信、签名均由使用者通过 gmail_config.json 自行配置(见「前置条件」)。

使用时机

任何时候用户给出以下任一材料,立即触发此技能,无需等待明确指令:

  • 文章标题(含期刊名) → 联网搜索一作/通讯作者及邮箱
  • JD 文件(如 .docx)→ 读取并提取 JD 核心内容
  • GitHub 主页链接(如 github.com/xxx)→ 爬取分析研究方向,从 profile 提取邮箱
  • 姓名+学校/公司(如 "张三 北京大学")→ 联网搜索识别候选人,找邮箱
  • 邮箱地址 → 直接使用
  • 以上任意组合 → 合并处理

前置条件

  1. 配置文件 ~/.workbuddy/gmail_config.json,字段如下:
    {
      "email": "your@gmail.com",
      "password": "Gmail 应用专用密码",
      "recruiter_name": "你的顾问称呼(如:某某公司的顾问张三)",
      "wechat": "你的微信号",
      "signature": "你的邮件签名(姓名/职位/公司/联系方式)"
    }
    email / password 必填;recruiter_name / wechat / signature 可选(缺省用中性占位)。
  2. pysocks 已安装(走代理时使用)

JD 策略

有 JD 文件 → 读文件

使用 scripts/read_jd.py 提取核心内容,精简为 3-5 行关键信息嵌入邮件。

无 JD 文件 → 根据文章内容自编

从文章中提取关键词和方向,自动生成匹配的 JD。

关键原则:职位统一用「专家/研究员」,不写具体级别。 避免咖位高的候选人觉得被低估。例如:

  • 不写「助理研究员」「高级工程师」「研究科学家」
  • 统一用「AI Agent 专家/研究员」「具身智能 专家/研究员」等

方向映射参考(仅作方向参考,不列在 JD 中作为职位名):

文章方向建议的 JD 方向
PINN / 物理信息神经网络科学机器学习/Physics-informed AI
世界模型 / 具身智能具身智能/世界模型
AI Agent / LLM AgentAI Agent
电池/能源系统AIAI for Science(电池/能源方向)
计算机视觉 / 机器人具身智能/机器人
NLP / 大模型大模型/LLM

JD 内容需根据候选人具体研究方向和文章贡献定制,让候选人觉得这个 JD 是专门为他量身定做的,而非模板套话。使用具体的术语(如:ReAct、PINN、SOH estimation 等)。

邮件模板(占位符由配置填充)

{称呼}您好:

我是{recruiter_name},看到您在{方向}方向的研究与实践,近期我这边正好有一个非常匹配您方向的岗位机会,想跟您聊聊看。

目前手头{公司类型}正在组建{团队方向}核心团队,具体JD如下:

【{职位方向} 专家/研究员】
方向:{方向关键词}
职责:{职责简述}
要求:{要求简述}
地点:{地点}
形式:{形式}

此外,我这边也在持续关注本领域的前沿方向,无论您是看机会还是单纯想拓宽视野,都非常乐意多交流。

我能提供的:行业机会推荐、职业发展建议、行业趋势洞察、人脉资源链接

方便的话可以加个微信交流,我的微信:{wechat}

————————————————
{signature}

关键表述: "我这边也在持续关注本领域的前沿方向"——自然亲和,不高调。

完整工作流程(全自动)

Step 1: 解析输入 → 搜作者/爬GitHub → 找邮箱

当用户给出文章标题时:

  1. WebSearch 搜索文章标题,找到完整作者列表
  2. 同时找第一作者和第二作者(co-first authors 则全部涉及,按论文标注的 * 号等标识判断)
  3. 分别为每位目标作者搜索个人主页/机构页面获取邮箱
  4. 提取各自背景信息(学校、职称、研究方向等)
  5. 分别发送邮件——每人一封独立邮件,JD 根据各自研究方向做微调

当用户给出 GitHub 主页链接 时:

  1. WebFetch 爬取主页,读取 bio、pinned repos、个人简介
  2. 从 profile 中提取邮箱(通常在 README 或 bio 中)
  3. 根据 pinned repos 和 bio 总结其技术方向和专长
  4. 如邮箱不可见,可到个人网站(GitHub bio 中通常有链接)中继续查找

当用户给出 姓名+学校/公司 时:

  1. WebSearch 搜索该姓名+机构,找到候选人的个人主页/学术页面
  2. 从页面中提取邮箱
  3. 如果找到多个邮箱或候选人不唯一(如同名不同人)→ 暂停,列出选项让用户选择
  4. 提取背景信息(职位、研究方向等)
  5. 根据研究方向草拟匹配的 JD

称呼规则:

  • 优先使用候选人自己写的名字——GitHub/个人主页/LinkedIn上用什么就用什么
  • 除非十分确定中文姓名且无歧义(如论文作者列表明确显示中文名且唯一),才用中文称呼
  • 不确定时宁可保留英文名,避免翻译错误造成尴尬
  • 邮箱为 .cn/.edu.cn 且有名有姓 → 可酌情用中文名
  • 教授/博导 → "X老师" 或 英文章称
  • 研究员/博士 → "X博士" 或 英文章称

Step 2: 准备 JD

  • 有 JD 文件 → scripts/read_jd.py 提取,JD 中的具体级别统一改为「专家/研究员」
  • 无 JD 文件 → 从文章内容自编(见上方 JD 策略表),确保量身定制感

Step 3: 生成并发送邮件

  • 主题:{方向}方向职位机会|交个朋友
  • 正文:模板 + 定制内容
  • 发送:scripts/send_email.py
  • Gmail SMTP(587, STARTTLS, 支持 HTTP 代理)

Step 4: 报告结果

邮件发出后,简要告知(如发多人则列出全部):

  • ✅ 每位收件人邮箱及称呼
  • ✅ 各自的背景简介
  • ✅ 邮件主题
  • ✅ JD 摘要

默认不发问、不确认、不等待——材料到位直接发。 例外: 姓名+学校/公司搜索时,如果找到多个候选人/邮箱不唯一,暂停让用户确认再发送。

候选人回复邮件处理(背景调查 + CV 总结)

触发场景:

  • 邮箱每日检查中发现候选人 ⭐ 人工回复建联邮件
  • 用户询问"这个人背景怎么样 / 多大年龄 / 简单 CV 总结"

流程(全自动,产出结构化总结):

1. 解析回复邮件线索

  • 从发件人姓名 + 邮箱后缀提取信息:
    • 学校域名(mails.tsinghua.edu.cn / *.edu.cn / .ac.cn 等)→ 就读学校
    • 邮箱前缀命名规律:姓名缩写-入学年份(如 cao-ys23 → 曹玉社 + 2023 级)→ 入学年级,用于年龄推算
  • 记录回复正文中的联系方式(微信/电话),标注为跟进重点

2. 联网背景调查(多源交叉)

按顺序查:

  1. WebSearch 中文名+学校 → 找个人主页/院系页面
  2. ORCID(搜索 "姓名拼音" ORCID 或 site:orcid.org 姓名拼音)→ 学历、机构、验证邮箱域、works 列表
  3. dblp(site:dblp.org 姓名拼音)→ 完整论文记录(会议/年份/作者顺序/合作者)
  4. Google Scholar(搜索 姓名拼音 Google Scholar)→ 引用量、H-index
  5. 必要时 arXiv / 个人主页 / GitHub

3. 信息提取要点

  • 身份:在读状态(本科/硕士/博士/博后)、院系、学校
  • 导师/合作体系:看论文高频合作者(如院士/教授团队 → 学术资源强)
  • 研究方向:按论文主题归纳(如扩散模型/多模态融合/人脸生成等)
  • 产出亮点:顶会一作(AAAI/CVPR/ICCV/ECAI/NeurIPS 等)+ 年份
  • 引用量:注意区分 Google Scholar 总引用是否混入同名论文

4. 年龄推断规则(估算,注明依据)

  • 邮箱/学号后缀含入学年份(如 -23 = 2023 级)→ 以此为基准
  • 基准:本科毕业约 22-23 岁;直博入学约 22-23 岁;硕士毕业约 24-25 岁
  • 博士在读:入学年 + 22~24 岁区间推算当前年龄,标注「约 XX-XX 岁(估算)」
  • 宁可给区间 + 依据,不写死精确年龄

5. 排除同名干扰(judgment point)

  • 搜索到明显矛盾信息(如某同名者在读博前多年前已发论文/是资深工程师)→ 标注「疑为重名,已排除」,不并入主 CV
  • 若无法确定是否同一人 → 明确标注,让用户决策

6. 输出格式(结构化表格)

📋 候选人背景速览 — {姓名}({学校/机构})
| 项目 | 详情 |
| 身份 | 院系 + 在读状态 |
| 年龄 | 约 XX-XX 岁(估算,依据:XX级入学) |
| 方向 | 研究方向关键词 |
| 亮点 | 顶会一作/代表作 |
| 引用 | XX 次(Scholar) |
| 联系方式 | 回复中留的微信/电话 ⭐ |
+ 匹配度点评(对照手头 JD 方向)
+ 跟进建议(如:建议尽快加微信)

脚本

scripts/send_email.py

from send_email import send_email
send_email(to_addr, subject, body)

scripts/read_jd.py

python scripts/read_jd.py <filepath>

Credits / 作者

Glen Wei(韦其像) 创建并维护

觉得好用?欢迎去 GitHub 上 ⭐ Star headhunter-skills 支持持续维护。转载或修改本 Skill 时,请保留作者信息。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.