Community라이팅 & 에디팅github.com

ATS 이력서 빌더 / 최적화

로컬 기반 ATS 친화적 이력서 생성, 최적화 및 내보내기 도구 (ResumeIR JSON 기반).

최적화란 무엇인가요?

이 스킬은 사용자가 ATS(지원자 추적 시스템)에 최적화된 전문 이력서를 생성, 최적화 및 관리할 수 있도록 도와줍니다. 모든 작업은 로컬에서 처리되며 외부 서비스나 네트워크에 의존하지 않습니다. 사용자는 이력서를 처음부터 작성하거나 기존 파일(PDF/DOCX/TXT)을 업로드하여 개선할 수 있습니다. 지원 대상(JD)을 분석하여 키워드를 커버하고, 진단 보고서를 통해 ATS 통과 가능성(application_acceptability)을 평가합니다. 또한 이력서 버전 관리(Save, Rename, Compare, Rollback) 및 DOCX/PDF/HTML 형식 내보내기를 지원합니다. Claude Code, Cursor 등 로컬 Python 환경을 갖춘 모든 AI 에이전트에서 사용 가능하며, ResumeIR v1 스키마를 기반으로 구조화된 데이터를 관리합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add lonelydoctor/ats-resume-builder

Installed? Explore more 라이팅 & 에디팅 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

ATS 이력서 생성/최적화 Skill

작업 목표

  • 본 Skill은 사용자가 ATS 친화적인 전문 이력서를 생성, 최적화 및 관리할 수 있도록 지원합니다.
  • 기능: 이력서 생성, 이력서 최적화, 지원 가능성 검사, 버전 관리, 파일 내보내기
  • 트리거 조건: 사용자가 새 이력서를 만들거나, 기존 이력서를 최적화하거나, 이력서를 비교/내보내려 할 때

사전 준비

  • 의존성 설명: 본 Skill은 순수 로컬 Python 라이브러리를 사용하여 파일을 파싱하고 내보냅니다 (외부 서비스/네트워크 의존성 없음).
    pdfplumber>=0.10.0   # PDF 이력서 파싱
    python-docx>=1.1.0   # DOCX 생성
    reportlab>=4.0.0     # PDF 생성 (내장 CJK 폰트 포함, 순수 pip; 미설치 시 HTML로 자동 폴백)
    
  • 디렉토리 준비: 현재 작업 디렉토리에 버전 관리 디렉토리를 생성합니다.
    mkdir -p .resume-versions
    

핵심 원칙

하드 규칙

  1. 사용자 경험/데이터 절대 날조 금지: 누락된 내용은 【자리표시자】를 사용하고 "최소 보충 목록"을 출력합니다.
  2. ATS 친화적: 기본 단일 컬럼, 테이블/텍스트 상자/아이콘 없음; 표준 문단 제목 사용.
  3. 지원 가능성: 진단 보고서는 HR 1차 스크리너 관점에서 제목 매칭, 경력/위치/연락처/근무 허가/입사 가능 시간을 확인하며, 사진/나이/혼인 여부/정치적 성향/희망 연봉 등 목표 시장 금기 정보가 있는지 반드시 점검합니다.
  4. 완전 출력: ResumeIR JSON, 진단 보고서, 지원 가능성 결론, 개선된 이력서 본문을 반드시 함께 출력합니다. 내보내기 파일은 필요 시 로컬 스크립트로 생성합니다("파일 내보내기" 참조).
  5. 사용자 입력 최소화: "텍스트 붙여넣기/파일 업로드"를 우선 지원하며, 핵심 필드 누락 시에만 질문합니다.

출력 구조

모든 작업은 다음 세 부분을 출력해야 합니다 (내보내기 파일은 필요 시 생성).

  1. ResumeIR JSON: 고정 필드명, ResumeIR.v1 스키마 준수.
  2. 진단 보고서: 문제 목록 + 심각도 + 제안, 진단 보고서 규격 준수.
  3. 지원 가능성 결론: application_acceptability, "지금 지원 가능한지 / HR 1차 스크리너에서 어디가 걸리는지 / 무엇을 먼저 보충해야 하는지" 답변.
  4. 개선된 이력서 본문: 일반 텍스트 미리보기.
  5. (선택 사항) 내보내기 파일: 사용자가 DOCX/PDF를 요청하면 scripts/render_resume.py를 호출하여 로컬에서 생성.

