3편에서 이어집니다
https://www.gpters.org/dev/post/mvp-production-replit-youtube-FON1utvUVVFpBMj
로고와 슬로건도 만들어보았다..
추가 개선사항
3부 이후 개선 작업들을 기록했습니다.
+ 데이터베이스 구조 개선
배포 후 가장 먼저 체감한 문제는 확장성 부족이었습니다. 처음에는 채널에 카테고리 값을 enum으로 직접 넣었는데, 카테고리를 추가하거나 변경할 때마다 불편함이 컸습니다.
카테고리 테이블을 별도로 분리하면서 관리가 훨씬 수월해졌습니다.
+ 영상 수집 로직의 함정
영상 수집 부분을 개선하려고 에이전트에게 계속 요청했더니 오히려 오류가 발생하는 상황이 반복됐습니다. 특히 사람처럼 불완전한 개선을 시도하다가 특정 채널의 최근 영상을 빼먹는 일이 자주 발생했습니다.
결국 모든 채널을 정상적으로 가져오는지 직접 검토하고 수정하는 과정을 거쳤습니다.
잘 안되는걸 파고들다가 코드가 꼬이는 쓸데 없이 사람이랑 비슷한 부분이 있다는걸 알게 되었습니다.
+ 비용 최적화: Gemini로 전환
오디오 파일에서 스크립트를 추출하는 작업을 기존 서비스에서 Gemini로 변경했습니다. OpenAI만 API로 제공하는줄 알았는데 Gemini도 기본으로 제공해주고 있었습니다.
빠르게 Perplexity로 가격비교 요청 후 Gemini로 교체했습니다. 가격은 좀 더 저렴했고, 교체 과정도 생각보다 빨랐습니다. 속도도 조금 더 빨라진 것 같아(기분?) 만족스러운 결정이었습니다.
첫 공개와 반응
+ geeknews에서의 성과
감사하게도 geeknews에 공유했을 때 긍정적인 반응을 받았습니다. 하루 만에 1,300건의 방문과 60건의 가입이 있었습니다.
이후 다음날에는 400건 이상 방문해 마음속의 목표인 DAU 100을 2일간 만끽했습니다.
주식 가격을 보여주는 그래프 스크린 샷
댓글에서 RSS XML 기능 추가 요청을 받았는데, 즉시 rss.xml 파일을 생성하고 새로운 피드가 추가될 때마다 자동 업데이트 되도록 설정 했습니다.[
https://shortv.replit.app/rss.xml](https://shortv.replit.app/rss.xml)
많은 응원 보내주신 geeknews 분들에게 감사 드립니다 :)
다른 데이터를 보여주는 대시 보드의 스크린 샷
Replit에서 제공하는 analytics는 간단히보기는 좋지만 분석할만큼 데이터를 제공하지 않습니다. 차후에 GA를 붙여야하지 않을까 생각됩니다.
+ 첫 번째 위기: 봇 차단
하지만 첫날 공개 후 봇 차단이 발생하면서 위기를 맞았습니다.
새벽 4시반 까지 대안을 찾다가 포기(…)했지만, 다음날 다시 영상 수집에 성공 했습니다. 개발 서버가 가상 서버라서 차단에 약간의 내성이 있는 것 같다는 추측을 하고 있습니다.
이후 너무 장기간 수집하거나 특정시간대에는 봇차단이 자주 발생한다는 것을 알게되었고, 하루에 1-2회 정도만 상황봐서 수집하고 있습니다.
사용자 경험 개선
+ 홈 화면 개선
조회수에 비해 upvote와 채널 구독 수가 적다는 점을 발견했습니다.
채널 구독을 유도하기 위해 홈에 추천 채널 섹션을 추가했습니다.
흰색 배경에 중국 서예
출력조건:
로그인 한 사용자 기준으로 구독하지 않은 채널 랜덤 출력
+ 채널 상세 페이지 추가
개인적으로 테스트를 할 때 불편한 것도 많았는데, 추천채널 섹션을 추가하니 채널상세 페이지가 필요했습니다. 간단하게 채널정보와 피드가 출력되도록 추가했습니다.
이후 에이전트가 자잘한 연결 부분을 놓치기 때문에 추가적인 요청이 필요했습니다. Upvote 버튼이 제대로 동작하는지, 구독 버튼 선택 시 구독 프로세스가 제대로 처리되는지 등을 확인하고 수정했습니다.
한국 YouTube 채널의 스크린 샷
두 번째 위기와 대응
+ 다시 찾아온 봇 차단
다시 봇 차단이 발생했습니다….
하루 종일 차선책을 리서치했지만 쉽지 않았습니다. Geeknews에 사용자분들이 제공한 댓글 피드백을 통해 VertexAI 사용방법, Gemini에 직접 요청방법을 시도했으나 실패했습니다…(아직도 제가 잘못한건지 에이전트가 못하는건지 확인 못하는 수준..)
역시 댓글 피드백을 통해 yt-dlp로 오디오가 아닌 스크립트만 추출하는 로직을 적용해봤지만, 아직 봇 차단이 풀리지 않아 테스트할 수 없었습니다. 다음날 테스트해보니 스크립트 추출 방식이 실패해서 다시 오디오 추출 방식으로 롤백했습니다.
종일 리서치 결과:
YouTube API로는 자막 추출이 불가능
Gemini API로는 영상에서 정보추출 불가능
우회 방법 중에 살아남은 것은 yt-dlp인데 정기적인 차단이 발생
서비스의 지속가능성에 대한 고민
+ 수익화의 한계
중요한 문제는 yt-dlp를 사용하면 수익화(광고도 포함)가 안 된다는 점 입니다.
기부(buy me a coffee)도 가능한지 확인해봤는데 애매합니다. 영상을 대체할 정도의 요약 서비스가 되면 안 되는데, 그 기준이 명확하지 않기 때문입니다.
솔직히 미래가 없는 서비스라는 생각이 들어 의욕이 줄어들었습니다. 하지만 아직 사용해보고 자 하는 사용자들이 있기 때문에 가능할 때 까지 운영해보려고 합니다.
우선 운영을 하면 어떻게든 방법이 생길수도 있고, 운영경험도 소득이라고 생각했기 때문입니다.
사용자 참여 유도: 채널 추천 기능
좀 더 운영해보자고 마음먹은 후 일방향성 서비스의 한계점(관리자만 채널을 관리하는)을 보강하기 위해 사용자 참여 기능을 추가했습니다.
+ 페이지 신설
활성 사용자 유지를 위한 방안으로 채널 추천 페이지를 신설했습니다. Figma로 대략적인 UI를 제작하고 프롬프트로 구조 및 기능을 설명했습니다.
+ 채널 추천 페이지 구성
크게 3개 섹션으로 구분했습니다:
채널 추천 방법에 대한 공지: 사용자가 추천 과정을 이해할 수 있도록 안내
추천 중인 채널 목록 및 투표: 사용자들이 추천한 채널에 대해 투표할 수 있는 기능
관심이 없는 삭제 예정 채널 목록: 사용자 반응이 저조한 채널들을 투명하게 공개
한국 전자 상거래 웹 사이트의 스크린 샷
좋은 채널을 추가하는 것도 중요하지만, 사용자들이 선호하는 채널을 추가하는 것이 우선순위라고 판단했습니다.
사용자가 채널을 추천하면 다른 사용자들이 투표할 수 있는 구조로 만들어서 커뮤니티 기반의 큐레이션이 가능하도록 했습니다.
마무리
기술적 한계와 법적 제약이 있는 상황에서도 사용자들의 피드백을 받아가며 서비스를 개선해나가는 과정은 의미 있었습니다. 특히 실제 사용자들의 반응을 보면서 어떤 기능이 필요한지, 어떤 부분이 부족한지 직접 체감할 수 있었습니다.
비록 수익화에 대한 불확실성이 크지만, 사용자들이 실제로 필요로 하는 서비스를 만들어가는 과정 자체가 값진 경험이라고 생각합니다.
여기까지가 ShortV를 시작할 때 생각한 서비스 구현범위 입니다. 이제는 60-80개 정도의 채널을 유지(추가/삭제)하면서 운영할 예정입니다.
언제까지 어떻게 될지는 모르지만 될대로 되겠죠.