Collect current public job postings from NAVER Careers (recruit.navercorp.com). Use when the user wants to gather, scan, or monitor NAVER's open roles, optionally by keyword. Read-only — no login, save, or apply. Prints a normalized JSON array of postings.
14 stars
0 votes
0 copies
4 views
Added August 31, 2026
ai-agentspythonbashapi
Works with
cli
api
Security analysis
A92/100
mediumInstalls packages at runtime which could introduce malicious dependencies
Installs into .claude/skills of the current project.
Are you the author of Naver Recruit Collect?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/itssosunny-naver-recruit-collect)
---
name: naver-recruit-collect
description: Collect current public job postings from NAVER Careers (recruit.navercorp.com). Use when the user wants to gather, scan, or monitor NAVER's open roles, optionally by keyword. Read-only — no login, save, or apply. Prints a normalized JSON array of postings.
---
# NAVER Careers Collect
Collect current public postings from NAVER Careers and return normalized JSON
(`docs/SCHEMA.md`). Self-contained: this skill's `collect.py` carries its own
fetch + parse and depends only on `curl_cffi` (plus `beautifulsoup4`/`lxml`,
shared with the other collectors).
## Boundaries
- **Read-only.** GET of the public listing JSON endpoint only. Never log in,
save a job, message, or apply. Do not submit any form.
- **No fabrication.** Fields the source does not expose are `null`; titles,
companies, and dates are copied verbatim.
- A collected posting reflects the public page at run time; it is not proof the
role is still open.
## Run
If `collect.py` fails with `ModuleNotFoundError`, install the deps yourself
(`pip install curl_cffi beautifulsoup4 lxml`) and retry — do not ask the user
to install anything.
```bash
pip install curl_cffi beautifulsoup4 lxml # or: pip install -r requirements.txt
python3 skills/naver-recruit-collect/collect.py --limit 20
python3 skills/naver-recruit-collect/collect.py --query "AI" --limit 20
```
- `--query, -q` — server-side search word. NAVER's listing endpoint takes an
`sw` parameter that genuinely filters at the source, so this narrows results
(empty default = all open postings).
- `--limit, -n` — max postings (default 20). The endpoint pages via
`firstIndex`; the collector walks pages until it has `--limit` or the source
is exhausted.
- `--pretty` — indent the JSON.
Output: a JSON array on stdout (`source, external_id, url, title, company,
location, employment_type, posted_at, deadline, salary, snippet, collected_at`);
a one-line count on stderr.
## Notes
- Source: `SRC-JOB-NAVER` — https://recruit.navercorp.com/ (re-verified
2026-07-07). This is a company career portal: it typically lists only a
handful of open postings at a time (all NAVER-group companies).
- Listing endpoint: `GET /rcrt/loadJobList.do?sw=<kw>&firstIndex=<n>` returns
JSON `{list, totalSize}`. The `/rcrt/list.do` page renders those rows
client-side via `drawJobList()`, so scraping the HTML would yield nothing —
call the JSON endpoint (this skill does).
- `external_id` is `annoId`; the canonical posting URL is the item's
`jobDetailLink` (`/rcrt/view.do?annoId=<id>`).
- `company` is `sysCompanyCdNm` (the specific NAVER-group entity). `location` is
left `null` — the feed exposes only a `workAreaCd` code with no readable label.
`snippet` carries the job class / sub-job / hire-type tags.
- If the endpoint returns 0 rows or its field names change, re-derive against a
live fetch of `/rcrt/loadJobList.do` (do not hardcode a specific posting).