실시간 뉴스 크롤링, 기업 홈페이지 크롤링, RAG(기업 정보 리포트) 검색을 결합하여 회사 이슈 요약, 인재상 분석, 자기소개서 첨삭, CSV 기업 분석 리포트를 생성하는 LLM 기반 커맨드라인 에이전트입니다.
main.py를 실행하면 아래 4가지 메뉴 중 하나를 선택해 사용할 수 있습니다.
- 회사 이슈 요약 리포트 (
run_issue_summary_agent) Google 뉴스 RSS로 기업 관련 최신 기사를 검색하고 본문을 직접 크롤링한 뒤, 지원 직무 관점에서 중요한 이슈를 요약합니다. - 기업 인재상 요약 리포트 (
run_talent_summary_agent) 기업 공식 홈페이지(채용 페이지)를 실시간 크롤링해 인재상을 분석하고, 크롤링 실패 시 로컬 RAG DB(./data/*.csv)로 폴백합니다. - 맥락 연계 자소서 첨삭 (
run_resume_feedback_agent) RAG 기업 정보, 최신 뉴스, 채용공고 URL 스크랩 결과, 사용자 메모를 종합하여 자소서 초안에 인라인 첨삭(대필 없이 방향성 제안)을 제공합니다. - 로컬 CSV 기업 분석 리포트 분석 (
run_csv_analysis_agent) 로컬 CSV 파일을 로드해 LLM으로 분석하고, 결과를./data/{기업명}.csv로 저장하여 이후 RAG 검색에 재사용할 수 있도록 적재합니다.
| 파일 | 역할 |
|---|---|
main.py |
CLI 진입점, 메뉴 선택 및 사용자 입력 처리 |
agent.py |
4가지 에이전트 함수 정의 (뉴스/크롤링/RAG/LLM 체인 오케스트레이션) |
news.py |
Google 뉴스 RSS 검색, 기사 본문 크롤링, 언론사별 CSS 셀렉터 매핑, 10분 캐시 |
homepage_crawler.py |
기업 공식 홈페이지 인재상 페이지 및 채용공고 URL 크롤링 |
rag.py |
./data/{기업명}.csv를 로드해 디스크 저장형(persist) Chroma 벡터스토어 기반 Retriever 생성 |
llm.py |
OpenRouter 경유 GPT-4o(ChatOpenAI) 및 임베딩 모델 초기화 |
prompts.py |
4가지 기능별 ChatPromptTemplate 정의 |
data/ |
기업별 CSV 리포트 저장소 (RAG 검색 대상) |
test_run.py,debug_news.py— 현재agent.py의 함수 구조로 마이그레이션되기 전에 작성된 스크립트입니다. 특히test_run.py는 더 이상 존재하지 않는run_job_seeker_agent를 임포트하므로 그대로 실행하면 오류가 발생합니다. 참고용으로만 남겨두었으며, 실제 동작 확인은main.py를 사용하세요.A.ipynb—sentence-transformers기반 이력서-자소서 유사도 비교 실험 노트북(별도 실험, 메인 파이프라인과 무관).rag.py— 마이그레이션(단일 에이전트 →agent.py의 4개 기능 분리) 이전에 작성된 코드입니다. 다만 이후 디스크 저장형 Chroma 방식으로 갱신되어agent.py의create_company_retriever호출과는 현재도 맞물려 동작합니다.
pip install openai python-dotenv langchain-openai langchain-community \
langchain-text-splitters langchain-chroma langchain-core \
requests beautifulsoup4 googlenewsdecoder프로젝트 루트에 .env 파일을 만들고 OpenRouter API 키를 설정합니다.
OPENROUTER_API_KEY=your_api_key_here
python main.py메뉴에서 원하는 기능(1~4)을 선택하고 안내에 따라 기업명, 직무, 자소서 초안 등을 입력합니다.
- 뉴스/홈페이지 크롤링은 언론사·기업 홈페이지별로 CSS 셀렉터 또는 URL이 하드코딩되어 있어
(
news.py의PRESS_BODY_SELECTORS,homepage_crawler.py의COMPANY_TALENT_URLS), 매핑되지 않은 신규 기업/언론사는 기본 셀렉터로 시도하거나 크롤링에 실패할 수 있습니다. - CSV는 UTF-8, CP949, EUC-KR, UTF-8-SIG 인코딩을 순차 시도하여 로드합니다.
건강보험심사평가원↔심평원처럼 동의어 기업명은 CSV 적재 시 양방향으로 복제 저장됩니다.