← 返回 Skills 市场
danielvivek2006

job-hunter-whatsapp

作者 BEGARI DANIEL VIVEK · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
229
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install job-hunter-whatsapp
功能描述
Automated job search, JD parsing, resume customization, and application tracking pipeline. Use when: user wants to find jobs, set up automated job searches,...
使用说明 (SKILL.md)

Job Hunter

Automated job search pipeline with JD parsing, resume tailoring, and application tracking.

Setup

1. Initialize Project

Create the project structure in the workspace:

job-hunter/
├── config.json          # User profile, target roles, API config
├── api_keys.json        # API credentials (gitignored)
├── resumes/
│   ├── base_resume.md   # User's master resume (text)
│   └── [company]_[role].md  # Customized per job
├── jobs/
│   └── tracked_jobs.json    # All discovered jobs + status

2. Gather User Profile

Ask the user for (store in config.json):

  • Current role, company, years of experience
  • Core skills and technologies
  • Target roles (e.g., "Senior iOS Engineer", "Staff Engineer")
  • Location priority tiers (e.g., Remote then City A then City B then Other)
  • Salary preference: disclose or private
  • Resume file (extract text from PDF if needed, save as resumes/base_resume.md)

3. Configure APIs

See references/apis.md for full API documentation.

Free, no auth required:

  • LinkedIn guest API (best for local/country-specific jobs)
  • Jobicy (remote jobs)
  • RemoteOK (remote tech jobs)
  • Remotive (remote dev jobs)

Free, API key required (ask user to register):

Store keys in api_keys.json with rate limits:

{
  "adzuna": { "app_id": "...", "app_key": "...", "daily_budget": 4 },
  "rapidapi": { "key": "...", "daily_budget": 2 }
}

Core Workflows

Job Finding

  1. Query all configured APIs (see references/apis.md)
  2. For each result, check against tracked_jobs.json — skip duplicates (match by URL or title+company)
  3. Read the actual JD for each new job — extract real data only:
    • Required skills/technologies (from JD text, not assumed)
    • Years of experience required (from JD text)
    • Salary (only if posted in listing)
    • Location and remote policy
  4. Calculate match score (0-100) by comparing user's actual skills against JD requirements
  5. Assign location tier based on user's priority config
  6. Add to tracked_jobs.json

Critical rule: Never hallucinate or assume JD data. If the JD can't be fetched, mark fields as "not fetched" and note it.

Salary estimates: Only use JSearch estimated-salary API endpoint. Label clearly as "market estimate" vs "posted salary".

JD Parsing

Extract from actual job posting text:

- title, company, location
- required_skills[] (from JD)
- experience_years (from JD)  
- salary (only if stated)
- tech_stack[] (from JD)
- nice_to_have[] (from JD)
- apply_url

Resume Customization

When user says "customize resume for [company]":

  1. Read the base resume from resumes/base_resume.md
  2. Read the parsed JD for that job from tracked_jobs.json
  3. Reorder and reframe existing experience to match JD requirements
  4. Emphasize matching skills, use language from the JD
  5. Never add skills, experience, or achievements the user doesn't have
  6. Never inflate numbers or add hallucinated data
  7. Save to resumes/[company]_[role].md

Application Tracking

Track status in tracked_jobs.json:

new → parsed → customized → applied → screening → interviewing → offer/rejected

Each entry:

{
  "id": "unique",
  "source": "linkedin|jobicy|remoteok|adzuna|jsearch",
  "title": "from API",
  "company": "from API",
  "location": "from API",
  "location_tier": 1,
  "match_score": 85,
  "salary": "only if posted",
  "tech_stack": ["from actual JD"],
  "experience_required": "from actual JD",
  "apply_url": "url",
  "status": "new",
  "found_date": "YYYY-MM-DD",
  "notes": ""
}

Automation

Cron Jobs

Set up two cron jobs:

  1. Job Finder — Daily at user's preferred time (default 9 AM local):

    • Query all APIs, parse new JDs, update tracker
    • sessionTarget: "isolated", delivery: "announce"
  2. Status Update — Daily at user's preferred time (default 11 AM local):

    • Read tracker, compile summary, send to user's messaging channel
    • sessionTarget: "isolated", delivery: "announce"

WhatsApp/Messaging Format

