Lindy AI로 뷰티 유튜버 리스트업 자동화(실패)

소개 시도 배경

  • 지난주 스터디장님께서 말씀하신 agent step을 추가했으나 '적절한 명령어'를 구성하지 못했는지, 원하는 결과물이 나오지 않음

  • agent step에 입력한 프롬프트

리스트업 할 대상인 뷰튜 유튜버는 '유튜브'에 '메이크업', '코덕', '뷰티유튜버'를 검색했을때 검색어가 영상 제목에 포함된 영상을 업로드한 유튜버로 정의할 것. 
구글시트 이름은 '뷰티 유튜버 리스트업 by Lindy'로 지정할거고, 이것도 워크플로우를 실행했을때 자동으로 생성되게 하고 싶어.
구글 시트에서 '롱폼 유튜버' 시트와 '숏폼 유튜버' 시트로 나누어 리스트업 할 것이며, 3분 1초 이상의 롱폼 영상이 전체 영상 수의 30% 이하인 유튜버를 '숏폼 유튜버'로 정의하고, 롱폼 영상이 전체 영상 수의 30% 이상인 유튜버를 '롱폼 유튜버'로 정의할 것.
각 시트에서 4개의 열 지정 : '채널 이름', '채널 규모', '구독자 수', '채널 URL'
'채널 이름'에는 수집한 유튜버의 채널 이름 입력, '채널 규모'에는 수집한 유튜버가 해당하는 채널 규모 입력,
'채널 규모'는 '1만 이하', '1만 - 10만', '10만 - 30만', '30만 - 50만', '50만 이상'으로 설정하여 카테고리화 할 것.
'구독자 수'에는 수집한 유튜버의 구독자 수 1의자리까지 입력,
'채널 URL'에는 수집한 유튜버의 채널 url 입력할 것.
각각의 유튜버는 행 추가로 입력할 것
  • 그래서 아예 처음부터 lindy에게 맡겨 보았습니다.

진행 방법과 사용 도구

  • lindy - chat기능에 아래와 같이 입력(위의 프롬프트와 동일)

    Lindy의 질문 & 나의 답변(볼드)

    1. YouTube 데이터 수집 방식
    • YouTube API를 사용할 것인지, 아니면 웹 스크래핑을 사용할 것인지?

    • YouTube API를 사용한다면 API 키가 있으신가요?

      => API 키 사용, 키 보유

    2. 검색 범위
    • 각 검색어('메이크업', '코덕', '뷰티유튜버')별로 몇 개의 영상까지 검색할 것인지?

    • 예: 상위 100개? 200개? 500개?
      => 100개

    3. 영상 길이 판단 기준
    • "3분 1초 이상"의 영상을 어떻게 판단할 것인지?

    • YouTube API에서 영상 길이 정보를 수집해야 하는데, 이를 위해 API 키가 필요합니다.

    4. 중복 제거
    • 같은 유튜버가 여러 검색어에서 나타날 경우, 중복을 제거할 것인지?

    • 예: '메이크업'과 '뷰티유튜버' 검색에서 모두 나타난 유튜버는 한 번만 리스트업?
      => 중복 제거

    5. 자동화 실행 주기
    • 이 워크플로우를 얼마나 자주 실행할 것인지?

    • 매일? 매주? 매월?
      => 요청시

    6. Google Sheets 접근 권한
    • Google Sheets API를 사용하기 위해 Google 계정 인증이 필요합니다.

    • 이미 설정되어 있으신가요?

    7. 기존 데이터 처리
    • 워크플로우 실행 시마다 기존 데이터를 덮어쓸 것인지, 아니면 추가할 것인지?
      => 실행 시 마다 행추가하며, 똑같이 중복 데이터는 중복 제거

📁린디가 만들어준 프로젝트 구조

/home/code/beauty-youtuber-listup/
├── 📄 index.js                    # 메인 실행 파일 (전체 로직)
├── 📄 youtubeCollector.js         # YouTube API 데이터 수집 모듈
├── 📄 sheetsManager.js            # Google Sheets 관리 모듈
├── 📄 package.json                # 프로젝트 설정
├── 📄 .env.example                # 환경 변수 템플릿
├── 📄 .gitignore                  # Git 무시 파일
├── 📖 README.md                   # 전체 기능 및 사용 방법
├── 📖 SETUP_GUIDE.md              # 상세 설정 가이드 (API 키 발급 방법)
├── 📖 QUICK_START.md              # 빠른 시작 가이드 (5분 안에 시작)
├── 📖 PROJECT_SUMMARY.md          # 프로젝트 개요
└── 📦 node_modules/               # 설치된 패키지


🎯 주요 기능

1️⃣ YouTube 검색 및 데이터 수집

  • 검색어: '메이크업', '코덕', '뷰티유튜버'

  • 각 검색어별 상위 100개 영상 검색

  • 채널명, 구독자 수, 채널 URL, 영상 길이 자동 수집

2️⃣ 롱폼/숏폼 자동 분류

  • 롱폼: 3분 1초(181초) 이상 영상이 30% 이상

  • 숏폼: 3분 1초 이상 영상이 30% 미만

  • 각 채널의 최근 100개 영상 분석

3️⃣ 채널 규모 자동 분류

  • 1만 이하

  • 1만 - 10만

  • 10만 - 30만

  • 30만 - 50만

  • 50만 이상

4️⃣ 중복 제거

  • 검색 결과 내 중복 제거

  • 기존 Google Sheets 데이터와 비교

  • 새로운 채널만 추가

5️⃣ Google Sheets 자동 관리

  • '뷰티 유튜버 리스트업 by Lindy' 자동 생성

  • '롱폼 유튜버' / '숏폼 유튜버' 시트 자동 생성

  • 행 추가 방식으로 데이터 누적


📊 Google Sheets 구조

열 구성

설명

채널 이름

유튜버 채널명

채널 규모

구독자 수 기반 분류

구독자 수

정확한 구독자 수

채널 URL

YouTube 채널 링크

시트 구성

  • 롱폼 유튜버: 3분 1초 이상 영상이 30% 이상

  • 숏폼 유튜버: 3분 1초 이상 영상이 30% 미만


🔄 동작 흐름

1. YouTube 검색 (3개 검색어 × 100개 영상)
   ↓
2. 채널 정보 수집 (채널명, 구독자 수, URL)
   ↓
3. 중복 제거 (검색 결과 내)
   ↓
4. 기존 데이터와 비교 (Google Sheets)
   ↓
5. 새로운 채널만 필터링
   ↓
6. 각 채널의 영상 분석 (최근 100개)
   ↓
7. 롱폼/숏폼 분류 (30% 기준)
   ↓
8. Google Sheets에 행 추가
   ↓
9. 완료! ✅


기능과 구성을 보면 제 말을 잘 이해한 것 같았습니다...
그런데... 실행을 하면 터미널 창이 나와 코드가 입력되는 식으로 실행이 되어
단계별로 어떤 부분이 어떻게 지정되어있는지 제가 알아보기 어려웠습니다.

Google 클라우드 문서 - 스크린샷 1

그래서 다음과 같이 agent로 구현하고 싶다는 명령을 했고, lindy가 활성화 하라는 요소들을 모두 활성화 했습니다.

API관련 활성화에 시간이 꽤나 소요되어 한시간쯤 후 다시 agent로 구현을 요청했고,

위의 질문에 1번을 선택했습니다.

그렇게 lindy가 열심히 인터페이스를 만들었고,

라며 agent를 만들었다고 하는것 같은데,,, 왼쪽 탭에서는 보이지 않았습니다.

웹 대시보드를 확인해보자는 마음으로 주소를 입력했는데...

뭐가 문제였을까요...ㅜ

lindy는 시스템을 완성했다며 해맑으나 저는 해맑지 못했습니다..ㅠㅡㅠ


그렇다면, agent step을 추가한 모델은?!

스터디장님께서 말씀하신대로 agent step을 추가해 최상단과 같이 프롬프트를 입력했고

loop end 값은 중복없이 100명의 유튜버 리스트업으로 설정했습니다.

그럼에도 불구하고 이전과 같은 오류가 발생했고

append row에서 row values를 다음과 같이 변경했습니다(gemini의 도움)

  • 채널 이름:

기존: 현재 유튜버의 채널 이름을 적어줘.
수정: "방금 YouTube Scraper가 가져온 results 데이터 중에서 채널의 공식 명칭(Channel Name)만 찾아서 적어줘."
  • 채널 규모:

기존: 구독자 수에 따라 규모를 분류해줘.
수정: "방금 YouTube Scraper의 results에 있는 구독자 수(Subscriber Count)를 확인하고, 1만 이하, 1-10만, 10-30만, 30-50만, 50만 이상 중 어디에 해당되는지 '구간'만 적어줘."
  • 구독자 수:

기존: 유튜버의 구독자 숫자를 적어줘.
수정: "방금 YouTube Scraper의 results 데이터 중에서 구독자 수(Subscriber Count) 항목의 숫자만 적어줘. 채널 이름과 헷갈리지 마."
  • 채널 URL:

기존: 채널 링크(URL)를 적어줘.
수정: "방금 YouTube Scraper의 results에 있는 해당 채널의 고유 URL 주소만 적어줘."

그랬더니...!

여전히 열에는 맞지않는 데이터가 들어가 있으나,
채널 규모의 카테고리화에는 성공했습니다.

이 값들이 뒤섞인 이유는 아직도 모르겠습니다...

gemini에게 물어봐도 이미 수정한 설정 값에 대해서만 같은 말을 반복합니다...

결과와 배운 점

시간적 여유를 두고 lindy AI관련 사례글을 더 많이 구글링 해볼걸이라는 후회가 남습니다...

1
2개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요