Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wanted — 원티드 직군/직무별 채용공고 CSV 수집기

CI

원티드(wanted.co.kr)에서 직군·직무를 골라 채용공고를 .csv로 떨궈주는 Go CLI 도구입니다. 터미널에서 화살표로 직접 고를 수도 있고, Claude에 붙여(MCP) 대화로 시킬 수도 있습니다.

./wanted export        # 화살표로 직군·직무 고르면 CSV 생성

주요 기능

  • 🎯 화살표 대화형 선택 — 직군 하나 고르고 → 직무는 여러 개 토글 → 확정
  • 🧩 직무 다중 선택 — 여러 직무의 공고를 모아 중복 제거 후 하나의 CSV로
  • 🔄 항상 최신 — 직군/직무 분류를 원티드에서 실시간으로 가져옴
  • 🤖 MCP 모드 — Claude Code / Claude Desktop에 도구로 연결
  • 🪶 가벼움 — 의존성은 raw 터미널 처리용 golang.org/x/term 하나뿐 (CLI 프레임워크 없음)

설치

1. 릴리스에서 실행파일 내려받기 (권장)

Releases에서 OS/아키텍처에 맞는 파일을 받습니다.

# 예: macOS (Apple Silicon)
tar xzf wanted_v1.0.0_darwin_arm64.tar.gz
./wanted version

제공 대상: linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64

2. 소스에서 빌드

  • Go 1.25 이상 (버전은 go.modgo 지시자 기준)
git clone https://github.com/heebin2/wanted.git
cd wanted
go build -o wanted ./cmd

빠른 시작

./wanted groups                                   # 직군 목록 보기
./wanted positions -group 개발                     # 개발 직군의 직무 목록
./wanted export                                    # 화살표로 직접 선택 (권장)
./wanted export -group 개발 -job "서버 개발자,웹 개발자"  # 플래그로 바로 뽑기

CLI 사용법

wanted <command> [flags]
Command 설명
groups 직군(대분류) 목록 출력
positions -group <직군> 해당 직군의 직무(소분류) 목록 출력
export [flags] 공고를 수집해 CSV 저장 (-group 없이 실행하면 화살표 선택)
mcp MCP 서버로 실행 (Claude 연결용)
version 버전 출력
help 도움말

1. 직군 둘러보기

./wanted groups
 GROUP    직무수    직군
 518      38     개발
 507      32     경영·비즈니스
 523      23     마케팅·광고
 ...

2. 직군 안의 직무 보기

./wanted positions -group 개발     # 이름으로
./wanted positions -group 518      # id로

3. CSV로 내보내기

3-a. 화살표로 대화형 선택 (권장)

export인자 없이 실행하면 화살표 UI가 뜹니다.

./wanted export
직군을 선택하세요
  ↑/↓ 이동 · Enter 선택 · q 취소
▸ 개발  (직무 38개)
  경영·비즈니스  (직무 32개)
  ...

[개발] 직무를 선택하세요 (여러 개 가능 · 미선택 시 직군 전체)
  ↑/↓ 이동 · Space/Enter 선택 · a 전체 · 맨 아래 '완료'에서 확정 · q 취소
▸ [✓] 서버 개발자  (공고 911건)
  [✓] 소프트웨어 엔지니어  (공고 840건)
  [ ] 웹 개발자  (공고 721건)
  ...
  ✅ 완료 — 선택한 2개 직무로 진행
  • ↑/↓(또는 j/k)로 이동, Enter로 직군 선택
  • 직무 화면에서 Space 또는 Enter여러 직무를 토글 — 선택하는 순간 실행되지 않습니다
  • a로 전체 토글, 다 고른 뒤 맨 아래 ✅ 완료 행에서 Enter로 확정 → 이때 수집 시작
  • 직무를 하나도 선택하지 않고 완료하면 직군 전체가 대상
  • q(또는 Esc)로 취소

3-b. 플래그로 바로 내보내기

# 이름으로 선택 (부분·공백무시 매칭)
./wanted export -group 개발 -job "서버 개발자"

# 직무 여러 개 (쉼표 구분) — 중복 제거 후 하나의 CSV
./wanted export -group 개발 -job "서버 개발자,웹 개발자,Node.js 개발자"

# id로 선택 + 최대 50건 + 자격요건·우대사항까지
./wanted export -group 518 -job 872 -max 50 -detail

# 직무 생략 시 직군 전체
./wanted export -group 마케팅·광고 -out marketing.csv

# 지역 필터 (생략 시 전국)
./wanted export -group 개발 -job 872 -loc seoul.all,gyeonggi.all

-group / -jobid 또는 이름 둘 다 허용하며, -job은 쉼표로 여러 직무를 지정할 수 있습니다.