작업 단계

모드 선택

사용자 요구에 따라 모드를 선택합니다.

  • 모드 1: 이력서 생성 (처음부터): 사용자가 처음부터 이력서를 작성하도록 돕습니다.
  • 모드 2: 이력서 최적화 (기존 이력서): 사용자의 기존 이력서를 기반으로 최적화합니다.

모든 모드는 선택적 입력을 지원합니다.

  • JD (사용자가 원문을 붙여넣음)
  • 목표 직무: target_title / target_level (중국: P6/P7, 전문가/수석/임원; 미국 기술직: Senior/Staff, L5/L6, SDE II 등)
  • 언어: zh-CN / en-US
  • 업계: 인터넷/AI/데이터/개발/운영/영업/기능 등
  • 템플릿: template_id (기본값 cn_ats_a4_v1)

모드 1: 이력서 생성 (처음부터)

단계 1: 정보 수집

최소한의 질문으로 사용자로부터 다음 정보를 수집합니다.

  • 기본 정보: 이름, 전화번호, 이메일, 도시
  • 목표 직무: target_title, target_level, target_industry
  • 최근 2-3개 직무 경험: 각 항목에 회사, 직위, 시작/종료일, 3가지 성과 요점 포함
  • 학력: 학교, 학위, 전공, 졸업일
  • 기술: 주요 기술 (primary) 및 보조 기술 (secondary)

단계 2: ResumeIR 생성

수집된 정보를 ResumeIR 형식으로 변환합니다 (전체 필드는 ResumeIR.v1 스키마 참조). 누락된 필드는 【자리표시자】로 채웁니다. 최소 뼈대 예시:

{
  "meta": {"version": "1.0", "language": "zh-CN", "locale": "zh-CN"},
  "basics": {"name": "张三", "phone": "【자리표시자】", "email": "【자리표시자】", "target_title": "제품 관리자"},
  "summary": "",
  "skills": {"primary": ["요구 사항 분석", "데이터 분석"], "secondary": []},
  "work": [{"company": "某회사", "title": "제품 관리자", "start": "2021-06", "end": "present",
            "bullets": ["주도하여 ... 20% 향상"]}],
  "projects": [],
  "education": [{"school": "【자리표시자】", "degree": "학사", "start": "", "end": ""}]
}

단계 3: 첫 번째 버전 이력서 출력

  • ResumeIR JSON 출력
  • 일반 텍스트 미리보기 출력 (표준 순서로 정렬)
  • 진단 보고서 생성 (완전성 중점 점검)
  • 지원 가능성 결론 생성: ready / needs_fix / do_not_submit, HR 1차 스크리너에서 걸릴 3개 이하 문제 나열
  • 최소 보충 목록 출력 (최대 8개 문제)

단계 4: 버전 저장

자동으로 첫 번째 버전으로 저장: version_name = "{target_title}-{date}-{lang}"

모드 2: 이력서 최적화 (기존 이력서)

단계 1: 이력서 파싱

  • 사용자가 파일(PDF/DOCX/TXT)을 업로드한 경우: scripts/parse_resume.py를 호출하여 텍스트 추출.
  • 사용자가 텍스트를 붙여넣은 경우: 텍스트 내용을 직접 사용.

단계 2: 확인 메시지 표시

사용자에게 다음 핵심 필드를 표시하여 구문 분석 정확도를 확인합니다.

  • 이름
  • 최근 회사
  • 최근 직위
  • 근무 연수 추정치

단계 3: JD 수집 (선택 사항)

사용자에게 목표 JD가 있는지 묻고, 있으면 붙여넣도록 요청합니다.

단계 4: ResumeIR 및 진단 보고서 생성

  • 이력서 텍스트에서 정보를 추출하여 ResumeIR 생성 (누락 시 【자리표시자】 사용).
  • 진단 보고서 출력 (점수 0-100, 문제 목록 + 심각도 + 제안).
  • 지원 가능성 결론 출력: 제목 매칭, 첫 페이지 가독성, 연락처, 위치/입사일/근무 허가, 시장 금기 정보, 직무 증거가 HR 1차 스크리너를 충족하는지 여부.
  • 개선된 ResumeIR 생성.
  • 일반 텍스트 미리보기 출력 (사용자가 파일을 요청하면 render_resume.py를 호출하여 내보내기).

단계 5: 버전 저장

자동으로 첫 번째 버전으로 저장: version_name = "{target_title}-{date}-{lang}"

이력서 작성 규범

직무 경험 Bullet 작성법

각 Bullet은 다음 구조를 따라야 합니다.

동사 + 작업 + 방법/도구 + 결과 (지표)

예시:

  • ❌ 오류: 데이터 분석 및 보고서 생성 담당
  • ✅ 올바름: Python과 SQL을 사용하여 사용자 행동 데이터를 분석하고, A/B 테스트를 통해 제품 기능을 최적화하여 일간 활성 사용자 20% 증가

정량화 요구 사항

  • 구체적인 숫자, 백분율, 금액 등 정량적 지표를 최대한 사용합니다.
  • 정량화할 수 없는 경우 【metric】 자리표시자를 사용하고, 보충 목록에 알림을 추가합니다.

JD 키워드 커버리지 (JD가 있는 경우)

  • primary skills에서 키워드 커버리지를 진행합니다 (≤12개).
  • Bullet에 자연스럽게 반영하고, 억지로 단어를 쌓지 않도록 합니다.

버전 관리

버전 저장

스크립트를 사용하여 현재 ResumeIR을 저장합니다.

python3 scripts/version_manager.py save --version-name "제품관리자-2024-01-15-ko-KR" --resume-ir "resume_ir.json"

버전 이름 지정

python3 scripts/version_manager.py rename --old-name "v1" --new-name "제품관리자-2024-01-15-ko-KR"

버전 비교

python3 scripts/version_manager.py compare --version1 "v1" --version2 "v2"

버전 롤백

python3 scripts/version_manager.py rollback --version-name "v1"

파일 내보내기

로컬 내보내기 (순수 Python, 외부 서비스/네트워크 없음)

사용자가 내보내기를 요청하면 현재 ResumeIR을 JSON으로 저장한 후 스크립트를 호출합니다.

python3 scripts/render_resume.py --resume-ir "resume_ir.json" --output-formats "docx,pdf" --output-dir ./out

내보내기는 단계적 폴백을 사용하여 어떤 환경에서도 사용 가능한 파일을 생성할 수 있습니다.

  • DOCX: python-docx로 생성, 단일 컬럼, 표준 제목, 테이블/텍스트 상자 없음, ATS 친화적 (지원 형식으로 권장).
  • PDF: reportlab + 내장 CJK 폰트로 직접 생성 (순수 pip, 시스템 폰트/라이브러리 불필요); reportlab이 설치되지 않은 경우 출력에 최적화된 HTML을 자동으로 생성하고 "브라우저에서 열고 Ctrl+P로 PDF 저장" 안내.
  • 스크립트는 원격 서비스에 의존하지 않으며, 로컬에 클론하여 바로 실행 가능.

사용 가능한 스타일

  • cn_ats_a4_v1 (중국어, 기본값) / en_ats_a4_v1 (영어); 실제 언어는 ResumeIR의 meta.language에 따라 결정됩니다.
  • 확인: python3 scripts/render_resume.py --list-templates
  • 이중 언어 또는 영어 이력서를 생성할 때는 references/en-resume-conventions.md를 참조하십시오 (동사 라이브러리, 사진/나이/결혼 금지, 1페이지 우선, 영어 날짜 MMM YYYY, 정량화 우선).
  • 미국 기술직 (SWE/PM/DS) 대상: assets/examples/의 en-US-software-engineer.json, en-US-product-manager.json, en-US-data-scientist.json 세 가지 렌더링 가능한 예제 (LinkedIn/GitHub, 미국 직급, p99/QPS/SLA 등 미국 기술 측정치 포함)를 직접 참조할 수 있습니다. meta.language=en-US일 때 렌더링 레이어는 자동으로 영어 블록 제목을 적용하고 ISO 날짜 YYYY-MM을 MMM YYYY로 변환합니다.

