Short-Trend-Rader-트렌드한 숏츠 및 다양한 영상에서 자막을 추출하여 트렌드한 시나리오를 작성하는 프로그램
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
왜 이 저장소가 존재하나. 대부분의 트렌드 작업은 데이터를 못 모아서 실패하지 않습니다. 모은 뒤에 정리되지 않아서 실패합니다. 누군가는 링크를 모으고, 누군가는 따로 메모를 쓰고, 누군가는 나중에 다시 검색합니다. 그 사이에 타이밍이 사라집니다. trend-radar는 그 틈을 줄이기 위해 만들어졌습니다. 공개된 트렌드 신호를 한 번 모아서, 사람이 읽을 수 있는 Markdown과 다른 도구가 읽을 수 있는 JSON으로 같은 자리에 남깁니다.
Why this repository exists. Most trend workflows do not fail because people cannot find data. They fail because the handoff is messy. One person collects links, another writes notes somewhere else, and a third person has to search the web again later. By then, the timing is gone. trend-radar exists to reduce that gap. It collects public trend signals once, then leaves them behind as Markdown for humans and JSON for tools.
Meta description: Public trend intelligence CLI for collecting YouTube, Reddit, Google Trends, and RSS signals into reusable Markdown and JSON feeds.
Labels: python, trend-intelligence, cli, youtube, reddit, google-trends, rss, 22b-labs
Author: 22B Labs · The 4th Path | GitHub: sinmb79
중요한 이름 설명부터 먼저 드리겠습니다. GitHub 저장소 이름은 Short-Trend-Rader지만, 실제 Python 패키지와 CLI 이름은 trend-radar입니다. 저장소 이름은 공개 배포 주소이고, 실행 이름은 사용자가 터미널에서 쓰는 이름이라고 이해하시면 됩니다.
One naming note up front. The GitHub repository is named Short-Trend-Rader, but the Python package and CLI are named trend-radar. Think of the repository name as the public address, and the CLI name as the tool name people type in the terminal.
한 줄로 말하면, 이 시스템은 “트렌드 수집을 표준화해서 다른 작업들이 재사용할 수 있게 만드는 로컬 정보 레이어”입니다.
In one line, this system is a local intelligence layer that standardizes trend collection so other work can reuse it.
아주 쉽게 풀면 아래와 같습니다.
Here is the plain-language version.
~/.22b/trends 아래에 날짜별 파일로 저장합니다.~/.22b/trends.신입 분에게 설명하듯이 아주 단순하게 구조를 나누면, 이 프로젝트는 네 층으로 이해하시면 됩니다.
If I were explaining this to a new teammate, I would divide the system into four layers.
collectorsrunneroutputscli한국어: 각 플랫폼에서 데이터를 가져오는 모듈입니다. YouTube, Reddit, Google Trends, RSS, Naver DataLab이 여기에 들어갑니다.
English: These modules fetch data from each source. YouTube, Reddit, Google Trends, RSS, and Naver DataLab live here.
한국어: 어떤 수집기를 실행할지 결정하고, 동시에 돌리고, 실패를 모아서 정리하는 오케스트레이터입니다.
English: This is the orchestrator. It decides which collectors to run, executes them together, and gathers warnings or failures.
한국어: 수집된 결과를 Markdown, JSON, digest 파일로 쓰는 계층입니다.
English: This layer writes the collected results into Markdown files, JSON files, and digest files.
한국어: 사용자가 실제로 만나는 입구입니다. init, run --once, status, digest today, doctor 같은 명령이 여기서 시작됩니다.
English: This is the entry point users interact with. Commands like init, run --once, status, digest today, and doctor begin here.
이 구조가 중요한 이유는, 나중에 TikTok을 붙이더라도 CLI를 갈아엎지 않아도 되고, digest를 바꾸더라도 수집기를 다시 쓰지 않아도 되기 때문입니다. 바꿀 수 있는 부분과 고정해야 하는 부분을 분리해 두는 것이 장기적으로 훨씬 싸게 먹힙니다.
This structure matters because it keeps change localized. If we add TikTok later, we should not need to rewrite the CLI. If we change the digest logic later, we should not need to rewrite the collectors. Separating changeable parts from stable contracts is cheaper in the long run.
실행 흐름은 아래 순서로 이해하시면 됩니다.
Here is the runtime flow in the order it actually happens.
trend-radar run --once를 실행합니다.config.yaml을 합쳐 최종 설정을 만듭니다.TrendItem이라는 공용 데이터 형태로 바꿉니다.index.json과 읽기 쉬운 daily digest를 생성합니다.run-state.json에 남겨서 status와 doctor가 참고할 수 있게 합니다.The user runs trend-radar run --once.
The system merges built-in defaults with config.yaml to build the final config.
It selects only enabled collectors and runs them in parallel.
Each collector converts source-specific responses into a shared TrendItem shape.
The runner removes duplicates and normalizes shared fields such as keywords and categories.
The system writes platform-specific Markdown and JSON files.
It builds the shared index.json and a human-readable daily digest.
It stores run metadata in run-state.json so status and doctor have something to inspect.
중요한 철학 하나를 여기서 기억하시면 좋습니다. 이 프로젝트는 아직 “완벽한 분석기”가 아니라 “믿을 수 있는 수집과 전달기”를 먼저 만드는 단계입니다. 분석보다 전달 계약을 먼저 고정하는 것이 더 맞는 순서입니다.
One important design philosophy belongs here. This project is still in the stage of becoming a reliable collector and distributor before it becomes a perfect analyzer. Locking the delivery contract first is a more correct order than chasing smarter analysis too early.
현재 저장소는 아래처럼 이해하시면 됩니다.
Here is how to read the repository today.
Short-Trend-Rader/
src/trend_radar/
cli.py
diagnostics.py
runner.py
scheduler.py
models.py
utils.py
collectors/
config/
outputs/
tests/
docs/
config.example.yaml
pyproject.toml
README.md
src/trend_radar/collectorssrc/trend_radar/configsrc/trend_radar/outputstestsdocs한국어: 소스별 수집 로직입니다. English: Source-specific collection logic. 한국어: 기본 설정, 스키마, 파일 로더입니다. English: Defaults, schema models, and config loading. 한국어: 결과 파일을 쓰는 계층입니다. English: File writers for outputs and digests. 한국어: 파서, CLI, 설정, 러너를 검증하는 테스트입니다. English: Tests for parsers, CLI behavior, config loading, and the runner. 한국어: 공개 저장소 독자를 위한 설명 문서입니다. English: Documentation for public readers of the repository.
현재 기본 동작으로 바로 쓸 수 있는 소스와, 추가 설정이 필요한 소스를 구분해서 보시면 이해가 쉽습니다.
It is easiest to understand the sources by splitting them into zero-config defaults and optional sources.
기본 소스입니다.
These are the default sources.
한국어: 공개 페이지 기반으로 트렌딩과 Shorts 성격의 항목을 수집합니다.
English: Collects trending and Shorts-like items from public YouTube pages.
한국어: 서브레딧의 공개 JSON 엔드포인트를 사용합니다.
English: Uses public subreddit JSON endpoints.
한국어: RSS 기반으로 안정적으로 수집하고, 필요 시 pytrends를 보조로 사용할 수 있게 구성했습니다.
English: Uses RSS as the stable path, with pytrends available as a fallback path.
한국어: 사용자가 원하는 피드를 직접 추가할 수 있습니다.
English: Lets users add any RSS or Atom feeds they care about.
선택 소스입니다.
This is the optional source.
한국어: 지원은 하지만 NAVERCLIENTID, NAVERCLIENTSECRET 환경변수가 있어야 실제 실행됩니다.
English: Supported, but it only runs when NAVERCLIENTID and NAVERCLIENTSECRET are present.
의도적으로 아직 넣지 않은 것들도 있습니다. TikTok, Instagram, X/Twitter, Whisper 기반 전사, 장기 daemon 운영은 후속 단계입니다. 하지 못해서 뺀 것이 아니라, 공개 배포 시점에서 기본 경로를 안정적으로 유지하기 위해 뒤로 미룬 것입니다.
Some things are intentionally not included yet. TikTok, Instagram, X/Twitter, Whisper transcription, and long-running daemon mode are later steps. They were not excluded because they are impossible. They were deferred to keep the public default path stable at release time.
처음부터 길게 설명하지 않겠습니다. 이 저장소는 이제 setup.sh 또는 setup.bat 하나로 Python 패키지 설치, n8n 설치, n8n 실행, 워크플로우 임포트까지 한 번에 처리할 수 있습니다.
English: I will not overcomplicate the first run. This repository now ships with setup.sh and setup.bat so one command can install the Python package, install n8n, start n8n, and import the bundled workflows.
curlEnglish: Python 3.11 or newer
English: Node.js 20 or newer
English: npm
English: curl on Linux or macOS
git clone https://github.com/sinmb79/Short-Trend-Rader.git
cd Short-Trend-Rader
# Linux / macOS
chmod +x setup.sh./setup.sh
# Windows
setup.bat
브라우저에서 http://localhost:5678을 열면 끝입니다.
English: When the script finishes, open http://localhost:5678.
목록에는 trend-radar Collection Orchestrator와 trend-radar Daily Digest 워크플로우가 바로 보입니다.
English: You should immediately see the trend-radar Collection Orchestrator and trend-radar Daily Digest workflows in the list.
조금 더 수동으로 하고 싶다면, 그때부터 trend-radar doctor, trend-radar run --once, trend-radar digest today를 하나씩 익히면 됩니다. 자동화보다 먼저 성공 경로를 이해하는 편이 결국 더 빠릅니다.
English: If you prefer a more manual path after that, start learning trend-radar doctor, trend-radar run --once, and trend-radar digest today one by one. Understanding the success path before the automation path is usually faster in the long run.
처음에는 아래 명령만 알아도 충분합니다.
At the beginning, these commands are enough.
trend-radar inittrend-radar run --oncetrend-radar config showtrend-radar statustrend-radar digest todaytrend-radar doctor한국어: 대화형으로 config.yaml을 만듭니다.
English: Creates config.yaml interactively.
한국어: 현재 설정으로 한 번 수집하고 결과 파일을 씁니다.
English: Runs one collection pass and writes the output files.
한국어: 기본값과 사용자 설정이 합쳐진 최종 설정을 보여줍니다.
English: Shows the merged effective configuration.
한국어: 최근 실행 시각, 활성 플랫폼, 수집 건수를 보여줍니다.
English: Shows the last run time, active platforms, and item count.
한국어: 오늘 수집된 결과를 요약해서 읽기 쉬운 형태로 출력합니다.
English: Prints a readable digest based on today’s collected data.
한국어: Python 버전, config 존재 여부, 출력 경로, 선택 소스 환경변수를 점검합니다.
English: Checks Python version, config presence, output path, and optional source credentials.
이 저장소는 CLI만 있는 프로젝트처럼 보이지만, 사실 그래서 더 n8n과 잘 맞습니다. English: This repository may look like a CLI-first project, and that is exactly why it fits n8n well.
핵심은 n8n이 코드를 대체하는 것이 아니라, 이미 잘 만든 CLI를 반복 가능하고 연결 가능한 워크플로우로 감싸는 데 있습니다. English: The point is not to replace code with n8n, but to wrap a solid CLI in repeatable, connectable workflows.
n8n/ 디렉터리에는 바로 import할 수 있는 워크플로우와 자세한 연동 문서가 들어 있습니다.
English: The n8n/ directory now includes import-ready workflows and a detailed integration guide.
n8n/workflow.jsonn8n/workflow-digest.jsonn8n/README.md한국어: 수동 실행, 웹훅 실행, 예약 실행을 한 워크플로우에 묶은 기본 수집 플로우입니다. English: The main collection workflow covering manual, webhook, and scheduled runs. 한국어: 일일 digest 생성에 집중한 보조 워크플로우입니다. English: A companion workflow focused on daily digest generation. 한국어: 설치, import, 입력값, 경로 수정, 보안 주의사항까지 신입 온보딩처럼 설명한 가이드입니다. English: A Korean-first bilingual guide that walks through setup, import, inputs, path edits, and security notes.
자동화 친화성을 위해 run, status, doctor, digest today, config show는 이제 --json 출력도 지원합니다.
English: For automation, run, status, doctor, digest today, and config show now support --json output as well.
기본 출력 위치는 ~/.22b/trends입니다.
The default output directory is ~/.22b/trends.
핵심 파일은 아래 다섯 가지입니다.
These are the five files new users should care about first.
feeds/<platform>/<YYYY-MM-DD>.jsonfeeds/<platform>/<YYYY-MM-DD>.mddigest/daily-<YYYY-MM-DD>.mdindex.jsonrun-state.json한국어: 플랫폼별 원본에 가까운 구조화 데이터입니다. English: Structured platform-specific data, closer to the raw collection result. 한국어: 사람이 훑어보기 쉬운 플랫폼 요약입니다. English: A human-readable per-platform summary. 한국어: 오늘 무엇이 모였는지 빠르게 읽는 일일 브리프입니다. English: A daily brief that lets you scan what was collected today. 한국어: 다른 22B Labs 도구가 읽기 위한 공용 요약 인덱스입니다. English: The shared summary index that other 22B Labs tools can consume. 한국어: 최근 실행 상태와 수집기별 경고를 기록합니다. English: Stores the latest run metadata and per-collector warnings.
여기서 중요한 포인트는 Markdown과 JSON을 둘 다 쓰는 이유입니다
[...truncated...]