# Job Advisor

从招聘平台(闲鱼兼职、Boss直聘、智联、拉勾、58同城、豆瓣兼职等)抓取招聘信息,根据用户输入的个人特征(技能、地点、时间、薪资期望、工作形式偏好)匹配适合的长期雇佣或临时工...

- Repository: https://github.com/digoal/blog (8605 stars)
- Category: Engineering
- License: GPL-2.0
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add digoal/blog --skill job-advisor -g -a claude-code -y`
Codex: `npx skills add digoal/blog --skill job-advisor -g -a codex -y`
Cursor: `npx skills add digoal/blog --skill job-advisor -g -a cursor -y`
Gemini CLI: `npx skills add digoal/blog --skill job-advisor -g -a gemini-cli -y`

## Description

从招聘平台(闲鱼兼职、Boss直聘、智联、拉勾、58同城、豆瓣兼职等)抓取招聘信息,根据用户输入的个人特征(技能、地点、时间、薪资期望、工作形式偏好)匹配适合的长期雇佣或临时工机会,按性价比(加权时薪)排序,输出 markdown 推荐报告到当前项目的 markdown 目录。当用户提出"找工作"、"匹配岗位"、"接私活"、"找兼职"、"招聘推荐"、"什么活适合我"等需求时触发。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Job Advisor

## Overview

给定个人特征(技能、地点、可投入时间、薪资下限、工作形式偏好),从公开渠道抓取招聘信息,按 **加权时薪 = 基础时薪 × 技能匹配 × 通勤折算 × 灵活度** 排序,输出 markdown 推荐报告。

**除直接技能匹配外,本 skill 同时识别"借助 AI 工具也能较轻松拿下"的岗位**(基础翻译、文案润色、简单海报、字幕、PPT、数据录入、信息搜集等),在报告中以**独立专区**形式单独列出,不污染主 Top10 的技能匹配排序。

## 抓取渠道与限制(必读)

直接抓取 Boss直聘/闲鱼等平台 API 在工程上不可行(登录墙、强反爬、风控)。本 skill 采用**搜索引擎聚合**的实用策略:

| 渠道 | 抓取方式 | 说明 |
|---|---|---|
| 闲鱼兼职 | `mmx web_search "site:goofish.com 兼职"` 等 | 通过搜索引擎拿公开页面摘要 |
| Boss直聘 | `mmx web_search "site:zhipin.com <关键词>"` | 同上,只能拿搜索结果摘要 |
| 智联招聘 | `mmx web_search "site:zhaopin.com <关键词>"` | 同上 |
| 拉勾 | `mmx web_search "site:lagou.com <关键词>"` | 同上 |
| 58同城兼职 | `mmx web_search "site:58.com 兼职 <关键词>"` | 同上 |
| 豆瓣兼职小组 | `mmx web_search "site:douban.com 兼职 <关键词>"` | 同上 |
| 小蜜蜂远程工作 | `mmx web_search "site:xiaomifeng.work"` | 远程岗位聚合 |
| 电鸭社区 | `mmx web_search "site:eleduck.com 远程"` | 远程岗位 |

> 反爬声明:不要尝试用 requests/selenium 直接打平台,会被封 IP。本 skill 仅依赖搜索引擎可达的公开摘要,结果可能滞后/不完整,报告必须注明数据时间。

## 工作流程

1. **澄清输入**, 若用户未给出 [references/profile_schema.md](references/profile_schema.md) 必需字段(技能、地点、时间、薪资下限),先用 AskUserQuestion 问齐。
2. **构造搜索词**, 按 [references/platforms.md](references/platforms.md) 的模板,为每个平台生成 3-5 个搜索 query。
3. **并发抓取**, 通过 `mmx web_search` 执行每个 query,合并去重。
4. **结构化抽取**, 从搜索结果摘要中抽取 `title / company / location / pay / type / skills / link / source_platform` 字段,字段缺失则降级或丢弃。
5. **打分排序**, 调用 `scripts/match_jobs.py`,传入 `profile.json` 与 `jobs.json`,得到排序结果。
6. **生成报告**, 按 [references/output_template.md](references/output_template.md) 模板渲染 markdown,写入 `<项目根>/markdown/<日期>_job-recommendations.md`。
7. **自检清单**, 报告末尾追加:抓取时间、平台数、抓取条目数、排序后保留数、被过滤原因分布。

## 输入规格

读 [references/profile_schema.md](references/profile_schema.md) 完整定义。最小必填:

```json
{
  "skills": ["Python", "PostgreSQL"],
  "location": "杭州",
  "available_hours_per_week": 20,
  "min_hourly_rate": 150,
  "preferred_types": ["remote", "part_time"]
}
```

可选:`max_commute_minutes`、`avoid_keywords`、`language`、`experience_years`、`industries`。

## 抓取执行规范

The rest: https://github.com/digoal/blog/blob/HEAD/skills/job-advisor/SKILL.md
