IT

Youtube 영상요약하기_n8n

esmile1 2024. 10. 3. 05:59

 

오늘은 코딩 없이 AI 에이전트를 구현하여 YouTube 영상을 요약하고 관련 영상을 검색하는 방법에 대해 알아보겠습니다. 이 과정에서 우리는 n8n이라는 강력한 도구를 사용할 것입니다.

 

1. n8n 소개

 

n8n은 Zapier나 Make와 같은 자동화 도구와 유사하지만, AI 기능을 더 많이 활용할 수 있는 특징이 있습니다. 특히 AI 에이전트를 구현하기 위한 도구들이 풍부하여 코드를 거의 또는 전혀 작성하지 않고도 제품을 만들 수 있습니다.

 

n8n을 사용하는 방법은 크게 세 가지가 있습니다:

 

클라우드 서비스 이용 (유료)

자체 서버에 설치 (Self-hosted)

로컬 컴퓨터에 설치

 

이 튜토리얼에서는 로컬 설치 방법을 사용하겠습니다.

 

2. n8n 설치하기

 

n8n을 로컬에 설치하기 위해서는 먼저 Docker를 설치해야 합니다. Docker가 설치되어 있지 않다면, Docker 공식 웹사이트에서 운영체제에 맞는 버전을 다운로드하여 설치하세요.

 

Docker가 설치되면, 다음 단계를 따라 n8n을 설치합니다:

 

원하는 폴더로 이동합니다.

n8n GitHub 저장소에서 제공하는 명령어를 복사하여 터미널에 붙여넣습니다.

설치가 완료되면 Docker Desktop에서 n8n이 실행 중인 것을 확인할 수 있습니다.

 

브라우저에서 localhost:5678로 접속하여 n8n 인터페이스에 접근합니다.

 

3. n8n 워크플로우 만들기

 

이제 n8n에서 워크플로우를 만들어 YouTube 영상을 요약하고 관련 영상을 검색하는 과정을 살펴보겠습니다.

 

1) YouTube 트랜스크립트 추출

 

먼저 YouTube 영상의 자막을 추출해야 합니다. 이를 위해 커뮤니티에서 제공하는 'YouTube Transcript' 노드를 설치합니다.

 

n8n 설정에서 'Community Nodes'로 이동합니다.

'n8n-nodes-youtube-transcript'를 검색하여 설치합니다.

워크플로우에 'YouTube Transcript' 노드를 추가합니다.

YouTube 영상 URL을 입력하고 테스트합니다.

 

2) 텍스트 요약하기

 

다음으로 LangChain의 Summarization 체인을 사용하여 추출된 자막을 요약합니다.

 

'LangChain' 노드 그룹에서 'Summarization' 노드를 추가합니다.

OpenAI API 키를 설정합니다.

모델을 선택하고 요약 옵션을 설정합니다.

'YouTube Transcript' 노드와 연결하고 테스트합니다.

 

3) 정보 추출하기

 

요약된 텍스트에서 태그와 검색어를 추출합니다.

'Information Extractor' 노드를 추가합니다.

추출할 정보(태그, 검색어)를 정의합니다.

'Summarization' 노드와 연결하고 테스트합니다.

 

4) AI 에이전트로 관련 영상 검색하기

 

추출된 정보를 바탕으로 AI 에이전트를 사용하여 관련 YouTube 영상을 검색합니다.

 

'AI Agent' 노드를 추가합니다.

SerpAPI를 사용하기 위해 'HTTP Request' 도구를 설정합니다.

AI 에이전트에 검색 지시사항을 입력합니다.

'Structured Output Parser'를 사용하여 결과를 구조화합니다.

 

6) 결과 전송하기

 

마지막으로 요약과 관련 영상 정보를 Discord로 전송합니다.

 

'Discord' 노드를 추가합니다.

Discord 웹훅 URL을 설정합니다.

메시지 형식을 구성합니다.

'Merge' 노드를 사용하여 요약과 관련 영상 정보를 합칩니다.

테스트하여 Discord로 메시지가 전송되는지 확인합니다.

 

7) 워크플로우 최적화

 

워크플로우를 더욱 유연하게 만들기 위해 웹훅을 사용하여 입력을 받을 수 있습니다. 이렇게 하면 외부에서 YouTube URL을 입력받아 자동으로 처리할 수 있습니다.

워크플로우 시작 부분에 'Webhook' 노드를 추가합니다.

YouTube URL을 받을 수 있는 구조를 설정합니다.

 

받은 URL을 'YouTube Transcript' 노드로 전달합니다.

 

마무리

 

이렇게 우리는 코딩 없이 n8n을 사용하여 AI 에이전트를 구현하고, LangChain을 활용하여 YouTube 영상을 요약하고 관련 영상을 검색하는 워크플로우를 만들었습니다. 이 방법을 응용하면 다양한 AI 기반 자동화 작업을 수행할 수 있습니다.

n8n의 가능성은 무궁무진합니다. 예를 들어, 음성 녹음을 텍스트로 변환하고 요약한 후 노션이나 디스코드로 회의록을 자동으로 작성하는 등의 작업도 가능합니다.

이 튜토리얼이 여러분의 AI 프로젝트에 도움이 되었기를 바랍니다. 더 많은 정보와 아이디어 교환을 원하신다면, 커뮤니티 디스코드 채널에 참여해 주세요. 함께 n8n의 무한한 가능성을 탐험해 봅시다!

 

