aeroxy /
job-bro
一个 AI 驱动的求职副驾驶 Chrome 扩展,能一键提取、评估 LinkedIn 与 Greenhouse 职位并自动生成定制简历。支持云端 API、本地 Chrome AI (Gemini Nano) 以及免 API Key 的 Qwen (通义千问) 网页版双向/三向后端。 🚀 v0.5.0 & v0.4.0 双版本重磅更新 自 v0.3.0 发布以来,我连续完成了两次核心架构大升级,将 Job Bro 塑造成了一个真正的多平…
aeroxy /
一个 AI 驱动的求职副驾驶 Chrome 扩展,能一键提取、评估 LinkedIn 与 Greenhouse 职位并自动生成定制简历。支持云端 API、本地 Chrome AI (Gemini Nano) 以及免 API Key 的 Qwen (通义千问) 网页版双向/三向后端。 🚀 v0.5.0 & v0.4.0 双版本重磅更新 自 v0.3.0 发布以来,我连续完成了两次核心架构大升级,将 Job Bro 塑造成了一个真正的多平…
一个 AI 驱动的求职副驾驶 Chrome 扩展,能一键提取、评估 LinkedIn 与 Greenhouse 职位并自动生成定制简历。支持云端 API、本地 Chrome AI (Gemini Nano) 以及免 API Key 的 Qwen (通义千问) 网页版双向/三向后端。 🚀 v0.5.0 & v0.4.0 双版本重磅更新 自 v0.3.0 发布以来,我连续完成了两次核心架构大升级,将 Job Bro 塑造成了一个真正的多平台、全自动、零成本的求职副驾驶工具。 1. 🏗️ 重构多站点提取:支持 Greenhouse 招聘平台 (v0.5.0) 问题:旧版本完全硬编码支持 LinkedIn 页面。但现实中,大量优质的科技公司(如 Anthropic 等)直接在 Greenhouse 上发布职位。 解决:我抽象出了一套多站点适配器架构 (src/extractor/site.ts): 无缝路由:扩展能智能感知当前活动的标签页,动态分发至特定的解析模块 (linkedin.ts 或 greenhouse.ts),仅在需要时注入内容脚本。 防止 ID 冲突:LinkedIn 和 Greenhouse 均采用纯数字表示 Job ID。我在数据库存储层引入了命名空间前缀 (gh:4593216008 vs. 纯数字),避免跨站数据相互覆盖。 安全防抖:MutationObserver 监听挂载目标增加了 document.documentElement 兜底,防止脚本极早期执行导致 document.body === null 崩溃。 2. 🛠️ 深度兼容 LinkedIn 搜索面板与多 DOM 渲染 (v0.5.0) 问题:LinkedIn 的职位展现有两套完全不同的 DOM。直接访问链接 (/jobs/view/) 渲染在 lazy-column 内;而在搜索列表页 (/jobs/search/) 或推荐页中,职位被渲染在右侧的 unified-top-card 面板中。旧版在搜索页提取经常失败。 解决: 多 DOM 分支适配:解析器现在会自动嗅探当前呈现的布局(lazy-column 或 unified-top-card)并执行不同的字段提取分支。 解决内容截断:LinkedIn 搜索页右侧面板展示的 Description 会被 CSS 截断,旧版基于文本 H2 节点游走只能抓到 200 字的摘要。新版改为优先锁定 #job-details 及 .jobs-descriptioncontent 容器,确保抓取 100% 完整的职位描述供 LLM 分析。 3. 📦 IndexedDB v4 安全数据迁移 (v0.5.0) 问题:早期版本在处理带有职位名称的 Slug 风格 LinkedIn URL(如 /jobs/view/software-engineer-at-openai-4417162348/)时存在正则缺陷,解析出的 jobid 为 undefined。这导致分析生成了历史记录,但从未成功持久化到 sessions 存储层,导致 reopened 侧边栏时一片空白。 解决:我将数据库升级至 v4。在首次加载时自动执行安全幂等的数据修复: 提取受影响的历史记录,通过修复后的正则从 URL 中重新纠正并写回 jobid 为这些记录无损合成缺失的 sessions 字段 整个迁移通过 existingSessionIds.has(jobId) 严密校验,绝不覆盖或混淆用户任何现存的自定义会话或简历修改数据。 🧠 4. 零成本天花板:集成 Qwen Chat (通义千问) 网页智能体后端 (v0.4.0) 问题:很多用户想要使用业内最顶尖的推理模型(如 Qwen3.7 Max)进行深度职位匹配与简历生成,但苦于没有云端 API Key,或者不想承担高昂的 Token 费用。 解决:我将 Job Bro 变成了 Qwen 网页智能体的桥接客户端: BYOK 终结者:只要你的浏览器登录了 chat.qwen.ai,Job Bro 就可以直接 proxy 你的浏览器会话来发送分析和会话指令。完全免费、无限额度、开箱即用。 抗封禁与伪装:在 Background 层面通过 declarativeNetRequest 动态欺骗劫持请求的 Origin 和 Referer 头。同时我们本地逆向并实现了 Qwen 反爬虫所需的 ssxmoditna / ssxmoditna2 安全指纹 LZW 压缩 cookie 算法,每 10 秒向 Service Worker 发送 keep-alive ping 保证长会话不被中断。 Qwen 智能体赋能:Qwen 3.7 Max 网页端是一个高度自治的 Agent,会自行进行搜索、思考并输出。这使得该后端下的职位分析质量甚至超越了很多付费的云端 API(Gemini/Claude 等在分析时容易出现因预训练数据偏见带来的偏袒,而 Qwen 在各大科技大厂职位评估上展现出了惊人的中立与客观)。 🛡️ 5. 自研 Provide Verdict 结构化输出通道 (v0.4.0) 问题:各大云端模型(如 OpenAI 兼容端)在启用 Tool Calls(联网搜索等工具)时,通常与 Strict JSON Schema(结构化输出)是互斥的。模型很容易在调用完搜索后输出不合规的 JSON,导致客户端解析崩溃。 解决:我设计了一套自研的拦截机制。在需要返回 JSON Verdict 时,我向模型伪造并声明一个名为 provideverdict 的虚拟 Function Tool,将其参数定义为我们期望的 JSON Schema。Agent 循环在检测到模型发起该调用时,直接将其 Arguments 截获为最终的合规数据并提前终止循环。该机制在 OpenAI 兼容云端架构下极其稳定。 📦 核心功能一览 1. 深度求职五维 AI 评估 薪资评估:结合公开数据、地点、年限等,智能推算职位的合理薪资范围,与你填写的期望相比对。 技能匹配:精准标出你简历中匹配的亮点、缺失的技术栈,以及职位的溢出要求。 偏好匹配:评估远程/混合办公、公司规模、特定黑名单行业及一票否决项的合规度。 风险检测:全网检索该企业近期的裁员历史、招聘热度以及职位替代性。 成长评估:分析该职位能带给你的核心竞争力、技能树提升路径与潜在天花板。 2. 简历智能多版本润色与修改 在完成职位分析后,可一键将你的原始简历、当前的职位要求及 AI 的匹配评估报告合并,自动为你生成一份高度契合该岗位的定制化简历(Markdown 格式)。你可以在编辑区输入意见进行交互式追问,简历会自动更新迭代,并沉淀累计更新日志。 🧗 使用方式 1. 安装:git clone + bun install && bun dev(开发模式),或直接在 chrome://extensions 载入编译后的 .output/chrome-mv3。 2. 体验: LinkedIn:打开任意职位详情页或搜索列表页,打开侧边栏 Job Bro 点击「提取并分析」。 Greenhouse:打开如 Anthropic 招聘详情页 (job-boards.greenhouse.io/<org>/jobs/...),直接点击侧边栏进行无缝提取。 3. Qwen 免 Key 配置:在设置面板中选择 Qwen Chat 模式,确保浏览器已登录 chat.qwen.ai 即可。
Discuss this product