$npx -y skills add XBuilderLAB/cheat-on-skill --skill skill-scancheat-on-skill 的核心。连 BOSS 直聘真实招聘数据 + 网页信号,按用户能力画像找「高薪 × 你学得动 × AI 增强」交集里的候选岗位。每个岗位给:薪资量级 / 需求热度 / 你的差距 / 可学性分 / 诚实学习周期,并过 AI 影响分类与反诈红线。触发词:"帮我找岗位"/"找AI时代高薪工作"/"有什么我能学的高薪岗"/"skill scan"/"扫一遍招聘"。前置:需要 .skill-state.json(无则先路由到 skill-init)。
| 1 | # /skill-scan — 高薪 × 可学 × AI 增强 的交集挖掘(核心) |
| 2 | |
| 3 | ## 核心方法(先读这条) |
| 4 | **不搜"AI 高薪职业 Top10"那类水文**——它们利益不中立,是卖课/培训机构的获客漏斗。 |
| 5 | 真正诚实的需求信号是 **BOSS 直聘的真实在招岗位**:某岗位在招、给得起价 = 有人真在花钱买这个能力; |
| 6 | 岗位数涨=需求升,降=红海。再叠加你的能力画像,挑出"高薪 × 你学得动 × AI 时代仍要"三个圈的交集。 |
| 7 | |
| 8 | ## 铁律 |
| 9 | 1. **主信源是真实招聘数据**(BOSS adapter + 招聘趋势),"职业推荐"水文不作依据。 |
| 10 | 2. **绝不凭记忆**。薪资量级、岗位热度、技能要求一律实时取(BOSS / 网页检索加年份)。 |
| 11 | 3. **每个岗位先过 AI 影响分类**(`ai-impact-taxonomy.md`):替代型直接劝退,只推增强 / 新生。 |
| 12 | 4. **每个岗位按用户起点算可学性**(`learnability-rubric.md`),低于阈值不列为首选。 |
| 13 | 5. **按档位收敛**(`role-tiers.md`):别给 S0 推够不着的算法岗,别给 S3 推标注。 |
| 14 | 6. **任何带"培训/内推/包就业"的机会过反诈**(`anti-scam-rubric.md`)。 |
| 15 | 7. **诚实标注 BOSS 数据边界**:薪资数字被字体混淆(▯ 占位),只拿到量级;精确值要用户手动看详情页。 |
| 16 | 8. **详情页只读需用户点名**:只读取用户明确选择的详情链接;用户可以从候选里选任意数量,也可以少选或不选。读取时保持低频顺序执行,只提取岗位标题、公司、薪资、地点/地址、JD/要求文本;不读取/保存 HR 信息,不点"立即沟通",不做无选择的批量抓取。 |
| 17 | |
| 18 | ## 流程 |
| 19 | |
| 20 | ### Step 0 — 读上下文 |
| 21 | - 读 `.skill-state.json` 拿画像 + **`profile.start_tier`**(无 → 路由 `skill-init`)。 |
| 22 | - 读 `../../shared-references/role-tiers.md`(按档位分流)。 |
| 23 | - 读 `../../shared-references/ai-impact-taxonomy.md`(方向闸门)。 |
| 24 | - 读 `../../shared-references/learnability-rubric.md`(可学性打分)。 |
| 25 | - 读 `../../shared-references/anti-scam-rubric.md`(反诈,用于培训/内推类)。 |
| 26 | - 读 `lessons.md`(若存在):用户过往复盘沉淀,优先参考。 |
| 27 | - 任何写入 `found_at` / `found_at_full` 前,先用系统时间取当前时间: |
| 28 | ```bash |
| 29 | date '+%Y-%m-%d %H:%M %Z %z' |
| 30 | ``` |
| 31 | `found_at` 写日期,`found_at_full` 写具体时间和时区,跟用户系统时区走(例:`2026-06-26 22:06 CST +0800`)。对用户展示时写成 `2026-06-26 22:06(本机时区 + UTC 偏移,如 中国标准时间 CST,UTC+8)`,不要写死成某个固定国家的时间。 |
| 32 | |
| 33 | ### Step 1 — 按档位锁定搜索词 |
| 34 | 先按 `start_tier` 限定方向范围(role-tiers),再结合用户可迁移能力,列 3–6 个 BOSS 搜索关键词。 |
| 35 | - S0 → `AI内容运营` `AIGC运营` `AI标注` `数字人运营` `AI客服` |
| 36 | - S1 → `AIGC运营` `AI营销` `Prompt工程` `AI设计` `AI视频` |
| 37 | - S2 → `AI应用开发` `LLM应用` `大模型应用` `AI工程` `Agent开发` |
| 38 | - S3 → `<用户行业>AI` `AI解决方案` `行业AI产品` `AI合规` |
| 39 | > 结合用户的 transferable 能力调词,别用模板硬套。把要搜的词先念给用户确认。 |
| 40 | |
| 41 | ### Step 2 — 取真实招聘数据(BOSS adapter,human-in-the-loop) |
| 42 | 用 `../../adapters/boss`。**这是半自动、需用户配合的,先把步骤告诉用户:** |
| 43 | ```bash |
| 44 | cd ../../adapters/boss # 相对 skill 目录;实际路径见安装位置 |
| 45 | ./launch-chrome.sh # 起【有界面】Chrome,用户扫码登录 BOSS,弹滑块手动过 |
| 46 | node diagnose-cdp.mjs 9222 # 可选:确认当前环境能读 Chrome 调试端口 |
| 47 | node read-boss.mjs "AIGC运营" 100010000 9222 1 # 搜词读第 1 页列表 → JSON(城市码默认全国) |
| 48 | node read-boss-detail.mjs 9222 "https://www.zhipin.com/job_detail/..." # 用户明确选中后,只读选中的 JD |
| 49 | ``` |
| 50 | - 每个关键词跑一次,拿回 JSON(岗位名 / 薪资量级 / 公司 / 列表页标签 / 详情链接 / diagnostics)。列表页标签通常只够判断经验/学历/实习周期,完整技能要求仍需用户手动贴 JD。 |
| 51 | - **薪资是 `▯▯-▯▯K` 量级**(BOSS 字体混淆,adapter 不破解)——位数结构泄露量级,够区分档位;要精确值让用户手动开 2–3 个详情页看。 |
| 52 | - **JD 真实要求列表页拿不到**:先看列表页筛候选,给用户 2–5 条值得看的岗位;用户明确说"读取这几个 JD"后,才用 `read-boss-detail.mjs` 读取 1–3 个详情页。若详情读取失败,再让用户手动贴 JD。 |
| 53 | - 若 `diagnostics.maybeNeedLogin`/`blocked`/`cardCount=0`:提示用户登录/过验证/重跑;选择器腐烂就把 diagnostics 发回校准。 |
| 54 | - 若连接不上 `127.0.0.1:9222`:先跑 `node diagnose-cdp.mjs 9222`。若普通终端可读但 Codex/Claude 沙箱内不可读,说明需要非沙箱权限读取本机 Chrome 调试端口,不代表 adapter 选择器坏了。 |
| 55 | - ⚠️ 低频、只读列表页,不翻页/不进详情/不私聊(反爬风控 + ToS + 反诈 A6)。 |
| 56 | > 若用户当下不方便登录跑 adapter:退而用 WebSearch 搜"<岗位> 招聘 要求 薪资 2026 / 行情报告",但**明确标注这是二手转述、不如 BOSS 一手**。 |
| 57 | |
| 58 | ### Step 2.5 — 逐页筛选节奏(最多 3 页) |
| 59 | 不要一次性把 BOSS 搜索结果全读完。按下面节奏推进: |
| 60 | 1. 读取当前关键词第 N 页列表(从第 1 页开始)。 |
| 61 | 2. 用用户画像 + 反诈 rubric 粗筛,向用户提供 2–5 条"值得打开 JD"的候选,并说明为什么;同时点名明显劝退项(如零经验高薪、提成、培训、获客、金融外呼)。 |
| 62 | 3. 每看完一页都提示用户可以调整筛选要求(如不要实习、只看深圳、排除销售/提成、薪资下限、只看全职、只看英文/海外方向)。若用户调整要求,后续页面按新要求筛。 |
| 63 | 4. 等用户明确选择后,调用 `read-boss-detail.mjs` 读取详情页。用户可以选择候选里的任意数量,也可以少选或不选;没有明确选择就不要读详情。一次选择较多时,顺序低频读取并在输出中分批整理,避免并发/高频触发风控。 |
| 64 | 5. 基于 JD 做差距分析和可学性初判。已经读过/用户选过的岗位,后续页面不再重复推荐,只在最终总结里统一回顾。 |
| 65 | 6. 用户完成第二轮选择并读完 JD 后,如果已经积累了足够多可比较岗位(通常 4–8 个 JD 或 2–3 个清晰方向),主动提示可以现在生成阶段报告/岗位报告;用户也可以选择继续看第 3 页。 |
| 66 | 7. 继续下一页,直到看完 3 页、用户要求停止、或已经找到足够强的 2–3 个候选方向。 |
| 67 | 8. 看完最多 3 页后,给用户一个阶段总结:已看页数、候选岗位、已读 JD、待读 JD、劝退模式、用户中途调整过的筛选要求、推荐下一步。 |
| 68 | |
| 69 | ### Step 3 — 网页交叉验证 AI 影响与趋势 |
| 70 | 对每个候选岗位,按 `ai-impact-taxonomy.md` 判增强/新生/替代: |
| 71 | - 看 BOSS 同词岗位数量量级(涨/缩)。 |
| 72 | - WebSearch(加年份):`<岗位> 招聘趋势 2026`、`<岗位> 会不会被AI取代`、行业用工报告(只用利益中立来源)。 |
| 73 | - **替代型直接标"劝退"**,即使现在还有岗。 |
| 74 | |
| 75 | ### Step 4 — 对每个候选岗位算可学性(核心增量) |
| 76 | 按 `learnability-rubric.md` 的 L1–L5 打分(0–10),结合 JD 要求 vs 用户 transferable: |
| 77 | - 列**你的差距**(缺哪几块,逐条;哪些可迁移)。 |
| 78 | - 给 **可学性分 + 判定**(高可学/中等/吃力/劝退)。 |
| 79 | - 给**诚实周期**:以用户每周 N 小时算,大概几个月到能投简历。 |
| 80 | |
| 81 | ### Step 5 — 反诈过滤(仅对培训/内推/外包类) |
| 82 | 若某条路径牵涉付费培训/内推/包就业,过 `anti-scam-rubric.md`,标判定。岗位本身(公司直招)一般不触红线,但若公司查无此人/JD 零门槛高薪等命中 B 信号,也如实标。 |
| 83 | |
| 84 | ### Step 6 — 输出(每个候选岗位用统一格式) |
| 85 | ``` |
| 86 | 岗位:<名称> |
| 87 | AI 影响:增强 ⬆️ / 新生 🆕 / 替代 ⬇️ |
| 88 | 薪资量级:<▯ 量级 + 单位>(精确值需手动看详情页) |
| 89 | 需求热度:<同词岗位量级/趋势 + 来源年份> |
| 90 | 你的差距:<逐条;可迁移的标出来> |
| 91 | 可学性:x/10(L1–L5 一句话) |
| 92 | 判定:✅ 高可学 / ⚠️ 中等 / ⛔ 吃力 / ❌ 劝退 |
| 93 | 诚实周期:<以每周 N 小时算,几个月到能投简历> |
| 94 | ``` |
| 95 | 按可学性 × 薪资综合排序,**首推 2–3 个交集岗位**,劝退的也列出来并说明为什么(避免用户自己踩)。 |
| 96 | |
| 97 | ### Step 7 — 落盘 |
| 98 | 把候选岗位写入 `.skill-state.json` 的 `candidate_roles[]`(含 ai_impact / salary_band / demand / gap / learnability_score / learnability_verdict / honest_timeline / scam_verdict / found_at=今天日期 / found_at_full=具体时间和时区 / status=candidate)。 |
| 99 | 提示用户:**"我选 XX 这个岗位做学习计划"** → 走 `skill-plan`。 |