Collect recent public job postings from Daijob (daijob.com) — bilingual/English jobs in Japan. Use when the user wants to gather, scan, or monitor Daijob listings by keyword. Read-only — no login, save, or apply. Prints a normalized JSON array of postings.
14 stars
0 votes
0 copies
3 views
Added August 31, 2026
ai-agentspythongobash
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 Daijob Collect?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/itssosunny-daijob-collect)
---
name: daijob-collect
description: Collect recent public job postings from Daijob (daijob.com) — bilingual/English jobs in Japan. Use when the user wants to gather, scan, or monitor Daijob listings by keyword. Read-only — no login, save, or apply. Prints a normalized JSON array of postings.
---
# Daijob Collect
Collect recent public postings from Daijob's server-rendered English job search
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`,
`beautifulsoup4`, `lxml`.
## Boundaries
- **Read-only.** GET of the public search-result page 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, locations, and salaries 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/daijob-collect/collect.py --query "engineer" --limit 20
python3 skills/daijob-collect/collect.py --limit 20 # latest in-Japan roles
```
- `--query, -q` — free-word keyword (mapped to Daijob's `kw` search param).
- `--limit, -n` — max postings (default 20; the search page serves ~20/page).
- `--pretty` — indent the JSON.
Output: a JSON array on stdout; a one-line count on stderr. Daijob exposes
company, location, salary, and a job-description snippet cleanly. Employment
type is not surfaced on the card, so it stays `null`.
## Notes
- Source: `SRC-JOB-DAIJOB` — https://www.daijob.com/en/ (collectible_open,
verified 2026-07-07). The listing is at `/en/jobs/search?in_japan=true&pg=0`
(redirects to `/en/jobs/search_result`); `/en/jobs` itself is a category hub,
not a posting list.
- Cards are `article.job-card`; the title is `h2.job-card__title a` with an href
of `/en/jobs/detail/<id>`. `external_id` is that numeric `<id>`. Location,
salary, and description are read from the card's `dl`/`dt`/`dd` rows.
- If the layout changes and 0 postings return, re-derive the `article.job-card`
child selectors against a live fetch (do not hardcode a specific company).