Skip to content

feat(linkedin): add job search adapter#28

Merged
jackwener merged 3 commits intojackwener:mainfrom
SiweiMa:codex/linkedin-adapter
Mar 17, 2026
Merged

feat(linkedin): add job search adapter#28
jackwener merged 3 commits intojackwener:mainfrom
SiweiMa:codex/linkedin-adapter

Conversation

@SiweiMa
Copy link
Contributor

@SiweiMa SiweiMa commented Mar 17, 2026

Summary

  • src/clis/linkedin/search.ts — New adapter to search LinkedIn jobs via Voyager job cards.

Usage

# Basic search
opencli linkedin search --query 'software engineer' --location 'San Francisco Bay Area' -f json

# Search with filters
opencli linkedin search   --query 'software engineer'   --location 'San Francisco Bay Area'   --company 'OpenAI'   --experience_level entry   --job_type full-time   --date_posted week   --remote remote   --limit 3   -f json

# Include full job description + apply URL (slower)
opencli linkedin search   --query 'software engineer'   --location 'San Francisco Bay Area'   --limit 1   --details   -f json

Search arguments

Param Default Description
--query required Job search keywords
--location none LinkedIn location text
--limit 10 Number of jobs to return (max 100)
--start 0 Result offset for pagination
--company none Comma-separated company names or LinkedIn company IDs
--experience_level none internship, entry, associate, mid-senior, director, executive
--job_type none full-time, part-time, contract, temporary, volunteer, internship, other
--date_posted none any, month, week, 24h
--remote none on-site, hybrid, remote
--details false Include full job description and apply URL

Output

Default output columns:

  • rank
  • title
  • company
  • location
  • listed
  • salary
  • url

With --details, each item also includes:

  • description
  • apply_url

Notes

  • Uses Strategy.HEADER with authenticated browser requests against LinkedIn Voyager.
  • Company names are resolved from the live LinkedIn filter UI before calling the API.
  • --details opens each returned job page to expand the "About the job" section and extract the full description + apply URL, so it is intentionally opt-in.

Test plan

  • npm run build
  • opencli linkedin search --query 'software engineer' --location 'San Francisco Bay Area' --limit 1 -f json
  • opencli linkedin search --query 'software engineer' --location 'San Francisco Bay Area' --company 'OpenAI' --limit 2 -f json
  • opencli linkedin search --query 'software engineer' --location 'San Francisco Bay Area' --experience_level entry --job_type full-time --date_posted week --limit 2 -f json
  • opencli linkedin search --query 'software engineer' --location 'San Francisco Bay Area' --limit 1 --details -f json

@SiweiMa SiweiMa changed the title feat: add linkedin job search adapter feat(linkedin): add job search adapter Mar 17, 2026
@SiweiMa SiweiMa force-pushed the codex/linkedin-adapter branch 3 times, most recently from addb53f to 53864b6 Compare March 17, 2026 04:22
@jackwener jackwener force-pushed the codex/linkedin-adapter branch from efa1df3 to d4c464e Compare March 17, 2026 04:51
…rove code structure

- Extract Voyager query/URL building into typed standalone functions
- Split fetchJobCards into its own function with per-batch evaluate
- Add SearchInput interface for type safety
- Add progress logging to enrichJobDetails (stderr)
- Add section comments for code organization
- Deduplicate normalize helpers in evaluate strings
@jackwener jackwener merged commit e9b9bee into jackwener:main Mar 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants