技能详情(站内镜像,无评论)
作者:BEGARI DANIEL VIVEK @danielvivek2006
许可证:MIT-0
MIT-0 ·免费使用、修改和重新分发。无需归因。
版本:v1.0.0
统计:⭐ 0 · 115 · 0 current installs · 0 all-time installs
⭐ 0
安装量(当前) 0
🛡 VirusTotal:Pending · OpenClaw :可疑
Package:danielvivek2006/job-hunter-whatsapp
安全扫描(ClawHub)
- VirusTotal:Pending
- OpenClaw :可疑
OpenClaw 评估
The skill's job-finding and resume workflows mostly match its description, but there are notable gaps and mismatches (notably WhatsApp/messaging integration and secret handling) that make the package internally inconsistent and worth caution.
目的
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 ex…
说明范围
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 again…
安装机制
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.
证书
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 cred…
持久
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.
安装(复制给龙虾 AI)
将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。
请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「job-hunter-whatsapp」。简介:Automated job search, JD parsing, resume customization, and application trackin…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/danielvivek2006/job-hunter-whatsapp/SKILL.md
(来源:yingzhi8.cn 技能库)
SKILL.md
---
name: job-hunter
description: "Automated job search, JD parsing, resume customization, and application tracking pipeline. Use when: user wants to find jobs, set up automated job searches, parse job descriptions, customize/tailor resumes for specific roles, track job applications, or get job hunt updates via WhatsApp/messaging. Supports free job APIs (LinkedIn guest, Jobicy, RemoteOK, Remotive, Adzuna, JSearch/RapidAPI). Triggers on: find jobs, job search, customize resume, tailor resume for [company], track applications, job hunt, apply to [company], show jobs, job status, set up job alerts."
---
# 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](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):**
- Adzuna (country-specific, https://developer.adzuna.com)
- JSearch/RapidAPI (aggregates Indeed/Glassdoor, https://rapidapi.com — search "JSearch")
Store keys in `api_keys.json` with rate limits:
```json
{
"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](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:
```json
{
"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