Aplikasi web untuk mengotomatiskan workflow distribusi musik. Sistem ini menghubungkan Suno (AI music generator) dengan DistroKid untuk mengunduh, memproses, dan mendistribusikan musik ke berbagai platform streaming secara otomatis menggunakan browser automation.
- Visual workflow editor untuk mengelola automation steps
- Browser automation dengan Playwright untuk interaksi web
- Automated form filling dan submission ke DistroKid
- Real-time status tracking untuk setiap step automation
- Session management untuk login persistence
- Support multiple languages dan genres melalui DistroKid API
- Dark/Light theme support
- Node.js 18+
- npm atau pnpm
- Browsers (Playwright akan mendownload secara otomatis)
git clone <repository-url>
cd ausMenggunakan npm:
npm installAtau menggunakan pnpm:
pnpm installnpm run devServer akan berjalan di http://localhost:3000
npm run buildnpm startnpm run lintapp/ # Next.js app directory
├── page.tsx # Main dashboard page
├── layout.tsx # Root layout
├── globals.css # Global styles
└── api/ # API routes
├── run-bot/ # Trigger automation endpoint
├── save-session/ # Save browser session
└── status/ # Get automation status
components/ # React components
├── ControlPanel.tsx # Control panel UI
└── workflow/
├── FlowEditor.tsx # Visual workflow editor
└── WorkflowNode.tsx # Individual workflow nodes
lib/ # Core logic
├── types.ts # TypeScript type definitions
├── constants.ts # Constants dan language/genre data
├── playwright/ # Browser automation
│ ├── main.ts # Main automation orchestration
│ ├── browser.ts # Browser session management
│ ├── suno.ts # Suno API interactions
│ └── uploader.ts # DistroKid upload automation
└── utils/
├── errors.ts # Error handling
├── logger.ts # Logging utilities
└── retry.ts # Retry logic
public/ # Static assets
storage/ # Runtime data
├── downloads/ # Downloaded music files
└── session/ # Browser session data
Sistem automation mengikuti tahapan berikut:
- Trigger - Inisiasi automation process
- Launch - Launch browser dan buka halaman Suno
- Session - Load atau create browser session
- Config - Configure upload settings
- Navigate - Navigate ke halaman musik Suno
- Verify - Verify music details
- Authentication - Handle Suno login
- Download - Download audio dan artwork
- DistroKid Upload - Navigate dan login ke DistroKid
- Form Filling - Isi metadata dan distribution form
- Submit - Submit untuk distribution ke streaming platforms
- Complete - Finalize dan save session
Memicu automation dengan konfigurasi yang ditentukan.
Request body:
{
"action": "upload",
"title": "Song Title",
"cover": "image_url",
"songUrl": "suno_url",
"releaseDate": "2026-05-07",
"language": "10",
"primaryGenre": "58",
"secondaryGenre": "123",
"performerName": "Artist Name",
"producerName": "Producer Name",
"songwriterFirstName": "Writer",
"songwriterLastName": "Name",
"deleteFiles": true
}Dapatkan status automation yang sedang berjalan.
Simpan browser session untuk reuse.
Buat file .env di root directory project:
cp .env.example .envAtau buat file .env secara manual dengan konfigurasi yang diperlukan. Lihat file .env.example untuk referensi.
- Framework: Next.js 16
- UI Library: React 19
- Language: TypeScript
- Styling: Tailwind CSS v4
- Browser Automation: Playwright
- Workflow Visualization: React Flow (@xyflow/react)
- Icons: Lucide React
- Audio Processing: Sharp, node-id3
- Gunakan dev server untuk development
- Hot reload otomatis tersedia
- Playwright akan mendownload browsers pada first run
- Sessions disimpan di
storage/session/untuk debugging - Downloads tersimpan di
storage/downloads/
npx playwright installHapus folder storage/session/ untuk reset semua sessions.
Logs automation tersimpan dan ditampilkan di dashboard UI.
Private project
Untuk issues atau questions, silakan buat issue di repository.