Job Hunter

v1.1.0

LinkedIn job search assistant that scrapes listings, filters by technologies and countries, and scores matches with AI. Use when the user wants to find jobs,...

0· 196·0 current·0 all-time
byJoe@keepfit44

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for keepfit44/jobclaw.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Job Hunter" (keepfit44/jobclaw) from ClawHub.
Skill page: https://clawhub.ai/keepfit44/jobclaw
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required binaries: python3
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install jobclaw

ClawHub CLI

Package manager switcher

npx clawhub@latest install jobclaw
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The skill is a LinkedIn job-scraper and scorer. It requires python3 and HTML parsing + HTTP + google-genai libraries, and the code and SKILL.md both describe scraping LinkedIn and optionally calling Google Gemini. The declared packages and local config usage align with that purpose.
Instruction Scope
Runtime instructions and the script focus on collecting public LinkedIn job pages, filtering, scoring, and saving results. It only asks the user for a Gemini API key (saved to local config) and stores searches/saved jobs under ~/.openclaw/job-hunter/. The instructions do not request unrelated files, system credentials, or other secrets.
Install Mechanism
This is instruction-only (no installer) but the SKILL.md declares pip packages (httpx, selectolax, google-genai). There's no packaged install spec — the user (or platform) will need to install those Python deps. Installing third-party Python packages runs code on the host and has normal supply-chain risk; consider using a virtualenv or reviewing packages first.
Credentials
No environment variables are required. The Gemini API key is stored in plaintext under ~/.openclaw/job-hunter/config.json via the provided setkey command. This is proportional to the feature (optional AI scoring) but is sensitive: the key will be persisted locally and used to call Google APIs, and job text will be sent to Google when scoring is enabled.
Persistence & Privilege
The skill is not 'always: true' and is user-invocable. It persists only to its own config/history/saved JSON files in the user's home directory and does not modify other skills or system-wide settings.
Assessment
This skill appears to do what it says: scrape public LinkedIn job pages, optionally send job text to Google Gemini for scoring, and save results locally. Before installing: (1) Be aware that enabling AI scoring transmits scraped job text to Google; don't store or send private/personal data you wouldn't want in that API. (2) The Gemini key is saved in ~/.openclaw/job-hunter/config.json in plaintext — secure the file (restrict permissions) or consider using an ephemeral key. (3) Installing the declared pip packages will run third‑party code on your machine; install inside a virtualenv/container and inspect package provenance if you have supply-chain concerns. (4) Scraping LinkedIn can trigger rate-limiting or violate site TOS; expect delays and possible blocking. If you want stronger guarantees, request the full script review or run it in an isolated environment before granting network access.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🔍 Clawdis
Binspython3
ai-scoringvk97bg5tp4y0a5qcbbwregq1c9h83b3qjcareervk97bg5tp4y0a5qcbbwregq1c9h83b3qjjob-searchvk97bg5tp4y0a5qcbbwregq1c9h83b3qjjobsvk97bg5tp4y0a5qcbbwregq1c9h83b3qjlatestvk97bg5tp4y0a5qcbbwregq1c9h83b3qjlinkedinvk97bg5tp4y0a5qcbbwregq1c9h83b3qj
196downloads
0stars
5versions
Updated 1mo ago
v1.1.0
MIT-0

Job Hunter

AI-powered LinkedIn job search assistant that scrapes real-time listings, filters by technology and location, and scores each match — delivered through chat.

Setup

Before first use, the user needs a Google Gemini API key for AI scoring. Ask for it and save it:

python3 scripts/job_hunter.py setkey "USER_GEMINI_KEY_HERE"

If the user doesn't have one, searches still work but without AI scoring (all jobs get a neutral 0.5 score). Free keys available at https://aistudio.google.com/apikey

Core Workflow

1. Conversational Search

When the user asks to search for jobs, gather these parameters conversationally:

  • keywords (required): job title or search terms (e.g., "Python developer", "data engineer")
  • technologies (optional): required tech stack (e.g., ["Python", "AWS", "Docker"])
  • countries (optional): countries to search in (e.g., ["Spain", "Germany"])
  • remote (optional): true/false for remote-only jobs
  • experience (optional): "entry", "mid", "senior", "director", "executive"
  • exclude (optional): terms to exclude (e.g., ["consultant", "staffing"])
  • company_size (optional): LinkedIn size codes "1"-"8" (1=1-10, 4=201-500, 7=5001-10000)
  • salary_min (optional): minimum salary in EUR
  • ai_prompt (optional): extra criteria for AI scoring (e.g., "Must use microservices")
  • max_pages (optional): pages to scrape per location (default 3, max 5)
  • min_score (optional): minimum AI score to show (default 0.6)

Don't ask for ALL parameters — just ask the essentials (keywords, technologies, countries) and use sensible defaults for the rest. Let the user add filters if they want.

2. Run the Search

python3 scripts/job_hunter.py search '{
  "keywords": "Python developer",
  "technologies": ["Python", "FastAPI", "AWS"],
  "countries": ["Spain", "Germany"],
  "remote": true,
  "experience": "mid",
  "exclude": ["consultant"],
  "min_score": 0.6,
  "max_pages": 3
}'

The script returns JSON with scored jobs. Present the results in a clean format:

1. Senior Python Engineer — TechCorp Madrid, Spain | Remote | €50k-60k Score: 0.92 — "Excelente match: remoto, Python/FastAPI" https://linkedin.com/jobs/view/12345

Show the top results (score >= min_score) sorted by score. If there are many results, show the top 10 and mention how many more are available.

Important: Searches take time (30-90 seconds) due to LinkedIn scraping. Tell the user to wait.

3. Save Interesting Jobs

Users can save jobs they like for later review:

# Save a job
python3 scripts/job_hunter.py save '{
  "title": "Senior Python Engineer",
  "company": "TechCorp",
  "location": "Madrid",
  "url": "https://linkedin.com/jobs/view/12345",
  "score": 0.92,
  "notes": "Great match, applied on 2026-03-19"
}'

# List saved jobs
python3 scripts/job_hunter.py saved

# Remove a saved job
python3 scripts/job_hunter.py unsave "https://linkedin.com/jobs/view/12345"

4. Search History

# Show recent searches
python3 scripts/job_hunter.py history

# Re-run a previous search
python3 scripts/job_hunter.py rerun 1

Handling Different Languages

Detect the user's language and:

  • Respond in their language
  • AI summaries are always in the user's language (pass it in ai_prompt, e.g., "Respond in Spanish")
  • Job data stays in the original LinkedIn language

Tips

  • Per-country searches give much better results than global "Remote" searches on LinkedIn
  • If no results, suggest broadening: fewer technologies, more countries, lower experience level
  • LinkedIn may rate-limit after many searches — suggest waiting 5-10 minutes if errors occur
  • Encourage users to save interesting jobs before they disappear from LinkedIn

Storage

All data stored as JSON in ~/.openclaw/job-hunter/:

  • config.json — Gemini API key and settings
  • history.json — search history
  • saved.json — saved jobs

See references/search_format.md for full schemas.

Comments

Loading comments...