export 플래그
플래그 기본값 설명
-group (필수¹) 직군 id 또는 이름
-job 직군 전체 직무 id 또는 이름. 쉼표로 여러 개
-out wanted_<직군>_<직무>.csv CSV 출력 경로
-max 0 (전체) 수집할 최대 공고 수
-detail false 자격요건·우대사항까지 수집 (공고별 조회, 느림)
-loc 전국 지역 키 쉼표 구분 (seoul.all,incheon.all,gyeonggi.all)
-workers 5 상세(-detail) 조회 동시 요청 수
-delay 200ms 요청 간 지연

¹ -group을 생략하면 대화형 선택 모드로 진입합니다.

CSV 출력 형식

컬럼 설명
공고ID 원티드 공고 id
회사명 / 업종 회사 이름 / 산업 분류
포지션 공고 제목
지역 / 상세주소 시·구 / 전체 주소
경력 요구 경력 (예: 5년+, 3~7년, 경력무관)
보상금 합격 보상금
마감일 상시 채용이면 비어 있음
링크 공고 URL
자격요건 / 우대사항 -detail 사용 시에만 추가

UTF-8 BOM을 붙여 저장하므로 Excel(Windows)에서도 한글이 깨지지 않습니다.

MCP 모드 (Claude 연결)

MCP(Model Context Protocol) 는 Claude에게 외부 도구를 연결하는 표준입니다. wanted mcp를 등록해 두면, 터미널에서 직접 명령하는 대신 Claude에게 자연어로 시키면 Claude가 아래 도구를 알아서 호출해 결과를 가져옵니다.

Tool 인자 설명
list_job_groups 직군 목록
list_job_positions group 직군 안 직무 목록
export_jobs_csv group, positions?(배열) / position?, out?, max?, detail?, locations? CSV 저장 후 경로·건수 반환

export_jobs_csvpositions 배열(예: ["서버 개발자","웹 개발자"])로 직무 다중 선택을 지원합니다.

Claude Code에 등록

# 빌드된 바이너리의 절대경로로 등록
claude mcp add wanted -- /절대경로/wanted mcp

Claude Desktop에 등록

claude_desktop_config.json에 추가:

{
  "mcpServers": {
    "wanted": {
      "command": "/절대경로/wanted",
      "args": ["mcp"]
    }
  }
}

등록 후 Claude에게:

"원티드 개발 직군에 무슨 직무들 있어?" → list_job_positions 호출 "서버 개발자랑 웹 개발자 공고를 CSV로 뽑아줘" → export_jobs_csv 호출

ℹ️ wanted mcp는 stdio 기반 JSON-RPC 서버라, 터미널에서 단독 실행하면 입력을 기다리며 멈춰 있는 것이 정상입니다(사람이 직접 쓰는 모드가 아님).

동작 방식

  • 직군/직무 분류는 원티드 목록 페이지에 내장된 데이터(__NEXT_DATA__)에서 실시간으로 파싱합니다.
  • 공고는 원티드 공개 목록 API를 페이지네이션하며 수집하고, -detail 사용 시 공고별 상세 API를 병렬로 조회합니다.
  • 여러 직무를 선택하면 각 직무의 공고를 모아 공고 id 기준으로 중복을 제거합니다.

⚠️ 원티드의 비공식(내부) 엔드포인트를 사용하므로, 사이트 구조가 바뀌면 동작이 달라질 수 있습니다. 개인적·학습 용도로 사용하고 과도한 요청은 피하세요.

프로젝트 구조

wanted/
├── cmd/main.go                 # 진입점 + 디스패치 + 대화형 흐름
└── internal/
    ├── argument/               # 플래그 파싱 + help
    ├── command/                # 커맨드 enum
    ├── prompt/                 # 화살표 키 선택 UI (raw 모드)
    ├── export/                 # CSV 작성
    ├── mcp/                    # MCP(stdio) 서버
    └── wanted/                 # 원티드 API 클라이언트
        ├── wanted.go           #   HTTP 클라이언트
        ├── category.go         #   직군/직무 분류(taxonomy)
        ├── jobs.go             #   공고 목록
        ├── detail.go           #   자격요건/우대사항
        └── collect.go          #   선택 해석 + 수집 오케스트레이션

개발

go test ./...        # 테스트
go vet ./...         # 정적 분석
gofmt -l .           # 포맷 검사 (출력이 없으면 정상)

CI

main/master push 및 PR마다 GitHub Actions(.github/workflows/ci.yml)가 실행합니다.

  • gofmt 포맷 검사
  • go vet ./...
  • go build ./cmd
  • go test -race ./...

Go 버전은 go-version-file: go.modgo.mod의 지시자를 따릅니다.

릴리스

v1.0.0 형식의 태그를 push 하면 릴리스 워크플로우(.github/workflows/release.yml)가 5개 플랫폼 실행파일을 빌드해 GitHub Release에 자동 업로드합니다. 버전 문자열은 태그 값이 -ldflags로 주입되어 wanted version에 반영됩니다.

git tag v1.0.0
git push origin v1.0.0

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages