롱폼자동화_기본강의 톺아보기

소개

일단, 지난 화요일에 진행되었던 기초강의의 내용을 살펴보며 각 모듈에서 사용한 의미를 되새김질하는 것부터 시작하기

진행 방법

Step 1. 기초강의에서 제공된 시나리오를 이해한다.

지난 화요일 진행되었던 수업의 시나리오입니다.

우선적으로 확인할 사항을 네가지로 살펴보고, 각 모듈을 사용할 때에 다음에 같은 실수를 반복하지 않기 위해 살펴볼 사항들을 확인하고자 합니다.

  • Q.1 전체 시나리오의 흐름

    • 전체 시나리오의 흐름은 다음과 같습니다

      1. 에어테이블에서 지정한 유튜브 채널을 가져온다.

        1. 직접 가져오지 않고 에어테이블을 이용하는 이유는 유튜브 채널마다 변경하는 것은 비효율이기 때문에 가져올 채널의 종류를 DB형태로 관리하기 위함입니다.

      2. 유튜브 채널을 RSS피드로 변경하여 그 중 URL을 추출한다.

        1. 유튜브 채널을 여러개를 지정할 수도 있고, 개별 유튜브 채널의 URL이 달라질 수 있으므로 해당 내역에는 RSS로 변경한다.

        2. (???) RSS로 변경하여 다른 API에서 활용할 수 있도록 한다.

      3. Apify의 모듈을 사용하여 해당 유튜브 채널에 유튜브 스크래퍼를 실행한다.

        1. Apify에 다양한 모듈이 있는데, 실행할 모듈을 먼저 지정하고, 그 결과를 다음 모듈로 전달하는 역할을 한다.

      4. Apify에서 실행한 유튜브 스크래퍼 중 자막을 읽도록 한다.

        1. 스크래퍼로 긁어들인 데이터 중 자막에 대한 데이터를 추출한다.

      5. 에어테이블에 미리 입력해둔 프롬프트를 불러온다.

        1. 4번에서 추출한 데이터를 요약하기 위한 프롬프트를 불러오기 위한 에어테이블을 호출한다.

      6. 불러운 프롬프트를 이용하여 4번항목에서 읽어들인 자막을 요약한다.

        1. 4번항목과 5번항목을 조합하는 형태로 자막을 요약한다.

        2. 프롬프트를 여기에 입력해두고, 5번항목을 삭제할 수도 있지만, 그렇게 되는 경우 프롬프트의 변경을 직접 관리해야한다.

        3. ChatGPT를 불러오는 경우 Message에서 각각의 Role과 Content등을 잘 적어줘야하고, 이를 누락하는 경우의 위험을 방지하는 목적으로도 Airtable을 활용한다. 즉, 선택의 문제이다.

      7. 에어테이블에 해당 내용을 적재한다.

        1. 마지막으로 요약된 내용을 airtable에 적재한다.

    • 위와 같은 흐름으로 진행이 되는 make 시나리오가 완성됩니다.

    • 몇 가지 사항에서 알 수 있듯이 이 시나리오는 이 세상을 완벽하게 설명하는 이론이 아니며, 각각의 상황과 구독하고 있는 모듈 등의 사용여부로 변경이 가능합니다.

    • 이렇게 진행하고 나면 몇가지 질문이 생기게 됩니다.

  • Q.2 저 동그라미의 숫자는 무엇인가?

    • 일단 화면에서 표시된 숫자에서 몇 가지 종류가 있습니다.

    • 가장 먼저 말풍선같이 생긴 숫자에 마우스를 올리면 돋보기 표시가 나고 이를 클릭하면 아래 그림과 같은 메시지가 나옵니다.

    • 네, 이 메시지는 해당 모듈이 실행된 결과를 보여주는 화면입니다.

  • Q.3 그런데 숫자 3은 무엇인가?

    • 앞에서는 숫자가 1이었는데, 뒤에서 숫자가 3이 되는 이유는 Operation의 수차이 때문인 것으로 보입니다. (확실하지 않습니다. 하지만, 앞에서 Operation이 1이었는데, 뒤에서 3이된 사항에서의 차이는 그것 뿐인것 같습니다.)

    • 근데 왜 3개가 되는 것인가? 는 아마도 앞에 RSS에서 지정한 최대 숫자를 3으로 정해두었기 때문이 아닐까 생각해봅니다.

  • Q.4 아래 모듈은 무엇인가?

    • Magic Meal Kit라는 별도 모듈입니다. 유료버전이고, 더 잘 요약하고 기능이 풍부하지만 유료인 관계로 연결을 해두지 않았습니다.

  • Q.5 에어테이블에 적재하면 무슨 의미가 있는가?

    • 원하는 유튜브의 요약본을 텍스트 형태로 보관할 수 있습니다.

    • 원래 롱폼자동화에서 다루고자 하는 방향은 롱폼 콘텐츠의 생성을 위한 글감 수집과 약 80% 수준의 자동화, 그리고 직접적인 터치를 통한 SEO등을 목표로 하고 있기 때문에 내용을 빠르게 파악하는 것이 중요할 것으로 보입니다.

  • 여기까지 일단 시나리오를 마무리합니다.