리소스 인덱스

필수 스크립트

  • scripts/parse_resume.py: 이력서 파싱 스크립트, PDF/DOCX/TXT/MD 지원.
    • 인수: 위치 인수 <파일 경로> (--input-file <경로>와 호환).
    • 출력: JSON {"text": "...", "format": "pdf|docx|txt", "pages": N, "success": true}; 실패 시 {"error": "...", "exit_code": N} 반환.
  • scripts/version_manager.py: 버전 관리 스크립트.
    • 인수: save/rename/compare/rollback + 해당 인수.
    • 출력: 버전 작업 결과.
  • scripts/render_resume.py: 로컬 내보내기 스크립트 (DOCX/PDF/HTML, 외부 서비스 없음).
    • 인수: --resume-ir <JSON 파일>, --output-formats docx,pdf,html, --output-dir, --file-name.
    • 출력: DOCX / PDF (또는 HTML 폴백) 파일.

도메인 참조

대화 흐름 예제

시나리오 1: 처음부터 이력서 생성

사용자: 이력서를 생성해 주세요.
에이전트: 네, 이력서 작성을 도와드리겠습니다. 다음을 알려주세요.
       1. 목표 직무는 무엇인가요?
       2. 현재 직무 상황은 어떤가요 (회사/직위/근무 연수)?
       ...

[정보 수집]

에이전트: 첫 번째 버전 이력서가 생성되었습니다. 다음은 분석 결과입니다.
       [진단 보고서]

       최소 보충 목록 (8개 문제):
       1. 구체적인 연락처를 입력해 주세요 (전화/이메일).
       2. 첫 번째 직무 경험에서 언급한 【metric】의 구체적인 수치는 무엇인가요?
       ...

시나리오 2: 기존 이력서 최적화

사용자: 이 이력서를 최적화해 주세요 [파일 업로드]
에이전트: [이력서 파싱] 이력서에서 다음 정보를 추출했습니다. 확인해 주세요.
       이름: 张三
       최근 회사: 某科技公司
       최근 직위: 제품 관리자
       근무 연수: 3-5년

       목표 JD가 있나요? 있다면 붙여넣어 주세요.

[JD가 있는 경우]

에이전트: 최적화가 완료되었습니다. 진단 보고서는 다음과 같습니다.
       총점: 72/100

       문제 목록:
       [P0] 직무 경험 부분에 정량적 지표 부족 (심각)
             제안: 각 Bullet에 구체적인 숫자나 백분율을 포함하세요.
             예시 수정: "제품 반복 담당" → "5개의 제품 반복 주도, 사용자 유지율 15% 향상"

       ...

       격차 목록 (JD 요구 사항이나 이력서에 누락된 부분):
       1. SQL 기술 (JD에서 명시적으로 요구)
            최소 보충 질문: SQL 사용 경험이 있습니까? 어떤 시나리오에서 사용했습니까?

       [개선된 이력서 출력]

시나리오 3: 파일 내보내기

사용자: 이 이력서를 내보내 주세요.
에이전트: DOCX 및 PDF 파일을 생성 중입니다... [render_resume.py 호출]
       생성된 파일:
       - 张三-제품관리자-2024-01-15.docx
       - 张三-제품관리자-2024-01-15.pdf

시나리오 4: 버전 비교

