소개
유튜브 재생목록 신규 영상 요약 및 옵시디언 정리 자동화
진행 방법
어떤 도구를 사용했고, 어떻게 활용하셨나요?
Tip: 사용한 프롬프트 전문을 꼭 포함하고, 내용을 짧게 소개해 주세요.
Tip: 활용 이미지나 캡처 화면을 꼭 남겨주세요.
Tip: 코드 전문은 코드블록에 감싸서 작성해주세요. ( / 을 눌러 '코드 블록'을 선택)
사진1: 전체 플로우
사진2: 스케줄 트리거 노드
목적 -> 30분에 한 번 유튜브 재생목록 내 영상을 불러오도록 세팅 함
사진3: 첫 번째 코드 노드
목적 -> 자바스크립트 코드를 통해, 이전에 확인했던 videoId 목록을 저장 및 새로 추가된 영상 만 필터링
프로세스
이번에 불러온 재생목록 아이템(영상들)에서 videoId를 추출
Static Data에서 “이미 본 videoId 목록”을 가져옴
새로 추가된 videoId만 필터링
새 videoId를 Static Data에 추가(업데이트)
주의사항 -> Static Data는 n8n이 재시작되거나 워크플로우가 완전히 Reload되면 사라질 수 있음
사진4: 루프 노드
목적 -> 여러 신규 영상이 동시에 있을 때, 각 영상에 대해 순차적으로 자막을 가져오려고 함
세팅 값
“Batch Size”를 1로 설정하면, 한 번에 videoId 1개씩 다음 노드(http request)로 넘김
사진5: 유튜브 스크립트 추출 관련 플로우 (현재 실패ㅠㅠ)
목적 -> 유튜브 캡션(자막)을 추출하여 텍스트로 변환
사진6: 이후 노드들
프로세스 설명
openai 노드를 통해, 스크립트 요약 및 키워드 추출
code 노드를 통해, 추출된 스크립트 요약본 및 키워드 데이터를 마크다운 파일로 변환
변환된 마크다운 파일을 구글드라이브에 업로드
구글드라이브에 업로드 완료 시, 슬랙 알림
// 1) n8n에서 이 노드로 들어온 최종 요약 데이터를 가져옴
// "summary", "keywords" 등은 이전 노드에서 넘어온 값
const summary = $json["summary"] || "(no summary)";
const keywords = $json["keywords"] || [];
const videoTitle = $json["videoTitle"] || "Untitled";
// 2) 날짜 등 메타데이터 만들기
const dateStr = new Date().toISOString().split('T')[0]; // YYYY-MM-DD 형태
// 3) 키워드를 [[링크]] 형태로 변환 (옵시디언 태그처럼)
const keywordLinks = keywords.map(k => `[[${k}]]`).join(" ");
// 4) 실제 마크다운 내용 구성
const markdownContent = `---
title: "${videoTitle}"
date: ${dateStr}
---
# ${videoTitle}
## Summary
${summary}
## Keywords
${keywordLinks}
`;
// 5) 파일 이름 설정 (날짜-영상제목.md)
const fileName = `${dateStr}-${videoTitle.replace(/\s+/g, '_')}.md`;
// 6) Output: 하나의 아이템에 { fileName, fileContent }를 넣어 반환
return [{
json: {
fileName,
fileContent: markdownContent
}
}];
코드블록 -> 최종 요약 데이터를 마크다운 파일로 변환
결과와 배운 점
배운 점과 나만의 꿀팁을 알려주세요.
youtube 영상 요약을 위한 스크립트 추출이 쉽지 않다
비용을 줄이기 위해, 스케줄트리거로 플로우를 반복시키는 것보다는 유튜브 재생목록에 영상이 추가 될 때 만 플로우가 동작하도록 설계하면 좋을 것 같다
코드 노드에 사용될 프롬프트는 지피티가 잘설계해주는편이다
과정 중에 어떤 시행착오를 겪었나요?
유튜브 스크립트를 추출하기 위해 rapid api를 활용해보려고 하였으나, 테스트용 토큰량 사용 만료로 인하여 실패
무료로 유튜브 스크립트를 추출하기 위해, YouTube Data API를 활용해보려고 했으나 credential 설정 문제로 실패
Ai agent 노드를 활용하지 못함
도움이 필요한 부분이 있나요?
유튜브 스크립트를 추출해주는 진입장벽 낮은 api 및 노드가 있다면 추천해주세요..
앞으로의 계획이 있다면 들려주세요.
ai agent 노드를 활용하여 현재 플로우 디밸롭
옵시디언 볼트에 저장할 때, 에이전트가 기존에 저장된 노트들과의 관련성을 분석하여 내부 링크나 추가 참고 자료를 추천
영상 주제 카테고리에 따라, 에이전트가 스크립트 요약 프롬프트를 다르게 설정
신규 ai agent 플로우 두 가지 구축하기
메일 내용 파악 후, 캘린더에 일정을 추가해주는 에이전트
노션(or에어테이블) db 내 정보 업데이트를 감지하여, 관련 알림(메세지)를 보내주는 에이전트