Step 2. 이 내용 중 추가로 이해해야하는 내용에 대해 살펴본다.

  • 제공해주신 airtable의 구조와 시나리오의 연관성을 살펴볼 필요가 있습니다.

    • 시나리오 상에서 에어테이블은 총 3개 모듈에서 사용되었는데, (1) 유튜브 채널을 가져오기 위해 Search Records를 하는 것, (2) 프롬프트를 가져오는Search Records하는 것, (3) 생성된 데이터 내역을 적재하는 Create a Record하는 것입니다.

      • 아마 주의깊으신 분들이나 영어가 익숙하신 분들은 "수"가 보일 것이라고 생각합니다. 이 부분이 의외로 중요할지도....?

    • 이런 이유를 기본으로 airtable을 살펴보면 실제로 3개의 탭이 있는 것을 확인할 수 있습니다.

      • 읽어오는 테이블, 프롬프트 가져오는 테이블, 신규 내용을 쌓는 테이블 3개입니다.

      • 각각은 복수개를 대상으로 할 수 있기 때문에 하나의 테이블로 하기보다는 별도로 분리하는 것이 이해하기가 쉽습니다. 예를 들어 유튜브 채널도 하나만 불러오는게 아니라 여러개를 불러올 수 있고, 프롬프트도 각각 역할에 따라 지정이 필요하기 때문에 2~3개가 필요한 것으로 보입니다.

  • 제공해주신 airtable의 유튜브 리스트에는 5개가 들어있습니다. 여기에서 몇가지를 짚고 넘어가야 합니다.

    • 우선 에어테이블의 Youtube_Channel 내역을 가만히 들여다보면 사실 그냥 유튜브 채널을 복붙한게 아니라 feeds 어쩌고 저쩌고, channel_id 어쩌고저쩌고 하는 것으로 보입니다.

    • 실제로 해당 주소를 주소창에 넣으면 이렇게 보입니다.

    • 그리고 다섯개를 넣어두었는데, 결과에는 하나만 보입니다. 하나만 보이는 이유를 확인하기 위해 시나리오의 내역을 살펴보면 다음과 같은 항목이 보입니다.

    • 채널명을 내림차순으로 정렬했지만, Fomula에 함수가 삽입되어 있습니다. 대략 눈치를 채긴 했지만 사실관계 확인(?)을 위해 chatGPT를 소환하여 해당 내역을 문의합니다.

      Adobe Adobe Adobe Adobe Adobe Adobe Adobe
    • 채널명 중 정확하게 Liam Ottley만 사용하라는 명령어로 보입니다.

      • 이 부분은 시사하는 바가 꽤 큰데, 지난번 오프라인 모임에서 저희가 오탈자 한글자로 인해 전체 시나리오의 에러가 발생하는 사항이 수차례 발생했습니다.

      • 즉, 포뮬라에서 특정 값을 지칭할 때에는 타이핑 보다는 복붙이 더 나을 것이라는 판단이 생깁니다.

    • 그리고 리미트를 3으로 걸어두었기 때문에 최근 3개를 대상으로 모듈을 실행하라는 것을 알 수 있습니다.

      • 이 부분이 조금 헷갈리는 부분인데, RSS까지 결과가 1이었고, Apify부터 3이 나오므로 이에 관련된 사항인지, 그리고 결과에 대한 airtable적재가 1개의 영상 요약만 있고, 두개는 비어있는데 최근 업데이트가 1개 뿐인것인지, 그리고 요약된 내용의 두번째 칸은 [정보 없음]이 세번 반복되는데 이건 무었때문인지 등이 해소가 되지 않았습니다.

