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:
CODEBLOCK0
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"])
- companysize (optional): LinkedIn size codes "1"-"8" (1=1-10, 4=201-500, 7=5001-10000)
- salarymin (optional): minimum salary in EUR
- aiprompt (optional): extra criteria for AI scoring (e.g., "Must use microservices")
- maxpages (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
CODEBLOCK1
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:
CODEBLOCK2
4. Search History
CODEBLOCK3
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 - INLINECODE2 — search history
- INLINECODE3 — saved jobs
See references/search_format.md for full schemas.
求职助手
AI驱动的LinkedIn职位搜索助手,可实时抓取职位列表,按技术和地点筛选,并为每个匹配项评分——通过聊天方式交付。
设置
首次使用前,用户需要Google Gemini API密钥用于AI评分。请向用户索取并保存:
bash
python3 scripts/jobhunter.py setkey 用户GEMINI密钥_此处填写
如果用户没有密钥,搜索功能仍可正常使用,但不会进行AI评分(所有职位将获得中性评分0.5)。免费密钥获取地址:https://aistudio.google.com/apikey
核心工作流程
1. 对话式搜索
当用户要求搜索职位时,通过对话收集以下参数:
- - 关键词(必填):职位名称或搜索词(例如:Python开发工程师、数据工程师)
- 技术栈(可选):所需技术组合(例如:[Python, AWS, Docker])
- 国家(可选):搜索目标国家(例如:[西班牙, 德国])
- 远程办公(可选):true/false,仅搜索远程职位
- 经验要求(可选):入门、中级、高级、总监、高管
- 排除词(可选):需排除的术语(例如:[顾问, 派遣])
- 公司规模(可选):LinkedIn规模代码1-8(1=1-10人,4=201-500人,7=5001-10000人)
- 最低薪资(可选):最低薪资(欧元)
- AI提示词(可选):AI评分的额外标准(例如:必须使用微服务架构)
- 最大页数(可选):每个地点抓取页数(默认3页,最多5页)
- 最低评分(可选):显示的最低AI评分(默认0.6)
无需询问所有参数——只需询问必要项(关键词、技术栈、国家),其余使用合理默认值。用户可根据需要自行添加筛选条件。
2. 执行搜索
bash
python3 scripts/job_hunter.py search {
keywords: Python开发工程师,
technologies: [Python, FastAPI, AWS],
countries: [西班牙, 德国],
remote: true,
experience: 中级,
exclude: [顾问],
min_score: 0.6,
max_pages: 3
}
脚本返回带有评分的JSON格式结果。以清晰格式呈现结果:
1. 高级Python工程师 — TechCorp公司
西班牙马德里 | 远程办公 | €5万-6万
评分:0.92 — 极佳匹配:远程办公,Python/FastAPI
https://linkedin.com/jobs/view/12345
显示评分最高的结果(评分 >= 最低评分),按评分排序。如果结果较多,显示前10个并告知还有多少个结果可供查看。
重要提示: 由于需要抓取LinkedIn数据,搜索过程需要30-90秒。请告知用户耐心等待。
3. 保存感兴趣的职位
用户可以保存感兴趣的职位以便后续查看:
bash
保存职位
python3 scripts/job_hunter.py save {
title: 高级Python工程师,
company: TechCorp公司,
location: 马德里,
url: https://linkedin.com/jobs/view/12345,
score: 0.92,
notes: 极佳匹配,已于2026年3月19日投递
}
查看已保存的职位
python3 scripts/job_hunter.py saved
删除已保存的职位
python3 scripts/job_hunter.py unsave https://linkedin.com/jobs/view/12345
4. 搜索历史
bash
显示最近的搜索记录
python3 scripts/job_hunter.py history
重新执行之前的搜索
python3 scripts/job_hunter.py rerun 1
多语言处理
检测用户使用的语言并:
- - 使用用户语言回复
- AI摘要始终使用用户语言(在ai_prompt中传递,例如:请用西班牙语回复)
- 职位数据保持LinkedIn原始语言
使用技巧
- - 按国家搜索比在LinkedIn上全局搜索远程职位效果更好
- 如果无结果,建议放宽条件:减少技术栈要求、增加搜索国家、降低经验要求
- LinkedIn可能在多次搜索后限制访问——如遇错误,建议等待5-10分钟
- 鼓励用户在职位从LinkedIn消失前保存感兴趣的职位
数据存储
所有数据以JSON格式存储在~/.openclaw/job-hunter/目录下:
- - config.json — Gemini API密钥和设置
- history.json — 搜索历史记录
- saved.json — 已保存的职位
完整数据模式请参见references/search_format.md。