尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證YouTube audio downloader with rich metadata
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A simple web app to download YouTube audio with rich metadata including song title, artist name, album name, artwork, and release year.
• Download audio from YouTube videos
• Automatically embed metadata:
• Song title
• Artist name
• Album name
• Artwork/thumbnail
• Release year
• Clean, simple UI
• Fast downloads with best audio quality
• Frontend: Svelte 5 + SvelteKit
• Backend: SvelteKit API routes
• Deployment: Railway (with bgutil-pot)
• Audio Processing: yt-dlp + ffmpeg檢視完整 README ↗A simple web app to download YouTube, SoundCloud and Bandcamp audio with rich metadata including song title, artist name, album name, artwork, and release year.
Install dependencies:
bun install
Run the development server:
bun run dev
Build for production:
bun run build
This project is configured to deploy on Railway. Downloads run through yt-dlp, with a bgutil-pot sidecar supplying the PO tokens YouTube requires.
┌──────────────────────────────────────────────────────────────────────┐
│ Railway Project │
│ ┌─────────────────┐ ┌──────────────────────┐ │
│ │ dub-rip app │───────────────────────│ bgutil-pot │ │
│ │ (SvelteKit) │ PO tokens │ (port 4416) │ │
│ └─────────────────┘ └──────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
brainicism/bgutil-ytdlp-pot-provider:2.0.0)A self-hosted Cobalt instance used to sit in front of yt-dlp. It was removed in July 2026 — see ADR 0001 — Remove Cobalt.
# dub-rip service
RAILPACK_DEPLOY_APT_PACKAGES="python3 ffmpeg"
# bgutil-ytdlp-pot-provider sidecar; required for yt-dlp PO tokens
BGUTIL_POT_URL=http://bgutil-pot.railway.internal:4416
# Optional — error monitoring. Omit all three to run without Sentry.
SENTRY_DSN=https://...
PUBLIC_SENTRY_DSN=https://...
# Build-time only; without it no source maps are uploaded and browser
# stack traces stay minified.
SENTRY_AUTH_TOKEN=sntrys_...
# Optional — enables the scheduled production canary (/api/canary returns
# 404 when unset). Must match the CANARY_TOKEN GitHub repo secret.
CANARY_TOKEN=...
These live only as Railway service variables on the dub-rip service in the production environment. There's no secrets manager and no .env file. Set or rotate one with railway variable set <NAME> --stdin -s dub-rip -e production, which redeploys automatically. Use railway run -s dub-rip -e production -- <cmd> to run something locally with them injected. PR environments inherit them from production. CI-only keys such as RAILWAY_API_TOKEN and RAMS_API_KEY are GitHub repository secrets instead.
Per-client rate limiting on /api/preview* and /api/download-stream needs no configuration: on Railway it keys on the X-Real-IP header (docs), since the proxy's own address would put every visitor in one bucket.
See deployment-strategy.md for detailed setup instructions, and error-reporting.md for what gets reported and why.
Pull requests automatically get isolated Railway environments via Railway's native GitHub PR environments (enabled in the Railway project under Settings → Environments). Each PR environment:
dub-rip-pr-<number> and branches from productionNo GitHub Actions secrets are required for previews — Railway manages create/deploy/teardown through its GitHub integration. (A previous hand-rolled railway-pr.yml workflow was removed: running it alongside Railway-native PR envs created two environments per PR and broke teardown, leaving orphaned environments that accrued idle compute cost.)
Note on adding new env vars: PR preview environments clone variables from production at creation time. If you add a new env var to the
dub-ripservice after a PR preview env was created, the preview env won't pick it up automatically. For env vars that the PR's code path depends on:
- Add the var to production before opening the PR (preview clones from current production state), OR
- Set the var manually on the PR preview env via the Railway dashboard /
railway variables --setafter the env is provisioned, OR- Push a new commit (or close + reopen the PR) to re-provision the preview env.
This caught us during the bgutil-pot rollout:
BGUTIL_POT_URLwas set on production after the bgutil-cutover PR's preview env was created, so the preview env failed fast on the yt-dlp fallback path even though production worked.
/api/download-streamThis project uses Claude Code with custom configuration for streamlined development.
| Command | Description |
|---|---|
/review | Code review for security, quality, and performance issues |
/security | OWASP Top 10 security audit of the codebase |
/test | Generate unit tests with Vitest |
/e2e | Run Playwright E2E tests with failure analysis |
/compound | Capture learnings to improve future development |
/interview | Interactive planning and task breakdown |
These plugins are enabled for all contributors:
| Plugin | Description |
|---|---|
frontend-design | High-quality frontend interface generation |
code-review | Automated code review for quality and standards |
typescript-lsp | TypeScript language server integration |
code-simplifier | Code clarity and maintainability improvements |
Specialized agents available via the Task tool:
| Agent | Description |
|---|---|
code-reviewer | Reviews changed files for quality and security |
debugger | Investigates errors and traces issues |
test-generator | Generates Vitest unit tests |
e2e-runner | Runs Playwright E2E tests |
security-auditor | OWASP Top 10 vulnerability scanning |
codebase-search | Semantic code search across the project |
media-interpreter | Analyzes images, diagrams, and screenshots |
open-source-librarian | Finds and evaluates open source libraries |
| Skill | Description |
|---|---|
planning-with-files | Structured planning with todo files |
svelte-code-writer | Official Svelte 5 docs lookup and autofixer CLI |
svelte-patterns | Project-specific component templates and patterns |
| Hook | Trigger | Description |
|---|---|---|
format-on-save | PostToolUse (Edit/Write) | Auto-formats with Biome |
keyword-detector | UserPromptSubmit | Suggests relevant commands |
check-comments | PostToolUse (Edit/Write) | Validates code comments |
todo-enforcer | Stop | Blocks exit with incomplete todos |
bun run test # Run unit tests
bun run test:e2e # Run E2E tests
bun run test:e2e:ui # Run E2E tests with interactive UI
MIT