MyGo 云音乐
Go와 MyGo로 만든 서드파티 네이버 클라우드 뮤직 데스크톱 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Friends follow podcasts and get written + spoken episode briefs
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Friends follow their own podcasts and get a written episode brief plus a spoken recap.
Search iTunes, follow the shows you already listen to, pick Short / Medium / Long per show, then open a source-grounded brief and play a Grok Voice recap in the app. There is no hardcoded show list, no email, and no checkout.
See PRODUCT.md for MVP vs later (email notifications).
npm install
cp .env.example .env
# Optional: paste an xAI key so Generate can write briefs and speak them
npm run dev
Open http://localhost:3000. Sign up with any email + password (8+ characters). We never send mail.
Forgot the password for an existing account? On Log in, open Forgot password (/forgot-password). Enter the account email, a new password (8+), and RECOVERY_SECRET. If that env var is unset, the form explains recovery is not enabled yet.
Without XAI_API_KEY, the UI still works. The signed-in library queue is empty until you follow a show and a brief exists for it — there are no sample/demo cards. Generate brief + voice and automatic episode briefs tell you to add the key.
Local npm run dev uses SQLite (file:./prisma/dev.db) unless you point DATABASE_URL at Postgres.
| Variable | Required | Purpose |
|---|---|---|
XAI_API_KEY | For generate | xAI chat completions write the brief; xAI TTS (eve, speed 1.0) speaks it so Short/Medium/Long match 1x duration. The player can still default to 1.2×. console.x.ai |
AUTH_SECRET | Recommended | Signs the login cookie. A long random string is fine. |
RECOVERY_SECRET | For password recovery | Shared secret for /forgot-password. If unset, recovery is disabled. No email is sent. |
DATABASE_URL | Local: optional. Vercel: required | Local default is file:./prisma/dev.db (SQLite via Prisma). On Vercel set a hosted Postgres URL (Neon or any Postgres). SQLite under /tmp is not shared across serverless instances, so Follow would 404 on /shows/[id]. |
CRON_SECRET | Vercel cron | Vercel sets this for /api/cron/poll-episodes (daily RSS poll of followed shows) and /api/pipeline/continue hops. Set the same value as a GitHub Actions secret so the 15-minute wake can continue STT overnight. Local calls work without it. |
TTS is Grok Voice / xAI only. Briefcast does not use edge-tts or any other synthesizer.
curl -X POST https://api.x.ai/v1/tts \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello from Briefcast.","voice_id":"eve","language":"en","speed":1.0}' \
--output recap.mp3
Chat briefs use https://api.x.ai/v1/chat/completions when the key is present. A brief is published only from a complete episode transcript (RSS / official pages / captions, or Grok STT of the full audio file, chunked). Show notes are never published as a brief. The same XAI_API_KEY covers chat, STT, and TTS.
This is a standard Next.js App Router app (vercel.json + next build). The build runs prisma generate, prisma db push, and the optional public-episode seed. Following a show, Check for new episodes, and opening Library when the latest episode still needs a brief start the same ACK-first hop chain. Production Vercel cron wakes daily (15 8 * * * UTC; Hobby allows only one cron and rejects weekday-only expressions). That request returns 202 immediately, then after() runs RSS detect + one STT/brief/TTS turn with the full 300s budget and awaits the next /api/pipeline/continue 202 (no 8s abort). Hops stop a chunk early so leftover time can ACK the next hop. Hobby cannot add a second Vercel cron, so .github/workflows/pipeline-continue.yml hits the same poll path every 15 minutes when CRON_SECRET is set as a GitHub Actions secret. External cron-job.org can GET /api/cron/poll-episodes or GET /api/pipeline/continue with Authorization: Bearer $CRON_SECRET. Vercel cron does not run on Preview — Check starts the same hop chain.
Preview redeploy note (no product change): Neon org upgraded to Launch so this branch can rebuild against DATABASE_URL.
AUTH_SECRET and, for live generation, XAI_API_KEY.RECOVERY_SECRET (a long random string) on Production and Preview. Then Redeploy. After that, open Log in → Forgot password (/forgot-password), enter the account email, a new password, and that secret.DATABASE_URL on Production and Preview, available at Build and Runtime. Use the pooled connection string and include sslmode=require if the host asks for SSL.DATABASE_URL is missing or still a SQLite file: URL.Do not paste real credentials into the repo. .env.example only shows the local SQLite default and a dummy Postgres shape.
npx vercel
npm run dev # generate Prisma client, push schema, seed, then Next.js
npm run build # same prepare step, then production build
npm test # brief/source unit tests
npm run lint
Next.js App Router, TypeScript, Tailwind, Prisma (SQLite locally, Postgres on Vercel), iTunes Search API, RSS, xAI chat + STT + TTS.