← 返回 Skills 市场
weixijia

JobClaw

作者 Simon · GitHub ↗ · v1.0.20260329-142ceea · MIT-0
cross-platform ✓ 安全检测通过
259
总下载
0
收藏
0
当前安装
4
版本数
在 OpenClaw 中安装
/install job-claw
功能描述
AI-powered automated job search skill. Searches LinkedIn and Indeed daily, scores jobs against the user's profile, and saves results to a local CSV. Use when...
使用说明 (SKILL.md)

JobClaw

AI-powered job search automation. Searches multiple platforms, scores results against the user's profile, and maintains a local CSV tracker. No backend server or web dashboard required.

Quick Reference

See references/commands.md for all CLI commands and chat commands. See references/screening_guide.md for scoring logic and interview type classification. See references/keywords.md for keyword lists and search strategy.


Conversational Setup (First Run)

When a user first activates JobClaw, do not run setup.py directly. Instead, guide them through a natural conversation to collect all config values, then write config.json yourself at the end.

Check first:

test -f ~/Documents/JobClaw/config.json && echo "exists" || echo "not found"

If config doesn't exist, start the conversational flow below. Ask one topic at a time — never dump all questions at once.

Conversation Flow

Step 1 — Greeting

Hey! Let's get JobClaw set up. I'll ask you a few quick questions and have you searching for jobs in minutes.

First — what's your name?

Step 2 — Background (after they give name)

Nice to meet you, [name]! 

Tell me a bit about your background — what kind of work do you do or want to do? 
(e.g. "software engineer with Python/ML experience", "data scientist at a fintech", "researcher in NLP")

This helps me score jobs that actually fit you.

Step 3 — Skills (after background)

Got it. What are your key technical skills or tools? List whatever feels most relevant — I'll use these to boost scoring for matching jobs.

(e.g. pytorch, python, sql, docker, react, java — whatever fits you)

Step 4 — Target roles (after skills)

What kinds of roles are you looking for? You can be specific or broad.

(e.g. "ML engineer or data scientist", "backend engineer", "product manager", "research scientist")

Step 5 — Locations (after roles)

Where are you looking? List cities or regions — I'll search each one separately.

(e.g. "London, UK", "Remote", "Berlin, DE and Amsterdam, NL", "New York, NY")

Step 6 — Search preferences (after locations)

A couple of quick settings:

- How recently posted should jobs be? (default: 48 hours)
- Minimum match score to save a job? (default: 70 out of 100 — higher = fewer but better results)

Hit enter to keep defaults, or tell me what you'd prefer.

Step 7 — Daily schedule (after preferences)

Do you want a daily automated search? I can run it every weekday morning and notify you of new matches.

If yes — what time? (e.g. "7:30am", default is 07:30)
And your timezone? (e.g. Europe/London, America/New_York)

Step 8 — Notifications (after schedule)

Last one — how do you want to be notified when new jobs are found?

