NewstoHR.py
는 Dream of E&C 자동화 시스템의 핵심 구성 요소 중 하나입니다. 이 스크립트는 매일 아침 HR지원실 직원들에게 맞춤형 정보를 담은 이메일 뉴스레터를 자동으로 생성하고 발송함으로써, 정보 습득의 효율성을 높이고 업무 생산성 향상에 기여합니다.
이 스크립트는 다양한 외부 데이터 소스(예: OpenAI, 네이버 뉴스, 한국은행 경제통계시스템)로부터 정보를 수집하고, 이를 가공하여 하나의 정돈된 HTML 이메일 본문으로 종합하는 복잡하면서도 효율적인 자동화 파이프라인을 구축하고 있습니다.
NewstoHR.py
스크립트는 정보 과부하 시대에 필수적인 맞춤형 정보 제공을 목표로 합니다. HR지원실 직원들이 매일 필요한 최신 시사, 경제, 지식 정보를 별도의 검색 없이 한눈에 파악할 수 있도록 돕는 것이 주된 목적입니다.
NewstoHR.py
스크립트의 핵심 로직은 main()
함수를 중심으로 다음과 같은 체계적인 순서로 동작합니다.
pytimekr
라이브러리를 사용하여 스크립트 실행일이 대한민국의 공휴일인지 여부를 확인합니다. 공휴일인 경우, 불필요한 뉴스레터 발송을 방지하고 시스템 리소스를 절약하기 위해 스크립트가 즉시 종료됩니다. 이는 비업무일에 대한 고려 사항입니다.get_gpt_content()
함수는 OpenAI의 최신 언어 모델인 gpt-4o-mini
를 호출하여 다음과 같은 4가지 주제의 짧고 유익한 콘텐츠를 생성합니다.quote
)english
)idiom
)term
)gpt_history.json
파일에 기록되어 관리됩니다. 새로운 콘텐츠를 요청할 때, 이 기록을 참조하여 중복되지 않는 신선한 내용을 받을 수 있도록 프롬프트가 동적으로 구성됩니다. 이는 뉴스레터의 정보 가치를 지속적으로 유지하는 데 중요합니다.scrape_naver_news()
함수는 requests
와 BeautifulSoup4
라이브러리를 활용하여 네이버 뉴스의 속보 섹션에서 실시간 기사를 스크랩합니다. 이 과정에서 기사 제목, 요약 내용, 원본 링크, 그리고 대표 이미지 URL 등의 핵심 정보를 수집합니다.get_economic_stats()
함수는 한국은행(BOK) 경제통계시스템의 공식 API를 호출하여 실시간 경제 지표 데이터를 가져옵니다.build_html_content()
함수는 강력한 Jinja2
템플릿 엔진을 사용하여 최종 이메일 본문을 구성합니다.newsletter_template.html
파일에 정의된 HTML 구조에 정확하게 삽입되어, 시각적으로 매력적이고 정보 전달력이 높은 이메일 본문이 완성됩니다.get_email_list_from_yaml()
함수는 보안 및 관리의 용이성을 위해 별도로 정의된 email_list.yaml
파일에서 뉴스레터를 수신할 대상자들의 이메일 주소 목록을 안전하게 읽어옵니다. 이 파일은 쉽게 업데이트될 수 있도록 구성되어 있습니다.send_newsletter()
함수는 표준 smtplib
라이브러리를 사용하여 네이버 SMTP 서버에 안전하게 접속합니다.
NewstoHR.py
스크립트 개발에 사용된 주요 Python 라이브러리 및 그 역할은 다음과 같습니다.
openai
: OpenAI의 인공지능 모델(예: gpt-4o-mini
)과의 상호작용 및 콘텐츠 생성을 위해 사용됩니다.requests
: 웹 페이지의 HTML 콘텐츠를 가져오기 위한 HTTP 요청을 처리하는 데 사용됩니다.beautifulsoup4
: requests
로 가져온 HTML 콘텐츠를 파싱(parsing)하고, 필요한 데이터를 추출하는 웹 스크래핑 핵심 라이브러리입니다.jinja2
: 수집된 데이터를 미리 정의된 HTML 템플릿에 동적으로 삽입하여 최종 이메일 본문을 생성하는 데 사용되는 강력한 템플릿 엔진입니다.pytimekr
: 대한민국 공휴일을 정확하게 확인하고, 스크립트 실행 여부를 결정하는 데 활용됩니다.pyyaml
: 수신자 목록과 같은 설정 정보를 YAML 형식의 파일에서 쉽고 안전하게 읽어오는 데 사용됩니다.pandas
: 한국은행 API를 통해 수집된 경제 지표 데이터를 효율적으로 처리하고 정제하는 데 유용하게 사용됩니다.smtplib
: 이메일 발송을 위해 SMTP(Simple Mail Transfer Protocol) 서버와의 통신을 관리하는 표준 라이브러리입니다.
이 NewstoHR.py
스크립트는 Automail.sh
라는 셸 스크립트에 의해 주기적으로 실행되도록 설정되어 있습니다. 일반적으로 Linux
시스템의 cron
스케줄러를 통해 매일 아침 지정된 시간에 자동으로 실행되어 뉴스레터 발송 프로세스를 시작합니다.
NewstoHR.py
는 모듈화된 구조로 설계되어 있어, 새로운 콘텐츠 소스 추가나 기존 로직 변경 시 유연하게 대응할 수 있습니다. 향후 사용자 피드백을 반영하여 콘텐츠의 다양성을 높이거나, 개인화 기능을 강화하는 방향으로 지속적인 업데이트가 이루어질 예정입니다.