wiki:it:dream_of_enc:automation:newstohr_py
NewstoHR.py: 데일리 뉴스레터 자동 발송 스크립트
NewstoHR.py
는 Dream of E&C 자동화 시스템의 핵심 중 하나로, 매일 아침 HR지원실 직원들에게 맞춤형 정보를 담은 이메일 뉴스레터를 자동으로 생성하고 발송하는 역할을 합니다.
이 스크립트는 다양한 외부 소스에서 데이터를 수집하고 가공하여 하나의 HTML 이메일로 종합하는 복잡한 파이프라인을 가지고 있습니다.
주요 기능 및 실행 순서
main()
함수를 중심으로 다음과 같은 순서로 동작합니다.
- 공휴일 확인:
pytimekr
라이브러리를 사용하여 스크립트 실행일이 공휴일인지 확인합니다. 공휴일이면 뉴스레터를 발송하지 않고 종료합니다.
- 콘텐츠 생성 (OpenAI GPT):
get_gpt_content()
- OpenAI의
gpt-4o-mini
모델을 호출하여 4가지 주제의 짧은 콘텐츠를 생성합니다.- 오늘의 명언 (
quote
) - 실용 영어 한 문장 (
english
) - 교훈적 사자성어 (
idiom
) - 최신 시사/경제 용어 (
term
)
- 중복 방지: 이전에 생성했던 내용을
gpt_history.json
파일에 기록하고, 새로운 콘텐츠를 요청할 때 이 목록을 참고하여 중복되지 않는 결과를 받도록 프롬프트를 구성합니다.
- 뉴스 스크래핑:
scrape_naver_news()
requests
와BeautifulSoup4
라이브러리를 사용하여 네이버 뉴스의 속보 섹션에서 기사 제목, 요약, 링크, 이미지 등을 수집(스크랩)합니다.- 정치, 경제, 사회 등 여러 섹션의 뉴스를 가져옵니다.
- 경제 지표 수집:
get_economic_stats()
- 한국은행(BOK) 경제통계시스템 API를 호출하여 최신 환율(달러, 엔, 유로), 코스피 지수, 회사채 수익률 등의 주요 경제 지표를 가져옵니다.
- 이메일 본문 생성:
build_html_content()
Jinja2
템플릿 엔진을 사용합니다.- 지금까지 수집하고 생성한 모든 데이터(GPT 콘텐츠, 뉴스, 경제 지표 등)를
newsletter_template.html
파일에 끼워 넣어 최종 이메일 본문을 완성합니다.
- 수신자 목록 로드:
get_email_list_from_yaml()
email_list.yaml
파일에서 뉴스레터를 받을 사람들의 이메일 주소 목록을 읽어옵니다.
- 이메일 발송:
send_newsletter()
smtplib
라이브러리를 사용하여 네이버 SMTP 서버에 접속합니다.- 생성된 HTML 본문과 수신자 목록을 이용해 뉴스레터를 발송합니다.
주요 사용 라이브러리
openai
: GPT 모델 호출requests
,beautifulsoup4
: 웹 스크래핑jinja2
: HTML 템플릿 처리pytimekr
: 대한민국 공휴일 확인pyyaml
: YAML 파일(수신자 목록) 처리pandas
: 한국은행 API 데이터 처리smtplib
: 이메일 발송
이 스크립트는 Automail.sh
셸 스크립트에 의해 주기적으로(예: 매일 아침) 실행되도록 설정되어 있습니다.
wiki/it/dream_of_enc/automation/newstohr_py.txt · 마지막으로 수정됨: 저자 syjang0803