关于 ResuStack
ResuStack 是面向需要创建和维护简历者的简历工具,可在浏览器或通过 MCP 客户端使用。它结合多种版式、AI 写作、版本历史、职位匹配分析和 PDF 导出。
主要功能
- 01从 PDF 或 LinkedIn 资料 PDF 导入简历
- 02通过表单或聊天编辑,提供 14 种设计
- 03将简历与职位要求进行对照
- 04翻译简历并维护不同语言版本
- 05记录更改并恢复历史版本
- 06按实时预览所用模板导出 PDF
适用场景
- 01将现有 PDF 转为可编辑简历
- 02为某个职位定制一份简历副本
- 03通过 MCP 客户端更新简历并生成 PDF
MCP 相关
ResuStack 通过 Streamable HTTP MCP 服务提供简历管理。客户端可列出、读取、创建和更新简历,选择模板、设置关注领域、查询额度及请求 PDF 链接;写入操作会先创建恢复点。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://resustackapp.com/mcpclaude mcp add --transport http com-resustackapp-resustack https://resustackapp.com/mcp{"mcpServers":{"com-resustackapp-resustack":{"type":"http","url":"https://resustackapp.com/mcp"}}}在 Cursor 中打开{"servers":{"com-resustackapp-resustack":{"type":"http","url":"https://resustackapp.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-resustackapp-resustack":{"type":"http","url":"https://resustackapp.com/mcp"}}}{"mcpServers":{"com-resustackapp-resustack":{"serverUrl":"https://resustackapp.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://resustackapp.com/mcp需要授权工具
详细介绍
ResuStack
ResuStack 是一款 AI 简历生成器。导入 PDF 或 LinkedIn 个人资料,选择 14 种设计之一,然后通过表单或聊天进行编辑——可以在浏览器中操作,也可以直接通过 Claude 的 MCP 服务操作。每项更改都可以撤销,下载的 PDF 使用与实时预览相同的模板生成。
🔗 在线体验: resustackapp.com
✨ 功能
简历生成器
- 导入 PDF — 上传现有简历或 LinkedIn 个人资料 PDF(系统会自动区分);AI 会提取并整理内容,并标记文件中没有依据的内容
- 分栏编辑器 — 左侧为表单,右侧为实时预览,并显示 PDF 中的分页位置
- 6 种版式,14 种设计 — 单栏、横幅、标签边栏、页眉网格、左侧栏和右侧栏;标有 ATS 安全的设计,切换设计时会保留内容
- 英文和土耳其文简历 — 标题、“至今”、月份名称和学位表述均会以简历所用语言呈现
- “我正在做的事” — 教育经历上方的可选版块,仅在勾选后显示
- 使用 Google 登录 — 也可使用用户名和密码登录;通过电子邮件注册的用户可以立即导入第一份 PDF,并在使用其他 AI 功能前确认电子邮件地址
- 导出 PDF — 使用 WeasyPrint 根据与预览相同的模板生成
AI
- 一键润色 — 将工作经历和项目描述改写为更有力的要点
- 在聊天中从头开始 — 助手会创建简历,并在你回答问题时逐步填写
Agent 模式
- 通过聊天编辑 — “让我的上一份工作经历听起来更资深一些”;Agent 会使用工具、实时展示进度,并在执行破坏性操作前征求批准
- 模板面板 — 无需离开聊天,即可为当前简历选择设计
- 撤销 — 在对话中还原上一次更改
更改历史
- 每次保存以及每次 AI 或 MCP 编辑前都会创建还原点
- 比较任意版本与当前版本的差异,并进行还原——所有套餐均可使用
招聘信息
- 评分 — 逐项对照招聘信息评估简历,并指出证据所在
- 针对岗位的副本 — 针对某个招聘信息优化一份副本,同时保留主简历不变
- 补足差距 — 针对每项差距回答一个问题,审核拟定的内容,应用更改并查看评分变化
语言版本
- 原地翻译简历,或创建与原简历关联的翻译副本
🤖 从 Claude 使用 ResuStack(MCP)
ResuStack 是一个 Model Context Protocol 服务。Claude——或任何支持 Streamable HTTP 和自定义标头的 MCP 客户端——负责撰写简历;ResuStack 负责存储、管理版本并生成文件。
1. 创建令牌。 登录后,打开 个人资料 → API 令牌,然后创建一个令牌。令牌只会显示一次;更换令牌会使旧令牌失效。个人资料页面也会显示可用的端点地址。
2. 添加服务。 使用 Claude Code:
claude mcp add --transport http resustack https://resustackapp.com/mcp --header "Authorization: Bearer YOUR_TOKEN"
此端点仅接受 Bearer 令牌进行身份验证;不接受会话 Cookie。
3. 提出请求。 “列出我的简历”、“将我的 CV 切换为标签边栏设计并提供 PDF”、“根据我们本月完成的工作填写‘我正在做的事’。”
工具
| 工具 | 功能 |
|---|---|
list_resumes | 账户中的简历:ID、标题、语言和模板 |
get_resume | 一份简历的完整存储内容 |
create_resume | 根据结构化内容创建简历 |
update_resume | 替换简历内容(请先读取内容——此操作是替换,不是合并) |
set_focus_areas | 仅设置“我正在做的事”版块;简历的其他部分不受影响 |
list_templates | 列出设计,并说明每种设计是否符合 ATS 安全要求 |
set_template | 更改简历设计 |
render_pdf | PDF 下载链接——仅可使用一次,10 分钟后过期 |
check_quota | 查看账户本月剩余额度 |
提示词
| 提示词 | 功能 |
|---|---|
focus_areas_from_my_work | 让客户端的大模型根据其可查看的对话,总结你实际完成的工作,写成几行内容并展示给你;仅在你批准后,才使用 set_focus_areas 保存 |
安全规则
- 每次写入前都会创建还原点;你可以在网站上撤销操作
- 没有删除工具——移除简历需要在网站上由人工点击
- 每个查询都限定在令牌所有者的范围内
- 按账户进行速率限制
在 MCP Registry 中列出
存储库根目录下的 server.json 将此服务描述为 com.resustackapp/resustack,供官方 MCP Registry使用。要以该名称发布,必须通过在 /.well-known/mcp-registry-auth 提供文件来证明对 resustackapp.com 的所有权:
-
在本地生成密钥对。切勿提交
key.pem(它已列入.gitignore):openssl genpkey -algorithm Ed25519 -out key.pem -
打印证明记录,并在 Dokploy 中将其设置为
MCP_REGISTRY_AUTH环境变量,然后重新部署:echo "v=MCPv1; k=ed25519; p=$(openssl pkey -in key.pem -pubout -outform DER | tail -c 32 | base64)" -
检查它是否已生效:
curl https://resustackapp.com/.well-known/mcp-registry-auth -
登录并从存储库根目录发布:
mcp-publisher login http --domain resustackapp.com --private-key "$(openssl pkey -in key.pem -noout -text | grep -A3 'priv:' | tail -n +2 | tr -d ' :\n')"mcp-publisher publish
每次发布新条目时,都要更新 server.json 中的 version(以及 mcp_server/protocol.py 中的 SERVER_INFO)。
📸 屏幕截图
编辑器 — 表单、实时预览和模板面板

