使用方法
五个单行框加一个多行框,填完点「生成求职信」或按 Enter(多行框里按 Ctrl/Cmd+Enter)。四步走:
- 在「姓名」填
Zhang Wei(示例默认值,9 字符)。这个名字会同时出现在称呼后的落款处,所以必须落在 2~40 字符内且含拉丁字母。 - 在「目标职位」和「公司名」填
Backend Engineer与Northwind Logistics,这两项会被塞进第一句和第四段,同一个公司名在正文里出现两次是刻意的——招聘方扫信时会找这个关键词。 - 在「量化成绩」填
cut p99 order-query latency from 820 ms to 190 ms。这一栏必须自带数字,因为求职信里唯一能拉开差距的就是数字;检测器会把不含数字的结果标红提示。 - 「补充经历」可留空。填了会作为独立第三段插在成绩段之后,默认示例是一段支付对账经历。填完点生成,下方会出现词数、句长表和 Flesch 分数。
页面打开时下方已经有一封完整的示例信(服务端直出,JS 未执行也在),点「载入示例」随时还原。这封信的词数、句长、Flesch 分数和下面句长表里的每一行都是从同一份数据算出来的,求职信字母生成器的体检面板不是估的,是逐句数出来的。
能解决什么
英文求职信难的地方不在于凑不出句子,而在于不知道自己的稿子是长是短、是难读还是好读、有没有全是弱动词。求职信字母生成器把这两件事分开处理:前半段负责按固定结构拼出能用的骨架,后半段负责体检。
场景一:海投同一岗位,替换公司名就能改一封信,不必每次重写。这里公司名在正文出现两次,所以改一个字段能覆盖开头和动机段。
场景二:写完一封 600 词的信,不知道 recruiter 会不会读不完。这里的体检会直接告诉你词数、按每分钟 200 词估算的阅读秒数、以及 Flesch 分数落在哪个学段。
场景三:稿子里全是 "I was responsible for..." 这种被动句。这里会逐句列出被动结构和弱动词的位置,让你知道要改哪一句。
本页不做的事:不生成简历本体。简历里的教育背景、工作时间线、技能分级表都不在求职信里,写进去反而稀释重点,那部分交给 简历生成。也不做多语言版本——模板句式全部是英文,中文求职信的信封与称呼规则完全不同,套这个模板会出错。
原理和变量
四段结构。生成的不是一整块文字,而是四个固定功能的段落:
- 称呼 + 目的句:
Dear Hiring Manager,加一句"我申请贵司的 X 职位"。招聘方最先找的就是这句话,所以放最前面。 - 能力段:把技能栈和年限拼进去,末尾接一个"我喜欢做的其实是无聊的那部分"式的具体态度句,避免通篇自夸。
- 成绩段:把量化成绩原句嵌入,再补一句副作用收益(本例是"值班从每周降到每月"),这一句比主成绩更能打动面试官。
- 动机段 + 结尾段:先说为什么选这家公司(要求填入公司名的具体理由位),再说可面试时间,最后落款。
词数口径。用 text.trim().split(/\s+/) 计数,空白连续段算一个分隔符。这与 Word 的字数统计基本一致,但和浏览器自带的 Intl.Segmenter 分词结果会差几个——后者会把 don't、state-of-the-art 这类带连字符和撇号的词算成一个或两个,取决于词表。为避免"同一个词数在不同工具里不一样"的困惑,本页统一用空格切分,并把口径写在这里。
Flesch Reading Ease。公式是 206.835 − 1.015 × (词数/句数) − 84.6 × (音节数/词数)。音节数按元音组估算,词尾哑 e(长度大于 3 且已有元音)不计一个音节。示例信实测:词数 197、句数 11、音节 298,平均每词 1.51 个音节,Flesch = 60.7,落在"高中毕业到大学"区间——英文母语者一眼能读完,符合简历筛选场景。
句长阈值 35 词。这不是从规范里来的经验值,而是从示例信反推的:11 句里最长的一句 38 词,正是那句从 I have spent 拖到 every quarter 的能力段。它的信息密度其实不低,但读者要在中间记住四个技术名词,负担偏重,所以 35 词作为提醒线。
被动语态正则的坑。检测式写成 \b(am|is|are|was|were|be|been|being)\s+(\w{2,}(?:ed|en)|不规则表)。词干只要求 2 字母以上,是因为 given、taken 这类过去分词本身很短,卡成 4 字母会漏判。同时必须配一张假被动排除表:is involved、is available、was based 都是系表结构不是被动语态,不排掉就会满屏误报。实测三条反例 is that / was in / is involved 全部被正确排除,三条正例 was rewritten / were given / been fixed 全部被抓出。
量化表达的正则。要求数字后面必须跟单位或百分号:\b\d[\d,.]*\s*(%|percent|ms|hours|weeks|months|...)\b。不加单位约束的话,14:00 会被切成 14 和 00 两个"量化成果",纯属噪声。示例信实测命中 3 处:820 ms、190 ms、18 percent。
完整示例
下面全部数字来自页面默认那封信(数值仅作演示),控件默认值、这里的示例、下面句长表逐行一致:
- 词数 197,字符数 1123(含空格与换行),非空白字符 921。
- 段落 7 段(称呼 / 能力 / 成绩 / 补充 / 动机 / 结尾 / 落款),平均每段 28.1 词。
- 正文句数 11 句,正文词数 194,平均句长 17.6 词。
- 超 35 词的句子 1 句,最长句 38 词。
- Flesch = 60.7,音节 298,每词 1.51 个音节。
- 被动语态 0 处,弱动词 0 处,带单位量化表达 3 处。
- 按每分钟 200 词的常见扫读速度,全文约 59 秒读完。
对照着改:把「量化成绩」那一栏删掉数字再生成一次,词数会掉到 190 上下,但体检面板的「量化表达」会变成 0 处并给出警告——这正是这个字段存在的意义,它逼你把成果写成可验证的样子。求职信字母生成器判断一篇稿子能不能用,看的就是这几项:篇幅在 150~400 词、平均句长低于 35 词、被动语态 0 处、量化表达至少 2 处。
输入范围与对照表
五个字段各有硬边界,越界不会静默截断,而是直接告诉你哪个字段超了多少:
| 字段 | 允许长度 | 示例值 | 越界时会发生什么 |
|---|---|---|---|
| 姓名 Name | 2~40 字符,且至少 1 个拉丁字母 | Zhang Wei(9) | 纯中文姓名被拒,因为拼出的称呼与落款会是空的 |
| 目标职位 | 2~60 字符 | Backend Engineer(16) | 超 60 截断会让第一句语法崩,直接报错 |
| 公司名 | 2~60 字符 | Northwind Logistics(19) | 同上,动机段会缺主语 |
| 技能栈 | 2~80 字符 | Go, PostgreSQL, Kubernetes(26) | 空值会让能力段只剩年限 |
| 量化成绩 | 8~160 字符,且需含数字 | cut p99 order-query latency…(49) | 不含数字时生成成功但体检面板标红警告 |
| 补充经历 | 20~400 字符,可留空 | Before that I spent two years…(138) | 留空整段省略;不足 20 字符按留空处理 |
Flesch 分档与本页的建议读法:
| 分数区间 | 对应学段(英文母语者经验) | 求职信场景怎么办 |
|---|---|---|
| 90~100 | 小学 | 几乎不会出现,真出现了说明全是短句堆砌,专业度不足 |
| 80~89 | 中学 | 句子偏短,理工科简历可接受,文案岗会显得单薄 |
| 70~79 | 大一至高二 | 最舒服的区间,读者不费力 |
| 60~69 | 高中毕业至大学 | 示例信落在这里(60.7),正常可用 |
| 50~59 | 大学 | 句子偏长,建议拆句 |
| 40 以下 | 难读 | 技术词堆得太密,重写能力段 |
下方句长表逐句列出词数与判定,表头四列:句号、词数、句子、判定。首屏 12 行,点「加载更多」每次加 12 行;超过 12 句的信(补充经历写长了会这样)才能看到全表。
边界与精度
词数上限来自哪里。没有硬上限,但超过 400 词面板会给出提醒——这是英文求职信的常见上限,示例信 197 词处在中位。低于 150 词会提醒太短,因为 Cover Letter 的作用是补充简历没讲清的部分,几十词连这个作用都撑不住。
Flesch 是估算,不是测量。音节靠元音组数猜,business 这类词的音节数取决于词表(business 实际 3 个音节,元音组法会算成 2 个),所以同一封信在不同工具里可能差 0.5~2 分。它适合看趋势(改稿前后比较),不适合当合规指标。
句长统计有两次口径差异。句号切分用 [.!?](?=\s|$),所以 U.S. 这类带点缩写会被误切成一个"句"。示例信不含缩写,检测到超长句时建议你手工确认一次。真要处理缩写,得引入缩写白名单,这里不做,因为一张白名单表的体积就够再写一个工具了。
被动语态检测是启发式,不是语法分析。它只认"be 动词 + 过去分词"的表面结构,识别不了 He was gone 这类系表加形容词的情况(虽然排除表能盖住常见几个),也识别不了省略 be 的被动(The service rewritten overnight)。它的作用是提醒你回头看一遍,不是判定你写错了。示例信实测 0 处被动,这不是因为规则严格,而是因为每句都写了主语 I。
字符长度按 UTF-16 计。中文姓名填进「姓名」框会被拒绝,但如果放进「补充经历」框,一个汉字算 1 个字符、读起来却比 1 个英文字母长得多。补充经历以英文写为准,混排中文会让 Flesch 音节估算失真(汉字没有元音,会被当成 0 或 1 个音节)。
模板句是死的,变量是活的。五个字段替换进去后,段落骨架和衔接句不会变。所以同一份模板生成的信,用词习惯会高度相似——批量投递时这可能是优点(快),也可能是缺点(HR 一眼看出模板)。真要个性化,改「量化成绩」和「补充经历」两栏就够了,改动成本最低而效果最明显。
常见问题
为什么叫「求职信字母生成器」,它生成的是字母吗?
不是。这个名字来自英文原名 cover letter generator 的直译,cover letter 是「求职信」,指 accompanies a resume 的那封陈述信,不是「生成字母」。站内同分类下还有随机字母生成器、字母统计等完全不同的工具,本页做的是英文求职信正文拼装。名字沿用了工具库的注册名,语义以本页说明为准。
生成的信能直接投吗?
不能直接投,但可以直接改。模板只提供骨架,四段衔接句是通用表达,真正决定成败的是你填进去的量化成绩和对公司的具体理由。示例里"820 ms 降到 190 ms"是编的演示数字,投递前必须换成你自己的真实数据。另外 Cover Letter 通常需要针对每家公司单独改,批量群投同一封信在多数招聘流程里是减分项。
称谓应该写具体人名还是 Dear Hiring Manager?
查到名字就写名字(Dear Ms. Alvarez,),查不到才退回 Dear Hiring Manager,。本页默认用后者,因为模板无法判断你是否知道 recruiter 姓名。正文里不要写 Dear Sir or Madam,这种句式在英语母语职场里显得疏远。
词数比目标少会被判失败吗?
不会,只提示。低于 150 词或超过 400 词时面板会给提醒色,但生成结果照常输出——因为不同国家、不同年限的目标区间差别很大,机器不该替你做这个决定。示例信 197 词落在 150~400 的中位偏下,够用。
为什么我的信被标出被动语态,但我读着不像?
大概率是系表结构被误判了,比如 is involved("钱牵涉其中")、is available("我周三有空")这类。检测器内置了 20 个常见假被动词的排除表,但英语形容词后缀是 -ed 的词远不止这些。如果提示出现在你认为没问题的地方,按原句自查一遍即可,不必照着改。
Flesch 60 分算好还是不好?我不会算这个。
对求职信来说 60~79 都属正常,示例 60.7 属于"读者不费力"的下沿。真正要警惕的是低于 50:那说明你的句子普遍在 25 词以上且技术词密集,HR 扫读时会跳。这个分数不用你手算,页面每次生成后直接给。
能生成中文求职信吗?
不能。模板句式全部是英文,中文求职信在称呼("尊敬的 X 先生")、自我评价用词、结尾敬语上规则完全不同,套用英文骨架会产出不通顺的东西。中文简历与求职信模板请用 简历生成,那里的字段是按国内投递习惯设计的。
我的信息会不会被传出去?
不会。姓名、职位、公司名这些只作为字符串拼进 DOM,没有任何 fetch、XMLHttpRequest 或表单提交,刷新页面即消失。你可以在浏览器开发者工具的 Network 面板里自查,整个交互过程是零请求。这封信往往包含真实姓名和求职意向,更不该过第三方服务器。
相关工具
- 简历生成——简历本体在这里生成,本页只做 Cover Letter,两者配合才是完整投递材料。
- 简历摘要生成器——简历顶部的 3~4 行自我概述,和求职信开头段作用相近但长度受限。
- FleschKincaid计算器——只算可读性不生成内容,要单独核对别的英文文案时用。
- LinkedIn标题生成器——线上档案的 headline 也要和这封信的口径一致,两边说法不同会露馅。
- Cold邮箱生成器——主动挖掘的冷邮件是另一套写法,跟投递用的求职信不是一回事。
- 邮箱主题行生成器——投递附件的邮件主题行,常和正文一起被改。
- SEO与营销分类——同分类 85 个工具,还有隐私政策、服务条款、FAQ 结构化数据等合规文本生成器。