Format updates for mobile readability (40-50 chars per line). Group jobs by:

  1. 🌐 Remote (user's country)
  2. 🌍 Remote (international)
  3. 🏠 Office (by city, user's priority order)

Per job card:

━━━━━━━━━━━━━━━━━━
🏢 *Company Name*
📋 Role Title
📅 X+ yrs (from JD)
💰 Salary (if posted)
🛠 Tech: from actual JD
📍 Location
🎯 Match: X% — reason

Only show data from actual JD. Mark unfetched JDs with ⚠️.

Interactive Commands

Users can ask anytime:

  • "show jobs" / "what's available" → list tracked jobs
  • "show hyderabad jobs" → filter by location
  • "customize resume for [company]" → trigger customizer
  • "apply to [company]" → update status, note action needed
  • "status" → summary of all applications
  • "mark [company] as [status]" → update tracker
安全使用建议
This skill appears to do what it says (job search, JD parsing, resume tailoring) but has important gaps and inconsistencies you should resolve before installing or running it: - Messaging integration: The skill promises WhatsApp/messaging updates but gives no implementation details or required credentials (e.g., Twilio, WhatsApp Business API, or other gateways). Ask the author how messages are sent and what credentials are required. Do not wire up messaging yourself without understanding where messages will be delivered and how credentials are protected. - Secret handling: The SKILL.md expects API keys to be stored in api_keys.json but the package metadata declares no required env vars. Prefer storing secrets in secure environment variables or a secrets manager rather than a plaintext file; if you must use a file, ensure it's gitignored and access-restricted. Confirm where api_keys.json will live and who/what can read it. - LinkedIn scraping: The references show using HTML regex scraping for LinkedIn. That is brittle, can break or be blocked (User-Agent required), and may violate LinkedIn terms. Be prepared for rate limiting and failures; consider using supported APIs where possible. - Local file I/O: The included script (extract_resume.mjs) reads local PDFs and writes text files — ensure you run it on machines you control and do not feed sensitive documents to untrusted environments. The script itself does not perform network I/O. - Missing metadata: The registry should declare required credentials (or explicitly mark none are needed). The mismatch reduces transparency; ask the publisher for an updated manifest listing the secrets and integrations. If you still want to use this skill: (1) request or require a design describing messaging integration and credential handling, (2) keep secrets out of version control, (3) run resume extraction locally, (4) review any additional code you add for network calls before granting credentials, and (5) consider rate limits and legal/ToS risks around scraping LinkedIn.
能力评估
Purpose & Capability
The skill's name and description (automated job search, JD parsing, resume tailoring, application tracking) align with the included instructions and APIs. However, the description advertises WhatsApp/messaging delivery but the SKILL.md does not define any messaging integration, delivery mechanism, or required credentials (e.g., Twilio/WhatsApp API keys). The registry metadata declares no required environment variables while the instructions expect API keys to be stored in api_keys.json (Adzuna, RapidAPI). These are implementation/metadata mismatches rather than obvious malicious intent.
Instruction Scope
SKILL.md stays within job-hunting scope: it instructs querying listed job APIs, fetching and parsing JDs, computing match scores, tailoring resumes, and maintaining a local tracker. It instructs storing API keys in a local file and extracting resume text from PDFs. Nothing in SKILL.md instructs reading unrelated system files or exfiltrating arbitrary data. Concerns: it prescribes scraping LinkedIn HTML using regexes (fragile and possibly against LinkedIn terms), and it promises WhatsApp/messaging delivery without explaining how or what credentials will be used — that is an operational gap that could lead implementers to add ad-hoc integrations later.
Install Mechanism
There is no install spec; the skill is instruction-only with one small helper script. The included script depends on pdfjs-dist but installation of that package is left to the user — no downloads from unknown URLs or archive extraction are present. This is low risk from an install-mechanism perspective.
Credentials
The registry declares no required environment variables, yet SKILL.md expects API credentials (Adzuna app_id/app_key, RapidAPI key) to be provided and saved in api_keys.json. Also, the skill advertises WhatsApp/messaging notifications but does not specify required messaging credentials or how to supply them. Storing secrets in a file (api_keys.json) without guidance on secure storage is a potential security concern. The number and type of credentials needed are proportional to the stated job-API integrations, but the skill's metadata not listing those secrets and the missing messaging-credential instruction are inconsistent and problematic.
Persistence & Privilege
The skill does not request permanent presence (always: false), and there is no install-time modification of other skills or global agent config implied by the files. Cron/automation is described as a user setup step rather than an enforced always-running component. This dimension appears appropriately scoped.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install job-hunter-whatsapp
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /job-hunter-whatsapp 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Major update: Streamlined for automation, accurate job data, and API-based workflows. - Replaced manual and multi-step workflows with a fully automated job search, JD parsing, and application tracking pipeline. - Migrated to API-based job sourcing (LinkedIn guest, Jobicy, RemoteOK, Remotive, Adzuna, JSearch), with clear setup and credentials management. - Strictly enforces use of actual job description data only (no assumptions/hallucinations) for skills, requirements, and salary. - Introduced robust resume customization pipeline—tailors for a specific job using only verified user experience and JD text. - Tracks all jobs and statuses in a unified JSON tracker, supports daily job find/status update runs, and mobile-friendly WhatsApp updates. - Removed manual guides, Python/Bash scripts, and user templates; added concise documentation and a new JD extraction script.
元数据
Slug job-hunter-whatsapp
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

job-hunter-whatsapp 是什么?

Automated job search, JD parsing, resume customization, and application tracking pipeline. Use when: user wants to find jobs, set up automated job searches,... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 229 次。

如何安装 job-hunter-whatsapp?

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

job-hunter-whatsapp 是免费的吗?

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

job-hunter-whatsapp 支持哪些平台?

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

谁开发了 job-hunter-whatsapp?

由 BEGARI DANIEL VIVEK(@danielvivek2006)开发并维护,当前版本 v1.0.0。

💬 留言讨论