유튜브 영상을 요약해 노션에 쌓는 자료조사 도구, 첫 버전 범위와 배포에서 막힌 곳
유튜브 링크를 넣으면 자막을 받아 Gemini로 요약·분류하고 노션 DB에 저장하는 도구를 한 주 동안 만들었습니다. 첫 버전에서 뺀 기능, 영상 한 편 요약 비용 계산, 배포 직전에 걸린 문제와 고친 방법을 정리했습니다.
유튜브 링크나 뉴스 주소를 넣으면 요약해서 노션에 카테고리별로 정리해 두는 도구를 만들었습니다. 링크를 받으면 자막을 내려받고, Gemini Flash 로 요약과 분류를 하고, 결과를 노션 데이터베이스에 한 줄씩 쌓습니다. 자기 전에 링크를 넣어 두면 아침에 정리돼 있습니다.
만드는 데 한 주가 걸렸고, 이 기능을 맡은 코드는 약 3,100줄입니다. 첫 버전은 영상 요약과 노션 저장 두 가지만 내놓았고, 나머지는 뒤로 미뤘습니다. 이 글에는 흐름, 비용 계산, 첫 버전에서 뺀 것, 배포 직전에 걸린 문제를 순서대로 적었습니다.

유튜브 링크가 노션에 정리되기까지
흐름은 네 단계입니다.
- 링크를 받습니다. 텔레그램 봇에 링크를 보내거나, 터미널에서 명령어로 바로 넣습니다.
- 영상 자막을 내려받습니다.
yt-dlp로 자막 파일을 받고, 타임스탬프 같은 군더더기를 지우는 정리 스크립트를 한 번 거칩니다. - 정리한 자막을 Gemini Flash 에 넘겨 요약, 카테고리 분류, 시청 권장 여부를 한 번에 받습니다.
- 결과를 노션 데이터베이스에 새 행으로 저장합니다.
영상 파일이 아니라 자막 텍스트만 넘기는 게 비용을 줄이는 핵심입니다. 이 도구가 도는 서버는 집에 둔 중고 맥미니 한 대이고, 그 구성은 중고 Mac mini 2018 회사 서버 구성과 비용 글에 있습니다.
Gemini 로 영상 한 편 요약하는 비용
설계할 때 계산해 둔 값은 영상 한 편에 약 $0.0012, 우리 돈 1.6원입니다. 자막 텍스트만 넣는 조건이고, 실제 청구서로 잰 값이 아니라 계산한 값입니다. 하루 다섯 편씩 1년을 돌려도 약 $2.2 이고, 당시 Gemini 에 잡아 둔 월 한도 $5 안에 들어갑니다.
요약과 분류처럼 양이 많고 형식이 정해진 일은 싸고 빠른 모델로 보내고, 사람이 읽을 글을 쓰는 일만 상위 모델로 보내도록 나눠 두었습니다. 이렇게 일을 나눠 자동화 AI 비용을 거의 0원으로 맞춘 구성은 무료 모델 fallback 으로 AI 비용을 줄인 글에 따로 적었습니다.
봐야 할 영상인지 골라 주는 시청 권장 표시
요약만 있으면 다 읽은 것 같아도, 어떤 영상은 화면을 봐야 이해됩니다. 그래서 영상마다 시청 권장 여부를 하나 더 받습니다.
- 도구 시연, 코드, 화면 조작이 나오는 영상은 시청 권장으로 표시합니다. 시간을 따로 잡아서 봅니다.
- 말로만 진행되는 라디오형 영상은 표시하지 않습니다. 요약 글만 읽거나 음성으로 들어도 됩니다.
이 판단도 Gemini 가 요약과 함께 내립니다.
노션 데이터베이스에 남기는 칸
한 행에 들어가는 칸은 제목, 소스, 채널, URL, 발행일, 수집일, 카테고리, 시청 권장, 한 줄 요약, 긴 요약, 음성 파일, 자막 원문, 내 메모, 봤는지 여부입니다. 카테고리는 AI, 뇌과학·습관, 마케팅, 비즈니스, 주식, 기타 여섯 개로 시작했습니다.
도구가 채우는 건 앞쪽 칸이고, 내 메모와 봤는지 여부는 직접 체크합니다. 나중에 다시 찾을 때는 카테고리와 시청 권장으로 걸러 봅니다.
첫 버전에서 뺀 기능
혼자 다 만들 수 있으니 오히려 다 넣고 싶어집니다. 분류 기준을 더 똑똑하게 하고, 출처를 늘리고, 알림도 붙이고 싶었는데, 그러다 보면 출시가 계속 밀립니다. 첫 버전은 영상 요약과 노션 저장 두 가지로 정했고, 코드를 짠 시간보다 이 범위를 정하는 시간이 더 길었습니다.
로그인도 같은 이유로 줄였습니다. 원래 구글 계정 로그인을 넣으려 했는데 구글 쪽 승인 절차에서 막혔습니다. 거기 매달리면 출시가 또 밀리니 이메일과 비밀번호 로그인만 먼저 넣고, 구글 로그인은 뒤로 미뤘습니다.
배포 직전에 걸린 문제와 고친 방법
기능이 다 됐다고 바로 돌아가지는 않았습니다. 서버에 올리는 막바지에 자잘한 문제가 이어서 났고, 목록 화면이 한 번 통째로 멈춘 일도 있었습니다.
| 증상 | 원인 | 처리 |
|---|---|---|
| 배포해도 안 올라감 | Dockerfile 에 모듈 하나 누락 | 빠진 모듈 추가 |
| 요약 결과가 깨짐 | Gemini 응답의 JSON 형식 | 형식 다시 잡음 |
| 음성 변환(TTS) 500 에러 | 원인 기록 없음 | 고쳐서 다시 배포 |
| 화면이 전부 502 | 예약 작업 시간 설정에 숫자 하나 더 들어간 오타 | 오타를 지우니 바로 살아남 |
| 고친 코드가 배포 거부 | 라인 커버리지 100% 규칙에 99.73% | 경로 한 줄만 바꾸는 수정으로 통과 |
마지막 두 건은 기능 코드 문제가 아니었습니다. 502 는 예약 작업 설정 오타 하나 때문에 서버가 부팅을 못 한 것이고, 배포 거부는 테스트가 코드를 100% 거쳐야만 올라가게 직접 걸어 둔 규칙(kover) 때문이었습니다. 버그를 꼼꼼히 고치려고 분기를 더 넣었더니 그 분기에 테스트가 닿지 않아 0.3% 모자랐습니다. 빌드가 이 검사에서 실패하는 동안 서버에는 전날 이미지가 그대로 돌고 있어서, 고친 내용이 반영되지 않고 에러도 그대로 남아 있었습니다. 서버에 올라간 이미지 날짜를 보고 나서야 배포가 안 된 걸 알았습니다. 구조를 바꾸지 않고 경로 한 줄만 고치니 커버리지가 그대로 유지돼서 통과했습니다. 고쳤는데 에러가 그대로면 서버에 올라간 이미지 날짜부터 보는 게 빠릅니다.
만들고 나서 달라진 것과 이후에 붙인 기능
만들고 나서 보니 정보를 모으는 일 자체는 제일 덜 중요했습니다. 모으는 건 저장 버튼만 눌러도 되고, 거기서 멈추면 쌓이기만 합니다. 이 도구가 실제로 덜어 준 건 요약을 읽고 볼 것과 안 볼 것을 가르는 시간이었습니다.
그다음 주에는 구독 채널을 정해진 시간에 자동으로 확인하는 예약 작업, 아침 텔레그램 브리핑, 노션 데이터베이스 구조를 자동으로 읽어 오는 기능을 붙였습니다. 2026년 7월 31일에 확인한 기준으로는 매일 06:00 에 다이제스트가 오고, 06:15 에 쓸 만한 글감 후보가 자동으로 쌓입니다.