explainroo
explainroo는 AI 에이전트가 음성으로 설명 영상을 만들 수 있는 무료 오픈소스 도구이며, 로컬에서 API 키 없이 실행됩니다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A private, password-protected video downloader in the style of SaveFrom: paste a YouTube, Instagram, Facebook or TikTok link, pick a quality, get an MP4 (H.264/AAC — plays everywhere) or MP3. For personal use only: one password, no accounts, no ads.
Live deployment: https://mediadock.vercel.app (password in your notes — it is not in this repo).
| Platform | On Vercel (cloud) | Running at home | Notes |
|---|---|---|---|
| ✅ | ✅ | Public reels and video posts. Private accounts, stories and photo posts aren't supported. | |
| ✅ | ✅ | Public videos, reels, fb.watch and share links. Facebook often serves VP9, which is re-encoded to H.264 (slower: ~1–2 min for a 1-min 1080p clip on Vercel). | |
| TikTok | ✅ | ✅ | Videos incl. vm.tiktok.com / vt.tiktok.com / tiktok.com/t/ share links. H.264 qualities are offered so nothing has to be re-encoded. |
| YouTube | ✅ via your home PC helper | ✅ | YouTube blocks every cloud/datacenter server ("Sign in to confirm you're not a bot"), so the live site hands YouTube links to a helper on your own PC. Works whenever that PC is on. See YouTube on the live site. |
Quality options come from what the platform actually offers (e.g. MP4 1080p / 720p / 480p / 360p / MP3);
sizes are the platform's own estimates, never made up. Finished files are deleted automatically after
FILE_TTL_MINUTES (default 60).
Browser ──► Next.js app ──► yt-dlp (metadata, download) ──► FFmpeg (merge / remux / convert) ──► file link
packages/core/src/media) is shared by both deployment modes:| Mode | Where | How a conversion runs | Use it for |
|---|---|---|---|
Standalone (MEDIADOCK_MODE=standalone) | One Next.js app — Vercel, or npm run dev at home | A streaming /api/convert request downloads + converts and sends live progress; the file goes to Vercel Blob (or a local temp folder) | The live site; easiest setup |
Self-hosted (MEDIADOCK_MODE=proxy) | Web + Fastify API + BullMQ worker + Redis + R2/S3 (Docker / Render) | Background jobs with retries, polling, signed links; also "convert a file you own" uploads | Long videos, uploads, heavier use |
| Path | Role |
|---|---|
apps/web | Next.js UI. In standalone mode it also hosts the API routes (lib/server/*, app/api/convert). |
apps/api, apps/worker | Self-hosted mode: REST API and the BullMQ/FFmpeg worker. |
packages/shared | Browser-safe contract: URL allowlist + platform detection, types, schemas, error catalogue. |
packages/core | yt-dlp + FFmpeg pipeline, platform adapters, config, auth tokens, storage, queue. |
Needs Node ≥ 22.12, FFmpeg and yt-dlp on your PATH (or set YTDLP_PATH).
npm install
cp apps/web/.env.example apps/web/.env.local # set ACCESS_PASSWORD
npm run build -w @vd/web && npm run start -w @vd/web # or: npm run dev:web
Open http://localhost:3000. To reach it from your phone while away, put a tunnel in front of it
(e.g. ngrok http 3000 or Cloudflare Tunnel) — the site stays password-protected.
Quick check of any links from the command line (same pipeline as the site):
npm run try -- "https://www.tiktok.com/@realmadrid/video/7707305867162570017" "https://youtu.be/…"
apps/web (leave "include files outside the root directory" on).BLOB_READ_WRITE_TOKEN).MEDIADOCK_MODE=standaloneACCESS_PASSWORD_HASH — from npm run hash-password (or ACCESS_PASSWORD for a quick test)SESSION_SECRET — 32+ random characters (node -e "console.log(require('crypto').randomBytes(48).toString('base64url'))")apps/web/scripts/fetch-yt-dlp.mjs);
FFmpeg comes from ffmpeg-static. Redeploy every few weeks (or when a site stops working) to pick up a newer yt-dlp.Limits on Vercel (Hobby, all overridable via env): 300 s per conversion, input ≤ 400 MB, videos ≤ 30 min. Blob on Hobby includes limited free storage/transfer per month; files are deleted after an hour, so storage stays tiny.
YouTube refuses requests from cloud servers (tested from Vercel with every yt-dlp client: all blocked). So for YouTube the live site uses a home helper: the same app running on your PC, reached through a permanent ngrok address.
phone/laptop ─► mediadock.vercel.app ──(YouTube link + shared secret)──► your PC (home internet) ─► YouTube
▲ │ yt-dlp + FFmpeg
└──────────── live progress ◄────────────────────── ┘ finished file ─► Vercel Blob ─► download link
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