chat-to-resume

👤 user_6f76b889 📦 v1.0.0 ⭐ 4.5 ⬇️ 129 下载
✍️ 内容创作 免费

📖 技能介绍


name: chat-to-resume description: 极简中英双栏简历生成器。通过对话采集信息,联网搜索匹配技能,生成可打印为 PDF 的 HTML 简历。当用户需要制作/修改/更新简历、生成中英文求职简历、或提到"简历/resume/CV"时使用此 skill。 version: 1.2.0


Chat-to-Resume

对话式极简中英双栏简历生成器。基于用户真实经验生成 HTML 简历,支持一键打印 PDF。

硬约束(必须遵守)

  1. 严禁编造:只润色/重组/格式化用户提供的真实信息。缺失字段用 [占位符] 替代并提示用户补充。
  2. 年限匹配:联网搜索到的技能关键词,权重必须与用户年限正相关(1 年 → CRUD,3 年 → 调优,5 年 → 架构)。
  3. 增量修改:确认草稿后,修改指令仅替换指定字段,不重新联网搜索。

状态机工作流

S_pre: 导入现有简历(可选)

  • 触发:用户说"导入现有简历"/"我有一份简历"/"更新简历",并提供了文件路径或目录
  • 支持格式:HTML(.html)、纯文本 PDF(.pdf)、Word 文档(.docx)、Markdown(.md)、纯文本(.txt
  • 动作
  • 读取文件内容。对 PDF 使用 pdftotext 或类似工具提取文字;对 Word 使用 python3 -m docx2txt 提取文字;HTML/MD/TXT 直接读取
  • 分析提取的内容,解析出已有字段:姓名、职业、年限、技能列表、项目经历、教育背景、联系方式
  • 将解析结果填充到 S0 数据模型中,缺失字段留空待问
  • 将提取到的文案作为上下文,进入 S1(联网搜索时结合现有内容一起优化)
  • 注意:导入后仍需用户确认关键字段(姓名、职业、年限),不能跳过 S0 直接进入 S1

S0: 信息采集

  • 触发:用户缺少 <职业><年限>(缺一不可)
  • 动作:反问缺失项,可选追问项目描述
  • 必填:职业、年限、姓名
  • 选填:项目经验(至少 1 个)、教育背景、联系方式

S1: 联网生成草稿

  • 前置:职业 + 年限均已提供
  • 动作
  • 联网搜索(定向来源 + 交叉验证): 至少搜索 3 个不同来源方向,综合多源结果:
    • 方向 1 — 大厂招聘官网site:zhipin.com {职业} {年限}年site:linkedin.com {职业} {年限} years{大厂名} 招聘 {职业} JD
    • 方向 2 — 真实个人简历{职业} 简历 项目经验 site:github.io{职业} resume portfolio 个人博客{职业} 在线简历 个人主页
    • 方向 3 — 招聘平台 JD{职业} 招聘 JD 任职要求 BOSS直聘{职业} job description requirements 2025 2026{职业} {年限}年经验 岗位职责
    • 交叉验证:同一技能关键词至少在 2 个来源出现才纳入;来源权威性排序:大厂官网 > 招聘平台 > 个人简历
  • 分析搜索结果,提取:
    • 技能关键词:该职业/年限对应的核心技能(Top 5-8 项),按年限过滤权重
    • 典型项目描述:该职业真实简历中常见的项目类型、工作内容表述方式、行业术语
    • JD关键词:招聘需求中高频出现的技能词和业务场景词
  • 项目描述按 STAR 框架组织(每个项目拆分为 S/T/A/R 四个维度,最后合并为一段流畅文字):
    • S (Situation) — 一句话交代项目背景/业务场景:为什么做这个项目?业务规模多大?面临什么问题?
    • T (Task) — 一句话概括你的职责:你在这个项目里担任什么角色?负责核心模块/从0搭建/主导重构?
    • A (Action) — 2-3 个技术动作:用了什么方案?选了哪些技术栈?怎么设计架构?遇到难点怎么解决的?
    • R (Result) — 一句话结果(无数据则定性描述):性能改善/用户增长/交付上线/得到复用/团队认可等
    • 合并示例:"主导某电商平台订单系统重构(S),作为后端负责人(T),将单体应用拆分为微服务,引入 Redis 缓存层优化查询链路,设计幂等机制防止重复扣款(A),系统上线后支撑日均 50W+ 订单量,核心接口 RT 从 2s 降至 200ms(R)。"
    • 如用户没有提供数据,R 写定性描述如"系统平稳上线运行至今"而非编造数字
  • 参照搜索结果中的真实表述风格,结合 STAR 框架产出润色后的项目描述。写作要求(重要)
    • ❌ 禁止编造精确数字("提升 25%""转化率提高 32%"等假数据)
    • ❌ 禁止空洞的形容词堆砌("卓越""杰出""显著")
    • ✅ 用真实简历的写法:描述做了什么、用了什么方法、解决了什么问题
    • ✅ STAR 的 R 部分,用户有真实数据就写,没有就用定性描述
    • ✅ 缺失细节用 [待补充: 具体内容] 标注
  • 输出中文 Markdown 简历全文,再输出英文 Markdown 简历全文(两份独立草稿)

S2: 用户确认

  • 触发:S1 输出后
  • 动作:追加 请确认内容,或提出修改(如:将 Spring Boot 改为 Django,删除 MySQL 等)。回复"确认"或"OK"进入 HTML 生成。

S3: 增量修改

  • 触发:用户在 S2 状态提出修改
  • 动作:精准替换指定字段,重新输出完整 Markdown,再次进入 S2

S4: 选择模板

  • 触发:用户确认内容后(S2 回复"确认"/"OK")
  • 动作:提供模板选项,让用户选择布局风格:

    请选择简历模板: A. 双栏 — 左侧个人信息+技能,右侧经历(经典互联网风格) B. 单列 — 自上而下通栏布局,简洁流畅

  • 用户选择后进入 S_photo。如用户未明确选择,默认使用双栏模板。

S_photo: 导入照片(可选)

  • 触发:用户选择模板后(S4)自动进入
  • 动作

    是否需要添加照片?如需添加,请提供照片文件路径(支持 JPG/PNG/WebP)。 如不需要,将生成无照片的纯文字简历。

  • 用户提供路径 → 将路径写入 data.photo,进入 S5
  • 用户跳过/拒绝 → data.photo 留空,进入 S5,简历不包含照片区域
  • 注意:此步骤为可选,无照片时简历中不显示占位图

S5: 生成 HTML

  • 触发:S_photo 完成(用户添加照片或跳过)
  • 动作:使用 scripts/generate.py --data <json> --lang cn|en --template double|single -o <output> 生成 HTML 文件,输出路径 + 打印指引
  • 有照片:data.photo 非空时注入 <img> 标签
  • 无照片:data.photo 为空时不渲染照片区域
  • 无用户确认时仍强制输出草稿,但附注"已跳过确认环节,如需修改请告知"

S6: 结束

  • HTML 生成后,在对话中输出免责声明(仅在对话中输出,不出现在 HTML 文件中)。

数据模型

{
  "name": "[姓名]",
  "photo": "[照片路径,可选,缺省不显示照片区域]",
  "phone": "[电话]",
  "email": "[邮箱]",
  "job_title": "后端开发工程师",
  "years": 3,
  "skills": ["Java", "Spring Boot", "MySQL"],
  "projects": [
    {
      "name": "[项目名称]",
      "role": "核心开发",
      "star_s": "某电商平台日均订单量激增,原有单体架构性能瓶颈明显",
      "star_t": "作为后端负责人主导订单系统微服务化重构",
      "star_a": "将单体拆分为订单/支付/库存三个微服务,引入 Redis 缓存层优化查询链路,设计幂等机制防止重复扣款",
      "star_r": "系统上线后支撑日均 50W+ 订单,核心接口 RT 从 2s 降至 200ms",
      "description_cn": "主导某电商平台订单系统重构(S),作为后端负责人(T),将单体应用拆分为微服务,引入 Redis 缓存层优化查询链路,设计幂等机制防止重复扣款(A),系统上线后支撑日均 50W+ 订单量,核心接口 RT 从 2s 降至 200ms(R)。",
      "description_en": "Led order system refactoring for an e-commerce platform (S). As backend lead (T), decomposed monolith into microservices, optimized query chain with Redis caching, designed idempotent anti-duplicate mechanism (A). Achieved 500K+ daily orders with core API RT reduced from 2s to 200ms (R)."
    }
  ],
  "education": "[毕业院校 / 专业 / 时间]",
  "summary_cn": "[个人简介,2-3 句]",
  "summary_en": "[Professional summary, 2-3 sentences]",
  "work_experience": [
    {
      "company": "[公司名]",
      "period": "[YYYY.MM - YYYY.MM]",
      "title": "[职位]",
      "points_cn": ["要点1", "要点2"],
      "points_en": ["Point 1", "Point 2"]
    }
  ]
}

star_s/t/a/r 为源字段用于内部整理;description_cn/en 是将 STAR 合并后的最终展示文本,由 generate.py 直接注入模板。

技能过滤规则(按年限)

年限 技能权重 示例
0-1年 基础语法、CRUD、框架入门 Java 基础、Spring Boot 入门、MySQL 增删改查
2-3年 性能调优、中间件、设计模式 JVM 调优、Redis 缓存、消息队列、微服务基础
4-5年 架构设计、团队协作、项目管理 分布式架构、DDD、技术选型、Code Review
5年+ 技术规划、跨团队协作、业务理解 技术战略、系统演进、团队建设、成本优化

HTML 模板

共两个模板,位于 assets/

双栏模板 (template.html)

  • 布局:左栏 31% + 右栏 69%(CSS Grid)
  • 左栏(暖灰底 #f5f3f0 + 黑字):照片(圆形 88px)、姓名、职位、联系方式、技能标签、教育背景、语言
  • 右栏(白底):个人简介、项目经历、工作经历
  • 照片预留位:无照片时自动使用 SVG 人物剪影占位;有照片时显示 <img> 标签
  • 极简黑白互联网风格

单列模板 (template_single.html)

  • 布局:顶部暖灰头部栏(照片 80px 圆形 + 姓名 + 职位 + 联系方式),下方白色内容区
  • 依次排列:个人简介 → 技能(黑边框标签) → 项目经历 → 工作经历 → 教育背景 → 语言
  • 技能以黑色轮廓标签(border: 1px solid #d4d4d4)横向排列

通用规范

  • 字体:System UI 栈(-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Noto Sans SC", "Microsoft YaHei"),正文 9-10pt,姓名 21-24pt,标题 9pt 大写
  • 配色:暖灰白体系 — 侧边栏 #f5f3f0(暖灰),主内容区 #fff(纯白),灰色层级 #fafafa / #f5f5f5 / #e5e5e5 / #d4d4d4 / #a3a3a3 / #737373 / #525252 / #404040

    7w4.net提供免费和付费技能下载。

  • 照片data.photo 字段指定图片路径;缺省时自动渲染内联 SVG 人物剪影占位符(深灰底 + 浅灰轮廓)
  • 打印@media print):
  • A4 尺寸(210mm × 297mm),无边距
  • page-break-inside: avoid 防止区块跨页
  • 按钮:右下角悬浮黑色按钮,大写字母 保存为 PDF / Save as PDF
  • 编码:UTF-8
  • 注意:HTML 中不包含免责声明

模板注入

使用 scripts/generate.py 生成 HTML:

python3 scripts/generate.py --data <json> --lang cn|en --template double|single -o <output>
  • --template double:使用双栏模板 assets/template.html
  • --template single:使用单列模板 assets/template_single.html
  • 默认 double

JSON 数据结构见上方数据模型。generate.py 自动处理中/英字段选择。

输出文件

  • /var/minis/workspace/resume_{timestamp}.html — 最终 HTML 简历
  • /var/minis/workspace/resume_{timestamp}.md — Markdown 草稿备份

免责声明(对话输出用,不写入 HTML)

每次 HTML 生成后,必须在对话中输出以下内容:

🤖 AI 生成内容仅供参考。请务必核对并替换所有 [占位符] 为本人真实、准确的信息后,再用于正式求职。

边界处理

场景 处理
无项目经验 占位符 [项目描述待补充],提示"建议补充 1 个个人练习项目,AI 可协助润色"
联网无结果 降级使用内置通用技能库(按职业 + 年限匹配常见技能)
修改已确认内容 进入 S3,替换后重输完整 Markdown,二次确认
直接生成跳过确认 强制输出 Markdown 草稿 + 附注"已跳过确认,如需修改请告知"
HTML 生成失败 使用内联的 fallback 极简模板,确保总能产出可用文件

🤖 AI 评测

这个简历生成器质量不错,能通过对话快速生成专业美观的 HTML 简历,支持中英双语和双模板切换,打印效果干净整洁。它有完整的对话流程引导,生成速度快,输出格式规范。不足之处是缺少示例参考,选择模板时无法预览效果,修改内容后也不能局部更新,需要重新生成整个文件。这些小缺陷影响了使用体验,但整体功能可用性较好。

📊 多维度评分

适应性4.6
规范性4.5
有效性4.7
可靠性4.2
可信度4.9

📁 包含文件 (5 个)

📄 README.md 2.5 KB
📄 SKILL.md 12.3 KB
📄 assets/template.html 7.7 KB
📄 assets/template_single.html 7.2 KB
📄 scripts/generate.py 6.8 KB