목차

NewstoHR.py: 데일리 뉴스레터 자동 생성 스크립트

NewstoHR.pyDream of E&C 자동화 시스템의 핵심 구성 요소 중 하나입니다. 이 스크립트는 매일 아침 HR지원실 직원들에게 맞춤형 정보를 담은 이메일 뉴스레터를 자동으로 생성하고 발송함으로써, 정보 습득의 효율성을 높이고 업무 생산성 향상에 기여합니다.

이 스크립트는 다양한 외부 데이터 소스(예: OpenAI, 네이버 뉴스, 한국은행 경제통계시스템)로부터 정보를 수집하고, 이를 가공하여 하나의 정돈된 HTML 이메일 본문으로 종합하는 복잡하면서도 효율적인 자동화 파이프라인을 구축하고 있습니다.


1. 시스템 개요 및 목적

NewstoHR.py 스크립트는 정보 과부하 시대에 필수적인 맞춤형 정보 제공을 목표로 합니다. HR지원실 직원들이 매일 필요한 최신 시사, 경제, 지식 정보를 별도의 검색 없이 한눈에 파악할 수 있도록 돕는 것이 주된 목적입니다.


2. 주요 기능 및 실행 순서

NewstoHR.py 스크립트의 핵심 로직은 main() 함수를 중심으로 다음과 같은 체계적인 순서로 동작합니다.

  1. 공휴일 확인: pytimekr 라이브러리를 사용하여 스크립트 실행일이 대한민국의 공휴일인지 여부를 확인합니다. 공휴일인 경우, 불필요한 뉴스레터 발송을 방지하고 시스템 리소스를 절약하기 위해 스크립트가 즉시 종료됩니다. 이는 비업무일에 대한 고려 사항입니다.
  1. 콘텐츠 생성 (OpenAI GPT): get_gpt_content() 함수는 OpenAI의 최신 언어 모델인 gpt-4o-mini를 호출하여 다음과 같은 4가지 주제의 짧고 유익한 콘텐츠를 생성합니다.
    • 오늘의 명언 (quote)
    • 실용 영어 한 문장 (english)
    • 교훈적 사자성어 (idiom)
    • 최신 시사/경제 용어 (term)
  1. 뉴스 스크래핑: scrape_naver_news() 함수는 requestsBeautifulSoup4 라이브러리를 활용하여 네이버 뉴스의 속보 섹션에서 실시간 기사를 스크랩합니다. 이 과정에서 기사 제목, 요약 내용, 원본 링크, 그리고 대표 이미지 URL 등의 핵심 정보를 수집합니다.
  1. 경제 지표 수집: get_economic_stats() 함수는 한국은행(BOK) 경제통계시스템의 공식 API를 호출하여 실시간 경제 지표 데이터를 가져옵니다.
  1. 이메일 본문 생성: build_html_content() 함수는 강력한 Jinja2 템플릿 엔진을 사용하여 최종 이메일 본문을 구성합니다.
  1. 수신자 목록 로드: get_email_list_from_yaml() 함수는 보안 및 관리의 용이성을 위해 별도로 정의된 email_list.yaml 파일에서 뉴스레터를 수신할 대상자들의 이메일 주소 목록을 안전하게 읽어옵니다. 이 파일은 쉽게 업데이트될 수 있도록 구성되어 있습니다.
  1. 이메일 발송: send_newsletter() 함수는 표준 smtplib 라이브러리를 사용하여 네이버 SMTP 서버에 안전하게 접속합니다.

3. 기술 스택 및 주요 라이브러리

NewstoHR.py 스크립트 개발에 사용된 주요 Python 라이브러리 및 그 역할은 다음과 같습니다.


4. 실행 환경 및 추가 정보


1) 스크립트 실행 자동화

NewstoHR.py 스크립트는 Automail.sh라는 셸 스크립트에 의해 주기적으로 실행되도록 설정되어 있습니다. 일반적으로 Linux 시스템의 cron 스케줄러를 통해 매일 아침 지정된 시간에 자동으로 실행되어 뉴스레터 발송 프로세스를 시작합니다.


2) 개발 및 유지보수

NewstoHR.py는 모듈화된 구조로 설계되어 있어, 새로운 콘텐츠 소스 추가나 기존 로직 변경 시 유연하게 대응할 수 있습니다. 향후 사용자 피드백을 반영하여 콘텐츠의 다양성을 높이거나, 개인화 기능을 강화하는 방향으로 지속적인 업데이트가 이루어질 예정입니다.