들어가며
이 글은 ‘정치보여줘닷컴’이라는 사이드 프로젝트에 대한 것입니다. 해당 프로젝트는 은성준, 이수찬, 박찬우 총 3명이 크리스마스 이브, 크리스마스 당일, 설연휴 이틀을 포함한 총 4일을 투자하였으며, 전체 코드는 해당 깃허브에서 확인할 수 있습니다 :).
왜 만들었는가?
모든 것은 한 팀원의 유튜브 알고리즘에 정치 컨텐츠가 등장하면서 시작되었습니다.
그 친구의 입을 빌리자면 이 서비스를 만들게 된 이유는 아래와 같습니다.
- 친구는 작년 12월부터 정치적 현안들에 대해서 관심을 갖기 시작하여서 자연스럽게 여러 방송사에서 전문가들이나 정치인들을 불러서 진행하는 정치 컨텐츠들을 팟캐스트 형식으로 듣게 되었다고 합니다.
- 그러다보니 점차 유튜브 알고리즘이 잠식당하기 시작하였는데, 그 친구는 1) 방송사를 제외하고도 굉장히 다양한 정치 뉴미디어 채널과 컨텐츠들이 존재하고, 2) 그 컨텐츠들의 조회수들에 놀랄 수 밖에 없었다고 합니다.
- 여의도 정치가 장년층의 ‘마블 유니버스’라는 것은 어렴풋이 알 수 있었지만, 그 열기는 예상보다도 더 뜨겁게 느껴졌다고 설명했습니다.
그래서 그 친구는 아래와 같은 니즈를 느꼈다고 합니다.
- 밸런스 있는 정보 습득을 위한 시간 부족: 각 이슈에 대해서 다양한 정치인들의 입장과 논리를 들어보고 싶은데, 1) 투자할 수 있는 시간은 한정되어 있고, 2) 알고리즘은 자꾸 한 쪽으로 몰려고 하기 때문에 현실적으로 이는 쉽지 않다.
- 의미있는 정책에 대한 논의 부족: 상대적으로 소비하기에 좋은 정치적 가십이 아닌, 실제로 유의미한 정책들에 전문가 및 정치인들의 의견이나 토론 등은 알고리즘에 밀려서인지, 상대적으로 찾아보기 힘들었다.
당시에 그 친구가 가졌던 니즈와 별개로, 저희는 AI를 이용한 간단한 프로젝트를 해보고자하는 욕구가 있었습니다. 블로그에서 다룰려다가 시간이 없어 포기하였는데, 이전에 이 친구들과 인터체인 해커톤을 함께 나간적이 있는데요. 나가면서 MVP를 만들어보는 과정에서 많은 것을 배웠던 경험이 있기에 계속해서 저희끼리 AI를 이용한 사이드 프로젝트를 시간될 때 많이 만들어보자는 얘기가 나왔습니다. 그래서 그 친구가 느끼는 니즈를 해결할 수 있는 프로젝트를 만들어보자, 우리끼리 해커톤을 한번 해보자 싶어 진행하게 되었습니다.
마지막으로, 저희 모두 크리스마스에 할 것이 없었습니다. 원래 저희는 크리스마스 이브와 크리스마스 당일 안에 이를 완성하는 것이 목표였지만, 끝내지 못하여서 설 연휴 이틀을 추가로 사용하게 되었습니다.

그래서 뭔데?
정치보여줘닷컴
정치보여줘닷컴은 유튜브 상의 다양한 정치 인터뷰와 토론 영상들을 분석하여서 각 안건별로 정치인과 전문가들의 의견을 한 눈에 보기 쉽게 모아서 보여주는 서비스입니다. 서버를 실행하면 지정한 주기(디폴트: 24시간)마다, 유저가 명시한 플레이리스트에 새롭게 업데이트된 영상을 받아서 해당 영상에 등장한 화자들의 의견을 추출합니다.
해당 서비스를 사용해서 실제로 어떤 식으로 활용할 수 있는지 보여주기 위해서 직접 PoC나 v0 격의 간단한 웹 어플리케이션을 제작하였는데, 현재 ‘선거제도 개편’, ‘의사 증원’, ‘노인 지하철 무임승차’라는 3가지 현안에 대한 다양한 사람들의 의견을 보여주고 있습니다. 예를 들어, 선거제도 개편의 경우, 해당 플레이리스트에 관련 컨텐츠들을 업데이트하는 방식을 통하여 모았습니다.
구현 예시
터미널