选择设计

Agent 模式

仪表板

💳 套餐
免费起步。Pro 为限期一次性购买,无需订阅。
| 免费套餐 | 限额 |
|---|---|
| AI 点数(导入、AI 改写、改进草稿、聊天消息) | 每月 30 次 |
| PDF 下载 | 每月 5 次 |
| 简历(不同语言的版本免费) | 3 份 |
| 职位副本 | 3 份 |
Pro(3 个月 $9,12 个月 $24,一次性付款)可取消这些限制。付款由Paddle处理,Paddle 是登记商户。限额配置在 core/settings.py 的 FREE_TIER_LIMITS 中;请参阅定价页面。
🚀 本地运行
前置条件
- Docker 和 Docker Compose
- OpenAI API 密钥
1. 克隆并配置
git clone https://github.com/koksalkapucuoglu/resume-enhance.git
cd resume-enhance && cp .env.example .env
| 变量 | 描述 | 示例 |
|---|---|---|
OPENAI_API_KEY | OpenAI API 密钥 | sk-proj-... |
SECRET_KEY | Django 密钥 | 任意长的随机字符串 |
DEBUG | 调试模式 | True |
ALLOWED_HOSTS | 允许的主机 | localhost,127.0.0.1 |
POSTGRES_DB / POSTGRES_USER / POSTGRES_PASSWORD | 数据库凭据 | postgres |
POSTGRES_HOST / POSTGRES_PORT | 数据库地址 | db / 5432 |
EMAIL_HOST_USER / EMAIL_HOST_PASSWORD | 用于密码重置和电子邮件验证的 SMTP 凭据;使用 Gmail 时需提供应用专用密码 | [email protected] / 应用专用密码 |
EMAIL_HOST / EMAIL_PORT / EMAIL_USE_TLS / EMAIL_USE_SSL | SMTP 服务;默认使用 Gmail(smtp.gmail.com、587、TLS)。要在 465 端口使用隐式 TLS,请设置 EMAIL_USE_SSL=True | smtp.gmail.com / 587 / True / False |
DOWNLOAD_LINK_MAX_AGE | 已签名 PDF 链接的有效秒数(可选) | 600 |
GOOGLE_OAUTH_CLIENT_ID / GOOGLE_OAUTH_CLIENT_SECRET | Google 登录;只有设置这两个值后,按钮才会显示(可选) | 来自 Google Cloud Console |
DEFAULT_FROM_EMAIL | 账户邮件的发件人;默认使用 EMAIL_HOST_USER(可选) | ResuStack <[email protected]> |
MCP_REGISTRY_AUTH | 在 /.well-known/mcp-registry-auth 提供的 MCP Registry 域名证明(可选,仅限公钥) | v=MCPv1; k=ed25519; p=... |
PAYMENT_STATUS | coming_soon 显示套餐但不收款;live 启用结账 | coming_soon |
PAYMENT_PROVIDER、PAYMENT_WEBHOOK_SECRET、CHECKOUT_URL_*、PRODUCT_ID_* | 付款服务提供商设置(可选) |
2. 启动
docker compose up --build
应用运行于 http://localhost:8000。
3. 运行测试
docker compose exec web python manage.py test resume mcp_server
单元测试中会模拟 WeasyPrint 和 OpenAI;不会发起任何 API 调用。
☁️ 部署
生产环境运行在 Dokploy 上。每次推送到 main 都会通过 GitHub webhook 触发部署:Dokploy 会构建 Dockerfile,而 entrypoint.sh 会在启动 Gunicorn 前运行 migrate 和 collectstatic。HTTPS 由 Traefik 处理。
在新服务器上进行设置:
- 安装 Dokploy:
curl -sSL https://dokploy.com/install.sh | sh - 打开
http://YOUR_SERVER_IP:3000并创建管理员账户 - 创建项目 → 添加 Application → 连接此 GitHub 仓库
- 在同一项目中添加 PostgreSQL 服务
- 设置环境变量(参见
.env.example和.claude/integrations/)及域名,然后部署
注意:
- 将 Dokploy 的 Run Command 留空——Dockerfile 的
ENTRYPOINT会处理所有操作 - 如果使用 Cloudflare 代理,请将 Dokploy 的域名加密设置为 None,并将 Cloudflare SSL 设置为 Full
- 镜像会安装简历设计所需的字体;渲染时不会获取任何内容
🔑 Google 登录
Google 登录使用 django-allauth。ResuStack 自己的登录、注册和密码页面仍由其负责;allauth 只会添加 Google 登录流程。
- 在 Google Cloud Console 中配置 OAuth consent screen(External),隐私政策 URL 设置为
https://resustackapp.com/privacy/,并且只申请openid、email和profile权限范围。 - 创建类型为 Web application 的 OAuth client ID,并设置:
- Authorized JavaScript origin:
https://resustackapp.com - Authorized redirect URI:
https://resustackapp.com/accounts/google/login/callback/ - 本地开发时,也添加
http://localhost:8000/accounts/google/login/callback/
- Authorized JavaScript origin:
- 设置
GOOGLE_OAUTH_CLIENT_ID和GOOGLE_OAUTH_CLIENT_SECRET,然后重新部署。
运行方式:
- 不会因为电子邮件地址匹配而将 Google 账户关联到现有 ResuStack 账户——本地账户的电子邮件地址从未经过验证。现有用户需登录后在个人资料页面连接 Google。
- 新 Google 用户需要经过一个简短步骤来选择用户名,并同意向国外传输数据。
- 电子邮件地址未经验证的 Google 账户会被拒绝。
- 使用电子邮件地址创建的账户可以立即使用,但在确认地址之前,AI 功能仍会锁定(软验证)。此功能推出前创建的账户不受影响。
🔒 隐私
ResuStack 收集哪些信息、由谁处理(包括为 AI 功能提供服务的 OpenAI),以及如何删除数据:resustackapp.com/privacy。土耳其语版本以 KVKK 信息通知的形式撰写,见 resustackapp.com/gizlilik。用户可以在个人资料页面删除账户及其所有数据。
🏗️ 架构
单体 Django:视图、MCP 端点、用于生成 PDF 的 WeasyPrint、用于写作的 OpenAI、用于评分和检查的 TypeSafe Jev、用于支付的 Paddle,以及用于错误监控和产品转化漏斗的 Sentry 与 PostHog(均为可选)。简历内容存储在单个 JSONField 中;所有设计都来自 resume/resume_templates.py 中的一个目录。完整指南——包括约定、模式和注意事项——见 .claude/CLAUDE.md;每个集成都有各自的页面,见 .claude/integrations/;当前状态和后续步骤见 .claude/HANDOFF.md。
🗺️ 路线图
- 多种简历设计(14 种)
- 职位发布评分、职位副本和差距改进
- 支持工具调用、审批和撤销的 Agent 模式
- 支持差异对比和恢复的更改历史
- 面向 Claude 和其他客户端的 MCP 服务
- 英文和土耳其语简历
- 上架到 MCP 注册表
- 为 MCP 客户端提供 OAuth,同时支持令牌
- 正式上线支付功能
许可证
开源。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。