유튜브 자막 정보를 자동으로 가져와 ChatGPT를 통해 요약하고, Gmail을 통해 메일로 전송하는 자동화를 구현할 수 있습니다.
1. 프로세스 설계
- 유튜브 자막 가져오기: YouTube Data API를 사용하여 자막 정보를 가져옵니다.
- ChatGPT 요약: OpenAI API를 사용하여 자막 내용을 요약합니다.
- Gmail 전송: Gmail API를 사용하여 요약된 내용을 이메일로 전송합니다.
2. 필요한 도구 및 라이브러리
- YouTube Data API: 유튜브 데이터와 자막 정보를 가져오기 위해 필요.
- OpenAI API: ChatGPT를 사용하여 요약 작업을 수행.
- Gmail API: 이메일 전송을 자동화.
- Python: 스크립트 작성.
3. 단계별 구현
3.1. YouTube 자막 가져오기
- Google Cloud Console에서 YouTube Data API 키를 생성합니다.
pytube
또는google-api-python-client
라이브러리를 설치합니다.pip install pytube google-api-python-client
- Python 코드를 작성하여 자막을 다운로드
from pytube import YouTube def get_youtube_captions(video_url): yt = YouTube(video_url) caption = yt.captions.get_by_language_code('en') # 언어 코드 변경 가능 if caption: return caption.generate_srt_captions() else: return "자막을 찾을 수 없습니다." video_url = "https://www.youtube.com/watch?v=YOUR_VIDEO_ID" captions = get_youtube_captions(video_url) print(captions)
3.2. ChatGPT를 통한 요약
- OpenAI API 키를 생성합니다.
openai
라이브러리를 설치합니다.pip install openai
- 자막을 요약하는 Python 코드 작성
import openai openai.api_key = "YOUR_OPENAI_API_KEY" def summarize_text(text): response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful assistant that summarizes text."}, {"role": "user", "content": f"Summarize this: {text}"} ] ) return response['choices'][0]['message']['content'] summarized_captions = summarize_text(captions) print(summarized_captions)
3.3. Gmail을 통해 이메일 전송
- Google Cloud Console에서 Gmail API를 활성화합니다.
google-auth
,google-api-python-client
,google-auth-oauthlib
라이브러리를 설치합니다.pip install google-auth google-auth-oauthlib google-api-python-client
- Gmail API로 이메일 전송
from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request import base64 from email.mime.text import MIMEText import os import pickle # Gmail API 인증 def authenticate_gmail(): SCOPES = ['https://www.googleapis.com/auth/gmail.send'] creds = None if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES) creds = flow.run_local_server(port=0) with open('token.pickle', 'wb') as token: pickle.dump(creds, token) return build('gmail', 'v1', credentials=creds) # 이메일 전송 def send_email(service, to, subject, body): message = MIMEText(body) message['to'] = to message['subject'] = subject raw = base64.urlsafe_b64encode(message.as_bytes()).decode() message = {'raw': raw} service.users().messages().send(userId="me", body=message).execute() service = authenticate_gmail() send_email(service, "recipient@example.com", "유튜브 자막 요약", summarized_captions)
유용한 팁
- Google API 인증: 인증 파일(
credentials.json
)을 안전한 위치에 보관. - 에러 처리: 자막 없는 영상, API 호출 실패 등에 대비한 예외 처리를 추가.
- 확장성: 다양한 언어를 지원하거나, 특정 포맷으로 메일 본문을 꾸밀 수 있도록 코드를 확장.
위 과정을 통해 유튜브 자막 정보를 자동으로 요약하고 이메일로 전송하는 시스템을 구축할 수 있습니다. n8n을 활용하여 유튜브 자막 정보를 가져와 ChatGPT로 요약한 뒤, 슬랙으로 전송하는 워크플로우입니다.
1. YouTube 자막 정보 가져오기
1.1. 유튜브 API 키 생성
- Google Cloud Console에 접속하여 프로젝트를 생성하거나 기존 프로젝트를 선택합니다.
- API 및 서비스 > 라이브러리에서 YouTube Data API v3를 검색 후 활성화합니다.
- API 및 서비스 > 자격 증명에서 API 키를 생성하고 저장합니다.
1.2. n8n에서 HTTP Request 노드 추가
- n8n의 워크플로우 화면에서 HTTP Request 노드를 추가합니다.
- Node 설정
- Method: GET
- URL:
https://www.googleapis.com/youtube/v3/captions?part=snippet&videoId={{videoId}}&key={{apiKey}}
- Query Parameters:
videoId
: 유튜브 동영상 ID (예:YOUR_VIDEO_ID
)apiKey
: YouTube API 키
- 출력 데이터 처리: 이 호출로 자막 ID와 관련 정보를 가져옵니다. 반환된 데이터 중
id
값을 다음 단계에서 사용합니다.
2. 자막 다운로드
2.1. HTTP Request 노드 추가
- 새로운 HTTP Request 노드를 추가합니다.
- Node 설정
- Method: GET
- URL:
https://www.googleapis.com/youtube/v3/captions/{{captionId}}?tfmt=srt&key={{apiKey}}
- Query Parameters:
captionId
: 이전 단계에서 가져온 자막 IDapiKey
: YouTube API 키
- 반환된 SRT 데이터를 텍스트 형태로 저장하여 ChatGPT로 전송할 준비를 합니다.
3. ChatGPT로 요약
3.1. OpenAI 노드 추가
n8n에 OpenAI API를 호출하기 위해 HTTP Request 노드를 추가합니다.
- Node 설정
- Method: POST
- URL:
https://api.openai.com/v1/chat/completions
- Headers:
Authorization
:Bearer YOUR_OPENAI_API_KEY
Content-Type
:application/json
- Body: JSON 형식으로 입력합니다.
{ "model": "gpt-3.5-turbo", "messages": [ { "role": "system", "content": "You are a helpful assistant that summarizes text." }, { "role": "user", "content": "{{srtContent}}" } ] }
srtContent
: 이전 단계에서 받은 자막 텍스트를 삽입.
- 응답으로 ChatGPT가 생성한 요약 텍스트를 반환받습니다.
4. 슬랙으로 전송
4.1. Slack 노드 추가
- n8n의 슬랙 노드를 추가합니다.
- Node 설정
- Credential: Slack API 토큰을 설정.
- Channel: 요약 내용을 전송할 채널 ID.
- Text:
{{summarizedText}}
summarizedText
: ChatGPT API에서 반환받은 요약 내용.
5. 워크플로우 자동화
5.1. 트리거 설정
- Cron 노드를 추가하여 주기적으로 실행되도록 설정합니다.
예를 들어, 매일 특정 시간에 실행되도록 구성.
6. 에러 핸들링
- 각 노드에 Fail Safe 옵션을 활성화하거나 에러가 발생했을 때 알림을 보내는 별도 흐름을 추가합니다.
- ChatGPT API 호출 실패, 자막 데이터 누락 등을 대비한 조건부 흐름을 설정합니다.
7. 최종 워크플로우 구성
- Trigger (Cron Node): 주기적으로 실행.
- HTTP Request Node (Get YouTube Captions): 유튜브 자막 정보 가져오기.
- HTTP Request Node (Download Captions): 자막 다운로드.
- HTTP Request Node (Summarize Captions): ChatGPT로 요약.
- Slack Node: 요약 내용 전송.
추가 고려 사항
- OAuth 사용: 유튜브 API 호출이 더 복잡한 데이터 요청을 포함할 경우 OAuth 인증이 필요할 수 있습니다.
- Webhook 활용: 특정 동영상 업로드 시 자동 실행되도록 YouTube 웹훅을 사용할 수 있습니다.
- n8n 실행 환경: n8n을 Docker, 클라우드 또는 로컬에서 실행 가능.
이 설정을 통해 유튜브 자막 요약 자동화 워크플로우를 완성할 수 있습니다.
728x90
댓글