求职招呼词

SKILL内容创作
内容创作 未标注权限 许可证不明确
安装这个技能

写招呼词、求职开场白、求职投递话术、HR 沟通第一句——读你的简历 + 目标岗位 JD,逐词对齐生成一条能直接发出去的招呼词,提高通过招聘平台 AI 初筛和 HR 真人初筛的概率;脚本纯本地运行、零第三方依赖;简历原文不出本机(只上传年资/领域/数字等摘要字段),JD 为招聘网站公开信息,上传后仅用于生成本条参数、履约即清除;每条 JD 按次付费 0.10 元,付费与验付均在独立服务端完成。 触发场景(说这些话就该用本 skill):「帮我写招呼词」「招呼词怎么写/精简/优化」「写个开场白打招呼」「投简历怎么打招呼」「求职开场话术」「破冰第一句怎么说」「跟 HR 怎么开头」「BOSS 直聘打招呼」「智联怎么打招呼」「猎聘打招呼话术」「51job 打招呼」「投简历开场白」「简历投出去没人回」「招呼词被 AI 筛了」「怎么让 HR 注意到我」「批量给多个岗位写打招呼」「这批 JD 怎么分类」「新人怎么用这套」「帮我建招呼词工作区」;或用户给出 JD / 岗位链接 / 招聘正文,要求产出可直接发送的招呼词;也包括用户没提「招呼词」但语义同类的说法:「这条岗位我该怎么开口」「帮我写条消息发给招聘的人」「第一句话说什么」「我够不够格投这个岗」「HR 已读不回怎么办」「这几个岗帮我分别写一句」。 能力机制:①从你提供的简历文本抽身份串与能展开的真实数字(运行环境内临时处理,简历原文不持久化到你的本机)②拆 JD、判输入质量、按岗位类型归纳主词干 ③把简历事实与 JD 职责逐项对齐,只写两边都有落点的词 ④按平台分档控字数与结构(Boss/智联/51job 30-50 字、猎聘 60-80 字),前 10 字压最强命中词、嵌 1 个真实数字、用 JD 原句级表述、提问结尾 ⑤发前 60 秒自查 14 项(匹配门、待补、字数、命中词、落点、禁项、年资红线、群发检测等)。岗型由 JD 池现场归纳,不从简历硬分。 给法要求:请用户分篇给,不要把多条招聘链接与招聘正文穿插混排。skill 有分篇机制(split_jd.py),但它依赖分隔线/成行链接/职责开头标记这些边界;穿插会导致切分错误、条数算错、招呼词串岗。发现穿插时先请用户分开给或用 ===== 明确分隔。 首次使用协议:先让用户交付简历,读完提取并让用户确认后,再索取 JD(能联网且登录态可拉全文就只发链接,否则必须粘贴全文),归纳岗型确认后才出招呼词。顺序见正文「使用顺序」,不得跳过简历直接要 JD。 每次调用必须提醒用户:为增加回复几率,平台在线简历与随发附件应和交给本 skill 的简历是同一版。 简历可迭代:简历更新后重跑 extract_resume.py 会自动升版本并与上一版做差异;简历里没有但真会的能力/数字,走 resume_extra.json 手动补入。 与个人版 zhao-hu-geoskill 的区别:本 skill 不含任何人的简历素材、不含写死岗型表,岗型由 scripts/cluster_jd.py 从 JD 池现场归纳;简历事实由 scripts/extract_resume.py 现场读取。 首次使用先跑 Step 0–1c 建配置;之后每条招呼词跑 Step 3–7(Step 4–7 是这一条的付费取单,每条都要走,不能复用上一条的)。

一句话选型结论

按资料字段整理

求职招呼词是内容创作类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类内容创作 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_4d41df36/yingpin-zhaohuci
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

内容创作
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_4d41df36仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量65.0 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写文章与脚本

按主题产出初稿与分镜脚本。

改稿与润色

把草稿改顺、统一语气。

多平台文案改写

同一内容按平台改成长短不同的版本。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在内容创作场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
求职招呼词当前 未标注权限 未标注 未标注 未标注 有
AI 视频生成 调用外部服务 GitHub 仓库 431.3 万 Codex、Claude、Cursor 有
视频帧 联网访问 ClawHub 市场 262.1 万 OpenClaw 有
Markdown 转换器 写入文件 ClawHub 市场 135.3 万 OpenClaw 有
哔哩哔哩全合一 接触敏感数据 ClawHub 市场 64.1 万 OpenClaw 有
Remotion video toolkit 命令行 浏览器控制 ClawHub 市场 63.9 万 OpenClaw 有

SKILL.md 全文

65.0 KB
模型实际读到的说明书原文,来自技能仓库

求职招呼词 skill(通用版 v1.1.4)

> 招呼词不是自我介绍,是一个信号包:既要过平台 AI 预筛(关键词/语义打分),又要抢 HR 10–20 字的预览框。
> 本 skill 不预设「你是谁、你会什么」——那部分必须从你的简历和目标 JD 里现算。

Pay Skill 改造说明(接入支付宝 AI 按量付费 · A2M 402)

本 skill 已按 SkillHub「改造与测试 Pay Skill」规范接入付费:服务端负责验付、交付资源与商家履约确认;Skill 负责发起请求、调用官方支付能力、展示结果;后端源码独立部署,不放入 Skill 包。

项 内容
触发词 写招呼词、求职开场白、求职投递话术、HR 沟通第一句、BOSS 直聘/智联/猎聘/51job 打招呼、投简历开场白、破冰第一句、批量给多个岗位写打招呼(完整触发词见下方 description)
价格 ¥0.10 / 条 JD(按条计费:每处理一条 JD 单独付费一次,无跨条复用、无时间窗)
依赖 买家侧 @alipay/agent-payment(alipay-bot)用于付款;已部署的收费接口 https://pay-probe-56932.app.workbuddy.host(生产环境,无凭证请求返回 HTTP 402 + amtPaymentLink + Payment-Needed)
调用流程 ① 每条 JD 先 POST 收费接口(带上这一条 JD)→ 收 402 + Payment-Needed 账单 → ② 调 alipay-bot 生成支付入口、用户扫码付款 → ③ alipay-bot 带 Payment-Proof 重试原请求 → 服务端验付 → ④ 交付这一条的施工单并确认商家履约 → ⑤ 落盘 _施工单_<JD指纹>.md
输出 这一条 JD 的施工单(字数档 / 本条能力词 / 14 项自查 / 缺口提示),只对该条有效,用完即弃,不可跨条复用

付费、验付、履约确认全部在独立服务端完成,Skill 包内不含任何密钥、凭据或账本;scripts/pay_client.py 只负责发起请求并把结果落盘。

版本升级(重要:本 skill 不会自动更新)

SkillHub 不会自动替换你已安装的 skill 版本——新版本上架后,你本地目录里的旧版不会变,只有主动重装才生效。所以:

  • 怎么知道自己是哪一版:每次运行 pay_client.py 首行都会打印 [skill vX.Y.Z];也可单独跑一次版本检查(不付款、不落盘):
    bash python "$SK/pay_client.py" --check-version
    它会连服务端对比「服务端要求的最低版本」,输出 ✓ 版本可用 或 ✗ 需升级(退出码 0=可用 / 1=需升级 / 2=异常)。
  • 怎么升级:skillhub install yingpin-zhaohuci(同一命令重跑即拉最新版)。
  • 脚本检测到你版本落后时,会在付款前打印 ⚠ ... 建议先升级:skillhub install yingpin-zhaohuci;若服务端判定不兼容(HTTP 426),直接中止并给出升级命令,不扣费。
  • 升级后会自动清理旧版正文(重要):1.0.x 时代服务端下发的是整份写词规范(落盘为 _写词规范.md + _meta.json,约 8.6 KB)。那份文件可离线无限复用,留着等于绕过按条计费,所以 1.1.x 每次运行第一步就会检查并删除它(只认这两个确切文件名,不递归、不碰同目录其他文件;不存在则什么都不做)。删除时会打印一行说明。如果你曾把那份文件另存到别处,脚本无从得知,也不去追查。

安装(一次,2 分钟)

