Shorts Source Radar
Shorts Source Radar는 YouTube 추천 화면, 검색 후보, SNS에서 들어온 링크를 한 곳에 모아 쇼츠 소재로 검토하는 queue입니다. 최신 버전에서는 추천 수집 이후의 품질 게이트를 강화해, 검토할 가치가 낮은 후보가 queue에 쌓이기 전에 걸러지도록 조정했습니다.
Repository는 private으로 운영 중입니다. 이 페이지는 포트폴리오 검토를 위한 공개 가능한 수준의 요약입니다.
홈이나 영상 옆 추천 목록에서 보이는 후보를 Chrome 확장으로 읽고, 중복과 원본성 기준을 거친 뒤 앱의 추천 수집함에 넣습니다.
Ignore hook words copied from channel brands
Snapshot
| 구분 | 내용 |
|---|---|
| 상태 | In progress, private repository |
| 문제 | YouTube에서 괜찮아 보이는 후보를 발견해도 다시 찾고 검토 도구로 옮기는 과정이 끊김 |
| 접근 | 추천 화면 수집, 후보 품질 게이트, 반복 스킵 학습, 검토 queue, 외부 전송을 lane 단위로 분리 |
| 기술 | Node.js, Netlify Functions, Netlify Blobs, Chrome Extension, Notion API, Slack Webhook |
| 배포 | Netlify 배포 앱과 Chrome extension capture를 함께 사용 |
실제 화면