< AI로 YouTube 요약하기 단계별 소개 >

 

n8n 워크플로우 상세 설명

이제 각 단계를 더 자세히 살펴보며, n8n에서 워크플로우를 구축하는 방법을 알아보겠습니다.

 

YouTube 트랜스크립트 추출 상세 과정

n8n 대시보드에서 새 워크플로우를 생성합니다.

검색 창에 'YouTube'를 입력하고 'YouTube Transcript' 노드를 선택합니다.

노드 설정에서 'Video URL or ID' 필드에 YouTube 영상 URL을 입력합니다.

'Output Format'을 'Merged Text'로 설정하여 전체 자막을 하나의 텍스트로 받습니다.

'Execute Node' 버튼을 클릭하여 노드를 테스트합니다.

LangChain을 이용한 텍스트 요약 과정

'LangChain' 카테고리에서 'Summarization' 노드를 워크플로우에 추가합니다.

OpenAI API 키를 설정합니다. 처음 사용하는 경우 새 자격 증명을 생성해야 합니다.

모델 선택에서 'gpt-4'나 원하는 모델을 선택합니다.

'Add Option'을 클릭하고 'Summarization Method and Prompts'에서 요약 방식을 커스터마이즈할 수 있습니다.

예를 들어, "in Korean"을 추가하여 한국어로 요약을 받을 수 있습니다.

'YouTube Transcript' 노드의 출력을 'Summarization' 노드의 입력으로 연결합니다.

 

정보 추출기 설정

'Information Extractor' 노드를 워크플로우에 추가합니다.

'Model' 필드에서 사용할 AI 모델을 선택합니다.

'Sampling Temperature'를 낮게 설정하여 더 정확한 정보 추출을 유도합니다.

'Text' 필드에 이전 노드의 출력을 변수로 연결합니다.

'JSON Schema'에서 추출할 정보의 구조를 정의합니다. 예:

{ "tags": "영상의 주요 태그", "searchTerms": "관련 영상 검색을 위한 검색어" }

노드를 테스트하여 정보가 올바르게 추출되는지 확인합니다.

 

AI 에이전트 구성

'AI Agent' 노드를 워크플로우에 추가합니다.

'Agent Type'을 'Tool Agent'로 설정합니다.

'Tools' 섹션에서 'HTTP Request' 도구를 추가합니다.

SerpAPI 설정:

URL: https://serpapi.com/search.json

Method: GET

Query Parameters:

api_key: SerpAPI 키

q: {{$json["searchTerms"]}}

'Prompt' 필드에 에이전트 지시사항을 입력합니다. 예:

구글에서 관련 YouTube 영상을 검색해서 나열해 주세요. 검색은 한 번만 해주세요. 태그: {{$json["tags"]}} 검색어: {{$json["searchTerms"]}}

'Structured Output Parser'를 설정하여 결과를 구조화합니다:

[ { "title": "영상 제목", "url": "영상 URL" } ]

 

Discord로 결과 전송

'Discord' 노드를 워크플로우에 추가합니다.

Discord 웹훅 URL을 설정합니다.

메시지 형식을 구성합니다. 예:

📌 요약: {{$node["Summarization"].json["text"]}} 🎥 관련 추천 영상: {% for video in $node["AI Agent"].json["output"] %} {{loop.index}}. [{{video.title}}]({{video.url}}) {% endfor %}

'Merge' 노드를 사용하여 요약과 관련 영상 정보를 합칩니다.

'Discord' 노드를 'Merge' 노드의 출력과 연결합니다.

 

워크플로우 최적화 및 확장

 

웹훅 사용하기

워크플로우 시작 부분에 'Webhook' 노드를 추가합니다.

웹훅 설정:

HTTP Method: POST

Path: /youtube-summary

Response Code: 200

Response Body: JSON

'YouTube Transcript' 노드의 'Video URL or ID' 필드를 웹훅 입력과 연결:

{{$json["body"]["youtube_url"]}}

 

에러 처리

각 주요 노드 뒤에 'IF' 노드를 추가하여 에러를 체크합니다.

에러 발생 시 'Error' 브랜치를 통해 에러 메시지를 Discord로 전송하거나 로그를 남깁니다.

 

결과 저장

'Notion' 또는 'Airtable' 노드를 추가하여 요약 결과를 데이터베이스에 저장합니다.

저장 정보 구조:

영상 URL

요약 내용

관련 영상 목록

처리 시간

 

고급 기능 구현

 

다국어 지원

'Language Detection' 노드를 추가하여 입력 텍스트의 언어를 감지합니다.

감지된 언어에 따라 다른 요약 프롬프트를 사용합니다.

 

키워드 추출 및 태그 생성

'Keyword Extractor' 노드를 추가하여 요약에서 주요 키워드를 추출합니다.

추출

 

The speaker concludes by summarizing the key points they demonstrated:

 

Implementing an AI agent without writing any code

Utilizing LangChain

Summarizing YouTube videos

Sending messages to third-party apps

 

They express disappointment that n8n is not well-known in Korea, emphasizing its potential for creating various products. The speaker mentions they are testing a product that transcribes voice recordings, summarizes them, and sends meeting minutes to platforms like Notion, Discord, or Telegram.The video ends with an invitation for viewers to join the Discord community if they have questions or want to discuss the topic further, and a thank you message for watching the long video.

 

자료원:

https://www.youtube.com/watch?v=ZUwWpNEu8-k