내가 자주보는 유튜브 채널 자동으로 요약 받기(with make)

배경 및 목적

누구나 돈을 많이 벌고 싶어 합니다.

올바른 투자의 결과로 한강뷰를 볼 수도 있고, 잘못된 선택으로 인해 한강물을 볼 수도 있습니다

도시가 보이는 창문 사진

시간은 부족한데 보고, 들어야 하는 것은 많아지고 있어 유튜브 요약본을 먼저 확인하고 본 내용을 즐기면 어떨까 하는 생각에서 제가 자주 듣는 유튜브 채널의 신규 영상을 요약하는 시나리오 make.com을 통해 작성해봤습니다

소파��에 앉아 노트북을 들고 있는 고양이

[아주 바쁜 현대인]

참고 자료

유투브 채널 : 시현의 모험(https://www.youtube.com/watch?v=KoBFv3AgH5o&t=694s)

활용 툴

  • 파이썬 : VS, 유튜브 채널 핸들을 이용한 채널 ID 획득용

  • Make.com : 신규 영상 감지, 스트립트 획득, 요약

  • LLM : Chat gpt(스크립트 요약)

실행 과정

  1. 0. 과정 요약

    한국어로 된 Python 프로그램의 스크린샷
  1. 채널 ID 확인 : 핸들(@XXX)을 이용해 '채널 ID' 를 확인 가능

    (GPT에게 핸들을 이용해 '채널 ID'를 획득하는 Streamlit 코드 생성)

    [유튜브 핸들, 채널 ID, 비디오 ID]

    다른 한국 이름이 있는 테이블

[핸들을 통해 채널 ID, RSS Feed 생성하는 코드]

import os
import streamlit as st
import googleapiclient.discovery

# YouTube API 키를 환경 변수에서 불러오기
api_key = os.getenv('YOUTUBE_API_KEY')

# 함수: 채널 핸들을 입력받아 채널 ID를 반환
def get_channel_id(handle):
    try:
        # YouTube API 클라이언트 생성
        youtube = googleapiclient.discovery.build('youtube', 'v3', developerKey=api_key)
        
        # 채널 검색 요청 생성
        request = youtube.search().list(
            part="snippet",
            q=handle,
            type="channel"
        )
        
        # API 요청 실행 및 응답 받기
        response = request.execute()
        
        # 응답에서 채널 ID 추출
        channel_id = response['items'][0]['snippet']['channelId']
        return channel_id
    except Exception as e:
        # 오류 발생 시 오류 메시지 반환
        return f"Error: {str(e)}"

# Streamlit 앱 제목 설정
st.title("YouTube 채널 ID 및 RSS 피드 생성기")

# 사용자로부터 YouTube 채널 핸들 입력 받기
handle = st.text_input("유튜브 채널 핸들을 입력하세요 (예: @3protv)")

# 채널 ID 확인 및 RSS 피드 생성 버튼
if st.button("채널 ID 및 RSS 피드 생성"):
    if handle:
        # 입력된 핸들로 채널 ID 가져오기
        channel_id = get_channel_id(handle)
        
        if "Error" in channel_id:
            # 오류 발생 시 오류 메시지 표시
            st.error(f"채널 ID를 가져오는 중 오류가 발생했습니다: {channel_id}")
        else:
            # 채널 ID 출력
            st.success(f"채널 ID: {channel_id}")
            
            # RSS 피드 URL 생성 및 출력
            rss_feed_url = f"https://www.youtube.com/feeds/videos.xml?channel_id={channel_id}"
            st.write(f"RSS 피드 URL: {rss_feed_url}")
            
            # RSS 피드 URL을 코드 형식으로 표시 (복사하기 쉽게)
            st.code(rss_feed_url, language='plaintext')
    else:
        # 핸들이 입력되지 않았을 때 경고 메시지 표시
        st.warning("유튜브 채널 핸들을 입력해주세요.")
  • Streamlit 화면

    유튜브 아이디 RSS

※ 핸들(@3protv)을 입력하면 채널 ID 및 RSS feed 자동 생성

  1. make.com

    [감지 및 URL 추출] - [자막 요청 및 생성 - 대기 - 다운로드] - [자막 요약] - [요약본 전송]

    다양한 유형의 소셜 미디어 플랫폼을 보여주는 다이어그램

2.1 watch video in channel(Youtube) : 등록된 채널에서 영상이 올라오는 것을 감지하고 영상 URL(Video ID) 획득

YouTube 비디오 다운로더 스크린샷
  • channel ID : 획득한 channel ID 입력

  • limit : 한번에 가져올 영상의 수

2.2 run an actor(Apify) : 업로드된 영상 URL을 전달하여 스크립트 획득

파란색 배경의 웹페이지 스크린샷
{
    "downloadSubtitles": true,
    "hasCC": false,
    "hasLocation": false,
    "hasSubtitles": false,
    "is360": false,
    "is3D": false,
    "is4K": false,
    "isBought": false,
    "isHD": false,
    "isHDR": false,
    "isLive": false,
    "isVR180": false,
    "maxResultStreams": 0,
    "maxResults": 5,
    "maxResultsShorts": 0,
    "preferAutoGeneratedSubtitles": false,
    "saveSubsToKVS": false,
    "searchKeywords": "Crawlee",
    "startUrls": [
        {
            "url": "https://www.youtube.com/watch?v={{27.videoId}}"
        }
    ],
    "subtitlesFormat": "plaintext"
}
  • actor : streamers/youtube-scraper 사용

  • input json : StartUrls의 url 중 video ID 부분만 앞에서 획득한 신규 업로드 영상의 Video ID 입력

유튜브 영상의 스크린샷

2.3 Sleep(tools) : apify youtube-scraper를 이용해 자막 생성을 위한 여유 시간 30s추가

(sleep이 없을 경우 스크립트를 얻기 전에 다음 시퀀스로 넘어가게 됨)

→ 추후 누락되는 영상이 있어서 확인해보니 30s를 초과하는 경우가 있었음

YouTube의 YouTube 관리자 스크린샷

자막이 EVEN하게 cooking 되지 않아 40s로 수정(영상의 길이에 따른 적절한 duration time 설정 필요

2.4 Get dataset items(apify) : run an actor를 통해 획득한 스크립트를 가져오기

ady의 ady 연결 설정 스크린샷
  • 2.2에서 얻은 자막파일 ID(defaultdatasetID)를 'datasetID'에 추가하여 스크립트(자막)을 얻어 옴

2.5 Create a completion(open ai) : 얻어온 자막을 Open AI를 통해 가공

녹색 화면과 텍스트가 포함된 웹페이지의 스크린샷
  • model : 저렴한 4o-mini 이용

  • system content : 국내 퀀트 투자의 대명사 '할투'강환국의 영상 요약을 위한 system 프롬프트 입력

    ※ 채널, 영상마다 내용의 구성이 다르기 때문에 적절한 프롬프트 작성 필요

  • user content : '2.4 Get dataset items'에서 얻어온 스크립트를 입력

2.6 Send a text message(telegram bot) : 요약된 정보를 텔레그램으로 전달

[3개의 채널을 요약 중]

어도비 어도비 어도비 어도비 어도비 어도비

→ 텔레그램방 한 곳에서 잘 비벼 볼 수 있어 좋음

Microsoft 계정 설정을 ��보여주는 화면의 스크린샷
  • chat id : 채팅방 ID 입력(텔레그램 채팅방 구분자)

  • text : 요약된 유튜브 채널명, 영상제목, 요약 내용 및 영상 URL 전달

한국어로 된 문자 메시지의 스크린샷

결과 및 인사이트

  • 유튜브 영상에 대한 요약이 가능함을 확인 하였습니다

  • 경제/생활지식/투자/서평 영상에 효과적인 활용이 가능할 것으로 예상 됩니다.

  • 회원 전용 영상, (유튜브)커뮤니티글에 대한 요약은 아직 어렵습니다.(대안 연구 필요)

  • 9월 미국 및 암호화폐 상승 할 경우 통계적으로 24년 4분기 및 25년 4월까지 미국주식과 암호화폐가 대세 상승이 가능할 가능성이 높답니다.

  • 한강의 영광이 함께 하시길 바랍니다.

    한 여자가 메달을 들고 버스 앞에 서 있다

23
6개의 답글

(채용) 콘텐츠 마케터, AI 엔지니어, 백엔드 개발자

지피터스의 수 천개 AI 활용 사례 데이터를 AI로 재가공 할 인재를 찾습니다

👉 이 게시글도 읽어보세요