매일 아침 1시간짜리 뉴스 스크랩 노동을 코드로 끝내버렸다
입사 6개월 차. 팀에서 막내인 나의 아침 루틴은 정해져 있었다. 업계 동향 기사 수십 건과 PDF 리포트를 읽고, 핵심 세 줄을 정리해서 사내 메신저에 올리는 것. 처음엔 챗GPT 창 두 개를 나란히 띄워놓고 텍스트를 복사해 붙이는 방식으로 버텼다. 그런데 텍스트가 조금만 길어지면 답변이 중간에 잘렸고, 피크 시간대에는 사이트가 아예 응답을 안 했다. 오전 업무 시간 절반을 그 단순 작업에 갈아 넣고 있었다.
어느 날 퇴근길에 결심했다. “이걸 코드로 자동화하면 어떻게 되지?” 파이썬을 켜고 무작정 시작했다. 결과적으로 50줄도 안 되는 스크립트 하나가 내 아침 업무 시간을 1시간에서 20초로 압축했다. ChatGPT API와 파이썬을 연동해서 자동 텍스트 요약봇을 만드는 전 과정을 — 삽질과 에러까지 전부 포함해서 — 그대로 공개한다.
1. 개발 환경 세팅 및 사전 준비
백엔드 깊은 지식은 필요 없다. 파이썬에서 변수를 쓰고 함수를 만들고 파일을 읽을 줄 안다면 이 튜토리얼을 전부 소화할 수 있다. 실제로 매일 스크립트를 돌리는 환경은 아래와 같다.
- 운영체제: Windows 11 Pro (Mac에서도 코드 100% 동일 작동)
- Python 버전: 3.11.4
- 코드 편집기: VS Code
- 필수 라이브러리:
openai(API 호출),python-dotenv(API 키 보안 관리) - OpenAI 계정: platform.openai.com에서 API 키 발급, 최소 5달러 크레딧 충전 필요
한 가지 짚고 넘어갈 것이 있다. OpenAI API는 챗GPT 웹 사이트 계정과 완전히 별개다. 웹에서 플러스 구독을 쓰고 있어도 API는 따로 발급받고 충전해야 한다. 이걸 몰라서 처음에 30분을 헤맸다.
2. 자동 요약봇 전체 코드 단계별 실습
1단계: 패키지 설치 및 API 키 환경변수 설정
VS Code 터미널을 열고 아래 명령어로 두 라이브러리를 설치한다.
pip install openai python-dotenv
코드 폴더 안에 .env 파일을 만들고 OpenAI API 키를 저장한다. 따옴표 없이 입력하는 것이 핵심이다. 따옴표를 넣으면 파이썬이 기호까지 키 문자열로 읽어 인증 에러를 낸다.
OPENAI_API_KEY=sk-proj-여기에_실제_API_키를_입력하세요
2단계: 요약봇 전체 코드 작성
auto_summarizer.py 파일을 만들고 아래 코드를 붙여 넣는다. 특정 폴더의 raw_text.txt를 읽어 요약한 뒤 summary_result.txt로 자동 저장하는 완전한 파이프라인이다.
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def read_file(file_path):
# 한글 깨짐 방지: encoding='utf-8' 필수
with open(file_path, 'r', encoding='utf-8') as f:
return f.read()
def save_to_file(file_path, content):
with open(file_path, 'w', encoding='utf-8') as f:
f.write(content)
def summarize_text(raw_text):
system_prompt = """
너는 글로벌 IT 기업의 수석 전략 분석가야.
제공된 텍스트를 읽고 반드시 다음 형식으로 한국어 요약해줘:
1. 핵심 주제 (1문장)
2. 주요 내용 요약 (3개 불릿 포인트)
3. 비즈니스 인사이트 (1문장)
"""
response = client.chat.completions.create(
model="gpt-4o-mini", # 속도와 비용 효율 최상
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": f"다음 텍스트를 요약해줘:\n\n{raw_text}"}
],
temperature=0.3 # 팩트 기반 요약이므로 낮게 설정
)
return response.choices[0].message.content
if __name__ == "__main__":
input_file = "raw_text.txt"
output_file = "summary_result.txt"
print("요약봇 시작: 파일을 읽어옵니다...")
try:
text = read_file(input_file)
print("ChatGPT API가 분석 중입니다...")
summary = summarize_text(text)
save_to_file(output_file, summary)
print(f"완료! '{output_file}'에 저장되었습니다.")
except FileNotFoundError:
print(f"오류: '{input_file}' 파일이 없습니다.")
except Exception as e:
print(f"알 수 없는 오류: {e}")
⚠ 프롬프트 엔지니어링을 빼먹으면 안 되는 이유
“이거 요약해 줘”라고만 보내면 AI는 매번 다른 형식으로 자유롭게 대답한다. 어떤 날은 문단으로, 어떤 날은 번호 목록으로. 팀 보고용 자료로 쓰려면 형식이 일관돼야 한다. system_prompt로 페르소나(수석 전략 분석가)를 부여하고 출력 포맷을 명시적으로 고정해야 매일 균질한 품질의 요약본이 나온다. 이 한 줄 차이가 실무 투입 가능 여부를 가른다.
3. 직접 겪은 치명적 오류 2가지와 해결법
오류 ① 한글이 깨지는 UnicodeDecodeError
영문 코드 예제를 그대로 가져다 썼더니, 메모장에 깔끔하게 정리해 둔 한글 기사를 파이썬이 읽지 못했다. UnicodeDecodeError: 'cp949' codec can't decode...라는 에러가 터미널을 가득 채웠다. Windows 파이썬은 기본 인코딩으로 CP949를 쓰는데, 웹에서 복사한 텍스트는 대부분 UTF-8 포맷이라 충돌이 난 것이다. 해결책은 허무할 만큼 간단했다. open() 함수 안에 encoding='utf-8' 옵션 하나를 추가하는 것. 그게 전부였다. 2시간을 그 에러 메시지와 씨름했는데 말이다.
오류 ② 50페이지 PDF를 던졌더니 토큰 초과 에러
분량이 방대한 리포트를 텍스트로 변환해 봇에 통째로 던졌더니 API가 처리 불가 에러를 뱉었다. gpt-4o-mini의 컨텍스트 윈도우는 128,000토큰으로 넓지만, 너무 긴 텍스트는 중간 내용을 흘리는 ‘Lost in the Middle’ 현상을 일으킨다. 그때부터 파이썬 슬라이싱으로 원본 텍스트를 5,000자 단위 청크로 잘라 순차 요약한 뒤, 그 요약본들을 다시 합쳐 최종 요약하는 2단계 파이프라인으로 코드를 업그레이드했다. 덩어리째 집어넣는 대신 씹어서 넣는 방식이다.
4. 한 달 운영 결과 — 시간과 비용 수치
사내 PC에 스크립트를 세팅하고 약 한 달간 실제 업무에 투입한 결과는 숫자로 확인됐다.
- 업무 시간: 매일 1시간 가까이 걸리던 기사 수집·요약 작업이 스크립트 실행 대기 시간인 약 20초로 압축됐다. 남은 시간에 기획안 디테일을 잡으면서 팀 내 평가도 달라졌다
- API 비용: 한 달간 업계 기사와 리포트 300건 이상을 요약시킨 청구 금액은 1.2달러(약 1,600원)였다. 챗GPT 플러스 월정액 20달러와 비교하면, 필요한 만큼만 호출하는 API의 경제성이 얼마나 다른지 체감할 수 있다
- 품질 일관성: 시스템 프롬프트로 형식을 고정한 덕분에 300건 모두 동일한 포맷으로 출력됐다. 팀장이 “요약 포맷이 훨씬 읽기 좋아졌다”고 말한 것도 이 시점이었다
5. 이 봇이 진짜 빛나는 상황과 아닌 상황
파이썬 ChatGPT API 자동 요약봇이 가장 강력한 위력을 발휘하는 대상은 명확하다.
- 강력 추천: 매일 반복적인 리서치 업무에 치이는 주니어 직장인, 대량의 해외 기사를 번역·요약해야 하는 콘텐츠 마케터, 산업 트렌드 분석가
- 비추천: 단발성 이메일 초안 작성이나 간단한 아이디어 구상이 목적이라면 파이썬 환경 세팅 비용이 효익을 넘어선다. 그 경우엔 챗GPT 웹 인터페이스가 훨씬 빠른 선택이다
한 번만 고생해서 이 환경을 구축해 두면, 불평 없이 밥도 안 먹고 하루 종일 일하는 AI 비서를 고용하는 것과 같다. 월정액 없이, 쓴 만큼만 내면서. encoding='utf-8' 한 줄과 시스템 프롬프트 템플릿 하나가 그 차이를 만든다.