Projects

Shorts Source Radar

발견한 영상 링크를 소재 수집함으로 모은다. 제목과 채널 정보의 오탐을 줄이고, 보관·제작·제외 상태로 정리한다.

Node.js / Netlify Functions / Notion API개인 리서치 도구 · Private

eundo/shorts-source-radar · 소스 확인

목차

Shorts Source Radar는 YouTube 추천 화면, 검색 후보, SNS에서 들어온 링크를 한 곳에 모아 쇼츠 소재로 검토하는 queue입니다. 최신 버전에서는 추천 수집 이후의 품질 게이트를 강화해, 검토할 가치가 낮은 후보가 queue에 쌓이기 전에 걸러지도록 조정했습니다.

Capture LaneYouTube 추천 화면 → 추천 수집함

홈이나 영상 옆 추천 목록에서 보이는 후보를 Chrome 확장으로 읽고, 중복과 원본성 기준을 거친 뒤 앱의 추천 수집함에 넣습니다.

Latest Commit2026.08.04

Show topic and Shorts edit angle

많이 찾는 것과 쓸 만한 것을 찾는 것

검색 결과에는 조회수가 높은 완성 편집물이나 비슷한 채널의 영상이 반복됐습니다. 원했던 것은 직접 재구성할 여지가 있는 장면이었고, 조건을 강화하자 후보가 사라지는 문제도 생겼습니다.

참고 링크를 그대로 다시 찾거나 개인 추천 피드를 모으는 방식은 목적에 맞지 않는다고 판단했습니다. 실제 후보를 반복 검토하며 과편집·반복 채널·장면의 흥미 요소를 피드백하고, 보관·넘기기 결과가 다음 탐색에 반영되도록 요청했습니다.

Codex와 후보 수집과 검토를 분리하고, 점수·채널 분산·스킵 이력을 조합하는 방식으로 수정했습니다. 제외 처리가 검색 원본과 이력을 지우지 않도록 하고, 보관한 영상이 있으면 잘못된 학습 차단을 되돌릴 수 있게 했습니다.

현재 소스는 피드의 채널별 노출 제한, 중복 수집 방지, 검토 이력 기반 규칙 갱신을 포함합니다. 수집 기능은 구현했지만 실제로 쓸 만한 후보의 비율은 계속 검증할 과제입니다.

후보 수가 늘거나 테스트가 통과해도 수집 목적을 달성한 것은 아니었습니다. 실제 검토에서 얼마나 보관되는지까지 살펴야 하는 작업입니다.

Snapshot

구분내용
상태In progress, private repository
문제YouTube에서 괜찮아 보이는 후보를 발견해도 다시 찾고 검토 도구로 옮기는 과정이 끊김
접근추천 화면 수집, 후보 품질 게이트, 반복 스킵 학습, 검토 queue, 외부 전송을 lane 단위로 분리
기술Node.js, Netlify Functions, Netlify Blobs, Chrome Extension, Notion API, Slack Webhook
배포Netlify 배포 앱과 Chrome extension capture를 함께 사용

2026.09.30에 소스를 다시 확인했습니다. 최신 커밋은 2026.08.04이며, 후보의 주제와 쇼츠 편집 방향을 함께 표시하는 변경입니다. 채널 브랜드에서 복사된 단어를 제목의 훅으로 잘못 보는 경우, 설명문에만 있는 신호, 반복해서 제외한 패턴을 다룹니다. 영상 내용 자체를 이해하거나 사용 권한을 보증하는 분석기는 아닙니다. 필터는 메타데이터에 기반한 검토 보조이며 최종 소재 판단은 사용자가 합니다.

실제 화면

Shorts Source Radar 모바일 빈 추천 수집함 화면 캡처
모바일 웹의 추천 수집함입니다. 운영 중인 후보는 공개하지 않고 수집 전 빈 상태를 표시했습니다.

화면 상태

Inbox추천 수집 0개

아직 후보를 넣기 전 상태입니다. 실제 운영 데이터와 어색한 임의 썸네일은 공개하지 않습니다.

Stage미검수 0개

후보가 들어오면 이 영역에서 Keep, Skip, 채널 차단 같은 검토 액션이 열리고, 반복 스킵 패턴은 다음 후보 필터에 반영됩니다.

Queue대기 후보 없음

추천 수집함 queue는 비어 있고, 다음 액션은 Chrome 수집기 실행입니다.

Privacy원본 링크 미노출

private 프로젝트 소개에서는 실제 후보 링크, 썸네일, 채널명을 보여주지 않습니다.

Capture Flow

1YouTube 화면

홈이나 추천 목록에서 후보가 충분히 보이도록 스크롤합니다.

2Chrome Capture

확장이 현재 화면의 영상 링크와 제목, 채널 정보를 읽습니다.

3Quality Gate

중복, 재가공 영상, 제목 훅, 설명문-only 후보, 채널 성격을 기준으로 자동 제외합니다.

4Review Queue

통과한 후보만 추천 수집함에서 검토하고 보관/제외/제작 상태로 넘깁니다.

화면별 설명

01 · Capture

Chrome 확장 캡처

YouTube 홈이나 영상 상세의 추천 영역을 읽어 제목, 채널, URL, 썸네일 메타를 수집합니다. 사용자는 현재 보고 있는 추천 묶음을 잃지 않고 앱으로 보냅니다.

  • 공개 화면: 수집 전 빈 추천 수집함
  • 확인 포인트: 중복 링크 제거, lane 지정, 저장 결과
02 · Inbox

추천 수집함

새로 들어온 후보만 따로 모아 첫 검토를 진행합니다. 모바일에서는 이 lane이 먼저 보이도록 배치해 긴 queue에서도 출발점이 분명합니다.

  • 공개 화면: 대기 후보 없음
  • 확인 포인트: 제목, 채널, 길이, 업로드 시점, 추천 출처
