Jobnet Search logo

Jobnet Search

CommunityPopular
MadsLorentzen
jobnet-search

Make sure to use this skill whenever the user mentions anything related to Danish job searching, job listings, job vacancies, employment opportunities in Denmark, or the Danish government job portal — even if they don't mention jobnet.dk explicitly. Also invoke this skill for questions about specific job titles, occupations, employers, or regions in a Danish employment context. This skill covers the official Danish public job portal operated by STAR (Styrelsen for Arbejdsmarked og Rekruttering). Trigger phrases include: danish jobs, danish job search, jobnet, jobnet.dk, find job denmark, danish employment, job i danmark, job på jobnet, offentlige job, stillinger i det offentlige, public sector jobs denmark, government jobs denmark, STAR jobs, job ledige stillinger, ledig stilling, søg job, job opslag, job vacancy denmark, stillingopslag, jobopslag, sygepleje job, ingeniør job, lærer job, pædagog job, it-job denmark, jobs in copenhagen, jobs in aarhus, jobs in odense, deltidsjob, fuldtidsjob, fastansættelse, tidsbegrænset ansættelse, fleksjob, sygeplejerske job, social worker job denmark, occupation search denmark, esco occupation, job deadline, ansøgningsfrist, søg efter job, full time job denmark, part time job denmark.

Overview

PublisherMadsLorentzen
Repositoryai-job-search
Skill namejobnet-search
Stars
46.2K
Forks
15.9K
Bundled files
18
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 18 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by MadsLorentzen on GitHub. Read the source before you install it.

Installation

Install the Jobnet Search AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/MadsLorentzen/ai-job-search/tree/master/.agents/skills/jobnet-search
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/MadsLorentzen/ai-job-search.git /tmp/ai-job-search
mkdir -p .claude/skills
cp -r /tmp/ai-job-search/.agents/skills/jobnet-search .claude/skills/jobnet-search
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Jobnet Search in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Jobnet Search on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Jobnet Search is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Jobnet-Search Skill

Access live Danish job listings from the Jobnet.dk public API. No authentication needed. Jobnet is operated by STAR (Styrelsen for Arbejdsmarked og Rekruttering) and is Denmark's official government job portal — covering public sector positions as well as many private sector listings. Approximately 21,000+ active jobs at any time.

When to use this skill

Invoke this skill when the user wants to:

  • Search for job openings in Denmark by keyword, title, or employer
  • Filter jobs by region, work hours (full/part time), or employment duration (permanent/temporary)
  • Find jobs near a specific postal code within a given radius
  • Get full details for a specific job ad including description, contact persons, and application URL
  • Discover occupation types and ESCO categories for more precise job filtering
  • Explore autocomplete suggestions for Danish job titles or keywords
  • Find jobs in the public sector, healthcare, IT, education, or any other Danish industry

Commands

Search for job ads

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts search [flags]

Key flags:

  • --search-string <text> — keyword search, e.g. sygeplejerske, ingeniør, pædagog
  • --region <region> — HovedstadenOgBornholm, Midtjylland, Syddanmark, OevrigeSjaelland, Nordjylland
  • --postal-code <code> — postal code for radius-based search, e.g. 2100
  • --radius <km> — radius in km from postal code (default: 50)
  • --work-hours <type> — FullTime or PartTime
  • --duration <type> — Permanent or Temporary
  • --job-type <type> — Ordinaert, Efterloenner, Foertidspension
  • --occupation-area <id> — occupation area identifier, e.g. 10000
  • --occupation-group <id> — occupation group identifier, e.g. 10060
  • --order <type> — PublicationDate (default), BestMatch, ApplicationDate
  • --page / --per-page / --limit
  • --format json|table|plain

Full job ad detail

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts detail <jobAdId> [--format json|plain]

jobAdId is the UUID from search results (the jobAdId field, also emitted as id, the portal-contract name every search CLI shares). Returns the complete job description, contact persons, application deadline, employer details, and direct application URL.

Search occupation types

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts occupations --search-string <text> [--per-page <n>]

Use this to discover ESCO occupation identifiers before passing them to search with --occupation-area or --occupation-group.

Typeahead suggestions

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts suggestions --query <text> [--limit <n>]

Returns Danish job title autocomplete strings. Useful for exploring valid Danish job titles before constructing a search query.


How to use effectively

Discover occupations first. Use occupations or suggestions to find the right Danish term or ESCO identifier before running a search:

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts suggestions --query "syge"
bun run .agents/skills/jobnet-search/cli/src/cli.ts occupations --search-string "sygeplejerske"

Natural workflow: search → detail.

  1. Use search to get a list of matching jobs with their jobAdId.
  2. Call detail <jobAdId> to get the full job description, contact persons, and direct application link.

Use --format table for comparisons, --format json for data processing, and --format plain for single-record detail views (strips HTML from job body).

Pagination: --per-page controls server-side results per page. --limit caps what the CLI outputs. Use --page + --per-page to iterate through large result sets.

Geographic search modes:

  • Use --region for broad regional filtering (e.g. all of Midtjylland)
  • Use --postal-code + --radius for jobs near a specific location
  • Do not combine --region and --postal-code in the same query

Order matters for intent:

  • PublicationDate — newest postings first (default, good for "what's new")
  • BestMatch — relevance score (best when --search-string is provided)
  • ApplicationDate — earliest deadline first (good for urgent applications)

Usage examples

Jobs in Copenhagen area

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts search \
  --region HovedstadenOgBornholm \
  --per-page 10 \
  --format table

Nurse jobs nationwide

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts search \
  --search-string "sygeplejerske" \
  --work-hours FullTime \
  --duration Permanent \
  --order BestMatch \
  --per-page 10 \
  --format table

IT jobs near Aarhus within 30km

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts search \
  --search-string "udvikler" \
  --postal-code 8000 \
  --radius 30 \
  --work-hours FullTime \
  --format table

Full details of a job ad

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts detail 9ef43bce-d82b-4ea1-a098-7ff6520f99be --format plain

Jobs sorted by application deadline (urgent first)

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts search \
  --search-string "pædagog" \
  --region OevrigeSjaelland \
  --order ApplicationDate \
  --per-page 10

Discover occupation terms

bash
bun run .agents/skills/jobnet-search/cli/src/cli.ts suggestions --query "ingeniør" --limit 5
bun run .agents/skills/jobnet-search/cli/src/cli.ts occupations --search-string "lærer" --per-page 5

Output formats

FormatBest for
jsonDefault — programmatic use, data processing, passing IDs between commands
tableQuick human-readable overviews and comparisons
plainSingle-record detail views (detail), strips HTML from job descriptions

All errors are written to stderr as { "error": "...", "code": "..." } and the process exits with code 1.


Notes

  • All data is from the public jobnet.dk/bff REST API — no credentials required.
  • The API requires the x-csrf: 1 header; the CLI adds this automatically.
  • Pagination is 1-indexed (--page 1 is the first page).
  • search results omit the HTML job description — use detail to get it.
  • detail --format plain strips HTML tags for readable text output.
  • Job ad detail pages on jobnet.dk: https://jobnet.dk/find-job/{jobAdId}
  • suggestions is tuned for Danish job titles — English terms may return empty results.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Jobnet Search AI skill do?

Make sure to use this skill whenever the user mentions anything related to Danish job searching, job listings, job vacancies, employment opportunities in Denmark, or the Danish government job portal — even if they don't mention jobnet.dk explicitly. Also invoke this skill for questions about specific job titles, occupations, employers, or regions in a Danish employment context. This skill covers the official Danish public job portal operated by STAR (Styrelsen for Arbejdsmarked og Rekruttering). Trigger phrases include: danish jobs, danish job search, jobnet, jobnet.dk, find job denmark, da...

Why use Jobnet Search on TypingMind?

Because you install it once and use it with any model. Jobnet Search is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Jobnet Search in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/MadsLorentzen/ai-job-search/tree/master/.agents/skills/jobnet-search. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Jobnet Search?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Jobnet Search?

As many as you like. As long as a model supports skills, you can use Jobnet Search with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Jobnet Search AI skill free?

Yes. It is published on GitHub by MadsLorentzen under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