☰
用 Claude Code 驱动 Playwright 与 Chromium 自动搜岗:career-ops 实战拆解与 TaoToken 接入
2026/10/12 19:24:00 网站建设 项目流程

1. 为什么要把搜岗这件事交给 Claude Code 和 Playwright

求职最耗时的环节往往不是面试,而是每天重复打开几十个招聘页面、复制 JD、对照自己的简历判断匹配度。career-ops 这个开源项目的思路很直接:把 Claude Code 当成调度中枢,用 Playwright 驱动 Chromium 去真实浏览招聘门户,抓取岗位描述,再让模型按结构化维度打分。它不是一个"海投"工具,而是一个筛选器——从几百个岗位里挑出值得你花时间的那几个。

我关注它是因为它把三件事串成了一条流水线:浏览器自动化负责"看到",Claude Code 负责"理解与判断",本地 Markdown/TSV 负责"记录"。对想搭建本地自动化求职流水线的开发者来说,这套组合比纯 API 爬虫更稳,因为 Playwright 渲染的是真实页面,能处理 Greenhouse、Ashby、Lever 这类前端动态加载的招聘站。

适合谁:有 Node.js 基础、愿意折腾命令行、希望把求职过程数据化的人。如果你只是想手动投几份简历,这套系统反而偏重。但如果你每天要面对大量岗位、想建立可复用的评估标准,那它值得投入一个下午配置。

核心检索词先明确:career-ops 是基于 Claude Code 的 AI 求职管道,用 Playwright 与 Chromium 完成招聘岗位自动搜索与初步分析。本文会给出可复制的环境配置、任务脚本、运行验证,以及把模型调用 endpoint 改到 TaoToken 统一通道的完整步骤。

2. 环境准备:Node、Playwright 与 Chromium 安装踩坑

career-ops 的运行依赖三样东西:Node.js 运行时、Playwright 框架、以及 Playwright 专用的 Chromium 浏览器。很多人卡在第一步不是不会装,而是装完发现 PDF 生成失败,原因通常是 Chromium 没装全。

先克隆项目并安装依赖:

git clone https://github.com/santifer/career-ops.git cd career-ops npm install npx playwright install chromium

这里重点说npx playwright install chromium。它下载的不只是一个浏览器,而是四个组件:Chrome for Testing(约 179 MiB,Playwright 专用的 Chromium)、FFmpeg(约 1.3 MiB,用于视频录制)、Chrome Headless Shell(约 111.5 MiB,无头模式运行)、以及 Windows 下的 Winldd 依赖检查工具。career-ops 生成 ATS 优化 PDF 时用的是无头 Chromium 渲染 HTML 模板,所以这个 Headless Shell 必须存在,否则后面/career-ops pdf会直接报找不到浏览器。

为什么用npx而不是全局安装?三个实际好处。第一,无需全局安装,npx会自动查找项目node_modules里的 Playwright 版本,避免全局版本和项目版本冲突。第二,版本管理更灵活,项目锁定哪个版本就用哪个。第三,临时执行,本地没装时会临时下载,执行完不污染全局环境。

装完后跑一次自检:

npm run doctor

这个命令会验证所有前置条件,包括 Node 版本、Playwright 是否可用、Chromium 路径是否正确。如果输出里有任何 FAIL,先解决再往下走。

接下来复制配置文件:

cp config/profile.example.yml config/profile.yml cp templates/portals.example.yml portals.yml

profile.yml是你的个人信息与偏好,portals.yml是要扫描的公司列表。然后在项目根目录创建cv.md,把你的简历用 Markdown 写进去——career-ops 评估匹配度时读的就是这个文件。

这里有个我踩过的坑:cv.md不要写成流水账,尽量包含具体项目、量化结果、技术栈关键词。模型做的是语义匹配而非关键词匹配,但语义匹配也需要足够的上下文才能判断你和岗位的真实契合度。简历越具体,A-F 评分越准。

3. 把模型调用切到 TaoToken 统一通道

career-ops 默认走 Claude Code 的模型调用。如果你希望统一管理模型通道、方便切换和计费,可以把 endpoint 改到 TaoToken。这一步的核心是配置 Base URL、API Key 和 Model ID 三件套。

先到 TaoToken 控制台创建 API Key,地址是 https://taotoken.net/api-keys 。拿到 Key 后,Claude Code 的配置通常放在用户目录下的 settings 文件里。以常见的~/.claude/settings.json为例,写入如下 JSON:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }

如果你用的是 Codex 风格的auth.json,结构类似,把 Base URL 指向https://taotoken.net/api,Key 填 TaoToken 的密钥,Model ID 按你实际要用的模型填写。三件套缺一不可:Base URL 决定请求发到哪,Key 决定身份,Model ID 决定用哪个模型。

配置完成后,在 career-ops 目录里启动 Claude Code:

claude

进入交互后,先让它读一遍项目结构,确认它能识别CLAUDE.md、modes/和cv.md。你可以直接说:"读一下 CLAUDE.md 和 modes/_shared.md,告诉我这个系统怎么工作。"如果模型能正确复述模式列表和评估流程,说明通道已经通了。

这里要注意:TaoToken 是统一的模型调用通道,不是编辑器替代品,也不做任何网络代理。它只负责把你的模型请求转发到对应模型。配置时只改 Base URL 和 Key,不要动其他无关设置。

验证通道是否真正生效,最直接的办法是发一个最小请求。在 Claude Code 里输入一句简单指令,比如"用一句话说明 Playwright 和 Puppeteer 的区别"。如果几秒内返回合理回答,说明模型调用正常。如果报 401,说明 Key 有问题;如果报连接失败,检查 Base URL 是否写成了https://taotoken.net/api(注意不要多加路径)。

