MyGo 云音乐
Go와 MyGo로 만든 서드파티 네이버 클라우드 뮤직 데스크톱 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Download videos for free from all social media
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Premium multi-platform video downloader powered by yt-dlp. TikTok-first, with support for 1000+ platforms (Instagram, YouTube, X, Facebook, Reddit, Vimeo, SoundCloud and more).
Built with Next.js 15 (App Router), TypeScript, Tailwind CSS, Supabase, and Upstash Redis.
💙 Frenz Core — read this before building any feature. It is the mandatory
engineering foundation of the whole Frenzsave ecosystem: one backend, one identity, one cloud, one
security model, one design system. Every feature integrates with Frenz Core; nothing bypasses it.README 전문 보기 ↗Premium multi-platform video downloader powered by yt-dlp. TikTok-first, with support for 1000+ platforms (Instagram, YouTube, X, Facebook, Reddit, Vimeo, SoundCloud and more).
Built with Next.js 15 (App Router), TypeScript, Tailwind CSS, Supabase, and Upstash Redis.
💙 Frenz Core — read this before building any feature. It is the mandatory engineering foundation of the whole Frenzsave ecosystem: one backend, one identity, one cloud, one security model, one design system. Every feature integrates with Frenz Core; nothing bypasses it.
server/services), repository-ready data access, SOLID-friendly separation.(app) layout (sidebar/topbar/modals render once; only content swaps → SPA-instant nav), content-only loading.tsx skeletons, SSR-seeded cached-first feed surfaces, and an SWR-style client cache (features/data). See docs/PERFORMANCE.md.features/social/inbox.ts).lib/storage, Supabase fallback) + optional Cloudflare Stream adaptive-bitrate video (lib/media/stream.ts, SmartVideo). See docs/INFRASTRUCTURE.md.This is Phase 1: a runnable foundation. See Roadmap for what's intentionally stubbed for later phases.
PATH (or set YTDLP_PATH)Install yt-dlp + ffmpeg:
# macOS
brew install yt-dlp ffmpeg
# Windows (winget)
winget install yt-dlp.yt-dlp
winget install Gyan.FFmpeg
# Linux
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
sudo apt-get install -y ffmpeg
npm install
cp .env.example .env.local # fill in values (Supabase/Upstash optional for first run)
npm run dev
Open http://localhost:3000. The downloader works without Supabase or Upstash configured — those add auth, history, and distributed rate limiting.
Create a project at supabase.com.
Run the migrations (Supabase CLI or SQL editor):
supabase db push
# or paste supabase/migrations/*.sql into the SQL editor in order
Copy your project URL + anon key + service role key into .env.local.
Enable the Google / GitHub providers under Authentication → Providers (Phase 2).
The schema lives in supabase/migrations/ and includes RLS, triggers (handle_new_user, bump_platform_stats), storage buckets, and a realtime publication on downloads.
The Docker image bundles yt-dlp + ffmpeg, which is the most reliable way to run the streaming download endpoint.
cp .env.example .env.local # production values
docker compose up --build
This starts:
| Service | Port | Role |
|---|---|---|
web | 3000 | Next.js standalone server |
redis | 6379 | local cache (use Upstash in prod) |
nginx | 80 | reverse proxy + per-IP rate limiting |
Vercel's serverless runtime has no yt-dlp/ffmpeg, so the heavy routes run
on a Docker worker and Vercel proxies to it. The same codebase plays both
roles, decided purely by env:
| Role | Where | Env |
|---|---|---|
| Frontend | Vercel | DOWNLOAD_WORKER_URL=https://<worker> + WORKER_SECRET |
| Worker | Fly.io / Railway / VPS (Docker) | DOWNLOAD_WORKER_URL blank + same WORKER_SECRET |
When DOWNLOAD_WORKER_URL is set, /api/metadata and /api/download forward to
the worker (sending the secret); when blank, the app does the real
extraction/download itself. The worker rejects requests without a matching
x-worker-secret.
Deploy the worker (Fly.io example):
fly launch --no-deploy # creates the app from fly.toml
fly secrets set WORKER_SECRET=$(openssl rand -hex 24) \
UPSTASH_REDIS_REST_URL=... UPSTASH_REDIS_REST_TOKEN=...
fly deploy # builds Dockerfile (yt-dlp + ffmpeg)
Then point Vercel at it (Project → Settings → Environment Variables):
DOWNLOAD_WORKER_URL=https://<app>.fly.dev, the same WORKER_SECRET, plus
the rest of .env.example. Redeploy.
Note: Vercel Hobby caps function duration at 300s, so the proxied download connection is capped there; full-length downloads still complete on the worker if the client talks to it directly, or upgrade the plan.
Single-host alternative: skip Vercel and deploy only the Docker image
(docker compose up) — everything works in one place.
app/ # App Router pages + route handlers + SEO (robots, sitemap)
api/ # metadata, download, health endpoints
components/ # Presentational UI (landing sections, layout chrome)
features/ # Feature modules (downloader: hook + UI)
lib/ # Cross-cutting utilities (platforms, validation, rate-limit, supabase)
server/services/ # Server-only service layer (yt-dlp wrapper)
supabase/migrations/ # SQL schema, RLS, triggers, storage, realtime
types/ # Shared domain types
middleware.ts # Supabase session refresh + /admin guard
See .env.example for the full annotated list. Highlights:
| Variable | Required | Purpose |
|---|---|---|
NEXT_PUBLIC_SITE_URL | ✅ | SEO / canonical / sitemap base |
NEXT_PUBLIC_SUPABASE_URL / _ANON_KEY | for auth | Supabase client |
SUPABASE_SERVICE_ROLE_KEY | for admin/cron | bypasses RLS — server only |
UPSTASH_REDIS_REST_URL / _TOKEN | prod | distributed rate limiting |
YTDLP_PATH | optional | path to yt-dlp binary |
Phase 1 (this foundation) ships the downloader, schema, landing page, and infra. Planned next:
/download/[platform])Download only content you own or have the right to save, and respect each platform's Terms of Service and applicable copyright law. This project is a tool; responsibility for its use lies with the operator and end users. A DMCA process and Terms/Privacy pages should be in place before public launch.