Loading...
Loading...
Internal sub-skill for the job-hunt suite. Parses JD information from user-provided screenshots of any job platform (Boss Zhipin, Zhaopin, 51job, Liepin, etc.) and writes structured JD Markdown files to jd-pool. Do NOT invoke directly — use the job-hunt main skill instead.
npx skill4agent add jpcwhj/job-hunt job-hunt-fetcherwork_dirrun_idscreenshots| Field | Required |
|---|---|
| ✅ Required |
| ✅ Required |
| ⚠️ Optional, set to null if unrecognizable |
| Other fields (salary / location / experience / education, etc.) | Optional, set to null if unrecognizable |
titlejob_descriptiontitlecompany.name📋 I've looked at your <N> screenshots, and <M> of them failed to recognize the job title:
- Screenshot <X>: JD content is "<First 30 characters of JD>..."
❓ Job title not recognized<add " (and company name not recognized either)" if `company.name` is also missing>
- Screenshot <Y>: JD content is "<First 30 characters of JD>..."
❓ Job title not recognized<add " (and company name not recognized either)" if `company.name` is also missing>
Please tell me the corresponding "job title" for each screenshot by number.
If you remember the company name, you can provide it together (leave it blank if you don't remember).
Example:
"1st screenshot: New Media Operation, Company: A Cultural Media
3rd screenshot: E-commerce Operation
5th screenshot: Data Analyst, Company: xx Technology"
👉 Reply with the job title for each screenshot (company name optional)company.namecompany.namecompany.name🔍 I see that these <N> screenshots are all content for the same job "<Company Name> · <Job Title>".
According to the rule "one screenshot = one job", these <N> screenshots should be merged into one record.
👉 Reply "merge" to process as 1 job; or "separate" to process as <N> jobstitle: Job Title
company.name: Company Name
company.size: Scale Grade (A/B/C/D/E/F, see mapping table)
company.industry: Industry Tag
company.stage: Financing Stage (null if none)
salary.range: Salary Text (e.g., "20-40K")
salary.monthly_count: Number of Months (e.g., 16 for "16-month salary", null if none)
location.city: City
location.district: District
requirements.experience: Experience Requirement
requirements.education: Education Requirement
tags: List of Skill Tags
benefits: List of Benefit Tags
hr.name: HR Name
hr.title: HR Title
hr.active_status: HR Activity Status Text (e.g., "Active Today")
posted_at: Posting Time
job_description: Full Job Responsibilities
job_requirements: Full Job Qualifications
company_intro: Full Company Introduction (null if none)null| Scenario | File Name |
|---|---|
| With company name + job title | |
| Only job title (no company name) | |
| Only company name (no job title, should have been supplemented by user in Step 1) | |
| Neither (theoretically should not happen as Step 1 will force user to supplement title) | |
Note: The file name is only for uniqueness and readability. The main skill identifies pending analysis files viawhen scanning jd-pool, and does not rely on the file name pattern.status.analyzed: false
company.name: null<work_dir>/.work/jd-pool/<File Name>---
id: <Filename without .md>
fetched_at: <Current ISO 8601 time, e.g., 2026-05-02T14:23:11>
run_id: <run_id>
source: screenshot
title: <title>
company:
name: <company.name>
size: <Grade Letter, e.g., D>
industry: <company.industry>
stage: <company.stage, null if none>
salary:
range: "<salary.range>"
monthly_count: <salary.monthly_count, null if none>
location:
city: <location.city>
district: <location.district>
requirements:
experience: <requirements.experience>
education: <requirements.education>
tags: [<tag1>, <tag2>, ...]
benefits: [<benefit1>, <benefit2>, ...]
hr:
name: <hr.name>
title: <hr.title>
active_status: <hr.active_status>
posted_at: <posted_at>
status:
detail_fetched: true
analyzed: false
---
## Job Responsibilities
<Original job_description content>
## Job Qualifications
<Original job_requirements content>
## Company Introduction
<Original company_intro content, delete this section if null>Parsing completed:
- ✅ <Company Name>·<Job Title> (complete fields) → File: <File Name>
- ✅ <Company Name>·<Job Title> (complete fields) → File: <File Name>
- ⚠️ <Company Name>·<Job Title> (<Missing Field> not captured, set to null) → File: <File Name>| Exception | Handling Method |
|---|---|
| Screenshot completely unrecognizable (cannot be identified as a job detail page, image damaged, etc.) | Skip this screenshot, mark in the report as "❌ Screenshot X cannot be recognized, skipped" |
| Screenshot contains mixed content of multiple jobs that cannot be grouped | Inform the user during grouping confirmation and request re-screenshot |
| Single field extraction failed | Set this field to null, do not interrupt the entire JD processing |