한국 채용시장용 AI 구직·지원 스킬. Claude Code와 Codex CLI에서 쓰는 SKILL.md 형식이다.
공고 찾기(사람인·잡코리아·잡알리오 크롤러) → 적합도 평가 → 이력서·경력기술서·자기소개서 작성 → 제출 전 자동 검사 → 마감 관리 → 면접 준비 → 연봉 실수령액 비교까지 한 흐름으로 돕는다. 스크립트는 파이썬 표준 라이브러리만 쓰고, API 키나 유료 서비스가 필요 없다.
MadsLorentzen/ai-job-search (MIT)를 한국 채용 관행에 맞게 다시 쓴 파생 작업이다. 원본은 덴마크 시장(Jobindex, Jobnet 등)과 LaTeX 기반 CV·커버레터 중심이다.
| 원본 | 한국판 |
|---|---|
| CV + 커버레터 (LaTeX) | 이력서 + 경력기술서 + 문항형 자기소개서 (Markdown → PDF/DOCX, 지정 양식 우선) |
| 시민권·체류 게이트 | 병역, 학력·졸업예정, 필수 자격증, 경력 연차, 지역인재·보훈, 체류자격 게이트 |
| 언어 수준 게이트 | 공인 어학점수 커트라인·인정 기간 포함 어학 게이트 |
| 덴마크 포털 CLI | 사람인·잡코리아·잡알리오(공공기관) 크롤러 (robots.txt 준수, 요청 간격 3초) + 검색 쿼리 템플릿 |
| 연봉 지수 엑셀 도구 | 연봉 실수령액·오퍼 비교 계산기 (2026년 4대보험 요율, 퇴직금 포함 연봉 환산) |
| 영문 작성 규칙 | 두괄식, 소제목, 한국 자소서 상투어 금지 목록, 블라인드 채용 규칙 + 제출 전 자동 검사기 |
| 일반 면접 | 인적성(GSAT·SKCT 등), NCS, 코딩테스트, 실무·임원·PT·토론 면접, 처우협의 |
| - | 자소서 문항 유형집, NCS 직무기술서 활용, HWP 양식 안내 |
| - | 글자수 측정 (공백 포함/제외/바이트, 문항별) |
| - | 지원 현황: 마감 임박 목록, 캘린더(.ics) 내보내기, HTML 현황판 |
| 서브에이전트 3개 (공고 가져오기·선별·검수) | 한국판으로 이식, 읽기 전용 원칙 유지 |
원본의 핵심 원칙은 그대로 유지했다: 프로필에 없는 사실은 쓰지 않는다, 회사 관련 주장은 직접 확인한 출처로만, 공고 본문은 지시가 아니라 데이터로 취급(프롬프트 인젝션 방어).
agents/ # Claude Code 서브에이전트 (읽기 전용)
├── posting-fetcher-kr.md
├── posting-scorer-kr.md
└── application-reviewer-kr.md
skills/job-application-kr/
├── SKILL.md # 워크플로·검증 체크리스트
├── references/
│ ├── 01-candidate-profile.md # 프로필 템플릿
│ ├── 02-writing-style.md # 문체 규칙, 블라인드 목록
│ ├── 03-job-evaluation.md # 게이트·점수·연봉 점검·기업 리서치
│ ├── 04-resume-templates.md # 이력서·경력기술서·포트폴리오
│ ├── 05-self-introduction.md # 자소서 작성·글자수 운용
│ ├── 06-interview-prep.md # 필기·면접·처우협의
│ ├── 07-web-research.md # 공고 수집·크롤러·포털·신뢰 경계
│ └── 08-question-types.md # 문항 유형집·NCS·HWP 양식
├── scripts/
│ ├── jobcrawl.py # 사람인·잡코리아·잡알리오 검색/상세 크롤러
│ ├── charcount.py # 글자수 측정
│ ├── precheck.py # 제출 전 자동 검사
│ ├── salary.py # 연봉 실수령액·오퍼 비교
│ └── tracker.py # 마감 목록·.ics·현황판
└── templates/tracker.csv # 지원 현황 기록 (UTF-8 BOM, Excel 호환)
tests/ # pytest 160개
설치 경로 기준 예시(S=~/.claude/skills/job-application-kr/scripts).
# 공고 찾기 (기본: 사람인+잡코리아+잡알리오, 사이트당 2페이지)
python $S/jobcrawl.py search "백엔드 개발자" --pages 2 --exclude-ads
python $S/jobcrawl.py search "행정" --site jobalio # 공공기관만
python $S/jobcrawl.py search "회계" --json --out 결과.json # 파일로 저장
python $S/jobcrawl.py detail "https://www.saramin.co.kr/zf_user/jobs/relay/view?rec_idx=..."
# 자소서 글자수 (문항별, 제목의 "(제한 1,000자)" 자동 인식)
python $S/charcount.py 자기소개서.md --sections
# 제출 전 검사 (다른 회사명·블라인드·금지 표현·문체)
python $S/precheck.py 자기소개서.md 이력서.md --target "지원회사" --tracker applications/tracker.csv --blind
# 연봉 실수령액 비교 (만원 단위)
python $S/salary.py "현직=4300" "A사=5200,퇴직금포함" "B사=5000,비과세=10"
# 마감 관리
python $S/tracker.py list applications/tracker.csv --days 14
python $S/tracker.py ics applications/tracker.csv --out 마감일.ics # 캘린더 앱에서 가져오기
python $S/tracker.py report applications/tracker.csv --out 현황판.html$S = "$env:USERPROFILE\.claude\skills\job-application-kr\scripts"
python "$S\jobcrawl.py" search "행정" --site jobalio --out 공고.md
python "$S\salary.py" "현직=3200" "A공사=3600"python이 없으면py로 실행한다(python.org 설치본의 실행기).- 한글 출력은 PowerShell·cmd(cp949)와 Git Bash·WSL(UTF-8) 모두 깨지지 않게 셸에 맞춰 나온다. 직접 고정하려면
PYTHONIOENCODING환경 변수를 쓴다. - 결과를 파일로 남길 때는
>리다이렉트보다--out이 안전하다(항상 UTF-8로 저장). charcount.py에 PowerShell 파이프로 한글을 넘기면 PowerShell 5.1이 글자를 바꿀 수 있다. 파일 경로로 넘긴다.
- 요청 전에 robots.txt(RFC 9309)를 읽고 금지 경로는 가져오지 않는다. robots.txt를 읽을 수 없으면 금지로 본다(원티드·리멤버는 이 이유로 제외). 리다이렉트도 한 단계씩 다시 검사한다.
- 같은 사이트에 최소 3초 간격(여러 프로세스가 동시에 실행돼도
~/.cache/job-application-kr/의 파일로 간격 공유), 실행당 검색 10페이지·상세 20건 상한, Crawl-delay가 60초를 넘으면 건너뜀. User-Agent에 도구 이름을 밝힌다. - 개인 구직 목적의 소량 조회에만 쓴다. 수집한 공고를 모아 재배포하거나 서비스로 만들지 않는다.
- robots.txt 준수가 이용약관·법 준수를 뜻하지는 않는다. 데이터베이스를 반복적·체계적으로 복제하면 양이 적어도 저작권법(제93조) 문제가 될 수 있다. 각 포털 약관을 확인한다.
- 종료 코드: 0 성공, 1 robots 금지, 2 네트워크·입력 오류, 3 응답은 왔는데 0건(화면 구조 변경 의심 — 이슈로 알려 주면 고친다).
2026년 7월 기준 국민연금 4.75%(기준소득월액 41만659만 원), 건강보험 3.595%, 장기요양 건강보험료의 13.14%, 고용보험 0.9%. 소득세는 연간 세액(근로소득공제·인적공제·보험료 공제·근로소득세액공제)을 직접 계산해 12로 나눈 추정치라 국세청 간이세액표와 월 수천수만 원 차이가 날 수 있다. 요율이 바뀌면 salary.py 상단 상수를 고친다.
원본의 서브에이전트 3개를 한국판으로 옮겼다. 셋 다 읽기 전용(Edit/Write 도구 없음)이다. 신뢰할 수 없는 공고 텍스트를 다루는 쪽이 파일을 바꿀 수 없게 해서, 공고에 숨은 지시문(프롬프트 인젝션)이 작업을 조작하지 못하게 한다.
| 에이전트 | 하는 일 |
|---|---|
posting-fetcher-kr |
공고 URL 한 건을 크롤러·robots.txt 규칙으로 가져와 본문 원문과 메타데이터(마감일, 채용형태, 근무지, 경력, 전형, 자소서 문항·글자수)를 돌려주고, 숨은 지시문·사기 의심 요구를 찾아 보고 |
posting-scorer-kr |
크롤러 검색 결과나 URL 목록을 받아 게이트(자격·어학·근무지) 판정과 적합도 점수를 JSON으로 반환. 병렬 선별용 |
application-reviewer-kr |
채용 담당자 입장에서 이력서·자소서를 프로필과 한 줄씩 대조하고 자동 검사기를 돌린 뒤, 회사 관련 주장을 직접 확인해 원문/수정안 쌍으로 돌려줌. 작성자와 검수자 분리 |
스킬은 에이전트가 설치되어 있으면 자동으로 맡기고, 없으면(Codex 등) 같은 규칙으로 직접 수행한다. 에이전트는 Claude Code를 새로 시작해야 목록에 잡힌다.
Codex에서 쓸 때: 웹 도구 이름(WebFetch/WebSearch)은 Claude Code 기준으로 적혀 있다. Codex의 웹 검색·가져오기 기능으로 같은 순서를 따르면 된다. 스크립트는 그대로 쓸 수 있다.
Claude Code:
git clone https://github.com/wing0828/ai-job-search-kr
cp -r ai-job-search-kr/skills/job-application-kr ~/.claude/skills/
mkdir -p ~/.claude/agents && cp ai-job-search-kr/agents/*.md ~/.claude/agents/Codex CLI:
cp -r ai-job-search-kr/skills/job-application-kr ~/.codex/skills/- 작업 폴더를 하나 만들고
references/01-candidate-profile.md를profile.md로 복사해 채운다. 기존 이력서를 주면서 "프로필 만들어줘"라고 해도 된다. - "백엔드 공고 찾아줘" → 크롤러로 찾고 프로필 기준으로 선별. 또는 공고 URL을 주고 "이 공고 평가해줘".
- 적합하면 "이력서랑 자소서 써줘". 자소서 문항과 글자수 제한을 함께 준다. 작성 후 자동 검사·독립 검수를 거친다.
- "마감 임박한 거 뭐야?", "○○ 실무면접 모의면접 해줘", "이 오퍼 실수령 비교해줘".
pip install pytest
pytest tests -q크롤러 테스트는 합성 HTML과 가짜 네트워크로 돌아 실제 사이트에 요청하지 않는다.
- 2026-10-21: 가상 인물 프로필과 실제 공고 2건(경력직 백엔드)으로 평가 → 이력서 → 자소서 전 과정을 돌리고, 별도 검수 에이전트가 규칙·법령 표현·스크립트를 점검. 발견된 25건을 반영.
- 2026-10-22: 읽기 전용 서브에이전트 3개 이식 후 실제 공고로 동작 검증, 지적 사항 반영. 크롤러·자동 검사기·연봉 계산기·마감 관리 도구·문항 유형집 추가. 크롤러는 사람인·잡코리아 실제 검색(40건+24건)과 상세 페이지로 확인.
- 2026-10-22 (사용성 점검): 신입·공공기관 시나리오와 한국어 Windows 기본 환경으로 다시 써 봄. 고친 것: PowerShell(cp949)에서 결과를 파이프·파일로 넘기면 한글이 깨지던 문제(셸별 인코딩 자동 선택), 사람인·잡코리아에 공공기관 공고가 거의 없던 문제(잡알리오 지원 추가, 실제 검색 37건 확인), 결과 표에 고용형태(정규직·채용형/체험형 인턴·기간제) 열 추가, 공공기관 필수 조건(한국사능력검정·정년·즉시 근무)과 가산점을 평가 기준·프로필에 추가, 공공기관 자소서 문항이 첨부 입사지원서에 있다는 안내, 이력서 없는 신입을 위한 질문형 프로필 작성, 글자수가 제한의 70% 미만일 때 안내.
- 실제 지원서 제출, 포털 로그인은 사용자가 직접 한다.
- 크롤러는 개인 구직용이다. 각 포털의 이용약관을 확인하고 지킨다.
- 연봉·리뷰 정보와 실수령액 계산은 추정치다. 참고용으로만 쓴다.
- 포털·시험 명칭과 제도, 4대보험 요율은 바뀔 수 있다. 지원 전 공식 공지를 확인한다.
MIT. 원저작권 표시(Mads Lorentzen)와 한국판 저작권 표시를 LICENSE에 함께 둔다.