Jobindex 丹麦职位搜索
直接查询 Jobindex.dk 的公开 API,在 Claude Code 中实时搜索丹麦全行业的职位信息,无需任何账号或密钥。
权限声明最小化:allowed-tools 仅限单个 CLI 脚本,无需凭据,默认 enabled: false 需显式启用;SECURITY.md 明确不可信输入规则与数据不出本机的边界;CI 有 security-guards 防权限扩张。扣分点:依赖 jobindex.dk 网页抓取,未说明对目标站点 ToS 的合规评估;重试逻辑(最多6次带退避)可能对站点造成请求压力;无用户级确认/回滚机制的说明。
错误契约设计良好:stderr JSON 错误码、未知 flag 拒绝(含短 flag 回归修复 #426)、zod 数值校验均有离线测试覆盖且 CI 会运行;源码自洽(search/detail 路径一致)。扣分点:核心 live 路径(search 的 Stash blob 解析、detail 的两种页面形状解析)依赖对站点内部 HTML 结构的正则解析,无 live 测试(CI 明确排除网络测试),站点改版会静默失败;@bunli/core 版本与 cli.ts 内 version 0.1.0 与 SKILL.md 1.0.0 不一致。
触发条件、输入/输出、命令参数、已知限制(区域过滤不可用、每页固定20条、companyUrl 恒为 null)都披露得很清楚,语义触发边界明确。扣分点:仅适用于丹麦市场且结果为丹麦语;目标用户是中国用户时核心功能价值受限(jobindex.dk 可达性尚可,但语言与市场错配);SKILL.md 描述的触发词极为宽泛('whenever the user wants...'),存在误触发风险。
文档分层好:SKILL.md → README → 源码内注释均详细,MIT 许可明确,安装说明(bun install)、响应结构、解析注释齐全,仓库有 CI、安全策略与维护流程。扣分点:无 changelog;版本号不一致(SKILL.md 1.0.0 vs cli.ts 0.1.0);README 中安装路径写作 skills/jobindex-search/cli 与实际 .agents/skills/... 不一致(小瑕疵);发布者身份未经验证,更新责任依赖单维护者。
声称完成任务(搜索+详情)路径完整:输出格式清晰、字段说明详尽、解析降级策略合理(description 缺失时回退 meta description),对重复造轮子有边际价值。扣分点:静态评审无法验证实际输出正确性;依赖易碎的正则 HTML/Stash 解析,站点改版即失效;无代表性输出样本可直接核验。
有可审计的一手材料:源码、提交的离线测试套件、CI 工作流(含 dependency-review、typecheck、bun test)、解析逻辑注释中标注验证日期。扣分点:live 路径无独立可复现证据(CI 刻意不跑网络测试),回应形状示例无法从仓库内交叉证实;部分声明(如 'verified live 2026-08-19')仅为作者陈述。
- 核心功能依赖对 jobindex.dk 网页结构的正则抓取,站点改版会导致解析静默失败或报错,使用前建议先手动运行一次验证。
- SKILL.md 1.0.0 与 cli.ts 0.1.0 版本号不一致,且无 changelog,升级时需自行核对差异。
- 该技能仅覆盖丹麦市场且结果为丹麦语;对非丹麦求职场景基本无用,且描述触发词过宽,易被误触发。
- 对目标站点的抓取合规性(ToS/robots)未在文档中说明;内置重试最多6次,注意请求频率。
- 发布者未经 FollowSkills 验证,仓库为个人维护,长期可用性依赖单一维护者。
这个 Skill 能做什么,适合哪些场景?
jobindex-search 是 ai-job-search 仓库中的一个子技能,通过 Bun 运行的命令行工具调用 Jobindex.dk 的公开 API,搜索丹麦的实时职位列表。它支持按关键词、发布时间、排序方式和分页过滤职位,并可获取单个职位的完整描述、截止日期和申请链接。该技能默认关闭,仅在用户的目标市场为丹麦时通过 /setup 或手动开启。它不涉及求职申请流程本身——撰写简历、求职信等能力属于仓库中的其他技能。
技能通过 allowed-tools 授权执行 bun run .agents/skills/jobindex-search/cli/src/cli.ts 这一 CLI。提供两个命令:search 按关键词(--query)、发布天数(--jobage,可选 1/7/14/30/9999)、排序(--sort score 或 date)、页码(--page,每页固定 20 条)和输出格式(--format /table/plain)搜索职位;detail <id> 根据 search 返回的职位 ID(如 h1647303,也可传完整 URL)获取职位完整描述、截止日期、雇佣类型、工时和申请链接。所有数据来自 jobindex.dk 公开 API,无需认证;错误以 JSON 格式写入 stderr 并以退出码 1 结束。
- 正在丹麦求职的开发者,想用 `--query python --jobage 7 --sort date` 快速找到最近一周发布的 Python 职位
- 住在哥本哈根或奥胡斯的求职者,需要在查询中加入城市名(如 --query "data engineer københavn")来定位本地职位,因为 API 不支持单独的地区参数
- 使用 ai-job-search 框架的候选人在 /scrape 流程中需要丹麦市场的实时职位数据源
- 想研究丹麦某个职业(如平面设计师、全栈开发)整体市场情况的用户,可用不限时间的搜索并按相关度排序浏览
- 通过 Claude Code 对话自然触发,比如说"find me a job"或"jobs in Copenhagen"时自动调用此技能
这个 Skill 有哪些优点和局限?
- 无需注册、认证或 API 密钥,开箱即用
- 数据实时更新,覆盖丹麦全行业数千个职位
- 结构化输出(/table/plain),便于后续处理或传给 /apply 流程
- SKILL.md 文档详尽,包含触发短语、完整参数说明和多个实际示例
- 仅覆盖丹麦市场(Jobindex.dk),其他国家用户无用,除非按仓库的 /add-portal 模式自行扩展
- API 不支持地区参数,城市过滤只能靠在关键词中附加城市名,精确度有限
- 每页固定 20 条结果,无法调整分页大小
- 技能默认关闭,需手动或经 /setup 启用;丹麦语触发短语为主,其他语言用户依赖英文触发词
- 依赖第三方公共 API,其可用性和条款变更不受本仓库控制
如何安装这个 Skill?
该技能随 ai-job-search 仓库分发:先 fork 并克隆仓库(gh repo fork MadsLorentzen/ai-job-search --clone),进入 .agents/skills/jobindex-search/cli 目录执行 bun install。技能默认 enabled: false(丹麦演示门户,选择启用);运行 /setup 时若你的目标市场是丹麦会自动启用,也可手动把 SKILL.md 中的 enabled 改为 true。注意:仓库 README 的快速开始脚本只覆盖部分 CLI 工具的安装循环,jobindex-search 已包含其中。
如何使用这个 Skill?
在 Claude Code 中提及丹麦求职相关话题(如"找一份哥本哈根的开发工作")即可触发。典型工作流是 search → detail:先 bun run .agents/skills/jobindex-search/cli/src/cli.ts search --query python --jobage 7 --format table 找到职位及其 ID,再 ... detail h1647303 --format plain 查看完整描述和申请链接。城市筛选需把城市名写进 --query;每页固定 20 条,用 --page 翻页,--limit 限制总输出量。
这个 Skill 与同类方案有什么区别?
同一仓库还提供 linkedin-search(基于 LinkedIn 公开端点、不限国家)和 freehire-search(freehire.me 聚合器、多市场、零运行时依赖)等兄弟技能。若你不在丹麦,后两者是更合适的起点;若在丹麦,jobindex-search 覆盖面通常最广。