배경 및 목적
평소 밈과 트렌드에 대한 이해도는 스펙이 된다고 굳게 믿고 있습니다. 알아두면 어떻게든 사용된다고 생각하고 있어요. 다양한 방법들이 있겠지만, 요즘은 유튜브가 대세인지라 트렌드를 파악하는 데 있어서 레거시 미디어 보다는 유튜브에서 파악하는게 가장 쉽겠다 생각했습니다.
한데… 유튜브 알고리즘 특성 상 관심있는 분야에 대해서만 거듭 추천해 주기 때문에, 전반적인 트렌드를 파악하는 데에는 조금 힘들 수도 있겠다는 생각이 들었습니다. 관심 없는 분야에 대해서는 찾아볼 생각조차 나지 않기도 하고요.
고민끝에 유튜브 자체에서 제공하는 ‘인급동(인기 급상승 동영상)’ 섹션의 데이터들을 활용하면 좋겠다는 결론이 나왔습니다. 매일매일 인급동 영상의 소식을 메일로 3줄 요약해 내용을 받아보면 시간도 아끼고, 여러 모로 좋겠다 싶었거든요.
원래는 아래 사진과 같이 쇼츠 영상(영상 길이가 짧아서 해볼만 하다고 자만함)을 내려받고, 영상을 텍스트화 시킨 다음, 트렌드 분석을 해볼까 했지만..
MAKE에서는 도저히 구현이 안되더군요. ← 가능할 것 같다 생각드시면 부디 공유 바랍니다. :(
각설하고, 여차저차한 이유와 지극히 개인적인 니즈에 의해, 이번에 만들어 본 시나리오는
💡 “인급동(인기 급상승 동영상) 분석 + 영상 요약 + 메일링”
입니다.
참고 자료
활용 툴
이번 시나리오는 총 6개의 앱, 10개의 모듈로 구성됐습니다.
메인:
MAKE
사용된 앱 & 모듈:
HTTP
Make a request:
Youtube API
유튜브에서 인급동 갖고오는 용도
Lilys API
영상 요약용도
Flow control
Iterator
유튜브API에서 추출한 데이터 번들화 시키는 용도
Array aggregator
메일 발송 시 모든 작업이 완료된 후 1개의 메일에 취합해서 보내는 용도
Tools
Sleep
요약 시간 대기 용도
Anthropic Claude
Create a Prompt
부족한 결괏값 수정 용도
Airtable
Upsert a Record
데이터 업로드 용도
Search Records
Email 불러오는 용도
Gmail
Send an Email
메일 발송하는 용도
실행 과정
설명에 앞서, 이번에도 다양한 시행착오 끝에 탄생했습니다. 잠시 묵념하고 가겠습니다.🥲
시나리오의 흐름은 다음과 같이 이뤄집니다.
이걸 MAKE로 나타내면,
이렇게 됩니다.
하나씩 뜯어보겠습니다.
유튜브 API로 인기 탭 호출 받아오기
먼저, 유튜브 공식 문서에서 설명하는 방법으로 인급동 영상 정보들을 받아옵니다. 50개의 영상 정보를 받아왔습니다.
데이터 나누기
그리고, 데이터를 나눕니다. 나누는 이유는 영상 시간 & ID 파싱 때문입니다. 영상마다 고유 ID 값이 있고, 길이 역시 다릅니다. 추후 모듈에 입력해야할 값들 중 영상마다 개별 ID와 길이 값이 있어 사용했습니다.
이상하게도 make a request 안의 파싱 기능을 사용하면 추후 모듈에 개별 번들의 ID를 읽히질 못하더라고요.
필터링 추가
게다가 모든 길이의 영상을 추출하면 돈이 살살 녹습니다. 긴축 이슈로 인해 수집한 50개의 영상 중 30초이상 6분 미만의 영상만 수집하도록 필터를 추가했습니다.
여기서도 한 씨름 했는데, 유튜브는 영상의 재생시간을 ‘ISO 8601’ 형식으로 추출하더군요. (PT 뒤 M 앞에 오는 숫자는 분, S앞에 오는 숫자는 초를 의미합니다.) 여기서 Text operation(Contains) 필터를 걸고 PT1M / PT2M / PT3M / PT4M / PT5M을 추가했습니다. 아, 미련하게도 30초부터 59초, 그러니까 PT30S ~ PT59S도 수기로 넣었습니다 ㅋㅋㅋ..
릴리스 AI API 호출하기
그리고 드디어 영상 분석 단계입니다. 여기서 한 3일은 헤맨 것 같은데, 첫 목차에서 언급했듯 원래는 영상 url로 mp4 형식으로 변환 → OpenAI whisper 모델로 mp4 영상의 텍스트화 → 분석하려 했으나.. MAKE에서는 구현이 안됨을 깨닫고 끌어올만한 API를 찾아다녔습니다.
그러다 문득 lilys AI가 생각나서 찾아보니 Open API를 제공하더군요! 정말 감사하게도 잘 받아와서 사용했습니다.
공식 문서에 따르면, 호출 한 뒤 생성되는 request ID를 사용해서 다시 받아와야 한다고 하더군요. 때문에 릴리스AI API 단계는 호출과 응답 2개의 모듈을 사용했습니다.
요약 대기
호출을 보낸 뒤, 영상을 요약하는 동안 잠시 대기하는 단계입니다. 2분으로 설정했습니다. 넉넉하게 잡지 않으면 pending 걸려서 아무 값도 못 받아오더라고요.
여담이지만, 이 시간 정하는 것도 상당히 골아팠습니다🥲
일일이 테스트했던지라, 이렇게 메모장에 적어서 테스트해가며…. 정한 값이 ‘재생 길이 5분 영상 기준 2분 대기’였네요.
릴리스 AI API 응답 받아오기
앞서 설명했듯, 요 약 시간을 충분히 줬다면 이제 값을 받아올 차례입니다. 앞서 호출에서 생긴 request ID를 받아옵니다!
아, , 참고로 릴리스 AI에서 제공하는 형식들을 보면, 다양한 형식으로 글을 받아올 수 있습니다. 저는 summaryNote 형식으로 받아왔지만 블로그 형식이나 한 단락 형식 등등 받아올 수 있는 형식은 여러 가지가 있으니 참고하시길 바랍니다. (유튜브 to 블로그 원하시면 쓸만하실듯 싶습니다.)
클로드 써묵기
다음 단계는 클로드로 요약하는 단계입니다.
릴리스AI를 써놓고 왜 또 클로드를 사용하냐 물으신다면.. 요약 값들이 제 기준 만족스럽지 않아서..입니다. 사용하지 않으셔도 되는 부분입니다.
에어테이블에 정보 올리기
이제 지금까지 만들고 받아온 데이터들을 DB에 업로드하는 단계입니다. 지난 번에는 노션을 사용했지만, 이번에는 에어테이블과 친해지고 싶어서 한 번 써봤습니다. 재밌네요.
저 Record ID 부분은 왜 필요한지 몰라서 공란으로 뒀는데.. 쓸모가.. 있을까요? (몰라서 여쭤봅니다. 에어테이블 고수님들의 의견 항시 대기중입니다.)
이메일 불러오기
다음은 전송할 이메일을 불러오는 단계입니다. 새로운 테이블을 만들어서 불러왔습니다. (별거 없음)
데이터 취합하기
마지막까지 골치아프게 한 부분이었습니다. 한 번에 데이터를 취합해서 1개의 메일에 발송하고 싶었는데, 계속해서 1개의 영상 당 1개의 메일이 발송되는.. 속상한 상황이 거듭되더군요.
해결책은 간단했습니다. Array aggregator를 사용하면 됐어요.
Array aggregator 모듈을 추가하고 시작 지점을 초반의 모듈로 설정하니, 깔끔하게 원하는 대로 해결됐습니다.
메일 발송하기
마지막 단계입니다. Gmail 앱의 Send an Email 모듈을 사용해서 모은 데이터의 다양한 값들을 포맷에 맞춰 보내면 끝입니다.
최대한 M-Z 스럽게.. 완성입니다.
아래는 결과물입니다. 5분 미만이다보니 노래가 많이 나오는데, 추후에는 노래는 생략하도록 고도화 시켜봐야겠네요.
결과 및 인사이트
조금씩 늘어나는 개발 지식이 만족스럽습니다. ㅋㅋㅋ
다만.. 수정해야 할 사항들도 여러 개 보이는데요.,
음악은 요약할 필요가 없음.
메일 발송 시 html 제대로 입혀서 (레이아웃 다듬어서) 발송토록 수정.
댓글 반응 추가 요약하기.
등 조금 더 고도화 한다면 해보고 싶은 것들이 여러 가지 있습니다.
새로운 통찰이라면..
여러분은 꼭 세이브 생활화 하십 쇼.. 중간에 휘발된 모듈만 어언 20개는 되는 것 같습니다…..🥲
이번 주도 재밌었습니다🫡