job-advisor

star 8.5k

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

digoal By digoal schedule Updated 6/16/2026

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

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 必需字段(技能、地点、时间、薪资下限),先用 AskUserQuestion 问齐。
  2. 构造搜索词 — 按 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.jsonjobs.json,得到排序结果。
  6. 生成报告 — 按 references/output_template.md 模板渲染 markdown,写入 <项目根>/markdown/<日期>_job-recommendations.md
  7. 自检清单 — 报告末尾追加:抓取时间、平台数、抓取条目数、排序后保留数、被过滤原因分布。

输入规格

references/profile_schema.md 完整定义。最小必填:

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

可选:max_commute_minutesavoid_keywordslanguageexperience_yearsindustries

抓取执行规范

  • 每个平台最多 5 个 query,共 ≤ 30 次 web_search。
  • 单次搜索只取前 5 条结果,合并去重后保留不超过 30 条原始记录。
  • 单条记录若关键字段(title/pay/source_platform)缺失且无法从摘要中推断,丢弃并在报告中计入"被过滤"。
  • 抓取完成后,调用打分脚本,渲染报告。

打分脚本调用

python3 scripts/match_jobs.py \
  --profile /path/to/profile.json \
  --jobs /path/to/jobs.json \
  --top 10 \
  --out /path/to/scored_jobs.json

scripts/match_jobs.py 读取两份 JSON,返回按 cost_effectiveness_score 降序的列表,含逐项打分明细。详见脚本内 docstring。

输出规格

  • 文件位置:<cwd>/markdown/<YYYY-MM-DD>_job-recommendations.md
  • 模板:references/output_template.md
  • 必含:概要、Top10 表格、逐条详情(标题/公司/地点/薪资/工作形式/链接/打分明细/风险提示)、数据来源与免责声明。

失败与降级

情况 处理
用户未给地点或薪资下限 AskUserQuestion 澄清,不要瞎猜
搜索引擎全失败 报告中标注"无可用抓取数据",不输出空 Top10
抓取 < 5 条 仍输出,但顶部加明显警示"样本不足,建议补充搜索词"
字段无法解析薪资 标记为 pay_unknown=true,打分时该项置 0 并降权

AI 友好岗位(独立专区)

很多岗位在传统视角下需要专业技能(翻译资质、设计功底、剪辑经验等),但借助 AI 工具链(LLM 翻译/文案、SD/MJ 生图、Whisper 字幕、PPT 排版等)准入门槛已大幅降低。本 skill 把这类岗位识别后,以"AI 友好专区"形式单独列在报告末尾,与主 Top10 解耦。

机制:

  • scripts/match_jobs.py 维护 AI_ASSISTABLE_KEYWORDS 列表(翻译、文案、海报、字幕、PPT、数据录入、调研、客服话术等)
  • 关键词命中即在 _score.ai_friendly=true 标记,不参与主排名加权(避免污染技能匹配结果)
  • 报告渲染时按 pay_basishourly_rate_cny 二次排序,生成"AI 友好专区"小节
  • 平台搜索词见 references/platforms.md "AI 友好岗位"章节,与主 query 并发执行,共享 ≤30 次 web_search 上限

为什么不直接并入主排名:

  • 主 Top10 优先保证"用户技能直接匹配"的命中率
  • AI 友好岗位特征差异大,简单加权容易把低匹配度岗位推到前面,降低主推荐质量
  • 独立呈现让用户自主判断是否愿意承接 AI 辅助类工作

Resources

scripts/

  • match_jobs.py — 性价比打分脚本,见上文调用方式。

references/

  • platforms.md — 各平台搜索词模板与反爬说明。
  • profile_schema.md — 个人特征输入 schema 与示例。
  • output_template.md — markdown 报告渲染模板。
Install via CLI
npx skills add https://github.com/digoal/blog --skill job-advisor
Repository Details
star Stars 8,510
call_split Forks 1,914
navigation Branch main
article Path SKILL.md
More from Creator