화면 상태
아직 후보를 넣기 전 상태입니다. 실제 운영 데이터와 어색한 임의 썸네일은 공개하지 않습니다.
후보가 들어오면 이 영역에서 Keep, Skip, 채널 차단 같은 검토 액션이 열리고, 반복 스킵 패턴은 다음 후보 필터에 반영됩니다.
추천 수집함 queue는 비어 있고, 다음 액션은 Chrome 수집기 실행입니다.
private 프로젝트 소개에서는 실제 후보 링크, 썸네일, 채널명을 보여주지 않습니다.
Capture Flow
홈이나 추천 목록에서 후보가 충분히 보이도록 스크롤합니다.
확장이 현재 화면의 영상 링크와 제목, 채널 정보를 읽습니다.
중복, 재가공 영상, 제목 훅, 설명문-only 후보, 채널 성격을 기준으로 자동 제외합니다.
통과한 후보만 추천 수집함에서 검토하고 보관/제외/제작 상태로 넘깁니다.
화면별 설명
Chrome 확장 캡처
YouTube 홈이나 영상 상세의 추천 영역을 읽어 제목, 채널, URL, 썸네일 메타를 수집합니다. 사용자는 현재 보고 있는 추천 묶음을 잃지 않고 앱으로 보냅니다.
- 공개 화면: 수집 전 빈 추천 수집함
- 확인 포인트: 중복 링크 제거, lane 지정, 저장 결과
추천 수집함
새로 들어온 후보만 따로 모아 첫 검토를 진행합니다. 모바일에서는 이 lane이 먼저 보이도록 배치해 긴 queue에서도 출발점이 분명합니다.
- 공개 화면: 대기 후보 없음
- 확인 포인트: 제목, 채널, 길이, 업로드 시점, 추천 출처
품질 필터
하이라이트 모음, 방송 재업로드, 과도한 편집본처럼 쇼츠 소재로 쓰기 애매한 후보를 검토 전에 줄입니다. 제목에 실제 장면 훅이 있는지와 채널명에서 복사된 단어인지도 나눠 판단합니다.
- 공개 화면: 실제 제외 후보는 노출하지 않음
- 확인 포인트: 제외 사유, 품질 필터 통과 수, 재검토 가능 여부
보관/제작/제외 상태
후보를 바로 제작할지, 나중에 다시 볼지, 제외할지 상태로 나눕니다. 상태가 바뀌면 오늘 feed와 외부 전송 대상도 함께 달라집니다.
- 공개 화면: 상태 변경 구조만 설명
- 확인 포인트: 상태 변경, 메모, export 대상
Notion/Slack/CSV 전송
검토를 통과한 후보만 외부 도구로 보냅니다. 모든 후보를 넘기지 않고, 선택한 것만 이동시키는 방식으로 후속 작업량을 줄입니다.
- 공개 화면: export 대상 데이터는 노출하지 않음
- 확인 포인트: 전송 대상, 실패 재시도, 누락 방지
What Changed Recently
제목 자체의 장면 훅과 채널명에서 복사된 단어를 분리했습니다. 채널 브랜드명이 제목에 섞여 훅처럼 보이는 경우를 제외하고, 설명문만 그럴듯한 후보는 더 제한적으로 통과시킵니다.
후보가 queue에 들어오기 전에 pre-rank gate와 post-rank quality gate를 나눴습니다. 통과하지 못한 후보 수는 qualityFilteredPending으로 분리해 볼 수 있게 했습니다.
반복해서 Skip한 채널, 제목 단어, 후보 프로필을 학습해 다음 후보에 penalty를 주는 흐름을 추가했습니다. 단, 전체 후보 reservoir가 너무 줄어들지 않도록 최소량을 남깁니다.
TikTok 공개 Explore, SNS 후보, 한국/미국 권역별 탐색을 붙이고, 재가공/목적형/프로모션 후보를 계속 걷어내는 기준을 손봤습니다.
Chrome extension으로 현재 YouTube 추천 화면을 읽어 앱의 recommendation_inbox lane으로 넣습니다.
What It Does
- YouTube 영상 후보를 조건에 따라 수집하고 1분 이상 일반 영상을 필터링합니다.
- 추천 수집함, 국내 Fresh, 해외 Fresh, 아카이브, SNS 인박스를 lane으로 나눠 관리합니다.
- 조회수, 댓글수, 업로드 시점, 영상 길이, 제목 훅, 채널 성격을 기준으로 후보를 비교합니다.
- 검토, 예정, 완료, 제외 같은 후보 상태를 관리합니다.
- 선택한 후보만 Notion, Slack, CSV로 내보낼 수 있게 분리했습니다.
- 검색 결과와 상세 정보를 캐시해 API 재호출을 줄이는 흐름을 둡니다.
- 반복 스킵 결과를 학습해 비슷한 후보가 다음 queue를 채우지 않도록 조정합니다.
화면으로 보는 기능
후보 발굴 조건
카테고리, 영상 길이, 오래된 영상 여부, 제외 키워드 같은 조건을 한 화면에서 조합해 탐색 범위를 좁힙니다.
점수화와 검토 상태
조회수, 댓글수, 업로드 시점, 길이를 기준으로 후보를 비교하고 검토, 예정, 완료, 제외 상태로 정리합니다.
선택 후보 전송
검토한 후보 중 필요한 것만 Notion 데이터베이스, Slack 메시지, CSV 파일로 내보내도록 분리했습니다.
Quota 절약 흐름
샘플 모드, 캐시, 검색 사용량 추정으로 YouTube API를 무작정 호출하지 않는 운영 흐름을 둡니다.
Portfolio Signal
이 프로젝트의 핵심은 후보를 많이 모으는 것이 아니라, 볼 필요 없는 후보를 일찍 줄이는 쪽입니다. 추천 화면 capture, 품질 게이트, 반복 스킵 학습, 외부 협업 도구 전송까지 한 흐름으로 묶었습니다.
Implementation Notes
- 프론트엔드는 설치 없이 확인할 수 있는 정적 웹앱 구조를 우선했습니다.
- Notion/Slack 연동은 환경변수 기반으로 분리해 local과 production 환경을 나눴습니다.
- Netlify Functions, Node server, Docker 실행 경로를 함께 고려했습니다.
- API quota를 아끼기 위해 검색 폭과 캐시 전략을 사용자 흐름에 포함했습니다.
- 후보 필터는 pre-rank gate와 post-rank quality gate로 나누고, 테스트에서 통과/제외 케이스를 고정했습니다.
- 반복 스킵 학습은 수동 실행 API와 예약 함수로 둘 다 돌릴 수 있게 분리했습니다.
Next
- 후보 점수 산정 기준과 학습 필터 사유를 더 투명하게 볼 수 있는 설정 화면 추가
- 후보별 검토 메모와 재검색 이력을 더 안정적으로 저장
- 실제 운영 환경에서 API quota, 실패율, 저장 성공률을 관찰할 수 있는 로그 개선