1. Telegram Bot (you'll need a bot token from @BotFather)
2. Through OpenClaw (if you're using another channel like Signal or WhatsApp)
3. No notifications — I'll just save to CSV

Which works for you?

For option 1, ask for: bot token + chat ID (tell them to message @userinfobot to get their chat ID). For option 2, ask for: channel name (e.g. telegram) and their chat/user ID. For option 3, set notifications.enabled: false.

Step 9 — Write config and confirm

Once all answers collected, write ~/Documents/JobClaw/config.json using the template from assets/config.example.json, populated with the user's answers. Then confirm:

All set! Here's your config summary:

👤 Name: [name]
🔍 Skills: [skills]
📍 Locations: [locations]
⏰ Daily search: [time], [timezone]
🔔 Notifications: [method]

Want me to run your first search now? (takes ~1-2 minutes)

If they say yes, run: python3 \x3Cskill_dir>/scripts/search.py --mode all


Daily Automated Search Workflow

Triggered by cron or the user saying "run job search":

# Reads: ~/Documents/JobClaw/config.json
# Writes: ~/Documents/JobClaw/data/jobs.csv
# Logs:   ~/Documents/JobClaw/logs/daily.log

./run_daily.sh              # both coding + noncoding
./run_daily.sh --mode coding
./run_daily.sh --mode noncoding

Or directly:

python3 scripts/search.py --mode all
python3 scripts/search.py --mode coding --dry-run

The search pipeline:

  1. Reads config.json for keywords, locations, min_score, platforms
  2. Searches LinkedIn + Indeed via python-jobspy
  3. Scores each job (keyword-based, 0-100) using user.skill_keywords as boosters
  4. Filters by min_score (default 70), deduplicates by company+role and URL
  5. Appends qualified jobs to data/jobs.csv
  6. Sends notification via OpenClaw/Telegram (if configured)

/newjob Command

When user says /newjob \x3Curl>:

  1. Fetch the JD: browser(action="navigate", url=\x3Curl>) then browser(action="snapshot")
  2. Analyse against references/screening_guide.md:
    • Company, Role, Location, Work Mode, Salary
    • Match Score 0-100 with reasoning
    • Interview Type estimate
    • ML Direction, Seniority
  3. Add to CSV:
    import sys; sys.path.insert(0, "\x3Cskill_dir>/scripts")
    from tracker import JobTracker
    t = JobTracker()
    t.add_jobs([{...job dict...}])
    
  4. Reply with score, match reasons, interview type, apply angle

Archive Management

When user says "archive expired jobs", "clean up old jobs", "auto-archive":

# Dry-run (see what would be archived, no changes)
python3 scripts/archiver.py

# Apply archiving
python3 scripts/archiver.py --commit

# View archive stats
python3 scripts/archiver.py --stats

# Restore a job (by company name, role, or URL fragment)
python3 scripts/archiver.py --restore "DeepMind"

Archive rules (same as the web dashboard):

  • expired_30d — status New/Interested with no update for 30+ days
  • auto_rejected — status Rejected/Passed for 60+ days
  • url_dead — non-LinkedIn URL returns 404/410 or contains "job has expired" etc.

Archived jobs move from data/jobs.csvdata/jobs_archive.csv. Auto-archive runs automatically at the end of every daily search (run_daily.sh).

Showing Stats

When user asks "show job stats", "how many jobs", "top jobs":

import sys; sys.path.insert(0, "\x3Cskill_dir>/scripts")
from tracker import JobTracker
t = JobTracker()
t.print_summary()
top = t.top_jobs(10)

Setting Up Daily Automation (OpenClaw Cron)

  1. Confirm daily time and timezone from config.json
  2. Register an OpenClaw cron job:
    Schedule: daily at \x3Cconfig.schedule.daily_time>, weekdays only
    Command: JOBCLAW_DIR=~/Documents/JobClaw \x3Cskill_dir>/scripts/run_daily.sh
    

Updating Config Mid-Conversation

When user says things like "also search in Berlin", "add React to my skills", "change time to 8am":

  1. Load ~/Documents/JobClaw/config.json
  2. Edit the relevant field
  3. Save back
  4. Confirm the change: "Done — I've added Berlin, DE to your search locations."

Environment

  • Config: ~/Documents/JobClaw/config.json (override with JOBCLAW_DIR env var)
  • CSV data: ~/Documents/JobClaw/data/jobs.csv
  • Logs: ~/Documents/JobClaw/logs/daily.log
  • Dependency: python-jobspy — install with pip install python-jobspy
安全使用建议
This package is internally consistent with its description, but before installing or enabling it consider: 1) It writes config.json and data under ~/Documents/JobClaw (or JOBCLAW_DIR you set) — inspect that file before adding secrets. 2) If you enable notifications you will need to provide a Telegram bot token and chat ID (sensitive) or OpenClaw account info; store these only if you trust the environment and review notify.py which sends them to Telegram/OpenClaw. 3) setup.py can try to pip install dependencies (it uses --break-system-packages in one invocation) — prefer a virtualenv or review/execute manually. 4) The scripts perform network requests (scraping LinkedIn/Indeed via python-jobspy, curl HEAD/GET checks) and will access arbitrary job URLs you ask it to fetch via /newjob; run in an environment where network activity and filesystem writes are acceptable. 5) If you want extra safety, set JOBCLAW_DIR to a dedicated folder, inspect tracker.py and the remainder of the code, and run the search in dry-run mode first.
功能分析
Type: OpenClaw Skill Name: job-claw Version: 1.0.20260329-142ceea JobClaw is a functional job search automation tool that uses the python-jobspy library to scrape LinkedIn and Indeed. The bundle includes scripts for searching (search.py), tracking results in a local CSV (tracker.py), archiving expired listings (archiver.py), and sending notifications via Telegram or OpenClaw (notify.py). The SKILL.md file provides well-structured instructions for an AI agent to guide users through setup and handle job analysis commands. While the tool manages sensitive information like Telegram bot tokens and performs network requests to check job URLs, these actions are transparently documented and aligned with the stated purpose of the skill. No evidence of data exfiltration, malicious execution, or harmful prompt injection was found.
能力评估
Purpose & Capability
Name/description align with the code and instructions: scripts search LinkedIn/Indeed (via python-jobspy), score results, append to a local CSV, and optionally notify via Telegram/OpenClaw. No unrelated credentials or binaries are requested.
Instruction Scope
SKILL.md explicitly instructs conversational onboarding and writing ~/Documents/JobClaw/config.json, running search.py/run_daily.sh, and using browser(...) for /newjob. This stays within the job-search purpose but does require the agent to read/write files under ~/Documents and to ask the user for notification tokens (Telegram/OpenClaw). The agent is told to not run setup.py directly, but setup.py is present and can install pip packages if used.
Install Mechanism
There is no install spec in the registry (instruction-only). Code files are included, but no downloads from arbitrary URLs or package managers are required by the registry. setup.py can pip-install dependencies locally, which is expected for a Python skill.
Credentials
The skill declares no required environment variables or primary credential. It optionally asks the user for Telegram bot token/chat_id or OpenClaw account info for notifications — these are proportional to the stated notification feature. The scripts use JOBCLAW_DIR (default ~/Documents/JobClaw), which is documented and can be overridden.
Persistence & Privilege
The skill does not request always:true and does not modify other skills. It writes/reads its own config and data files under ~/Documents/JobClaw; that is normal for a local automation tool.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install job-claw
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /job-claw 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.20260329-142ceea
Auto-published from commit 142ceea: feat: auto-archive expired jobs (matches web app rules) - archiver.py: three rules — expired_30d, auto_rejected, url_dead - 30d: New/Interested with no update → expired_30d - 60d: Rejected/Passed cleanup → auto_rejected - URL check: non-LinkedIn 404/dead-phrase → url_dead - LinkedIn skipped (always inconclusive) - Dry-run by default, --commit to apply - --restore to bring jobs back from archive - --stats for archive summary - run_daily.sh: auto-archive runs after every daily search - notify.py: shows archived count in daily summary message - SKILL.md + references/commands.md: archive commands documented
v1.0.20260319-9abbd6c
Auto-published from commit 9abbd6c: feat: conversational setup flow — agent guides user step-by-step via chat No more CLI wizard. Agent collects name, background, skills, roles, locations, schedule, notifications through natural dialogue, then writes config.json at the end. One question at a time.
v1.0.20260319-c15c8c3
Auto-published from commit c15c8c3: test: trigger CI publish pipeline
v1.0.0
Initial release — AI-powered job search automation. Search LinkedIn & Indeed daily, score against your profile, track in CSV. Zero backend required.
元数据
Slug job-claw
版本 1.0.20260329-142ceea
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 4
常见问题

JobClaw 是什么?

AI-powered automated job search skill. Searches LinkedIn and Indeed daily, scores jobs against the user's profile, and saves results to a local CSV. Use when... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 259 次。

如何安装 JobClaw?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install job-claw」即可一键安装,无需额外配置。

JobClaw 是免费的吗?

是的,JobClaw 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

JobClaw 支持哪些平台?

JobClaw 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 JobClaw?

由 Simon(@weixijia)开发并维护,当前版本 v1.0.20260329-142ceea。

💬 留言讨论