Step 3. 원하는 방식으로 변경하여 테스트를 해본다.

  • 일단 원하는 방식으로 진행하기에 앞서 이전 버전에 영향을 미치지 않게 하기 위한 사본을 생성합니다.

    • 시나리오도 복제하고, 에어테이블도 복제를 해서 이전 시나리오에 영향을 받지 않게 합니다.

다양한 유형의 소셜 미디어를 보여주는 다이어그램
  • 이 상황에서 api를 사용하는 영역에는 상관이 없지만 데이터를 불러오는 항목 등은 새로 변경한 내역을 바꾸어줍니다.

    • 기존의 커넥션은 동일하기 때문에 동일하게 유지해주고, Base만 변경해줍니다.

    • Table이나 다른 정보는 시나리오에서 구성된 형태를 일단 그대로 제공하기 때문에 추가로 작업할 필요가 없습니다.

    • 다만, 채널명과 URL은 변경을 해줍니다.

      • 현재의 사이트는 외국의 기술전문가의 유튜브 영상이므로 원하는 한국의 채널로 변경을 시도합니다.

      • 그런데, 그냥 딱 봐도 일반 유튜브 주소가 아닙니다. 그래서 ChatGPT한테 물어봅니다.

    • 설명은 보면 되고, 일단 원하는 채널의 주소를 넣어서 변경을 합니다.

      • 스터디 시간에 주소를 확보해서 넣었던 것 같았는데(?)의 기억을 해소합니다.

        YouTube RSS URL YouTube RSS URL YouTube RSS URL YouTube RSS
        여러 숫자가있는 스프레드 시트의 스크린 샷
    • 채널을 하나만 넣었고, 리미트도 1로 변경해주면서 정리를 하려고 하므로, fomula는 지워줍니다.

    • RSS도 최대값을 1로 변경합니다. 어차피 하나만 불러오면 되니까요.

      • 까지 넣었더니 에러메시지가 나옵니다. 이럴때 또 ChatGPT를 불러 물어봅니다.

    • 열받게도 아까 ChatGPT에 물어본 채널의 RSS 명이 구라였습니다. 그래도 추천해준 사이트에 가서 채널ID를 찾아 넣어주니 이제 정상작동하는 것 같습니다.

===== 중 략 =====

위에 언급한 사항까지 하고 나니, 에러가 계속 발생합니다.

에어테이블 연결에서 에러가 발생하다가 RSS에서 발생하다가 이걸 어떻게 하지?? 하고 별별짓을 다 하고 앉아있다보니, 시간이 너무 흘러 일단 다시 원복시키려던 찰나!!!!

갑자기 돌아가고 완료가 됩니다.

안쓰는 모듈을 빼고 간소화해서 이렇게 돌리고 나니, 완료가 된 듯한 모습을 보였습니다.

하.지.만....

적재된 데이터는 스크래핑해오려던 유튜브와는 전혀 다른 내용이 들어왔습니다.

이건 일단 실패이고, 숫자를 바꾸고 프롬프트를 바꿔서도 넣어봤지만, 일단 제 한계는 여기까지인 것 같습니다. 변경을 하다보니 7번 실행을 하지를 않나, 적재되는 글이 유튜브 내용이랑은 전혀 관련 없는 데이터들로 보이기도 하고.....

그래서 일단 여기서 멈추었습니다.

결과와 배운 점

일단 배운점이 좀 있는데, make를 쓰려면 많은 노력이 필요하겠구나라는 점을 또다시 생각하게 되었습니다. 디지털 월세가 압박이 좀 되서 고민하고 있었는데, 일단 월세나가는걸 다 끊어내고 차분하게 하나씩 해보려고 합니다.

그리고 롱폼 콘텐츠를 발행하는 것이 목적이니까, 수집하는 절차에 대해서는 그냥 주신것을 이해할 수 있는 범위 내에서 해보아야 할 것 같습니다. 현재는 제가 실행이 잘 안되는데, 외국 유투버를 대상으로 하거나, 지난 주말에 진행한 국내 기사 등을 글감으로 사용하는 방안 등을 고민해야할 것 같습니다.

그럼!! 스터디 시간에 뵙겠습니다.

2
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요