콘솔 상에서 확인할 수 있는 출력 결과입니다.
실제 결과가 나오는 과정입니다.
PoC 웹사이트

실제 사용 화면 입니다.
어떻게 만들었는가?
프레임워크

저희가 사용한 프레임워크 구조의 이해를 돕기 위한 그림입니다.
사용한 API들
저희는 빠른 프로젝트 완성을 위하여 거인의 어깨를 레버리지하는 방식을 사용해서 제작하였는데요. 쉽게 얘기하면 그냥 기존에 존재하는 API들을 최대한 엮어서 사용하였습니다. 사용한 API들은 다음과 같습니다.
- 구글의 YouTube Data API : 최근 24시간 내에 리스팅한 플레이리스트에서 새롭게 업데이트된 영상 URL을 받아오는데 사용
- 하이퍼 클로바의 Object Storage API : 네이버 클라우드 플랫폼의 스토리지 관리 및 사용
- 하이퍼클로바의 CLOVA Speech API : 변환한 영상을 텍스트로 변환하는데 사용
- OpenAI의 GPT4 API (gpt-4-1106-preview 모델) : 변환한 텍스트에서 각 화자들의 의견을 요약해서 추출하는데 사용
하이퍼클로바 관련

왜 Whisper가 아닌 CLOVA Speech인가?
솔직히 얘기하여서 명확한 이유가 있었던 것은 아니었고, 이러한 의사결정의 기저에는 다음과 같은 이유들이 존재하였습니다.
- 일단 두 모델 중에서 어느 것이 더 우월한지 명확하게 찾지 못하였습니다. 하지만, 아무래도 한국어 영상을 변환하는 것이다보니, 하이퍼클로바의 성능도 충분히 좋을 것이라고 생각하였습니다.
- 구글에 검색해보니 Whisper를 사용한 예시에 비해서 CLOVA Speech를 사용한 예시는 매우 적었습니다. 그러다보니, 왠지 한번 CLOVA Speech를 사용해보고 싶었습니다.
또한, 하이퍼클로바의 경우, 신규 개발자들을 대상으로 무료 100,000 크레딧을 제공하여서 저희처럼 작은 프로젝트에 사용하기에 적합하였습니다.
그렇다면, 텍스트 추출에서는 왜 GPT API를 사용하였는가?
일단, 해당 프로젝트를 진행한 시점에서 하이퍼클로바의 서비스 중에서 프롬프팅을 통해서 원하는 텍스트를 추출할 수 있는 것을 찾지 못하였습니다. 해당 글을 작성하는 시점인 2024년 2월을 기준으로 이를 지원하는 서비스로 보이는 CLOVA Studio가 클로즈드 베타 중인 것으로 보이는 것 같네요.
CLOVA Speech 사용에서 불편하였던 점
CLOVA Speech 장문 인식 API 문서를 보면, 크게 3가지 방법으로 API를 사용할 수 있는데, 이 중에서 가장 직관적인 방법이 ‘object storage 파일 url로 인식 요청’ 방법입니다. 문제는, 해당 방식을 사용하기 위해서는 Object Storage 경로에 접근하기 위한 Key인 ‘dataKey’라는 것을 알아야하는데, 아무리 문서를 읽어봐도, 코드 결과값을 봐도, 이 dataKey를 알 수 없었습니다. 결국 다른 방식을 통하여 API를 사용하였지만, 이 dataKey에 대한 설명을 문서에 추가해준다면 훨씬 더 사용하기 용이할 것 같습니다. 저희 외에도 같은 문제를 겪는 사람들이 많은 것 같으니, 주변에 하이퍼클로바에서 일하시는 분이 계신다면 전달을 부탁드립니다.
부족한 부분들
영상 선정 기준
원래의 계획은 각 안건과 관련된 최대한 다양한 영상들을 선정하는 것이였는데, 여러가지 현실적인 이유로 이는 쉽지 않다는 것을 알 수 있었습니다.
- 일단, 특정 영상들은 한 영상에서 여러 현안은 다루는 경우가 있고, 이러한 경우에는 프롬프트를 통해서 각 안건에 대한 화자의 의견을 추출하는 것이 쉽지 않았습니다. 따라서, 각 안건에 따라서 선정할 수 있는 영상의 한계가 명확하였습니다.
- 어떠한 정치 채널까지 포함시킬지에 대한 기준이 부족하였습니다. 해당 PoC에서는 주로, SBS, YTN, KBS, MBC 등과 같은 방송사들을 위주로 선정하였는데, 진정한 균형과 의견의 다양성을 위해선 더 다양한 채널의 컨텐츠들도 포함시키면 좋을 것 같다는 생각이 드네요. 이때, 어떠한 기준으로 채널을 선정할지에 대한 기준이 중요할 것 같습니다.
비용
저희는 해당 서비스를 상용화시킬 생각은 없었지만, 만약 상용화한다고 가정하였을 때, API 사용에 따른 비용을 고려하지 않을 수가 없겠죠.
예시를 위해서 26분 25초의 길이에 해당하는 다음 영상을 해당 서비스를 통해서 처리한다고 가정해보았습니다.
- Object Storage API의 경우, 데이터 저장량, 네트워크 전송량, API 호출 수 등을 고려하여서 월당 비용을 청구하는데, 요금 계산기를 사용해보면, 해당 영상으로 인하여 약 20원의 비용이 발생한다고 볼 수 있습니다.
- CLOVA Speech API의 경우,15초당 4원의 비용을 청구하기 떄문에, 해당 영상의 경우 약 528원의 비용이 발생합니다.
- GPT-4 API의 경우, 1000 토큰당 0.01$의 비용을 청구하고, 해당 영상은 12000 토큰을 필요로 하기 때문에, 약 160원의 비용이 발생합니다.
따라서, 한 영상을 처리하는데, 약 700~800원이 든다고 볼 수 있고, 이는 상용화시키기에는 큰 비용이라고 볼 수 있습니다...
영상 추가 메커니즘
현재 새롭게 영상을 반영하기 위해선 수동으로 플레이리스트에 영상을 직접 추가해줘야 합니다. 원래 계획한 것은 각 현안 별로 하나의 공용 플레이리스트를 만들고, 누구나 해당 현안과 관련된 인터뷰나 토론 컨텐츠를 발견하면, 그것을 해당 플레이리스트에 추가하는 방향을 생각하였습니다. 즉, 어떻게 보면, 유튜브 플레이리스트를 하나의 공용 데이터베이스처럼 사용하는 것입니다. 하지만, 현실적으로 유튜브 플레이리스트의 경우, 명시적으로 공동 작업자로 추가한 사람만 해당 플레이리스트에 추가할 수 있어서 기존에 계획하였던 방식이 불가능하다는 사실을 만들면서 알게 되었습니다.
따라서,현재 PoC 단계에서 벗어나서 더 다양한 현안들에 대한 다양한 의견들을 모으기 위해선 더 나은 영상 추가 메커니즘이 필요할 것으로 보입니다.
추가되었으면 하는 기능들
- 업보트/다운보트 기능: 각 이슈에 대한 정치인 및 전문가들의 의견에 유저들이 업보트/다운보트를 할 수 있는 기능을 넣는다면, 누구의 의견이 현재 대중에게 가장 많은 지지를 받고 있는지 한 눈에 알 수 있을 것 같습니다.
- 원 클릭 청원 메일 기능: 각 이슈에 대한 정치인 및 전문가들의 의견 옆에 메일 버튼을 추가하여서, 해당 버튼을 누르면 해당 정치인 및 전문가에게 청원 메일을 쓸 수 있는 기능을 넣으면 좋을 것 같습니다. 이때, AI를 통해서 청원 메일의 본문은 자동화시킬 수 있을 것 같습니다.
프로젝트를 마치며...
이전에도 GPT4 API를 이용하여 미연시 게임을 만든적이 있는데, 앞으로는 각종 AI 서비스들의 API를 통해 AI 서비스 개발에 대한 진입장벽이 많이 낮아질 거라는 생각이 드네요. 이번 서비스 개발에 있어서 저는 서비스 UI 기획과 GPT API 사용을 위한 프롬프트 엔지니어링을 담당하였는데요. 크리스마스에 남자 셋이 모여 이 서비스를 만들었다는게 한편으론 안타깝지만 IT 서비스의 PM/PO를 꿈꾸는 입장에서 많이 배울 수 있는 경험이었음은 분명합니다. 생각하는 거에서 그치는 것과 그 생각을 구현하는 일은 천지차이 아니겠습니까?
앞으로도 종종 친구들과 모여 이런 서비스들을 갖고와 보겠습니다. 저희 각자 생활이 있기 때문에 정기적으로 모이진 못하지만 이렇게 시간 날때 새해 용돈 처럼 갑작스럽게 찾아와도 반겨주실거라 믿습니다.
글은 여기서 마무리하도록 하겠습니다. 다들 새해 복 많이 받으세요 :).