把整个 yingpin-zhaohuci 文件夹原样拷到下面这个目录即可,不要只拷 SKILL.md:

系统 放这里
Windows C:\Users\<你的用户名>\.workbuddy\skills\yingpin-zhaohuci\
macOS / Linux ~/.workbuddy/skills/yingpin-zhaohuci/

拷完目录应该长这样(这是最小可用集,缺任何一项都会报错):

yingpin-zhaohuci/
  SKILL.md
  references/   mechanism.md  platform-playbook.md
  scripts/      extract_resume.py  split_jd.py  cluster_jd.py  pay_client.py
  templates/    config-fill-in.md  workspace-init.md  resume-extra.md  jd-intake.md

自包含保证(已逐项核对):

检查项 结论
是否依赖其他 skill ❌ 不依赖。不需要个人版 zhao-hu-geoskill,也不需要扫描/投递 skill
是否要 pip 安装 ❌ 不需要。三个脚本只用 Python 标准库(re/json/os/sys/glob/zipfile/hashlib/argparse/collections/datetime),无第三方依赖
是否需要联网 取本条施工单需联网一次(pay_client.py,每条 JD 一次);其余步骤离线可用,离线时让用户粘贴 JD 全文即可,只有「发链接让 skill 自己拉」这一步才要联网
是否含他人个人信息 ❌ 不含。岗型、白名单、禁项全部由你的简历 + 你的 JD 现场算
是否有硬编码绝对路径 ❌ 无。脚本读写都在你当前工作目录