03 · Quality Gate

품질 필터

하이라이트 모음, 방송 재업로드, 과도한 편집본처럼 쇼츠 소재로 쓰기 애매한 후보를 검토 전에 줄입니다. 제목에 실제 장면 훅이 있는지와 채널명에서 복사된 단어인지도 나눠 판단합니다.

  • 공개 화면: 실제 제외 후보는 노출하지 않음
  • 확인 포인트: 제외 사유, 품질 필터 통과 수, 재검토 가능 여부
04 · Stage

보관/제작/제외 상태

후보를 바로 제작할지, 나중에 다시 볼지, 제외할지 상태로 나눕니다. 상태가 바뀌면 오늘 feed와 외부 전송 대상도 함께 달라집니다.

  • 공개 화면: 상태 변경 구조만 설명
  • 확인 포인트: 상태 변경, 메모, export 대상
05 · Export

Notion/Slack/CSV 전송

검토를 통과한 후보만 외부 도구로 보냅니다. 모든 후보를 넘기지 않고, 선택한 것만 이동시키는 방식으로 후속 작업량을 줄입니다.

  • 공개 화면: export 대상 데이터는 노출하지 않음
  • 확인 포인트: 전송 대상, 실패 재시도, 누락 방지

What Changed Recently

2026.08.04 · Topic & Edit Angle

후보를 볼 때 주제와 쇼츠로 편집할 방향을 함께 표시해 검토 맥락을 보강했습니다.

2026.08.04 · Quality Gate

제목 자체의 장면 훅과 채널명에서 복사된 단어를 분리했습니다. 채널 브랜드명이 제목에 섞여 훅처럼 보이는 경우를 제외하고, 설명문만 그럴듯한 후보는 더 제한적으로 통과시킵니다.

2026.08.04 · Source Candidates

후보가 queue에 들어오기 전에 pre-rank gate와 post-rank quality gate를 나눴습니다. 통과하지 못한 후보 수는 qualityFilteredPending으로 분리해 볼 수 있게 했습니다.

2026.07.31 · Learning

반복해서 Skip한 채널, 제목 단어, 후보 프로필을 학습해 다음 후보에 penalty를 주는 흐름을 추가했습니다. 단, 전체 후보 reservoir가 너무 줄어들지 않도록 최소량을 남깁니다.

2026.07.27 · Discovery

TikTok 공개 Explore, SNS 후보, 한국/미국 권역별 탐색을 붙이고, 재가공/목적형/프로모션 후보를 계속 걷어내는 기준을 손봤습니다.

2026.07.21 · Capture

Chrome extension으로 현재 YouTube 추천 화면을 읽어 앱의 recommendation_inbox lane으로 넣습니다.

What It Does

  • YouTube 영상 후보를 조건에 따라 수집하고 1분 이상 일반 영상을 필터링합니다.
  • 추천 수집함, 국내 Fresh, 해외 Fresh, 아카이브, SNS 인박스를 lane으로 나눠 관리합니다.
  • 조회수, 댓글수, 업로드 시점, 영상 길이, 제목 훅, 채널 성격을 기준으로 후보를 비교합니다.
  • 검토, 예정, 완료, 제외 같은 후보 상태를 관리합니다.
  • 선택한 후보만 Notion, Slack, CSV로 내보낼 수 있게 분리했습니다.
  • 검색 결과와 상세 정보를 캐시해 API 재호출을 줄이는 흐름을 둡니다.
  • 반복 스킵 결과를 학습해 비슷한 후보가 다음 queue를 채우지 않도록 조정합니다.

화면으로 보는 기능

01

후보 발굴 조건

카테고리, 영상 길이, 오래된 영상 여부, 제외 키워드 같은 조건을 한 화면에서 조합해 탐색 범위를 좁힙니다.

02

점수화와 검토 상태

조회수, 댓글수, 업로드 시점, 길이를 기준으로 후보를 비교하고 검토, 예정, 완료, 제외 상태로 정리합니다.

03

선택 후보 전송

검토한 후보 중 필요한 것만 Notion 데이터베이스, Slack 메시지, CSV 파일로 내보내도록 분리했습니다.

04

Quota 절약 흐름

샘플 모드, 캐시, 검색 사용량 추정으로 YouTube API를 무작정 호출하지 않는 운영 흐름을 둡니다.

검토 상태와 외부 전송

수집한 후보는 보관·제작·제외 상태로 나눕니다. 검토를 마친 항목은 Notion이나 Slack으로 보내는 경로가 있습니다. 외부 연동에 필요한 키와 웹훅 주소는 서버 환경 설정에서 관리합니다.

Implementation Notes

  • 프론트엔드는 설치 없이 확인할 수 있는 정적 웹앱 구조를 우선했습니다.
  • Notion/Slack 연동은 환경변수 기반으로 분리해 local과 production 환경을 나눴습니다.
  • Netlify Functions, Node server, Docker 실행 경로를 함께 고려했습니다.
  • API quota를 아끼기 위해 검색 폭과 캐시 전략을 사용자 흐름에 포함했습니다.
  • 후보 필터는 pre-rank gate와 post-rank quality gate로 나누고, 테스트에서 통과/제외 케이스를 고정했습니다.
  • 반복 스킵 학습은 수동 실행 API와 예약 함수로 둘 다 돌릴 수 있게 분리했습니다.

Next

  • 후보 점수 산정 기준과 학습 필터 사유를 더 투명하게 볼 수 있는 설정 화면 추가
  • 후보별 검토 메모와 재검색 이력을 더 안정적으로 저장
  • 실제 운영 환경에서 API quota, 실패율, 저장 성공률을 관찰할 수 있는 로그 개선