| name | competitor-hiring-intel |
| description | 用 AI 定期从竞争对手的公开招聘官网抓取在招岗位,通过跨期快照对比识别「上新岗位」,反推竞对近期的人才招聘趋势与策略(扩张收缩、能力押注、地域布局、社招校招结构),并叠加一个独立的「互联网最新人才情报新闻」模块(融资/组织调整/裁员/高管变动/扩招收缩表态),最终沉淀进一个结构统一的飞书多维表格仪表盘(顶部文字洞察 + 岗位增量趋势图表 + 独立新闻区块)。内置中国 24 行业 240+ 明星公司候选目录,默认给用户推荐三家最相关企业的招聘官网让其确认;兼容国内主流 ATS(Moka、北森、飞书招聘)、大厂自建官网(腾讯/京东/美团/网易/携程/字节等已内置适配)与国际标准 ATS(Greenhouse/Lever/Ashby/SmartRecruiters)。当用户想做竞对人才情报、监控对手在招岗位变化、分析竞争对手人才策略、看某公司最近在招什么/扩招什么方向、了解竞对最新人才新闻动态、建立竞对招聘监控看板,或说「竞对人才情报 / 竞争对手招聘趋势 / 抓竞对岗位 / 对手最近招什么 / 竞对人才新闻」时使用。只处理公开在招岗位与公开报道,不涉及候选人隐私或登录态数据。 |
竞争对手人才情报(Competitor Hiring Intel)
概述
两条互相印证的情报线,汇入一个飞书多维表格仪表盘:
- 岗位线:定期抓竞对公开招聘官网在招岗位 → 跨期快照 diff 算「上新/下架/变更」→ 反推招聘趋势与策略。
- 新闻线(独立模块):从互联网公开报道采集竞对人才动态(融资/组织调整/裁员/高管变动/扩招收缩表态),作为领先信号与岗位增量交叉印证。
架构分工(重要):
- 本 skill 的脚本负责确定性的脏活:抓取归一化、diff 增量、聚合指标、新闻归一化。
lark-base skill 负责所有飞书 Base 读写(建表/写记录/建仪表盘/图表)——本 skill 不硬编码 lark-cli 语法。
- LLM(你) 负责编排、竞对发现、WebSearch 采集新闻、以及顶部「近期洞察」文案。
首次使用须知(开场必须先告知用户)
在启动本 skill 的第一轮回复里、动手抓取前,先如实向用户说明预期,并邀请一起试:
- 抓取可能失败:不同招聘官网的反爬机制差别很大(登录态、客户端签名令牌、按需加载接口等),有些站点可能就是抓不到。这不是 bug,是这类任务的固有不确定性。
- 一开始需要人机协作试不同方法:先拿用户确认的竞对,实际试抓一两家、必要时配合浏览器抓包发现接口,让用户尽早体感"这些站到底能不能抓成",再决定投入。
- 抓不成也没关系:抓不到的竞对如实标注、保留新闻线即可;不必强求每家都成。
态度上:诚实报告成败,抓不到就直说并给出可选路径(浏览器发现 / --stdin-json 粘贴原始 JSON / 人工 / 换一家);不夸大成功率,不为了"看起来成功"而伪造数据或绕过风控。
工作流
① 发现建档 → ② 抓取归一化 → ③ 跨期 diff → ④ 聚合指标 ┐
⑤ 采集新闻 ┼→ ⑥ 飞书 Base 仪表盘
(首次做全) ┘ (定期复跑迭代)
脚本位于 scripts/,参考文档位于 references/,候选目录在 assets/。用 python3 scripts/xxx.py 调用。
① 发现建档(首次 / 新增竞对时)
读 references/competitor_discovery.md。要点:
- 默认推荐三家:用户没给名单时,先问清行业/公司定位,再从
assets/competitor_catalog.json
(中国 24 行业 240+ 公司目录)挑三家最相关的竞对,连同招聘官网 URL 列表交用户确认,不自作主张锁定。
- 用户给了名单 → 逐家定位招聘官网、识别来源类型。
- 每家产出一份 source config(放
sources/<slug>.json)。动手抓取前把竞对+官网清单给用户确认
(对齐「先给列表、同意后再批量」的偏好)。
② 抓取归一化
读 references/ats_platforms.md 确定每家的 config 写法(type 选择见下),然后:
python3 scripts/fetch_jobs.py --config sources/<slug>.json --out-dir snapshots --label 2026-08-24
按来源选 type:
- 国际 ATS:
greenhouse / lever / ashby / smartrecruiters(只需 token,脚本直连)。
- 大厂自建官网(已内置适配):
tencent / jd / meituan / netease / ctrip / bytedance(可加 keyword 过滤)。
- 国内 ATS(Moka/北森/飞书招聘):先按 discovery 用 Browser+DevTools 一次性发现 front-end XHR,写成
generic_json;
接口带签名/风控直连被拒 → 用 Browser/WebFetch 取原始 JSON,fetch_jobs.py --config ... --stdin-json < raw.json 只做归一化。
- 自建站兜底:
static_html(抓岗位链接)→ 或 jsonld_urls(解析 JobPosting 结构化数据)。
- 输出:
snapshots/<slug>_<label>.json。脚本内置 SSRF 防护、URL 去跟踪参数、按 job_id/URL 去重。
③ 跨期 diff(「上新岗位」的核心)
python3 scripts/diff_snapshots.py --old snapshots/<slug>_<上期>.json \
--new snapshots/<slug>_<本期>.json --out diffs/<slug>_<本期>.json
产出 added(新增=上新)/ removed(下架)/ changed(变更,如城市迁移、职级调整)。
首次没有上期快照时省略 --old,全部记为新增。
④ 聚合指标
python3 scripts/analyze_trends.py diff --diff diffs/<slug>_<本期>.json --out metrics/<slug>_diff.json
python3 scripts/analyze_trends.py trend --snapshots-dir snapshots --slug <slug> --out metrics/<slug>_trend.json
python3 scripts/analyze_trends.py compare --snapshots snapshots/a_<期>.json snapshots/b_<期>.json --out metrics/compare.json
输出按 部门/职能/城市/类型/层级 分布 + Top 技能词,且 diff 模式单独给出新增岗位的分布。
⑤ 采集最新人才情报新闻(独立模块)
读 references/news_module.md。你用 WebSearch 针对每个竞对搜近 3 个月人才相关报道,整理成
news/raw_news.json(每条含 title/url/source/date/competitor/summary),然后:
python3 scripts/normalize_news.py --in news/raw_news.json --days 90 --out news/news_feed.json
脚本去重、按时间过滤、分类(融资/组织人事/扩招/战略/薪酬/产品技术)、打信号标签(AI/出海/收缩/扩张/商业化)。
不自动爬新闻站——由你采集,脚本只归一化,保证每条挂真实 URL、不编造。
⑥ 飞书 Base 仪表盘
读 references/base_dashboard.md(定义 4 张表 + 仪表盘 + 顶部洞察 + 独立新闻区块)。
所有 Base 操作调用 lark-base skill:
- 首次:建 Base + 表1快照/表2增量/表3指标/表4新闻 + 仪表盘骨架。
- 每期:diff 的 added/removed/changed 写表2,快照写表1,指标写表3,新闻写表4,刷新图表。
- 顶部「近期洞察」由你基于 metrics 数值 + 新闻信号撰写:结论先行、克制、每条挂数字、岗位与新闻交叉印证、不写过程语言(对齐用户中文写作偏好)。
- 注意 Base 写限流:串行 + 退避,勿并发批量写;缺失值用「无」占位。
归一化岗位字段
所有来源统一到这套字段(缺的留空;job_id+title 必需,否则无法 diff;无 job_id 时用 canonical URL 兜底):
job_id, title, department, job_function, location, city, job_type, level, headcount, salary_min, salary_max, description, requirement, url, posted_at, updated_at
定期复跑
用户要「定期监控」时:每周/每两周一次即可满足近期趋势;固定 label=日期以保证可回溯、可画趋势线。
复跑只需 ②→⑥(config 已存在),首次的 ①发现不必重做。可配合 automation 定时提醒触发。
边界与合规
- 只抓公开在招岗位(任何求职者可见)与公开报道,不抓登录态、简历、候选人隐私数据。
- 抓取频率放低、分页间自然停顿、不并发轰炸;尊重 robots 与站点条款;SSRF 防护已内置(拒绝本地/内网)。
- 遇签名/风控用 Browser 取原始 JSON,不在脚本里伪造签名绕过风控。
- 强登录平台(Boss/猎聘/拉勾等)不绕过登录反爬,走一次性发现或人工粘贴。
- 飞书招聘 OpenAPI 仅用于用户自己有租户授权的官网,不用于无授权的第三方竞对。
- 新闻只汇总公开报道并标注来源链接,敏感信息(裁员/高管去向)措辞克制、不做人身评价。
资源
scripts/fetch_jobs.py — 抓取 + 归一化,支持 greenhouse/lever/ashby/smartrecruiters/bytedance/tencent/jd/meituan/netease/ctrip/static_html/generic_json/jsonld_urls,及 --stdin-json 离线归一化。
scripts/diff_snapshots.py — 两期快照 diff,产出 added/removed/changed。
scripts/analyze_trends.py — trend/diff/compare 三种聚合,喂仪表盘。
scripts/normalize_news.py — 新闻去重/分类/打标签,产出独立新闻 feed。
assets/competitor_catalog.json — 中国 24 行业 240+ 明星公司候选目录(name/careers_url/type),用于默认推荐三家竞对。
references/competitor_discovery.md — 竞对发现与建档、默认推荐三家、用户确认清单、workspace 目录。
references/ats_platforms.md — 各来源抓取方式与 type 选择、一次性发现流程、source config 完整字段、反爬。
references/news_module.md — 最新人才情报新闻模块:采集、搜索查询、归一化、呈现、合规。
references/base_dashboard.md — Base 4 表 + 仪表盘 + 顶部洞察 + 独立新闻区块的交付契约。