4. 运行一次完整搜岗任务并验证结果

配置就绪后,跑一次真实的搜岗任务。career-ops 的入口是一个 slash command,支持多种模式:

/career-ops scan

这个命令会读取portals.yml里的公司列表,用 Playwright 驱动 Chromium 逐个打开招聘页面,抓取新岗位。扫描完成后,结果会进入待处理队列。

接着做批量评估:

/career-ops batch

它会用claude -p工作线程并行评估多个岗位,每个岗位生成一份报告,包含角色概述、简历匹配、职级策略、薪资调研、个性化建议和面试准备(STAR+R 方法)。评估结果同时写入reports/目录的 Markdown 文件和 tracker 的 TSV 记录。

如果你想针对单个岗位做完整管道,直接粘贴 JD 或 URL:

/career-ops {粘贴岗位链接}

系统会自动检测输入类型,跑完"评估 + PDF + tracker 记录"全流程。生成的 PDF 在output/目录,用的是 ATS 优化的 HTML 模板,字体是 Space Grotesk 加 DM Sans。

验证成功的标志有三个。第一,reports/下出现了新的.md报告,打开能看到结构化的 A-F 评分和分维度分析。第二,output/下生成了对应的.pdf,能正常打开且排版完整。第三,tracker 的 TSV 文件里多了一行记录,状态字段是规范化的值。

我实测下来,一次扫描加批量评估 10 个岗位,从启动到出报告大约几分钟,具体取决于岗位页面加载速度和模型响应。如果某个岗位页面一直加载不出来,通常是该招聘站有反爬或需要登录,Playwright 会超时,这时可以在portals.yml里把该公司暂时移除。

还有一个内置的终端仪表盘,用 Go 写的,可以可视化浏览管道:

cd dashboard go build -o career-dashboard . ./career-dashboard

Windows 下编译后要把文件改成career-dashboard.exe再执行。仪表盘支持 6 个筛选标签、4 种排序模式、分组与平铺视图,以及行内状态修改。

5. 常见报错排查:401、local proxy failed 与 reading choices

配置和运行过程中最容易撞上几类报错,逐个说清楚。

401 Unauthorized:模型调用返回 401,几乎都是 Key 的问题。检查ANTHROPIC_API_KEY是否填了完整的 TaoToken 密钥,有没有多余空格,是否过期。如果 Key 正确但仍 401,确认 Base URL 是https://taotoken.net/api,不要写成带/v1或其他路径的形式。

local proxy failed / connection refused:这类报错通常出现在 Base URL 写错或本地网络配置异常时。先确认ANTHROPIC_BASE_URL拼写正确,再确认没有其他工具在占用同名环境变量。如果你之前配过别的通道,环境变量可能被覆盖,用echo $ANTHROPIC_BASE_URL检查实际生效的值。

Error reading choices / unexpected response shape:模型返回的结构和预期不符,常见于 Model ID 填错。比如填了一个不存在的模型名,通道返回的是错误对象而非标准响应,Claude Code 解析时就报 reading choices 失败。解决方法是核对 Model ID 是否为你账号下可用的模型,改回正确值后重启 Claude Code。

OAuth 相关报错:如果你之前用 OAuth 方式登录过 Claude Code,切换通道后可能残留旧凭证导致冲突。清理旧的认证缓存,改用 API Key 方式,确保settings.json里没有同时存在 OAuth token 和 API Key。

Playwright 找不到 Chromium:报错信息里出现 "browser not found" 或 "Executable doesn't exist",说明 Chromium 没装或路径不对。重新执行npx playwright install chromium,确认下载完成。如果公司网络限制下载,可以设置PLAYWRIGHT_DOWNLOAD_HOST指向可访问的镜像源。

PDF 生成空白或排版错乱:多半是字体文件缺失。检查fonts/目录下是否有 Space Grotesk 和 DM Sans,模板引用的字体路径是否正确。另外确认 Headless Shell 已安装,因为 PDF 渲染走的是无头模式。

排查时有个通用思路:先看报错发生在哪一层。是模型调用层(401、choices)、浏览器层(browser not found、timeout)、还是文件层(字体、路径)。分层定位能省很多时间。

6. 把这条流水线用起来:从配置到日常

career-ops 真正的价值不在于一次跑通,而在于它把求职变成了可迭代的系统。第一次评估结果通常一般,因为系统还不了解你。你需要持续喂上下文:更新cv.md、补充article-digest.md里的成果证明、在profile.yml里写清楚你的偏好和想避开的方向。信息越充分,A-F 评分越贴近真实匹配度。

日常使用上,我建议把/career-ops scan设成每天固定跑一次,把新岗位拉进队列,然后批量评估,只对评分 4.0 以上的岗位生成定制 PDF。系统本身强烈建议不要申请低于 4.0 的岗位,这不是技术限制,而是时间管理的建议——你的时间和招聘方的时间都值得被尊重。

模型通道方面,把 endpoint 统一到 TaoToken 后,切换模型、查看用量、管理密钥都在一个地方完成,不用在多个配置间来回改。需要长期跑编码或 Agent 任务时,可以了解 Coding Plan;想直接验证模型对话效果,用模型对话页面即可;接入细节看接入文档,密钥管理在 API Keys。

最后留一个实用技巧:modes/目录下的 14 个模式文件都是纯 Markdown,你可以直接让 Claude 改它们。比如"把 archetypes 改成后端工程方向""把评分权重里薪资调研的占比调低""给 portals.yml 加这 5 家公司"。系统读的就是这些文件,所以它知道该改哪里。这种"让 Claude 自己定制自己"的设计,是 career-ops 比一般脚本工具更耐用的原因。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询