專案介紹
NexTags 是一套自架式音樂庫管理系統,專為有大量數位音樂收藏的使用者設計。核心解決的問題是:音樂檔案的 metadata 管理太分散,需要在多個軟體之間切換才能完成整理。
透過 NexTags,所有操作都在瀏覽器裡完成:瀏覽音樂庫、編輯標籤、建立播放清單、處理歌詞,搭配 Docker Compose 部署在自己的伺服器上,完全掌控資料。
行內標籤編輯
在歌曲列表直接開啟側邊面板,編輯 20+ 種 metadata 欄位。支援 ID3v2、Vorbis Comment、FLAC 三種標籤格式,修改後即時寫入原始檔案。
欄位涵蓋 Title、Artist、Album 及對應的 Sort 欄位,還有 Genre 多標籤選擇、Language、Favorite 等自訂欄位。搭配 pypinyin 自動產生拼音排序值,不用手動填寫 Sort 欄位。
智慧播放清單
以動態篩選條件組成播放清單,支援依標籤包含/排除、語言、最愛等條件過濾,搭配多種排序邏輯(標題、建立時間、專輯、歌手)。
單一或批次匯出 M3U 檔案,直接給 Navidrome、Jellyfin 等播放伺服器使用。播放清單設定也支援 JSON 格式匯出入,方便備份跟遷移。
音樂匯入流程
設計了 7 步驟的引導式匯入流程,把新音樂入庫所需的所有操作串成一條線:
Step 1 - 上傳
將音檔上傳到暫存區,支援批次拖曳上傳。Step 2 - 自動轉檔
M4A 檔案透過FFmpeg 自動轉為 FLAC,轉檔過程保留所有原始標籤。Step 3 - 提取 Metadata
使用Mutagen 自動讀取音檔的現有標籤資訊。Step 4 - 標籤編輯
在入庫前校對跟補齊 metadata,確認歌曲資訊正確。Step 5 - 歌手管理
檢查目標音樂庫裡尚未建立的歌手資料夾,可同步上傳歌手圖片。Step 6 - 歸檔
依設定的規則自動將檔案移動到正確的資料夾路徑。Step 7 - ReplayGain
透過r128gain 批次分析響度並寫入 ReplayGain 標籤,確保所有歌曲播放音量一致。AI 歌詞處理
整合 Claude API,在標籤編輯器裡一鍵觸發 AI 歌詞處理,支援三種操作:
格式標準化
自動清理 LRC 歌詞格式,統一時間碼標記方式。簡繁轉換
將簡體中文歌詞轉為繁體中文,保留原始 LRC 時間軸。歌詞翻譯
支援英文、韓文等語言歌詞的行內中文翻譯。技術架構
後端
FastAPI 處理 API 邏輯,Mutagen 負責音檔 metadata 讀寫,FFmpeg 處理格式轉換,r128gain 進行 ReplayGain 分析。資料層改用 Python 內建 sqlite3 管理智慧播放清單與系統設定,並啟用 WAL 模式與外鍵支援;Redis 保留作為音檔標籤快取層,加速大型音樂庫查詢。前端
React 19 搭配 Vite 建構,使用 shadcn/ui 元件庫與 Tailwind CSS 設計介面。dnd-kit 處理設定頁面的拖曳排序,Sonner 提供操作通知。部署
Docker Compose 編排 FastAPI 後端、Nginx 前端與 Redis 快取,SQLite 資料庫檔案透過 app-data volume 持久化,不再需要額外維護 PostgreSQL container。支援開發模式(Hot Reload)跟正式部署兩種配置。


