linkedin-job-search-skill
LinkedIn 岗位发现与匹配排序。根据用户给的一份种子 JD 和简历,提取目标岗位画像,自动生成多组 LinkedIn Jobs 搜索,采集、去重并按证据给岗位分层,最终输出可直接投递的 shortlist。用户说‘帮我找工作’、‘在 LinkedIn 搜适合我的岗位’、‘找相似职位’、‘根据简历推荐岗位’、‘job search’、‘find jobs like this’时必须使用。只搜索和推荐,不自动投递、不代替用户登录、不绕过验证码。
git clone --depth 1 https://github.com/yanliudesign/offer-toolkit-skill /tmp/linkedin-job-search-skill && cp -r /tmp/linkedin-job-search-skill/job-search-skill ~/.claude/skills/linkedin-job-search-skillSKILL.md
# LinkedIn Job Search Skill
把「一份我喜欢的 JD + 我的简历」转成一份有证据、可行动的 LinkedIn 岗位 shortlist。
这个 skill 是 Offer Toolkit 的第 0 步:
```text
种子 JD + 简历 → 搜索画像 → LinkedIn 候选池 → 匹配排序 → shortlist
↓
Job Description Skill 深度解码
```
## 边界
- 只做岗位搜索、读取公开职位信息、去重、匹配排序和推荐。
- 永远不自动点击 Apply,不填写申请表,不发送消息,不代表用户投递。
- 永远不索取或处理 LinkedIn 密码、验证码、Cookie 或 session token。
- 遇到登录墙、验证码、频率限制或 robots 限制就停止该路径,不尝试绕过;改用公开搜索结果或输出可点击的 LinkedIn 查询链接。
- 岗位是否仍开放只能按搜索当时页面判断;报告必须写明搜索时间。
## 输入流程
### Step 1 · 收集种子 JD
先要一份用户真正感兴趣的 JD 链接或全文。它不是唯一目标,而是用来提取岗位语义:title、level、scope、domain、核心能力和排除项。
若用户没有种子 JD,接受 2-3 个目标 title + 一句方向描述作为降级输入,并标注「无种子 JD,搜索画像置信度较低」。
### Step 2 · 收集简历
接受 PDF、Word、纯文本或已结构化简历。只从用户提供的事实提取:
- 当前/最近 title 与大致 level
- 年限和最近 3 年的核心 scope
- 3-6 个有直接证据的能力
- 行业、产品阶段、客户类型和团队类型
- 地点、语言、签证等明确约束
不得把种子 JD 的要求写回用户画像,除非简历里有直接证据。
### Step 3 · 补齐硬筛选条件
只追问会显著改变结果集的缺失条件,并且一次只问一个:
1. 工作地点,以及是否接受 remote / hybrid / relocation
2. 目标 level 或可接受的上下浮动
3. 时间范围:24 小时 / 7 天 / 30 天
4. 必须排除的公司、行业、合同类型或签证条件
默认值:最近 7 天、full-time、目标 level 上下浮动一级。默认值必须在最终报告显式列出,不能静默假设。
## 搜索执行
### Step 4 · 生成搜索画像
先在内存中形成这份结构:
```yaml
target_titles: [] # 2-5 个,不堆同义词
level: ""
locations: []
workplace: [] # remote / hybrid / on-site
date_posted: "7d"
employment_types: []
core_capabilities: [] # 3-6 个,必须有简历证据
domains: [] # 0-3 个
company_preferences: []
exclusions: []
seed_signals: [] # 从种子 JD 提取,但不等同于简历能力
```
回显一段不超过 8 行的搜索画像供用户快速纠错。用户没有纠正就继续,不要求第二次确认。
### Step 5 · 构造查询矩阵
生成 6-10 组互补查询,而不是把所有词塞进一个 query:
1. **Exact title**:目标 title + 地点
2. **Adjacent title**:相邻 title + 地点
3. **Capability-led**:title + 1 个核心能力
4. **Domain-led**:title + 目标 domain
5. **Scope-led**:title + 0→1 / platform / enterprise / growth 等 scope 信号
每组查询只放 1-2 个判别词。过长查询会漏掉用词不同但实际匹配的岗位。
LinkedIn 查询 URL 使用公开 Jobs Search 参数;优先设置 keywords、location、date posted、workplace 和 employment type。记录每组实际执行的 query 与 URL。
### Step 6 · 采集候选池
使用浏览器打开 LinkedIn Jobs Search。逐组读取可见结果卡并采集:
- title
- company
- location / workplace
- canonical job URL 或 job id
- posted age
- salary(页面有才记)
- 卡片摘要或命中的关键词
按 canonical URL/job id 去重;没有 job id 时按 `company + normalized title + location` 去重。
停止条件取最先满足者:
- 已有 30 个唯一且通过硬条件的候选
- 每组查看前 2 页或前 25 条
- 页面要求登录、出现验证码或限制访问
不要为了凑满 30 个保留地点、level、岗位类型明显不符的结果。
若 LinkedIn 不可访问:
1. 使用公开 Web 搜索,限定 `site:linkedin.com/jobs/view`,执行同一查询矩阵;或
2. 输出查询矩阵的可点击 LinkedIn URL,让用户打开;
3. 明确标注本次未完成实时采集,不得伪造岗位。
### Step 7 · 两阶段评分
**快速筛选全部候选:**
- 硬条件通过/失败:地点、工作方式、employment type、明确签证门槛
- Title/level fit:0-30
- 核心能力关键词命中:0-30
- Domain/scope 相似度:0-20
- 新鲜度:0-10
- 用户偏好:0-10
只把快速筛选前 10 名带入深度评分。对这 10 个逐个打开职位页,读取可见的完整 JD;读不到完整 JD 的岗位可以保留,但必须标 `Description unavailable`,且最高只能进入 Tier B。
**深度评分前 10:** 读取 [frameworks/ranking-rubric.md](frameworks/ranking-rubric.md),逐条用简历证据对照 Must Have、Nice to Have 和 Hidden Signals。给区间,不给伪精确单点。
## 输出
默认输出一份 Markdown shortlist;除非用户明确要 HTML,不为一次搜索制造大型报告。
```markdown
# LinkedIn Job Shortlist — YYYY-MM-DD
## Search profile
[目标、地点、时间范围、默认假设]
## Best bets
| Tier | Match | Role | Company | Location | Posted | Why it fits | Main risk | Link |
## Worth a look
[Tier B 表格]
## Skipped patterns
[被批量排除的模式和原因,不逐条堆岗位]
## Search log
[执行过的 queries、采集时间、LinkedIn/公开搜索、访问限制]
```
分层规则:
- **Tier A · Apply first**:深度匹配区间下限 ≥ 70%,无未命中的门槛型 Must Have
- **Tier B · Review**:下限 55-69%,或 JD 不完整但快速评分强
- **Tier C · Skip**:下限 < 55%,或硬条件失败;不进入主表,只汇总排除原因
每个 Tier A 岗位必须给:
- 2 条来自简历的直接匹配证据
- 1 个招聘经理可能担心的风险
- 1 个下一步:直接投 / 先找内推 / 先补 portfolio / 交给 JD Skill 深度解码
最终推荐 5-10 个,不把 30 个搜索结果原样倾倒给用户。链接必须指向具体职位,不只链接搜索页。
## 与 Toolkit 的衔接
- 用户选中某个岗位后,把该 JD + 原简历交给 `job-description-skill` 生成完整 Offer Strategy Report。
- 用户决定投后,把目标 JD + 原简历交给 `resume-skill` 做定向简历。
- 不在本 skill 内复制完整 JD 报告或重写整份简历;岗位发现、岗位决策和简历制作是三个不同步骤。求职工具包。把「找岗位 → 签 offer」拆成六个独立子 skill:⓪ Job Hunt 批量发现岗位,① Job Description 解码具体 JD,② Resume 定向简历,③ BQ 准备行为面试,④ Offer Compare 对比多份 offer,⑤ Salary Negotiation 谈 package。任何求职相关请求(找工作、该不该投、改简历、准备面试、选 offer、谈薪)都从这里进,再路由到对应子 skill。关键词:求职, offer, career, job hunt, LinkedIn jobs, JD, resume, CV, behavioral interview, BQ, STAR, offer compare, salary negotiation, 薪资谈判, 选 offer。
行为面试 skill。帮求职者挖掘真实经历、用 STAR/CAR 结构化、映射能力标签、构建可复用的中英双语故事库(Story Bank);并能接入 JD + 简历,针对具体岗位生成 Top 20 BQ 选题 + 基于真实经历的 STAR 准备模板(HTML 报告)。不是背答案,而是建立可复用的职业叙事体系,让任何行为面试题都能自然作答。关键词:behavioral question, BQ, 行为面试, STAR, 故事库, Amazon LP, 职业故事, tell me about a time, 面试准备, JD 面试题预测, top 20 题。
Job Description 解码器 + Offer 策略系统。把任何 JD 翻译成「这家公司到底在招什么人 / 我的匹配度 / Gap 在哪 / 为什么投/不投 / 面试会问什么 / 下一步怎么走」。只有 3 步:贴 JD → 给简历 → 自动生成并打开一份 HTML Offer Strategy Report。是整个求职链路的入口,向下衔接 Resume Skill 和 BQ Skill。关键词:job description, JD, 职位描述, 匹配度, ATS, resume tailor, 简历定制, 招聘经理, 投不投, should I apply, 面试预测, offer strategy。
批量发现、整理和持续维护求职岗位清单。根据用户的简历、目标方向或种子 JD,搜索 LinkedIn 与公开网页,去重并建立尽量完整的候选池,用证据区分已核验事实和方向性推断,最后生成可搜索、可筛选的单文件 HTML job-hunt-skill 报告。用户说‘帮我批量找岗位’、‘整理职位清单’、‘使用 job-hunt-skill’、‘根据简历搜工作’、‘把这些 LinkedIn 职位做成表格’、‘持续跟踪岗位’时必须使用。只发现和分析岗位;绝不自动申请、处理登录凭据或绕过访问限制。
Offer 对比决策器。用户同时拿到两份(或多份)offer 纠结怎么选时,扮演 Senior Career Decision Advisor:结构化对比 comp / 成长 / AI 敞口 / 公司强度 / 团队风险 / 晋升速度 / 生活方式,识别 front-loaded vs long-term upside、resume value、switch-out 难度、hidden risks,最后给一条**明确、有立场、不中性**的推荐(并附「你是 X 类人选 A,你是 Y 类人选 B」的分叉判定)。三步:贴两份 offer → 补 priorities & 现状 → 自动生成并打开一份 HTML Offer Decision Report。是 offer-toolkit 里 JD Skill / Resume Skill / BQ Skill 拿到结果之后的下一环。关键词:offer compare, 选 offer, 两个 offer, offer decision, TC compare, 该去哪家, which offer, 4-year TC, RSU, sign-on, front-loaded, long-term upside, career decision。
简历生成与美化。两种入口:把已有简历(PDF/Word/文本)解析、诊断、套用模板美化;或者还没有简历时,通过 LinkedIn 导入或一问一答的对话帮你从零建出一份。输出单页打印优化的 HTML(浏览器里 Cmd+P 直接存成 PDF),提供 4 套模板:Classic/ATS 友好、Modern 侧栏、Elegant 衬线、Tech 紧凑。关键词:resume, CV, 简历, 美化简历, 做简历, 简历模板, resume template, LinkedIn 简历, 求职简历, ATS, 改简历, polish resume。
薪资谈判教练。模拟前 FAANG 招聘官 + 薪酬策略师,把「拿到 offer → 签字」这一步拆成 6 个动作:Offer 诊断(Base / RSU / Sign-on / Bonus 每项标 LOW/MED/HIGH leverage)→ 谈判杠杆图(我的力量 / 招聘官的力量 / 弱点)→ 策略排序(Base → RSU → Sign-on → Bonus,按 context 调整)→ 脚本生成(电话 / 邮件 / 招聘官回话模拟)→ Counter 模拟("这是最好的了" / "预算固定" / "会考虑其他候选人" 三种硬回答)→ 最终建议(要什么 / 别推什么 / 何时停)。三步:贴 offer → 说 context(有没有竞争 offer / deadline / 级别 / 风险偏好 / 最看重什么)→ 自动生成并打开一份 HTML Negotiation Playbook。关键词:salary negotiation, offer negotiation, comp negotiation, RSU, sign-on, base salary, counter offer, competing offer, TC, total comp, 薪资谈判, offer 谈判, 谈薪, 反 offer, 加薪, 谈 package, levels.fyi, 招聘官话术, recruiter script。