From d0846aad1d31feaa99a521ca5af729c020561d09 Mon Sep 17 00:00:00 2001 From: Kienne <152148378+hopkienne@users.noreply.github.com> Date: Fri, 10 Jul 2026 13:05:40 +0700 Subject: [PATCH] Add Jobdanmark detail HTML fallback (#115) --- .agents/skills/jobdanmark-search/SKILL.md | 4 +- .../skills/jobdanmark-search/cli/README.md | 9 +- .../cli/src/commands/detail.ts | 235 +++++++++++++----- .../cli/tests/detail-parsing.test.ts | 52 ++++ 4 files changed, 229 insertions(+), 71 deletions(-) create mode 100644 .agents/skills/jobdanmark-search/cli/tests/detail-parsing.test.ts diff --git a/.agents/skills/jobdanmark-search/SKILL.md b/.agents/skills/jobdanmark-search/SKILL.md index d243049..79af12d 100644 --- a/.agents/skills/jobdanmark-search/SKILL.md +++ b/.agents/skills/jobdanmark-search/SKILL.md @@ -66,7 +66,7 @@ bun run .agents/skills/jobdanmark-search/cli/src/cli.ts detail [--format ``` `slug` is the URL path segment returned as `slug` in `search` results (e.g. `it-chef-soeges-til-rah`). -Returns full structured job data from the job page's JSON-LD, including title, organization, location, employment type, deadline, and full HTML description. +Returns full structured job data from the job page. The CLI prefers Schema.org JSON-LD when present and falls back to parsing the rendered HTML when Jobdanmark omits JSON-LD. ### List categories with live counts @@ -222,7 +222,7 @@ All errors are written to **stderr** as `{ "error": "...", "code": "..." }` and - All data is from the public Jobdanmark.dk API — no credentials required. - Pagination is 1-indexed (`--page 1` is the first page). 30 items per page, server-enforced. -- The `detail` command fetches the HTML job page and parses the embedded JSON-LD (schema.org/JobPosting). It does not use a separate JSON API. +- The `detail` command fetches the HTML job page and parses embedded JSON-LD when available, with a rendered-HTML fallback for pages that omit structured data. It does not use a separate JSON API. - `slug` in search results is extracted from the API's relative `url` field (the path after `/job/`). - `applicationDeadline` in search results can be `null` (no deadline set). - Job type values for filters: `fuldtid`, `deltid`, `fleksjob`, `elev`, `studiejob`, `praktik`. diff --git a/.agents/skills/jobdanmark-search/cli/README.md b/.agents/skills/jobdanmark-search/cli/README.md index 2f8aaf3..5a9b0a3 100644 --- a/.agents/skills/jobdanmark-search/cli/README.md +++ b/.agents/skills/jobdanmark-search/cli/README.md @@ -166,7 +166,7 @@ bun run src/cli.ts search --text "sygeplejerske" --zip 8000 --limit 10 ## `detail` — Full job posting detail -**Method**: Fetch HTML from `https://jobdanmark.dk/job/{slug}`, extract `