Back to skills
SKILL.md
Job Description Writer
ASecurity招聘 JD——把岗位需求写成职责清楚、门槛分层、没有歧视性表述的招聘启事。当用户说「帮我写个 JD」「任职要求怎么写」「招聘文案怎么写」「JD 里薪资怎么写」时使用。
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added October 13, 2026
Security analysis
100/100Pro scans all 5 files and shows the line behind each finding
npx -y skills add po-et/workbuddy-skills --skill job-description-writer --agent claude-codeAre you the author of Job Description Writer?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/po-et-job-description-writer)---
name: job-description-writer
description: "招聘 JD——把岗位需求写成职责清楚、门槛分层、没有歧视性表述的招聘启事。当用户说「帮我写个 JD」「任职要求怎么写」「招聘文案怎么写」「JD 里薪资怎么写」时使用。"
author: Captain
version: 0.1.1
display_name: "招聘 JD"
display_name_en: "Job Description Writer"
description_zh: "写招聘 JD:分清岗位职责与任职要求、必要条件与加分项,用「为什么值得来、你要做什么、你能得到什么」三段结构吸引候选人,写清薪资区间与结构,排查年龄、性别、婚育等歧视性表述;附技术岗、运营岗、实习生三份模板。只做写作与风险提示,不做法律合规审查。"
description_en: "Write job descriptions that separate responsibilities from requirements and must-haves from nice-to-haves, state pay clearly, avoid discriminatory wording and follow a three-part structure, with templates for engineering, operations and intern roles; no legal compliance review."
tags:
- "招聘 JD"
- "JD"
- "招聘启事"
- "职位描述"
- "岗位职责"
- "任职要求"
- "招聘文案"
- "job description"
- "hiring"
examples_zh:
- "帮我写个 JD,招一个三年左右经验的 Java 后端"
- "任职要求怎么写,老板列了十二条,条条都说是必须"
- "暑期实习生的招聘文案怎么写才有人投"
examples_en:
- "Write a JD for a Java backend engineer with about three years of experience"
- "My boss listed twelve requirements and says every one is a must. How do I write the requirements section?"
- "How do I write a summer internship posting that people will actually apply to?"
---
# 招聘 JD
定位一句话:**JD 既是写给候选人的广告,也是写给面试官的评分表:职责说「来了做什么」,要求说「凭什么能做」,两者混写,两头都失效。**
## 何时使用
用户这样说时用本技能:
- 「帮我写个 JD,招一个三年左右经验的 Java 后端」——新开岗位要对外发布
- 「用人部门口述了一段需求,帮我改成能对外发的招聘启事」
- 「任职要求老板列了十二条,条条都说是必须」——要分出必要条件与加分项
- 「这个 JD 挂了一个月没人投」「投来的人都不对口」——旧 JD 诊断与重写
- 「暑期实习生、校招启事怎么写才有人投」
- 「JD 里薪资怎么写,能不能写面议」
不适用(遇到时这样处理):
- 问试用期、竞业限制、用工形式、合同条款合不合法 → 不下结论,请用户找 HR 或劳动法律师;可以帮忙把要问的问题列出来。
- 要出面试题、筛简历、评价某个候选人 → 不在本技能范围;技术岗面试可转「技术面试」(tech-interview-expert)。本技能只给「必要条件 → 面试问题」的对应表。
- 要定薪资、定职级 → 由 HR 与用人部门决定,本技能只把已批准的方案写清楚。
本技能只负责写作与风险提示,不替代 HR 或法务的合规审查。
## 先判断什么:动笔前问清五件事
1. **为什么现在招**:新业务、补离职还是扩编?这决定开头的「钩子」写什么。
2. **入职半年后怎样算招对了**:写出两三个看得见的产出,职责就从这里倒推。
3. **真正的淘汰条件**:缺了就一定干不了的能力,通常三到五条。
4. **薪资区间与结构批了没有**:没批就先留空,不要用「面议」糊过去。
5. **工作条件**:汇报对象、团队规模、地点、坐班或远程、出差比例、要不要值班。
第 2、3 条答不上来先别写,否则写出来的一定是随处可见的通用 JD,吸引不到对的人。用户一次答不全时,先问第 1–3 条,其余按「信息不全或出错时」的办法占位。
## 写作步骤:职责、要求、必要与加分
- **岗位名称用候选人会搜的词**:写「后端开发工程师(Java)」,不写「系统研发专员」;方向、职级放括号里,不加「急聘」「高薪」这类字眼。
- **职责 = 动词 + 对象 + 结果或标准**,四到七条,按时间占比排序,第一条是最主要的工作。反例「负责后端开发工作」,改为「负责订单与支付服务的设计、开发和线上维护,保障大促期间核心接口稳定」。
- **要求 = 能力或经历的证据**:做过什么、做到什么程度。「抗压能力强、积极主动、有责任心」没人能验证,改成「有线上故障排查与值班经验」。
- **必要条件与加分项的检验法**:问用人经理「缺这一条、其他都很强的人,你给不给面试?」给,就是加分项;不给,才是必要条件。必要条件不超过五条,加分项不超过四条并注明「非必须」。必要条件列得越多,越会把合适但不完全匹配的人挡在门外。
- **年限与学历**:年限写大致区间并说明要它做什么(「三年左右后端经验,能独立负责一个服务」);学历只在岗位确有需要(资质、准入)时列为必要条件,否则写「本科及以上,或具备同等能力」。实习与校招不写工作年限,改看课程、项目、竞赛这类证据。
- **工作条件写事实**:出差、值班、倒班写清频率(「每月出差约一周」),比「能接受出差」更能筛出对的人,也减少入职后反悔。
- **把必要条件变成面试评分项**:每条对应一个面试问题和一个及格标准;JD 里没写的要求,面试时不要临时加码。
## 三段结构与薪资写法
```
第一段 为什么值得来 三到五行:团队在做什么、这个岗位要解决什么问题、做成了意味着什么;
用事实(业务阶段、用户规模、技术栈),不写「行业领先、发展空间大」
第二段 你要做什么 职责四到七条;必要条件三到五条;加分项另列,注明非必须
第三段 你能得到什么 薪资福利、工作方式、成长机会(导师、带人、分享)、
面试流程与周期(如两轮业务面加一轮 HR 面,一周内给结论)、投递方式
```
第一段最容易写空。反例:「我们是一家行业领先的互联网公司,发展空间大,福利待遇优厚。」改为:「我们做面向中小餐馆的收银与进货系统,已服务【N】家门店;明年要把进货从电话下单搬到线上,这个岗位负责其中的订单链路。」候选人读完能说出「去了做什么、为什么重要」,这一段才算合格。
薪资写法:
- 写区间不写「面议」;上限一般不超过下限的 1.5 倍(如 25–35K),太宽等于没写。
- 写清单位和结构:月薪还是年薪、税前、一年几薪(如 25–35K × 15 薪);固定与浮动分开,绩效奖金、提成、期权各写一句发放规则。
- 提成岗写底薪加提成规则;想写「团队去年平均收入」,必须是真实数据并注明口径。
- 实习生写日薪或月薪、每周到岗天数、最短实习时长、有没有留用机会,以及餐补、房补。
- 不写做不到的承诺,如「年薪百万不是梦」「三个月必升主管」。
## 三份模板:技术岗、运营岗、实习生
模板全文见 [references/jd-templates.md](references/jd-templates.md)。按岗位类型只取一份,不要三份一起贴给用户:
| 岗位类型 | 模板侧重 | 适用 |
|---|---|---|
| 技术岗(后端开发工程师) | 服务与可用性目标、值班频率、一次线上故障排查 | 研发、测试、运维类 |
| 运营岗(用户运营) | 季度指标、活动从方案到复盘、表格分析 | 运营、市场、增长类 |
| 实习生(数据分析实习生) | 每周到岗天数、最短实习时长、导师与留用机会 | 实习、校招 |
三份模板共用同一骨架:一句话钩子 → 你会做 → 我们需要你 → 加分项(非必须)→ 你能得到 → 流程与投递方式。
## 歧视性表述检查
先用脚本粗筛,再人工通读(命中不等于违规,但每一处都要看):
```bash
python3 {baseDir}/scripts/jd_risk_scan.py jd.txt # UTF-8 的 .txt 或 .md
python3 {baseDir}/scripts/jd_risk_scan.py - < draft.md # 从标准输入读
```
脚本只读不改文件,只用 Python 标准库,覆盖年龄、性别、婚育、户籍地域、外貌健康、学校标签六类字面表述,每处命中给出改写方向;退出码见下文「信息不全或出错时」。
```
高风险写法 改成
「限男性」「女性优先」 删除;确有体力要求的写具体条件,如「需搬运 20 公斤货物」
「35 岁以下」「22–28 岁」「年轻有活力」 删除,写经验与能力,如「3–5 年相关经验」
「已婚已育优先」「未婚」「近两年无生育计划」 删除,面试中也不要问
「本地户口」「限某省籍」 删除;确因资质或政策需要,请 HR 核实依据后再写具体要求
「身体健康无乙肝」「形象好」「身高 165 以上」 删除;岗位确需证照的(如健康证),写证照名称
「985/211 优先」「名校毕业」 改写为能力证据;学校标签缩窄人才池,也容易被视为学历歧视
```
与工作无关的信息,如照片、婚恋状况、星座血型,不要在 JD 或报名表里要求候选人提供。
我国《就业促进法》等法律对公平就业有专门规定,各地还有细则,招聘平台也有各自的发布规则;上表只是风险提示与改写建议,是否合规由 HR 或法务按现行规定判断。
## 信息不全或出错时
| 情况 | 怎么处理 | 对用户说的话(模板) |
|---|---|---|
| E1 缺关键信息:只说「帮我写个招聘」,没给岗位或产出 | 只问 3 个:招什么岗位、入职半年后做出什么算招对了、缺了哪几条一定不面;地点、汇报对象等按常见写法先填并标【待确认】,薪资标【待补】 | 「先确认三件事就能动笔:招什么岗位?半年后做出什么算招对了?缺了哪几条一定不面?其余我先按常见写法填,标了【待确认】的你再改。」 |
| E2 输入自相矛盾:「应届生」却要「五年经验」;薪资下限高于上限;写了「远程」又要「每天坐班」 | 摘出矛盾的两处原文,给两个可选理解;用户选定前,这一项不写进正文 | 「这两处对不上:一处写……,另一处写……。你指的是①……,还是②……?」 |
| E3 必要条件过多(超过 5 条)或全是形容词 | 用「缺这一条、其他都很强,给不给面试」逐条问;形容词改成经历证据,改不了的删 | 「这 12 条里,缺哪几条你就一定不面?其余的我放进加分项,注明非必须。」 |
| E4 薪资没批,或只肯写「面议」 | 薪资位置写【待补:薪资区间与结构】,交付时提醒发布前补齐;不替用户编数字 | 「薪资批下来之前我先留空。发布前请补上区间,只写『面议』是投递少的常见原因。」 |
| E5 超出范围:合同条款、试用期、竞业限制合不合法;筛简历、评候选人 | 说明不在本技能范围,转 HR、劳动法律师或面试类技能;可以帮忙列要问的问题 | 「这部分需要 HR 或劳动法律师按现行规定判断,我可以先帮你把要问的问题列出来。」 |
| E6 坚持写高风险要求:「限 35 岁以下」「限男性」「985 优先」 | 不写进 JD;说明风险,给按经验、能力或具体条件写的替代说法;是否发布由用户与 HR、法务决定 | 「这一条我不写进 JD,它属于高风险表述。可以改成……;最终怎么发,请 HR 或法务把关。」 |
| E7 时间紧,只要一版能先发的 | 交最小可用版:岗位名称+一句话钩子+职责 3 条+必要条件 3 条+薪资(或【待补】)+投递方式;确认单与风险清单随后补 | 「先给你一版能发的精简 JD,确认单和风险检查我随后补上。」 |
脚本 `jd_risk_scan.py` 的退出码与报错:
| 退出码 / 报错 | 原因 | 修正办法 |
|---|---|---|
| 0 | 没有命中风险词表 | 仍需人工通读一遍 |
| 3 | 有命中,已逐条列出 | 按建议改写;「女装」「品牌形象」这类误报可忽略 |
| 1「参数错误」「内容为空」 | 没给文件路径,或文件里没有文字 | 按 `jd_risk_scan.py 文件路径` 重跑;从标准输入读用 `-` |
| 2「找不到文件」「是文件夹」「没有读取权限」 | 路径错、文件名有空格没加引号、权限不够 | 检查路径,文件名含空格时用引号包住 |
| 2「像是 Word、PDF」「不是 UTF-8 文本」 | 传了 .docx、.pdf,或 GBK 编码的文本 | 把正文复制进 UTF-8 的 .txt 或 .md 再扫 |
| 130 | 按了 Ctrl+C | 重新运行即可 |
## 输出契约
交付物按下面的固定顺序给出;某部分本次不交付,就在原位置写「本次未交付:原因」,不调换顺序:
1. **岗位摘要一行**:岗位名称|地点与办公方式|汇报对象|薪资区间与结构(没批写【待补】)。
2. **JD 正文**(Markdown,可直接发布):为什么值得来 → 你要做什么(职责 4–7 条;必要条件 3–5 条;加分项另列,注明非必须)→ 你能得到什么(薪资福利、工作方式、成长、面试流程与投递方式)。
3. **用人经理确认单**:必要条件逐条列出,每条留「缺了就不面:是 / 否」,并对应一个面试问题和及格标准。
4. **风险提示清单**:命中的表述、原句与改写建议;没有命中也写明「已按清单检查,仍需 HR 复核」。
5. **待补 / 待确认清单**:每条注明出现在正文哪一段。
6. **精简版**(需要多平台发布时):300 字以内。
占位符规则:
- 【待补:……】=用户没提供、也不能替用户编的信息:薪资、团队规模、用户数据、福利、融资情况。
- 【待确认:……】=按常见写法先填了、需要用人经理确认的内容:汇报对象、值班或出差频率、面试流程。
- 发布前所有【】都要清空;正文里不留其他临时记号。
交付前自检(逐条答「是 / 否」,有一条「否」就先改再交):
- [ ] 职责每条都是「动词 + 对象 + 结果或标准」,不超过 7 条,第一条是最主要的工作
- [ ] 必要条件不超过 5 条,加分项单列并注明「非必须」
- [ ] 薪资写了区间与结构,或明确标了【待补】,全文没有「面议」
- [ ] 风险词脚本跑过(或已按高风险对照表人工逐条查过),命中项都已改写或说明
- [ ] 没有编造团队规模、融资、用户数据和福利
- [ ] 第一段有具体事实(业务阶段、规模或技术栈),没有「行业领先」「发展空间大」
## 示例
以下为示例,团队与数字均为虚构,薪资等信息来自示例中「用户」的回答。
**用户:** 暑期实习生的招聘文案怎么写才有人投?我们是做本地生活小程序的数据组。
**助手(先问 3 件事):** ① 实习期起止、每周到岗几天、在哪,能不能远程?② 实习生主要做什么:只做日常取数和报表,还是也要独立做一个专题?③ 日薪多少,有没有餐补房补,有没有留用机会?
**用户:** 7 月到 9 月,每周至少 4 天,上海,不能远程;取数报表加一个专题;日薪 200,有餐补,有导师一对一带,表现好可以留用。
**助手(交付):**
```markdown
岗位摘要:数据分析实习生(暑期)|上海,到岗办公|汇报对象【待确认:数据组负责人】|日薪 200 元,含餐补
**数据分析实习生(暑期)**
我们做本地生活小程序,数据组负责【待补:一句话写清团队在做什么、服务多少用户】。
实习期 7 月至 9 月,每周到岗至少 4 天,地点上海,不支持远程。
**你会做**
1. 在导师指导下完成日常取数与报表维护
2. 参与一个专题分析,从提出问题到写出结论,实习结束前独立汇报一次
**我们需要你**
1. 【待确认:年级与专业方向,或同等能力】,能保证每周到岗 4 天、实习到 9 月
2. 会用 SQL 或 Python 做基础数据处理
3. 能把分析结论讲给非专业的人听,课程报告或项目作品均可证明
**你能得到**:日薪 200 元,餐补;一对一导师;表现好有留用机会
**流程**:【待确认:一轮面试,一周内给结论】;投递 jobs@example.com,附简历与一份作品(课程作业也可以)
用人经理确认单:SQL 或 Python 基础处理|每周到岗 4 天|能讲清分析结论——每条「缺了就不面:是 / 否」
风险提示:已按清单检查,未命中;仍需 HR 复核
待补 / 待确认:团队一句话(第一段)、汇报对象、年级与专业、面试流程
```
更多完整示例:
- [examples/java-backend-jd.md](examples/java-backend-jd.md):技术岗从澄清到交付的六件套,含脚本实际输出、确认单与 300 字精简版
- [examples/trim-requirements.md](examples/trim-requirements.md):老板列了十二条必要条件,逐条判定、砍到五条以内
## 常见问题(FAQ)
**问:薪资还没批下来,能先写「面议」吗?**
答:不写「面议」。先在薪资位置写【待补:薪资区间与结构】,批下来再发布;只写「面议」或不写薪资,都是投递少的常见原因。
**问:JD 挂了很久没人投,先改哪里?**
答:按这个顺序查:岗位名称是不是候选人会搜的词、写没写薪资、必要条件是否过多、第一段有没有具体事实。
**问:投来的人都不对口怎么办?**
答:先查职责是否太泛(如「负责后端开发工作」),再查必要条件是不是写成了形容词;两处都改成能验证的具体内容。
**问:老板坚持要写「35 岁以下」「985 优先」怎么办?**
答:这类表述不写进 JD,会给出按经验、能力或具体条件写的替代说法;要不要发、怎么发,由 HR 或法务按现行规定判断。
**问:必要条件和加分项到底怎么分?**
答:问用人经理:「缺这一条、其他都很强的人,你给不给面试?」给,就是加分项;不给,才是必要条件。
**问:实习生、校招的 JD 和社招有什么不同?**
答:不写工作年限,改看课程、项目、竞赛;要写清日薪或月薪、每周到岗天数、最短实习时长和有没有留用机会。
**问:能直接帮我发到招聘网站,或者帮我筛简历吗?**
答:不代发布、不代筛简历。正文可以直接粘贴,另附 300 字以内的精简版方便多平台发布;各平台的格式与审核以平台现行规定为准。
## 常见错误(反模式)
| 错误做法 | 为什么错 | 正确做法 |
|---|---|---|
| 职责和要求写成一锅粥 | 候选人看不出来了做什么,面试官也没法按条打分 | 职责写「来了做什么」,要求写「凭什么能做」,分两块 |
| 照抄别家 JD,连对方的业务名都没改 | 招来的是别人要的人,也显得不专业 | 从「入职半年后怎样算招对了」倒推职责 |
| 十几条必要条件 | 合适但不完全匹配的人被直接挡在门外 | 用「给不给面试」逐条检验,必要条件不超过 5 条 |
| 只有形容词:抗压能力强、积极主动、有责任心 | 没人能验证,谁都能说自己符合 | 改成经历证据,如「有线上故障排查与值班经验」 |
| 岗位名称用内部叫法,还加「急聘」「高薪」 | 候选人搜不到,也显得不可信 | 用候选人会搜的词,方向和职级放括号里 |
| 薪资写「面议」,或区间宽到上限是下限的两三倍 | 等于没写,候选人不愿意投 | 写区间与结构,上限一般不超过下限的 1.5 倍 |
| 第一段写「行业领先、发展空间大、福利优厚」 | 放在哪家公司都成立,读完什么也记不住 | 写业务阶段、规模、这个岗位要解决的问题 |
| 发布前没让用人经理确认必要条件 | 面试时临时加码,JD 和面试标准对不上 | 附确认单,逐条确认「缺了就不面」 |
## 边界与不做什么
- 不做法律合规审查,不出「合法」或「违法」的结论;涉及用工形式、试用期、竞业限制、外籍人员、特殊资质岗位的,找 HR 或劳动法律师。
- 不替公司定薪资与职级,只把已批准的方案写清楚。
- 不写虚假或夸大的承诺,不编团队规模、融资情况、用户数据。
- 不代发布、不代筛简历、不评价具体候选人。
- 各招聘渠道的格式与审核规则以平台现行规定为准。
Files in this skill
- SKILL.md
- examples/java-backend-jd.md
- examples/trim-requirements.md
- references/jd-templates.md
- scripts/jd_risk_scan.py
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.