唯一的环境要求:Python 3.8 及以上(实测 3.13)。Windows / macOS / Linux 通用。

  • 读 .pdf 简历才需要 pip install pypdf;用 .docx / .txt / .md 时零依赖。开放平台云端沙箱通常不允许 pip install,云端使用时请直接粘贴 .txt/.md 或用 .docx,避免上传 .pdf 简历。
  • ⚠️ 本地手动安装时必须放用户级 ~/.workbuddy/skills/,不要放项目级 {项目}/.workbuddy/skills/** ——项目级目录不在 Skill 工具的索引范围里,放了会加载不到。(通过开放平台订阅安装的无需关心此条,平台会自动部署到正确位置。)

付款依赖(用付费部分才需要,装一次)

施工单走支付宝 AI 按量付费(402 协议),付款由买家侧官方支付能力完成,本包不自带、也不含任何密钥。装官方依赖:

npx -y @alipay/agent-payment@latest install

装完应同时具备两样东西,缺一样都付不了款:

组件 用途
alipay-payment-skill 官方买家侧支付 skill,Agent 通过它发起付款、生成支付入口
alipay-bot 官方买家支付 CLI,scripts/pay_client.py 直接调用它

pay_client.py 按以下顺序自动找 alipay-bot:环境变量 ALIPAY_BOT → PATH → ~/.openclaw-autoclaw/alipay-bot-cli/bin/;也可用 --bot <路径> 显式指定。装了但找不到,先 npx -y @alipay/agent-payment@latest install 重装一次。

验证依赖是否可用(不花钱,只查价):

python ~/.workbuddy/skills/yingpin-zhaohuci/scripts/pay_client.py --out . --probe-only

能打印出单次价格就是通了;报「没找到 alipay-bot」按上表重装。

装完自检一条命令(能出参数说明就是装好了):

python ~/.workbuddy/skills/yingpin-zhaohuci/scripts/extract_resume.py --help

调用方式(WorkBuddy 运行环境)

本技能包内不含任何密钥、凭据或账本,服务端代码也不进包。
包内三个脚本(简历提取 / JD 拆分 / 岗型聚类)完全在你本机运行,零第三方依赖;
施工单由独立服务端按条付费下发(每条 JD 0.10 元,无跨条复用、无时间窗),
付费、验付、履约确认都在服务端完成,本包只负责发起请求并把结果落盘(scripts/pay_client.py)。
生成所需的全部输入都通过对话以文本形式提供,不要求读取你本机任何文件。

最简用法(对话内即可完成)

直接把 JD 文本和简历要点粘贴到对话里,按正文 Step 3 + 该条施工单出词,无需任何脚本:
- JD:粘贴岗位描述(或先复制链接全文)
- 简历:粘贴关键经历、可量化的真实数字、明确不会的禁项

可选本地增强(本机有文档时)

若你用 .docx / .txt / .md / .pdf 管理简历或成批 JD,可在你本机跑 scripts/ 下的三个
脚本做结构化提取与聚类(见正文 Step 1–2);提取出的文本同样粘贴进对话使用。脚本零第三方
依赖(仅读 .pdf 时需 pip install pypdf),只在你本机运行,不影响云端出词逻辑。

数据流向与隐私

项目 说明
输入内容 你通过对话提供的 JD 文本、简历要点(身份串 / 真实数字 / 禁项)
用途 仅用于本次生成招呼词,在沙箱内临时处理、不外传至无关第三方,不写到你本机
不收集的 姓名、电话、邮箱、住址等个人身份信息(除非你主动写入对话文本)
服务端依赖 仅「单条写词施工单」按条付费下发;简历原文不上传(只传年资/领域/数字摘要),JD 为招聘网站公开信息,上传后仅用于生成本条参数、履约即清除

可完全不带简历事实:省略简历要点时,skill 会基于你粘贴的 JD 出词,代价是拿不到
「前 10 字最强命中词」与「真实数字」这两项 GEO 加成。

它凭什么能提高 HR 回复率(机制说清楚)

一条招呼词要被人看到,路上有两道关卡。这个 skill 的每一步设计都对着这两道关:

你的简历 ──┐
           ├─→ 逐词对齐 ─→ 招呼词 ─→ ①平台 AI 初筛 ─→ ②HR 真人 10-20 字预览 ─→ 回复
目标 JD  ──┘

第一道关:平台 AI 初筛。 招聘平台(Boss 南北阁/DeepHire、智联通义千问 embedding、
51job 大模型分层)会用 AI 给你的招呼词和岗位做匹配打分。已知口径:关键词匹配约占
60%、学历年限约 25%、简历完整度约 15%(智联白皮书),Boss 与 51job 还会做
二次关键词匹配。所以招呼词里的词干必须和你的简历、JD 里的表述字面一致——
同义改写在语义打分里能兜一点,但字面命中才是主项。

第二道关:HR 的 10–20 字预览框。 HR 日均收海量招呼,约 45% 只读前 20 字;
脉脉口径是前 10 字决定是否被推荐。所以最强的命中词(年资 + 领域)必须压进
前 10 字,后面才是成果和提问。

这套 skill 具体做了五件事:

# 动作 对应哪道关
① 读你的简历,抽出身份串(年资+领域)和能展开的真实数字 两道关的地基——没有落点的话,后面全是注水
② 拆 JD、判输入质量、按岗位类型归纳主词干(从 JD 池现场归纳,不从简历硬分) 决定第 1 点打什么能力
③ 把简历事实与 JD 职责逐项对齐,只写两边都有落点的词 AI 初筛的字面命中率
④ 按平台分档控字数与结构:前 10 字压最强命中词、嵌 1 个真实数字、用 JD 原句级表述、提问结尾 HR 预览框 + 语义打分
⑤ 发前 60 秒自查 14 项:匹配门、待补、字数、命中词、落点、禁项、年资红线、群发检测 不给自己挖坑

关于「真实数字」这一条特别说明: 招呼词里那个数字必须来自你的简历、而且要能
展开讲清怎么来的。模型编一个看着合理的百分比,平台 AI 一追问就穿——穿了就判注水
降权,比不写还糟。所以这个 skill 不允许编数字,简历里没有的会留白让你补。

关于「GEO」: 这里的 GEO 指的是让招呼词被检索与被机器读懂,不是搜索引擎
优化。它有两个层面——① 招呼词里的词干与 JD 同款(不是同义词),让平台的语义匹配
能打高分;② 招呼词本身结构化(前 10 字命中词 / 成果锚点 / 提问钩子),让 AI 与
HR 都能在极短时间内判断「这人做过这个」。

这个 skill 做什么、不做什么(先看清边界)

它唯一的目标是:提高招聘平台上 HR 的回复率。 不是帮你找工作,也不是帮你改简历。

它只做两件事,也只承诺这两件事:

做 靠什么机制
① 过平台 AI 预筛 招呼词里的词干与你的简历字面一致;关键词命中在预筛里占分很高,语义匹配兜底
② 过 HR 的 10–20 字预览框 前 10 字压最强命中词、嵌 1 个能展开的真实数字、用 JD 原句级表述、去关键词堆砌(堆砌反而降权)

它明确不做的事:

不做 说明
不生成简历 不替你写简历、不改简历措辞、不编经历。只读取你给的简历
不判定简历好坏 只做一致性校验:招呼词里要写的词,在你简历里有没有字面落点。这不是简历评分,也不评价你的经历值多少钱
不保证应聘成功 不承诺回复率、面试率、offer。结果取决于岗位匹配、市场节奏、HR 个人判断,这些都不在招呼词的控制范围内
不替你选行业和岗位 投不投由你自己定。skill 只负责把这份 JD 里能写的部分写出来,写不了的地方跟你说清楚
不编造、不硬写 你简历里没有的事实,skill 一律用 *** 留白交给你填,绝不替你猜。JD 与你简历完全无交集(零落点)时不出招呼词,只出拒写说明(见 Step 3b)

> 换个说法:这个 skill 是放大器,不是发动机。它能把「你确实会的东西」用平台更认的方式说出来;它变不出你没有的经历,也救不了跟岗位完全不匹配的简历。

⚠️ 每次调用必说的第一句

> 为增加回复几率,请确认:你在这个平台上填的在线简历、以及随招呼一起发出去的简历附件,跟交给本 skill 的这份简历是同一版。

原因:招呼词里每个词干都靠简历做字面兜底。平台 AI 会把在线简历和招呼词交叉比对,版本不一致就对不上号,判注水降权;HR 点开附件发现和招呼词说的不一样,第一印象直接废掉。

这条每次都要说,不是只在第一次说。 用户换了简历、或在另一个平台投,都要重新提一遍。

使用顺序(第一次用必读 · 顺序不能颠倒)

只需要给两样东西,按这个顺序给:① 简历 → ② JD。 不要反过来,也不要把两样一次全丢过来。

第一次对话
  ↓
① 用户:把简历文本/要点粘贴给 skill(「帮我写招呼词,这是我简历要点」;若有 .docx/.pdf 文档,可本机跑 extract_resume.py 提取后粘贴)
  ↓
② skill:先说「为增加回复几率,在线简历/附件要与给 skill 的这份一致」→ 跑 Step 1 读简历
        → 回一份「提取结果」给用户确认(哪些能力词干 / 哪些可量化数字 / 哪些判不准)
  ↓
③ 用户:确认哪些真会、哪些数字能展开(划掉的进禁项,漏写的补简历或写 resume_extra.json)
  ↓
④ skill:确认完,才向用户要 JD。**先问「你浏览器登录了吗」**:
        登录态可拉全文 → 只要链接;拉不到 → 请用户粘贴全文(见 Step 2 与 templates/jd-intake.md)
  ↓
⑤ 用户:给链接或贴全文(可能是好几条,甚至一坨粘在一个文件里)
  ↓
⑥ skill:跑 Step 1c 拆分 → 报「共识别 N 条(= N 次调用),正文合格 M 条、偏短可写 P 条、需补全文 K 条」→ 用户确认
  ↓
⑦ skill:逐条验正文(≥80 字 + 含职责/要求段,≥150 字为标准档),拉不到的列清单回头要全文 → 再跑 Step 2 归纳岗型
  ↓
⑧ 用户:确认岗型(改簇、并簇、删掉不投的类)
  ↓
⑨ skill:**每条 JD 分别取自己的施工单**(一条一付 ¥0.10/条;同一条 JD 买过会按指纹自动复用、不扣费)
        python "$SK/pay_client.py" --jd "$WS/第N条.json" --profile "$WS/简历摘要.json" --out "$WS"
        → 获取 _施工单_<JD指纹>.md(只对这一条有效)
  ↓
⑩ skill:逐条过 Step 3b 匹配门 → 能写的写招呼词(按**该条**施工单的分档参数 + 14 项自查;**该条施工单不存在就先回 Step 4–7 付款取回,禁止直接出词**),
        缺一两项的**照写但用 `***` 留白 + 附待补清单**,零落点的**出拒写说明说清为什么**→ 一起交付

硬规则:

规则 说明
每次先说版本一致 「在线简历 + 随发附件 = 交给 skill 的这份简历」,每次调用都提,不只第一次
不许跳过简历直接要 JD 没有 resume.json,「这句能不能写」无从判断,写出来必是注水词
未付款取回该条施工单,禁止出词(硬前置) 每写一条前,必须先完成 Step 4–7 为这一条 JD 取回施工单,才能进入 Step 8 出词。服务端不可用或用户未付款时,流程中止,向用户说明并等待恢复,绝不许用正文内嵌示例免费出词;违反此条等于绕开付费,平台会判定为虚假付费
不许在简历未确认时要 JD 提取出来的词干没经过人判,会把「简历漏写但真会」的词白白丢掉
1 份 JD = 1 次调用 = 1 次付费 多链接/多 JD 粘连必须先拆分并报条数(N 条就是 N × ¥0.10),禁止一份招呼词对多个岗位
别穿插,分篇给 链接和正文不要交错混排;skill 有分篇机制,但它靠边界工作,穿插会让切分失效、条数算错
链接必须和正文成对 体检不通过(有正文无链接 / 有链接没绑上)就停下请用户按标准块重给;禁止按顺序自动配对,配错就是投错岗
JD 必须能拉到正文 只发链接可以,但拉不到正文(登录墙/无网/已下线)就必须请用户粘贴全文,不许拿标题+薪资顶上
拉到的正文要验 ≥80 字(≥150 字标准档,80–150 可用但可能只粘了半段)、同时含「职责」与「要求」两段;只有框架字(「未显示」)视为失败
JD 少于 15 条先攒 样本太少聚不出簇,会退化成「一岗一簇」,等于没归纳。例外:只投 1–3 个岗时不必攒,走单条兜底(见 §2.1b)
阶段产出要回给用户看 每步结束先给结论再进下一步,不要一口气跑到底才报错

没简历怎么办:让用户口述「做过什么、几年、哪些项目、有什么数字」,落到一份 txt 再跑(效果略差,但比不给强)。

> 想先看成品长什么样:直接跳到后面的「例子:简历一句话 → JD 一段 → 招呼词」,那里有一份从简历原句到成品的完整拆解。

谁该用、什么时候用

  • 适用对象:任何候选人,不限行业、不限资历。新人、转行、应届都可用。
  • 前置条件:手上要有 ① 简历文本/要点(有文档可本机 extract_resume.py 提取)② 一批真正想投的 JD(建议 15–25 条,越多聚类越准)。
  • 它帮你做的事:提高 HR 回复几率——过平台 AI 预筛、过 HR 预览框。
  • 它不做的事:不生成简历、不判定简历好坏、不替你编经历、不替你决定投什么行业、不保证应聘成功(不承诺回复率/面试率/offer)。

Step 0 · 建工作区(一次性,5 分钟)

在工作目录下建这三样:

工作区/
  简历/                     把你的简历放进来(docx / txt / md / pdf;更新了就换新版)
  jd_pool.jsonl             目标 JD 池,每行一条:{"title":"","company":"","url":"","source":"link|paste","jd_text":""}
  resume_extra.json         可选:简历里没有但真会的能力/数字(模板见 templates/resume-extra.md)
  _招呼词配置.md            从本 skill 的 templates/config-fill-in.md 复制过来,边跑边填

生成 resume.json 和 岗型归纳.md 后,后续每条招呼词都只读这两个文件;resume_versions.json 记录简历每一版的变化。

先定义脚本目录变量,后面所有命令都用 $SK(脚本住在 skill 里,不在工作区里,别在原地找 scripts/):

# Git Bash / macOS / Linux
SK=~/.workbuddy/skills/yingpin-zhaohuci/scripts

# Windows PowerShell 用完整路径代替:
# $SK = "C:\Users\<你的用户名>\.workbuddy\skills\yingpin-zhaohuci\scripts"

Step 1 · 读简历(用户交付简历后立刻跑,不靠猜)

python "$SK"/extract_resume.py 简历/我的简历.docx -o resume.json

产出三样,必须人过一遍:

字段 内容 人工动作
resume_text 简历全文(后续所有「字面命中」判定都以此为准) 检查是否完整,PDF 提取乱码就换 docx;简历更新就重跑,别手改
terms 自动抽的 2–8 字候选词干(含频次) 逐个判:真会 → 留;不会 → 进禁项
numbers 带单位的可量化片段 逐个判:能不能展开讲 3 分钟 → 能才用

> 🔴 这一步是全部工作的地基。terms 不人工过一遍,后面必然写出注水词。
>
> 脚本已自动挡掉两类常见噪音:数字候选里剔除电话/QQ/邮箱/纯日期(1998、2026.05);词干候选里剔除简历章节标题的任意片段(项目描述 → 项目描 / 目描述)和半个英文单词(in、Co)。仍然留下的泛词(如「负责」「独立」)要你自己划掉。

Step 1b · 简历更新 / 手动补充(可反复跑,不必从零开始)

简历不是一次性的。改了一版、或者发现有东西没写进去,都重跑同一条命令,不要手工改 resume.json。

A. 简历更新了(v1 → v2)

python "$SK"/extract_resume.py 简历/我的简历_v2.docx -o resume.json

脚本会自动:

动作 效果
按内容指纹打版本号 v1 → v2 → v3,也可 --label v3 强制指定
与上一版做差异 打印「新增词干 / 未进清单但正文仍在 / 新增数字」,写进 meta.changes
追加版本历史 同目录 resume_versions.json,可回看每一版改了什么

拿到差异后做两件事:
1. 新增词干逐个判(真会 → 进白名单;不会 → 进禁项)
2. 消失词干要问一句「是删了还是改了说法」——强词被无声删掉是最常见的退化

> 提示:脚本会把「正文里仍在、只是没进候选清单」的词单独标出来。候选清单有数量上限(默认 200 个),按词频+词长排序截断,词频刚好卡在边界上的词会被新加入的词挤下去——这不代表简历里没了。判断「能不能写」只看 resume_text 有没有这个词,不看清单。真碰上重要词被挤掉,加 --topn 400 重跑。

B. 简历里没有但确实会(新人最需要)

写一份 resume_extra.json(模板见 templates/resume-extra.md),再带上 --extra 跑:

python "$SK"/extract_resume.py 简历.docx --extra resume_extra.json -o resume.json
能补什么 说明
terms 能力词干,2–8 字。补完会被拼进 resume_text,所以「简历字面命中」校验对它们成立
numbers raw + context,必须能展开讲清怎么来的
text 整段自由补充:项目背景、你负责的部分、结果

手动词条的 source 标为 manual,与简历原文抽出的 cv 区分得开,方便回查哪些是补的。

三条纪律:
- 只补真的,面试第一个问题就会追问这里
- 补完回填正式简历,否则平台 AI 拿在线简历交叉验证会对不上
- 数字展不开就改成规模/周期/角色,别编百分比

> 版本历史文件 resume_versions.json 是给用户看的:换了哪版简历、什么时候、改了哪些词,一条条都有。用户说「我简历更新了」时,先看这个文件确认当前是第几版。
>
> ⚠️ 上一版带过 --extra、这一版忘了带,手动补的词会被报成「消失词干」。这不是简历改了,是参数漏了——带 --extra 重跑一次即可。

Step 1c · 拆分与计数(1 份 JD = 1 次调用 = 1 次付费)

先说一件给用户听的话:别穿插,一条一条给

> 请把每条职位分开给——一条链接一行、或一份 JD 完整一段。不要把几条链接和几段招聘正文穿插混在一起。

本 skill 有分篇机制(下一步的 split_jd.py),但它靠边界工作:分隔线、成行的链接、以及「岗位职责/工作内容/职位描述」这类正文开头标记。一旦穿插,边界就没了:

穿插的样子 ❌ 会发生什么
A 岗标题 + B 岗职责 + C 岗要求 混成一段 切出来的是一条四不像,招呼词必然串岗
链接和正文交错排列(链1、正文1、链2、正文2 挤在一行) 链接被当标题、正文被当补充,条数算错
一条 JD 中间插进另一条的开头 前半段归 A、后半段归 B,两份都残缺,还得重来
几份 JD 全糊成一大段、没有分隔、也没有职责小标题 只能当 1 条处理,等于把 N 次调用压成 1 次,结果全错

正确给法(任选一种):

① 一条一条给:
   https://...  (发完再发下一条)

② 一次性给,但分行分块:
   岗位名 + 链接
   岗位名 + 链接
   (每行一条,行与行之间不要交叉写正文)

③ 一个文件一份,或同一文件里明确分隔:
   JD 正文…… 
   =====
   JD 正文……

标准块:照这个格式给,脚本一次就能配对

岗位名
https://职位详情页链接

岗位职责:……(全文)
任职要求:……
(这块结束)

=====

下一个岗位名
https://...

三条规矩:一块一条;链接放在块头前 3 行内(放在块尾容易被当正文吞掉);块间必须 =====。

拿到 JD 先做输入体检(上游规整,别跳过)

切分是猜边界,配对才是根本。体检三个问题,任一不过就停下来请用户重给,不要硬拆:

体检项 通过的样子 不通过怎么办
① 这批到底有几份? 数得清:链接数 ≈ 正文块数 数不清 → 请用户按「标准块」重给
② 链接和正文配得上吗? 每块自带自己的链接 「链接一堆 + 正文一堆」分开给 → 不许按顺序自动配对,请用户合块
③ 正文是真正文吗? 同一块里既有职责也有要求 只有标题/薪资 → 去拉正文;拉不到就要全文

脚本每次都会打一行 [pair]:

[pair] 输入里链接 3 个 / 已绑定正文 3 个 / 未绑定 0 个;有正文无链接 2 条
  ❌ 配对没通过 → 先别往下跑聚类
  只有链接没正文 3 条 / 只有正文没链接 2 条
  → 两边数量接近,几乎确定是「链接一堆、正文一堆」分开给的

判据:未绑定 > 0 或 有正文无链接 > 0 都算不通过。两边数量接近时,几乎可以确定是「链接一堆、正文一堆」分开给的。

自动化流程里可以加 --strict,配对不通过时脚本直接以退出码 2 结束,避免硬着头皮跑聚类。

> 为什么不自动按顺序配对:链接和正文的顺序不保证一致。配错比不配更危险——A 岗的链接挂到 B 岗的正文上,招呼词写得再好也是投错岗。

然后才是拆分与计数

处理单位:一次调用只处理一份 JD。 下面三种情况都必须先拆开:

  • 一次贴了好几行职位链接(可能还混在一段文字里)
  • 把好几份 JD 复制进同一个 md / txt / docx
  • 一个文件夹里放了一堆 JD 文件
python "$SK"/split_jd.py 一大堆JD.txt
python "$SK"/split_jd.py 链接.txt -o jd_batch.jsonl
python "$SK"/split_jd.py jd合集.docx -o jd_batch.jsonl
python "$SK"/split_jd.py JD目录/

脚本会自动判断怎么切,输出 jd_batch.jsonl(一条一份)+ JD拆分清单.md(给人看的清单):

自动识别的形态 判据
url-list 链接行占非空行多数,且每行去掉链接后只剩少量文字 → 按链接逐条拆
separator 有 ===== / ----- 这类显式分隔线 → 按分隔线拆
jd-marker 一坨文字里出现 ≥2 次「岗位职责/工作内容/职位描述」→ 按正文开头切(标题行会一起带上)
single 以上都不成立 → 当作 1 条

每条会打质量标签,先报条数再动手:

标签 字数 怎么处理
✅ 合格 ≥150 字(≥300 最完整) 直接进池,静默通过、不提示(150–300 字是 Boss 常态,逐条报黄只是噪音)
🟡 偏短 80–150 字 能用(会进聚类),提示可能只粘了半段,建议补全
🔗 待拉取 只有链接没正文 按 Step 2 去拉,拉到再计调用;拉不到请用户粘贴
❌ 太短 / 无正文 <80 字 / 只剩标题 不计调用、聚类会跳过,先补全文

> 清单里若某条注了「疑似笔记/非 JD 正文」,说明它是以 markdown 标题(#)开头的片段——多半是你自己的扫描记录混进池子了,确认后剔掉,别让它参与聚类(否则会聚出一个全是噪音的垃圾簇)。

硬规矩:
1. 收到 JD 先看有没有穿插。发现链接与正文交错、或几条 JD 糊成一段,先请用户分开给或明确分隔,别硬拆——硬拆比返工更费。
2. 拆完必须先向用户报「共识别 N 条,其中正文合格 M 条、偏短可写 P 条、需补全文 K 条」,得到确认再往下走。
3. 不许把多份 JD 当一份处理——一份招呼词只能对应一份 JD,否则必然串岗(拿 A 岗的词投 B 岗),条数也会算错。
4. 同一链接或同一正文会被自动去重,去重条数要报给用户(避免重复算条数)。
5. 用户明确说「我就要一次投这一批」时也要逐条写,不能在一条招呼词里塞多个岗位名。
6. 配对体检不通过就不许往下跑聚类([pair] 显示未绑定 > 0 或有正文无链接)。半配对的池子聚出来的岗型全错,还会把别人的链接写进你的交付清单。

Step 2 · 归纳岗型(简历确认后,向用户索取 JD 再跑)

2.0 先解决「JD 怎么给」

能给链接就给链接,拉不到全文就必须粘贴全文。 判断链:

能联网 + 浏览器有该平台登录态?
  ├─ 有 → 只发链接,skill 自己去拉;拉完必须验
  │        ├─ 正文 ≥80 字且含「职责/要求」两段 → 收下(source:&quot;link&quot;;≥150 字为标准档)
  │        └─ 只拿到登录墙 / 导航栏 / 「未显示」 → 转粘贴(source:&quot;paste&quot;)
  └─ 没有(无网 / 未登录 / 反爬 / 页面已下线)→ 请用户粘贴全文
验收项 通过标准 不通过怎么办
长度 ≥150 字算合格(≥300 最完整,不用特意补);80–150 字算「偏短可用」(可能只粘了半段,建议补全) < 80 字视为框架页,转粘贴
结构 「岗位职责」段 + 「任职要求」段都在 只有一段 → 内容被折叠,转粘贴
噪音 不含「登录后查看 / 已下线 / 未显示」 该条作废,别硬用
岗位名 与用户给的岗位一致 跳到首页/推荐页 → 转粘贴

禁止:拉不到正文时拿标题 + 薪资顶上。那样聚出来的是噪音,等于白跑。

混合场景(一半链接一半粘贴):先把链接批量试拉,失败的列成清单一次要齐,收齐后再跑聚类;不要用半池子先跑一版。

> 细则(粘贴时要包含什么、jd_pool.jsonl 字段、各平台拉取差异)见 templates/jd-intake.md。

2.1 跑聚类

# 用 Step 1c 拆出来的 jd_batch.jsonl(一条一份、已带质量标签);
# 若你本来就是一条一份的干净文件,直接喂 jd_pool.jsonl 也行
python &quot;$SK&quot;/cluster_jd.py --jd jd_batch.jsonl --resume resume.json -o 岗型归纳.md --max-k 8

> 别对已经拆好的 jsonl 重跑拆分。 「干净 jsonl 直接喂 cluster」和「1c 再拆一遍」是二选一:重拆会在 jd_text 头部插一行「标题 + URL」,正文变长、词频虚高,聚类质量反而下降,还会把 source 从 link/file 统一覆盖成 paste。split_jd.py 遇到这种文件默认直接拒绝执行并提示你跳过;确实要重拆必须显式加 --force。

> 正文短于 80 字的记录会被跳过并打印 [skip] 提示——只有标题/半段的内容聚不出有效岗型,先补全文再跑。
>
> 三条已内建的防噪规则,看到结果不用奇怪:年资套话(「五年以上」「相关经验」)不会成为簇名;2 字泛词(服务、系统、管理)和「名词+动作」四字复合词(体系搭建、流程优化)不会单独当种子,否则会把不相干的岗吸进同一簇(曾出现「仓储运营经理」被并进 Java 簇、「用户运营」被并进 AI 产品簇);通用素质套话(团队协作精神、沟通协调能力、工作认真负责,含它们的 n-gram 切片变体如「作认真负责」)一律不进词干——每份 JD 的「任职要求」最后一句都是这些,对岗型零信息量。所以一批 JD 有时会比预期多出一簇——那是分得更准,不是出错。
>
> 不足 8 条 JD 时会打印 [note] 提示样本偏少——提示阈值和下面那条兜底是同一条线,不会出现「整域判不了却不解释」:一是不同领域的岗容易被并成一簇,判「可打」不可信;二是某个领域共享的词干如果只有 2 个字(如「招商」「运营」),不够 3 字就不会当种子,那个域会整块落到「未归类」,这是样本不足、不是脚本出错。攒到 15–25 条再看结论。
>
> 同一份 JD 池、同样的参数跑多次,簇名和判定逐字一致(簇内同频词干按固定次序取,不受运行环境影响),可以直接拿两次报告做前后对比。

原理(顺序不能反):先在 JD 侧无偏聚类(防漏类),再用简历侧过滤(标可打性)。

产出报告里每一簇给你四样东西:主词干、简历覆盖率、代表 JD、可打性判定。

人工要做的三件事:

  1. 确认簇数是否合理。簇里的 JD 若某簇 <2 条,说明该类岗没收够样本,补 JD 或并簇;--max-k 调大能分更细。
  2. 给每簇起个中文岗型名(脚本给的是词干,不是人话),写进 _招呼词配置.md。
  3. 处理「简历未命中」词,逐个二分:
    - 真会但简历漏写 → 补简历(这是最常被搞错的一步,漏写 ≠ 不能写)
    - 真不会 → 进禁项清单

> ⚠️ 报告里的「未归类」簇 = 样本不足(通常只有 1 条),脚本不判可打性,别当成「不可打」直接删掉。要么补几条同类 JD 让它成簇,要么这一条单独走 Step 3 人工判。

2.1b 只有 1 条 / 几条 JD:单条兜底

不是所有人都会一次攒 15 条。手上就 1–3 个真想投的岗,这很正常。这个量级不要硬聚类——一条一簇,等于没归纳。

# 只有 1 条时自动进兜底模式,不用加参数
python &quot;$SK&quot;/cluster_jd.py --jd jd_batch.jsonl --resume resume.json -o 岗型归纳.md

# 有十几条也想逐条看、不做聚类时,显式加 --solo
python &quot;$SK&quot;/cluster_jd.py --jd jd_batch.jsonl --resume resume.json --solo
JD 条数 脚本行为 报告长什么样
1 条 自动进单条兜底 逐条 JD → 词干 + 覆盖率 + 判定
2–7 条 仍聚类;落「未归类」的逐条降级成单条兜底 成簇的照常;落单的标「未归类·单条兜底 xxx」
≥8 条 池模式;「未归类」≤5 条时也逐条降级 同上

单条兜底的判定只能当方向,不能当判决,三条纪律:

  1. 判定一律带后缀。 不会出现裸的「强可打 / 不可打」,只会是「可打·单条兜底(建议人工确认)」「疑似不可打·单条兜底(需人工确认)」。看到「疑似不可打」= 你简历里没有字面对上主词干,不等于这份岗不能投——单条 JD 抽出来的词干含碎片、分母偏大,投前把主词干对着简历过一遍,看到「真会但漏写」的先补简历。
  2. 单条模式下的「不可打」不能直接当 Step 3b 的拒写依据。 拒写要说「零落点」,而单条兜底的覆盖率只能证明「词面没对上」,证明不了「你完全没相关经历」。
  3. 单条兜底不替代 Step 3 的人工判岗型。 它把「我判不了,你自己看」换成了「我给了个方向,你来定」,岗型名、投哪版简历仍由你定。

> 词干为什么干净:单条模式下脚本不用文档频次(一条 JD 里每个词都只出现 1 次,那样会全军覆没),改按「词内出现次数 + 长度」选,并做三道收敛——同源回收(「供应链计划经验」→「供应链计划」)、动作词头剔除(「分析库存周转」)、正向最大匹配切分(把「存周转数」「划并」这类滑窗碎片整批去掉)。

> 🔴 岗型不是从简历分出来的,是从 JD 池归纳出来的。只从简历出发一定会漏类——这是本 skill 最容易犯的错。

Step 3 · 判岗型(每条 JD 归到 Step 2 的某一簇)

判据:JD 岗位职责前 3 条的主词干属于哪一簇。归不进任何一簇(岗型池没覆盖这类岗)→ 别急着判死,先回头看两件事:① 这份 JD 的职责词干在你简历里有没有字面落点——有落点说明是「池子没收够样本」,按「未归类」单独人工判、照样能写;② 一个落点都没有,才是 Step 3b 的 ③ 零落点,出拒写说明(不是沉默放弃)。

> 报告里标了「未归类·单条兜底」的条目,脚本已经给过词干和覆盖率——那是方向,不是结论(纪律见 §2.1b)。岗型归属和「写不写」仍然由人定。

归档后立刻决定两件事:前 10 字打什么词干、投哪一版简历。

Step 3b · 匹配门:先分层,再决定写不写

> 不是"不匹配就拒写"。五条信号分两档处理——只有「彻底没交集」或「要补的空缺超过 2 处」才拒写,其余照写,但要把缺的地方标出来给你补。

写词之前先问一句:这份 JD 和你的简历,有没有真实交集?

# 不匹配的信号 处理档
③ 零落点 JD 职责前 3 条的主词干,在你简历里一个都找不到字面落点(见该条施工单「白名单纪律」) 🔴 硬拒:不出招呼词,只出拒写说明
① 岗型不可打 该 JD 归入的簇,在 Step 2 被判「不可打」(简历覆盖率极低) 🟡 降级出词
② 硬卡不合 JD 写明硬门槛:学历 / 证书 / 语言 / 年限下限 / 必备行业,你明确不具备 🟡 降级出词
④ 只能靠禁项撑场 要写进去的内容,落在你的个人禁项里 🟡 降级出词(禁项不写,留白给你补)
⑤ 年资撑不住 JD 要 N 年某领域,你该领域年资明显不足 🟡 降级出词(年限按真实的写,不虚标)

为什么③才硬拒:零落点意味着这条招呼词的每一句都只能靠编,写出来必然被判注水,还有拉低账号权重、污染推荐画像的连带损失。缺一两项(①②④⑤)则不同——那条岗仍有真实交集可写,只是有几处要你补,直接拒掉等于白扔机会。

裁决规则:只有两种输出格式(A 拒写 / B 出词)

命中 输出什么
③ 零落点(优先级最高:不管是否同时命中 ①②④⑤,一律走这行) 格式 A:出拒写说明,讲清原因,不出招呼词
①②④⑤ 命中任意几条(哪怕全中),且需要的 *** ≤ 2 处 格式 B:一律出招呼词,标题固定写「含 N 处***待补」,N = 这条 JD 里需要你补的事实空缺数
①②④⑤ 命中,但可写内容太少、需要 *** 超过 2 处 格式 A:这条已经到了"填空题"程度,写出来也是空的。原因写「可写内容不足,需你补的事实超过 2 处」
  • 判定顺序:先看 ③,再看 *** 数量,最后才看 ①②④⑤。 顺序倒了会把该拒的岗写出来(③ 命中还硬写 = 全篇注水),或把能写的岗拒掉(①② 命中就放弃 = 白扔机会)。

  • N 可以是 0(没有任何空缺)→ 标题写「无 *** 待补」,差距提醒照给。

  • ①②④⑤ 命中但 N=0 的情况很常见(比如硬卡不合,但你选择不写那项、改打能打的线)——照样出词,照样提示差距,不许因为"不合"就拒写。
  • 禁止第三种输出:不许只丢一句「这条不太合适」;也不许"部分拒写"(写一半说另一半不写了)。

🟡 降级出词:用 *** 标出要你补的地方

原则:空着也不能编。 话术可以由 skill 给,事实必须由你填。

*** = 这里需要你填真实信息,我没有替你编

*** 四条用法:

规则 说明
✅ 可标:事实空缺 具体数字、项目名、客户名、系统/工具名、年限细节——这些只有你本人知道,skill 猜不出来
✅ 可标:JD 提到的非主线经历 比如 JD 写「有冷链经验优先」,而冷链不是你这条招呼词的骨架。骨架(职责前 3 条主词干)仍有落点时,可以把这一项留白给你补
❌ 禁标:主线能力 JD 职责前 3 条的主词干在你简历里零落点 → 按 ③ 硬拒。不许用 *** 掩盖核心能力缺失,那等于把「不匹配」包装成「待补」
一条最多 2 处 超过 2 处说明这份 JD 你确实打不动,直接放弃并说明原因(别把它变成填空题)

*** 未填完的招呼词绝对不能发出去——HR 看到 *** 只会认为你群发模板。

输出格式 A · 硬拒(③ 零落点 / 要补的空缺 >2 处)

⚠️ 这份不写招呼词:&lt;岗位名&gt;(&lt;公司&gt;)
原因:③ 零落点|JD 要求的 &lt;能力X&gt; &lt;能力Y&gt;,在你简历里找不到任何对应经历
   (另一种写法)④ 可写内容不足|这条要补的事实空缺有 &lt;N&gt; 处,写出来等于填空题
依据:JD「&lt;原句&gt;」↔ 你简历「无对应」
下一步可选:① 放弃这条招聘 ② 按 &lt;另一个岗型&gt; 的口径重看 ③ 你确实有这段经历但简历漏写 → 在简历中补充后重跑,同时更新在线简历

输出格式 B · 降级出词(①②④⑤)

✅ 招呼词(Boss · 39 字 · 含 1 处***待补)
5年快消供应链计划,主导过***上线,库存周转从38天压到26天,聊10分钟?

⚠️ 待你补(1 处):
- `***` = 你上线的那套系统叫什么(WMS / ERP / 自研平台),只有你知道具体名字。填完记得把这段补进简历,并同步更新平台在线简历;这套系统你真没上过 → 删掉「主导过***上线」这半句,只留计划与周转成果。

⚠️ 差距提醒:&lt;①/②/④/⑤ 的具体差距&gt;,不影响这条发出,但 HR 可能会问,先想好怎么答。

降级时必须做到:

  • 标题固定写「含 N 处***待补」(N=0 写「无 *** 待补」),让用户一眼知道要不要动手填
  • 差距写清「差在哪、差多少」,不写「你还有提升空间」这类空话
  • 没做过的东西一个字都不写(禁项纪律优先于凑字数)
  • ② 硬卡不合里你没法补的那类(学历、年限下限、必备证书)→ 直接说明「这条大概率过不了初筛,要不要投你自己定」,不替你决定
  • ⑤ 年资不足 → 按真实年限写,宁可数字小也不虚标(虚标是靠平台交叉验证一眼就看穿的)

四条不许

  • 不许硬写:明知不匹配还拼一条出来,平台 AI 交叉验证一比对就判注水,不只是这一条白费,还会拉低账号权重、污染候选人画像。
  • 不许猜着填 ***(对你、对 skill 都一样):猜的数字比空着更致命——HR 一问就穿,而且这就是编造。
  • 不许用「我是个快速学习者」「虽然没做过但很有热情」填坑:这类话在招呼词里等于自认短板,ATS 直接过滤。
  • 不许沉默跳过,也不许只说「不合适」:要么出招呼词 + 待补清单,要么出拒写说明 + 依据,不能只丢一句结论。

Step 4–7 · 按条取回写词施工单(每条 JD 一次付费)

> 🔒 本包不内置任何写词参数。字数分档、结构槽位、能力词、自查项等取值,由服务端针对这一条 JD 单独生成,¥0.10 / 条。

> ⛔ 硬性前置(不可绕过):每写一条招呼词之前,必须先为这一条 JD 取回施工单。没有施工单就不许出词——服务端不可用、或用户尚未付款时,流程必须中止,向用户说明「收费服务暂不可用 / 请先付款」,绝不允许用本文档正文里的字数示例(如「43 字」「30 字」)拼凑出词。违反此条 = 绕开付费 = 平台判定为虚假付费,skill 会被下架。

计费条款(付费前用户有权当场核对,开局先讲清楚)

项 约定
计费模式 per_call(按调用量计费)
计费单元 每成功交付一份「单条 JD 写词施工单」计 1 次(一条 JD = 一次调用 = 一次付费)
单价 0.10 元 / 次(amount_fen: 10;金额以服务端 402 账单为准,账单金额与本文声明一致)
收款方 由支付宝 AI 按量付费(A402)直接结算给创作者本人;SkillHub 仅提供展示,不是收款方
免费额度 无。不提供免费试用次数;但下列情形一律不收费:只询价(--probe-only)、版本不兼容被 426 拦截、未付款即中止、服务端不可用
跨条复用 不允许,技术上也不可能:施工单只含这一条 JD 的取值,换一条 JD 必须重新取
重复调用 同一条 JD 按指纹本地去重,不重复扣费(缓存的是"这一条已买过",不是时间窗);确需重买加 --force,此时会真实再扣 0.10 元
一批 N 条 就是 N 次付费、N 次扫码,总价 N × 0.10 元。开跑前先跟用户确认条数与总价,不得闷头连扫
失败与退款 付款成功但未交付 → 按支付宝渠道规则原路退款(交易后 12 个月内可退);凭证校验不通过不交付、不计费
限频与上限 暂不设调用频率限制与单日上限
数据范围 简历原文不出本机,只上传年资 / 领域 / 数字 / 禁项摘要;JD 为招聘网站公开信息,上传后仅用于生成本条参数,履约完成即从服务端清除

取回方式(每条 JD 跑一次)

先准备两个文件:

  1. 这一条 JD:第N条.json({{&quot;title&quot;,&quot;platform&quot;,&quot;url&quot;,&quot;text&quot;}})或 第N条.md(首行当标题,全文当正文)
  2. 简历摘要(可选,但强烈建议):简历摘要.json
    json {{&quot;years&quot;: 8, &quot;domains&quot;: [&quot;供应链计划&quot;,&quot;库存管理&quot;], &quot;numbers&quot;: [&quot;周转 38→26 天&quot;,&quot;团队 12 人&quot;], &quot;forbidden&quot;: [&quot;金融监管政策体系&quot;]}}
    ⚠️ 只放年资 / 领域 / 数字 / 个人禁项,不要放姓名、手机、公司全称。
python &quot;$SK/pay_client.py&quot; --jd &quot;$WS/第3条.json&quot; --profile &quot;$WS/简历摘要.json&quot; --out &quot;$WS&quot;

只想先看价格、不付款:

python &quot;$SK/pay_client.py&quot; --jd &quot;$WS/第3条.json&quot; --probe-only

pay_client.py 参数:

参数 默认 用途
--jd 必填 这一条的 JD(.json 或 .md/.txt)
--profile 空 简历摘要 .json(年资 / 领域 / 数字 / 禁项)
--out . 施工单落盘目录
--probe-only 关 只查单价,不付款、不扣费
--check-version 关 只对比版本,不付款、不落盘
--force 关 同一条 JD 已买过,仍强制重买
--wait 600 扫码付款最长等待秒数;超时不扣费
--note 空 订单备注,便于对账
--bot 自动查找 指定 alipay-bot 完整路径
--base-url 内置线上地址 服务端地址,一般不填
--timeout 30 单次 HTTP 超时秒数

行为约定(照此执行,别自己发挥):

场景 该怎么做
脚本打印二维码 + 支付链接 把二维码展示给用户扫,然后等脚本自己轮询,不要重跑
用户说「付好了」但脚本没动静 先确认他扫的是本次刚打印的那张码;旧码作废,钱可凭订单号对账
脚本打印「这一条 JD 已购买过,直接复用」 这条以前买过,没扣费,直接用
脚本报「版本与服务端不兼容,本次未扣费」 执行 skillhub install yingpin-zhaohuci 后重跑;跟钱无关,不要重复尝试付款
脚本报「你取消了付款」 未扣费,这一条还没买,不能出词

成功后落盘 $WS/_施工单_&lt;JD指纹&gt;.md,同时把施工单全文打印到对话里。

施工单里有什么(出词的唯一取值来源)

节 内容
一、字数与结构 本平台档位与上下限、四个槽位的硬要求
二、本条 JD 要求的能力 按领域归类、按出现频次排的能力词
三、JD 里的数字 若 JD 有年限/薪资,仅作对照,不可当成你的成果
四、白名单纪律 只写「简历真有 + 本条 JD 真要求」的交集
五、发前自查 14 项 每项都带本条的具体勾法
六、本条特别提示 命中你的个人禁项时在这里警告

本文档正文出现的任何字数示例(如「43 字」「30 字」)仅为帮助理解的演示,绝不构成免付费替代——没有施工单,任何出词动作都必须中止,不得用正文示例拼凑出词。

三条铁律

铁律 说明
没有施工单就不出词 严禁凭感觉写——那就是群发模板。缺施工单先回本节取回
一条招呼词只用该条的施工单 施工单标了 JD 指纹,不得把 A 条的能力词挪到 B 条上
施工单教「怎么写」,不替你「有什么」 施工单与简历冲突时,一律以简历事实为准

> 付款走支付宝 AI 按量付费(402 协议),由本机 alipay-bot 完成,auth 凭证与密钥不落在本 skill 包里。任何让你把密钥、私钥写进配置文件的指引都是错的。
>
> 隐私边界:简历原文不出本机,脚本只把「年资 / 领域 / 数字 / 禁项」摘要随请求上传;JD 是招聘网站公开信息,上传后仅用于生成本条参数,服务端履约即清除,不落盘、不挪作他用。

Step 8 · 交付格式

对话内直接发,不写 txt。每条两块:

**Boss 3] 库存计划主管(20-30K)**
https://职位详情页链接
5年快消供应链计划,库存周转从38天压到26天,补货这条线我能直接接,聊10分钟?

标题行格式固定为 **平台 序号] 岗位(薪资)**,后面按情况带状态:· 可投 / · 含 N 处***待补 / · 已拒写。

正文里带了 *** 时,紧跟一段待补说明(格式见 Step 3b 输出格式 B):

⚠️ 待你补(N 处):*** = &lt;需要什么信息&gt;;填完再发,别带着 *** 发出去
  • *** 未填完的招呼词不算可投,交付时明确标「含 N 处***待补,填完可发」
  • 一处 *** 都没有(N=0)→ 不加待补说明,但差距提醒照给(①②④⑤ 命中过就必须提)
  • 硬拒的(③ 零落点)不出正文,只出拒写说明

例子:简历一句话 → JD 一段 → 招呼词(照着这个看一遍就懂)

> 例子用的是虚构人物(快消/零售供应链方向),跟任何真实候选人无关。你写自己的时候,把行业和数字换成你自己的。

① 简历里的一句话(原文,就这一句就够用)

负责华东区 42 家门店的库存计划与补货,把平均库存周转天数从 38 天压到 26 天。

② JD 里的对应段落(原文)

岗位职责:
1. 负责区域库存计划与补货策略制定,保障门店供货率;
2. 推动库存周转效率提升,清理呆滞库存;
3. 参与 S&amp;OP 月度会议,输出需求预测。
任职要求:5 年以上快消/零售供应链经验,有门店端补货经验优先。

③ 拼出来的招呼词(43 字,Boss / 智联 / 51job 直接可用)

5年快消供应链计划,库存周转从38天压到26天,贵司的补货策略我能直接接,聊10分钟?

逐字拆开看它为什么长这样:

位置 内容 依据哪条规则
前 10 字 5年快消供应链计划(9 字,落在前 10 字内) 年资 + 领域,JD 要求「5 年以上快消/零售」,字面同款
中段 库存周转从38天压到26天 1 个能展开的真实数字(怎么压的、动了哪些环节,都讲得出来)
后段 贵司的补货策略我能直接接 JD 职责 1 的原句级匹配,用「能直接接」带出匹配,不复述「JD 要的」
结尾 聊10分钟? 提问收尾,不用「期待沟通」
全程 无「冷链温控 / 自有品牌开发 / 没用过的工具名」等禁项;无内部筛选理由 白名单纪律

④ 同一份简历,换个岗型就换第 1 点

同一个人的另一段经历(参与过 WMS 上线;如果这段简历里没写,先补进简历再写,否则平台交叉验证对不上),去打另一个方向的 JD:

JD 职责:负责供应链系统实施交付,梳理客户业务流程并落地 WMS。

出来是这样(39 字):

5年快消供应链计划,主导过WMS上线,贵司实施交付这条线我能补位,聊10分钟?

变化点只有一个:第 1 点从「库存周转」换成 JD 的主词干「WMS 上线」,前 10 字的年资 + 领域没动。这就是「词干跟随 JD,不跟随简历」——库存周转 在这份 JD 里一个字都没出现,写上去就是无效词。

⑤ 反面例子(同一个岗位,为什么这样写没人回)

您好,我有5年供应链经验,熟悉库存管理、S&amp;OP、补货策略、WMS,期待与您沟通。
病 后果
前 10 字是「您好,我有5年供应链经验」 最强命中词被推到第 12 字,HR 预览框里看不到
罗列 4 个词干、0 个数字 平台判关键词堆砌降权,HR 觉得是谁都能发的话
「期待与您沟通」 没有提问,不产生回复动机
写了简历里没有的 S&OP 平台 AI 交叉比对在线简历对不上,判注水;面试一问就穿

⑥ 缺一项怎么办:缺经历就不写,缺事实才留 ***

同一份简历,去打一份要求「有冷链温控经验」的 JD(假设这人没做过冷链,但仓储计划是真本事):

JD 职责:负责冷链仓的库存计划与补货,需熟悉温控仓储作业。
任职要求:5 年以上快消供应链,有冷链经验优先。

① 判断:主词干「库存计划 / 补货」在简历里有落点 → 不是零落点,可以写;「冷链」落在个人禁项 → 一个字不编,也不留 ***(留白是给"你有、只是没写"的事实,不是给"你没有"的经历)。

② 出来的东西:N=0,标题写「无 *** 待补」,差距提醒照给。

✅ 招呼词(Boss · 无***待补)
5年快消供应链计划,库存周转从38天压到26天,补货这条线我能直接接,聊10分钟?

⚠️ 差距提醒:④ 冷链经验落在你的个人禁项。JD 写的是「优先」不是硬卡,这条可以投,但 HR 大概率会问「冷链你做过没有」,先想好怎么答(说没有 + 说清计划能力怎么迁移,比含糊过去好)。

③ 缺的是事实、不是经历时才用 ***——比如「你上线的那套系统叫什么」「具体压到多少天」这种只有你知道、简历上又漏写的细节。示例见 Step 3b 的输出格式 B。

④ 关键是别做的事:不能写成「熟悉冷链温控」凑满字数——那是编造,平台交叉验证必穿;也不能整条拒写——库存计划这条线是真能打的,白白扔掉。

Step 9 · 发前自查(清单在该条施工单里)

发前 14 项自查与年资红线已随施工单下发,见该条 $WS/_施工单_&lt;JD指纹&gt;.md 的「发前自查」「白名单纪律」两节。

交付前逐项打勾,一条不过就不发。 该条施工单缺失就先回 Step 4–7 为这一条取回,不要跳步凭感觉发。

Step 10 · 发送与账号纪律

项 建议
日量 15–25 条(铺量会被判营销号降权)
时段 8:30–9:30 / 20:00–24:00;避开 9:30–11:00 群发高峰
响应 HR 消息 5 分钟内回,30 秒内最好
跟进 48–72h 未回补 1 条;连续 3 次已读不回 → 停该 HR
禁区 导流词(微信/加 v)、群发同话术、脚本外挂
养护 被拒不删不拉黑;不点「不感兴趣」;正常投对口岗保持画像干净
问卷 面试前筛选问卷,答案必须和简历一字不差(年限/城市/到岗时间)

新人最常见的九个坑

  1. 从简历出发分岗型 → 必然漏类。永远先 JD 聚类,再简历过滤。
  2. 把「简历没写」当成「不能写」 → 丢掉一半强词。先问自己「我真做过吗」,真做过就在简历里补上(或写 resume_extra.json)后重跑,并同步更新平台在线简历。
  3. 没有数字硬凑一个 → 平台 AI 一追问就穿。宁可换成规模/周期/角色,也不编百分比。
  4. 照抄别人的话术 → 一用就废。这个 skill 能给你的只有机制和骨架,词干必须来自你自己的简历。
  5. 拉不到 JD 正文就凑合用标题 → 聚出来全是噪音簇,岗型全错,后面每条招呼词都跟着废。拉不到就开口要全文。
  6. 把几条链接和正文穿插着喂进来 → 分篇机制靠边界工作,穿插后切分失效、条数算错、招呼词串岗。一条一行,或一份一段用 ===== 隔开。
  7. JD 和简历明显不匹配,还硬凑一条招呼词 → 平台 AI 交叉验证判注水,这一条白费不算,还拉低账号权重、污染推荐画像。缺一两项就写能写的部分,剩下的用 *** 留白给你自己填;只有零落点(一个都对不上)或要补的空缺超过 2 处才该放弃。
  8. 把 *** 里的内容自己猜着填上 → 猜的数字比空着更致命,HR 一问就穿,而且这就是编造。填不了就删掉那半句。
  9. 写不满就缩成短版(「您好,5年供应链,想投贵司这个岗」这种)→ 短版信息量为零,等于群发,Boss 直接降权。最低就是中版 30 字;实在没内容可写,说明这份 JD 该走 Step 3b 的拒写说明,不是缩字。

Resources

  • scripts/extract_resume.py — 简历读取(docx/txt/md/pdf → resume.json,无第三方依赖);支持 --extra 手动补充、自动升版本 + 差异比对
  • scripts/split_jd.py — JD 拆分与计数 + 配对体检:多链接 / 多 JD 粘连 / 目录 → 一条一份 + 质量标签 + 调用条数;每次打印 [pair] 断链体检,--strict 不通过时退出码 2
  • scripts/cluster_jd.py — JD 池岗型归纳(聚类 + 简历可打性过滤 → 岗型归纳.md/.json);--solo 为单条兜底:JD 只有 1 条时自动启用,逐条抽词干 + 判可打性,判定带「·单条兜底」后缀只作方向(见 §2.1b)
  • scripts/pay_client.py — 按条付费客户端:按 402 协议为一条 JD 取回该条施工单并落盘 _施工单_&lt;指纹&gt;.md(纯标准库,需本机装有 alipay-bot;--probe-only 只查价不付款;同一条 JD 按指纹本地去重,不重复扣费)
  • @references/mechanism.md — GEO 信号权重实证 + 四平台 AI 预筛机制(执行时作为技能上下文自动加载)
  • @references/platform-playbook.md — 分平台写法、字数、骨架、发送 SOP 细则(执行时作为技能上下文自动加载)
  • templates/config-fill-in.md — 候选人配置表(岗型 / 白名单 / 禁项 / 数字 / 简历版本)
  • templates/workspace-init.md — 工作区初始化与 JD 池准备
  • templates/resume-extra.md — 手动补充表(简历没有但真会的能力/数字怎么写)
  • templates/jd-intake.md — JD 三种交付方式(链接 / 粘贴全文 / 文件)+ 标准块格式 + 配对体检判读

常见问题

5 问
答案由本站依据条目字段整理
求职招呼词怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_4d41df36/yingpin-zhaohuci。安装方式为未标注。装完刷新技能列表或重开客户端。

求职招呼词支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

求职招呼词权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

求职招呼词收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

求职招呼词用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。