Jobbank 搜索技能
直接在本地搜索丹麦 Akademikernes Jobbank 的实时职位,覆盖学术、高学历岗位的按关键词与多维度筛选查询。
正面:权限最小(allowed-tools 仅限 bun 运行本技能自身 CLI),无凭据、无敏感数据处理,数据流向(jobbank.dk RSS/HTML)和 Cloudflare 封锁、WebSearch 回退均明示;错误结构化输出到 stderr。扣分:使用浏览器 User-Agent 伪装自动化请求(已诚实披露但本质是规避 bot 检测),外部请求无用户逐次确认,回滚/隔离依赖宿主框架而非技能自身。
正面:自洽性高——SKILL.md、README 与源码一致,错误码契约有离线契约测试和 flag 校验测试(含对历史静默丢 flag 缺陷的回归),CI 确实运行 typecheck 和 bun test。扣分:测试只覆盖错误路径,search/detail 主路径无 mock 测试;对 RSS description 格式漂移、HTML title 正则失效等无防护,真实可用性静态无法证实,故不超 10。
正面:触发条件、输入参数、过滤码表、输出格式、非适用边界(RSS 100 条上限、location 是地区码)都写得很清楚,语义触发精确度高。扣分:触发短语列表过宽(如 studiejob、freelance job 等通用词可能误触发);仅覆盖丹麦市场;无中文支持(与其丹麦门户定位一致,不算硬伤);未说明中国大陆可访问性。
正面:分层文档清晰(SKILL.md→README→码表→实现说明),MIT 许可,版本号 1.0.0,README 给出安装步骤。扣分:无 changelog,维护责任仅在仓库层面体现,发布者未经验证;路径不一致——SKILL.md 引用 skills/jobbank-search/cli/README.md 而实际位于 .agents/skills/ 下;依赖 @bunli/core 版本较新(0.9.1 固定),生态成熟度存疑。
正面:输出 JSON/table/plain 结构明确、字段表完整、示例丰富,元信息(meta.total、deadline 归一化)有边际价值,比手工浏览门户省力。扣分:静态评审无法验证实际抓取成功;核心价值受 100 条 RSS 硬上限限制且无分页;meta.total 依赖 HTML title 正则,脆弱。按校准规则 effectiveness 不超 7,且证据受限取 6。
正面:有可审计的一手材料——源码、码表、解析规则全部公开,测试和 CI 工作流真实存在且覆盖该 CLI。扣分:测试不覆盖 search/detail 网络关键路径(CI 明确排除 live 冒烟测试),无独立第三方执行证据,响应示例无法静态复核,故取 4 不超 5。
- 静态评审,未执行任何代码;search/detail 的真实抓取行为未经独立复现。
- 该 CLI 通过浏览器 User-Agent 伪装绕过 Cloudflare 检测,门户方可能封禁且可能违反其使用条款,请自行确认合规性。
- RSS 最多返回 100 条且无分页,meta.total 依赖 HTML title 正则,可能随门户改版失效。
- 面向丹麦市场,文档仅英文/丹麦语;如在中国大陆使用,jobbank.dk 可达性未经验证。
- SKILL.md 引用的 README 路径(skills/...)与实际位置(.agents/skills/...)不一致,请以实际路径为准。
- 依赖 @bunli/core 0.9.1,版本较新,建议锁定并审查传递依赖。
这个 Skill 能做什么,适合哪些场景?
这是 ai-job-search 仓库中的一个丹麦市场职位搜索技能,位于 .agents/skills/jobbank-search/。它通过 Akademikernes Jobbank(jobbank.dk)的 RSS 源搜索职位(单次最多 100 条),并通过解析页面内嵌的 Schema.org JobPosting JSON-LD 获取完整职位详情。支持按关键词、职位类型、地区、职能、行业、教育背景、远程程度、适合人群、公司、发布日期等过滤。该技能随仓库默认关闭(opt-in),适合目标市场为丹麦的用户;遇到 Cloudflare 反爬时会回退到 WebSearch。整个仓库 MIT 许可,可 fork 后自行维护。
运行 Bun CLI 提供两个命令:search 通过 RSS 源按 --key、--type(全职/研究生培训生/博士博后/兼职等)、--location(大哥本哈根、奥胡斯等地区码)、--work-area(IT、数据分析等)、--industry、--education、--remote、--suitable-for、--company、--since、--limit 等可重复标志过滤职位,输出 /table/plain 三种格式,meta.total 显示真实总数;detail <id> 抓取职位页面并提取 JSON-LD 结构化数据,返回完整职位描述、截止日期和公司信息。错误以 JSON 写入 stderr 并以退出码 1 结束。jobbank.dk 使用 RSS 与公开 HTML,若被 Cloudflare 拦截则报告门户不可用并改用 WebSearch。
- 正在丹麦求职的高学历候选人,想按关键词和地区搜索 jobbank.dk 上的学术或专业职位
- 应届毕业生查找研究生培训生(graduate/trainee)职位
- 博士或博士后寻找丹麦高校和研究机构的 Ph.d./postdoc 空缺
- 远程工作者筛选丹麦的全远程或部分远程 IT、数据分析等岗位
- 求职者查询某家公司在 jobbank.dk 上当前开放的职位
- 有国际背景的求职者浏览标注适合国际候选人的职位
这个 Skill 有哪些优点和局限?
- MIT 许可、可 fork 自有,数据来自 jobbank.dk 公开 RSS 和页面
- 过滤维度丰富且多数标志可重复使用,支持地区码、行业码、教育码等精确筛选
- 结构化输出(JSON/table/plain),meta.total 保留真实总数,便于程序化处理
- 对 Cloudflare 拦截有明确降级策略:报告不可用并回退 WebSearch,而非无限重试
- 仅覆盖丹麦市场和单一门户(jobbank.dk),其他地区需用仓库的 /add-portal 生成或换用其他技能
- RSS 无分页,单次最多 100 条结果
- 依赖 Cloudflare 不拦截自动化请求——一旦被拦即不可用,只能退回普通搜索
- 地区用数字代码而非城市名,需查 README 对照表
如何安装这个 Skill?
1) fork 并克隆仓库:gh repo fork MadsLorentzen/ai-job-search --clone。2) 安装 CLI 依赖:cd .agents/skills/jobbank-search/cli && bun install。3) 该技能随仓库默认 enabled: false(丹麦演示门户,opt-in);在 Claude Code 中运行 /setup 时如果你的目标市场是丹麦会自动启用,或手动把 SKILL.md 中的 enabled 改为 true。前提:Claude Code CLI、Bun(README 还列出 Python 3.10+ 和 LaTeX,但那些是仓库其他部分所需)。
如何使用这个 Skill?
在 Claude Code 中提到 jobbank、丹麦求职等触发词即可调用。搜索示例:bun run .agents/skills/jobbank-search/cli/src/cli.ts search --key "data scientist" --location 2 --format table;查看详情:... detail 1234567 --format plain。推荐先用 search 找到职位 ID,再用 detail 获取完整描述。过滤代码表在 skills/jobbank-search/cli/README.md。注意 RSS 单次最多返回 100 条,无分页。
这个 Skill 与同类方案有什么区别?
同一仓库还包含 Jobindex、Jobnet、Jobdanmark 等其他丹麦门户搜索技能,以及国家无关的 linkedin-search 和 freehire-search;本技能专攻 Akademikernes Jobbank。如果目标市场不在丹麦,README 建议改用 /add-portal 生成适配本地门户的技能。