사용자: v1과 v2를 비교해 주세요.
에이전트: [version_manager.py compare 호출]
       주요 차이점:
       1. 직무 경험 - 某科技公司 (2019-2022)
          v1: 제품 디자인 및 요구 사항 분석 담당
          v2: 8개의 제품 반복 주도, 데이터 기반 최적화를 통해 사용자 만족도 25% 향상

       2. 기술 - primary
          v1: ["제품 디자인", "요구 사항 분석", "프로젝트 관리"]
          v2: ["제품 디자인", "요구 사항 분석", "프로젝트 관리", "데이터 분석", "SQL", "A/B 테스트"]

       제안: v2 버전의 내용이 더 완전하므로 v2 버전으로 지원하는 것을 권장합니다.

시나리오 5: 버전 롤백

사용자: v1으로 롤백해 주세요.
에이전트: [version_manager.py rollback 호출]
       v1 버전 (제품관리자-2024-01-10-ko-KR)으로 롤백되었습니다.

주의 사항

실패 시 폴백

  • 이력서 파싱 실패: 일반 텍스트를 붙여넣도록 요청하거나, "학력/경력/프로젝트" 항목별로 나누어 붙여넣도록 안내합니다.
  • 정보 누락: 【자리표시자】 + 최소 보충 목록 (≤8 질문) 사용.
  • JD 너무 긴 경우: 직무 설명과 자격 요건 두 부분만 추출하고 나머지는 무시합니다.
  • 생성된 내용 너무 일반적인 경우: 각 Bullet에 "결과/영향"을 강제로 포함시키고, 그렇지 않으면 P1 문제로 표시하고 수정 예제를 제공합니다.

ATS 친화성 (제약 대상은 "생성/내보내기"된 이력서; 사용자 업로드 파일 파싱 시 테이블 내용은 정상적으로 읽을 수 있음)

  • 표준 문단 제목 사용 (직무 경험, 학력, 기술 등).
  • 테이블, 텍스트 상자, 아이콘, 이미지 사용 금지.
  • 기본 단일 컬럼 레이아웃.
  • 표준 폰트 사용 (예: Arial, Calibri).
  • 특수 문자 및 장식 요소 사용 금지.

품질 보증

  • 모든 Bullet은 동사로 시작해야 합니다 (예: "주도", "설계", "구현", "최적화" 등).
  • 각 Bullet이 명확한 결과나 영향을 가지도록 합니다.
  • "담당", "참여" 등 약한 단어 사용을 피합니다.
  • 능동태를 우선 사용하고 수동태는 피합니다.

사용 예제

예제 1: 처음부터 이력서 생성 (중/영문)

  • 기능 설명: 사용자가 처음부터 중/영문 이중 언어 이력서를 만들 수 있도록 지원합니다.
  • 실행 방식: 에이전트 대화 + 스크립트로 버전 저장.
  • 핵심 매개변수: language=zh-CN/en-US, target_title, target_level.
  • 단계:
    1. 기본 정보 및 경력 수집.
    2. 중문 ResumeIR 생성.
    3. 영문 ResumeIR 생성 (자동 번역).
    4. 두 개의 버전 (중문 및 영문) 저장.

예제 2: JD 기반 이력서 최적화

  • 기능 설명: 특정 JD에 맞게 이력서 내용을 최적화합니다.
  • 실행 방식: 에이전트 분석 + 스크립트 파싱.
  • 핵심 매개변수: JD 텍스트, 원본 이력서 파일.
  • 단계:
    1. 원본 이력서 파싱.
    2. JD 요구 사항 분석.
    3. 비교하여 격차 확인.
    4. JD 키워드를 커버하도록 이력서 개선.
    5. 비교 및 최적화 제안 출력.

예제 3: 다중 버전 관리

  • 기능 설명: 여러 이력서 버전을 생성하고, 비교하여 최적 버전을 선택합니다.
  • 실행 방식: 스크립트로 버전 관리.
  • 핵심 매개변수: version_name, resume_ir.
  • 단계:
    1. v1 버전 저장.
    2. 수정 후 v2 버전 저장.
    3. v1과 v2 비교.
    4. 최적 버전으로 롤백.
    5. 최종 버전 내보내기.

관련 스킬