TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南
TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南

MyTube 以 yt-dlp 為引擎、MIT 開源,把影片下載、頻道訂閱自動歸檔與私人 RSS 整成一套自架媒體庫;本機實測從 Node 26 安裝到樣本影片下載入庫播放整條鏈可用,部署前該對齊的 Node 版本、中文介面僅簡體、版權責任與 AI 翻譯音訊外送等邊界一併看清。
用 AI 摘要這篇文章:
大部分 yt-dlp 的圖形介面都把「下載」當成終點:連結丟進去、檔案掉進某個資料夾,故事就結束了,之後要找片、整理、同步到手機,全靠你自己。MyTube 把這條線往後拉了一大段:下載只是一個入庫動作,真正的主體是入庫之後那個會自己長大的媒體庫,頻道訂閱、自動下載、評分、私人 RSS、手機客戶端,全都繞著它轉。這個 2025 年 3 月才開張的開源專案,到 2026 年 10 月底已經累積約 1,270 顆星,官方 Docker 映像被拉了約 169,000 次,最新版 v1.11.15 在 2026 年 10 月 22 日推出,維護節奏相當密。
還有個背景值得一提:專案說明文件自述整套程式「百分之百由提示詞工程生產、零行手寫程式碼」,靠作者自己的 agent-workflows 工作流跑出來。這是作者的宣稱,外部無從逐行驗證;不過提交紀錄裡確實混著人名與 Claude 的署名,主力貢獻者只有一人、累積 2,400 多次提交,一個人加一條 AI 工作流能把專案顧到這個規模,本身就是 2026 年個人開源專案的一種新形態。
先講結論。我在 macOS 上把它從 clone 到跑起來、丟了一支樣本影片進去完整走完下載入庫播放的流程,整條鏈可用,安裝門檻比想像中低;想把它當家庭影片庫的人會得到一個功能密度很高的自架服務。但有兩件事它不會替你扛:下載行為的版權責任官方明寫由使用者自負,而幾個選項一旦打開,家裡的音訊會送出門、帳號 cookie 會交給這個實例、整個服務也可能被掛上網。下面依序把實測過程、機制、邊界與部署條件講清楚。
實測環境是 macOS 加 Node 26.7.0。clone 之後跑一行 npm run install:all 把前後端依賴裝齊,過程一次成功,沒有踩到編譯錯誤。啟動用的是專案自己的 start 腳本,後端先起,先印出版本橫幅 v1.11.15,約兩秒內完成 SQLite 資料庫建立與自動遷移後開始接收請求;前端的 Vite 開發伺服器 728 毫秒就緒。兩個服務分別聽在 5551(後端 API)與 5556(前端),和文件寫的一樣。
打開瀏覽器看到的是一個乾淨的空狀態頁,提示你貼上影片網址下載第一支片。我丟進去的不是平台連結,而是一個直接的 MP4 樣本檔網址,目的是先驗證下載這條主幹。提交後任務進入佇列,十幾秒後清單頁出現了這支片:時長標成 0:06,點開播放器正常播放,畫面上有五星評分、Up Next 待播清單與自動播下一支的開關。再對照後端 API 的回應,細節比介面看到的更多:解析度被記成 1920×1080、檔案大小 2,848,208 位元組、來源標記為 generic(泛用來源,非平台專屬),影片檔照著自己的命名模板落進 backend/uploads/videos/,檔名長得像 sample5s-downloadsamplelibcom-2026.mp4,一眼就能對上原網址。

要說清楚的是接觸邊界:YouTube、Bilibili、Twitch 這些平台的實際下載,這次沒有逐一實測,相關結論都來自原始碼與官方文件;直接 MP4 連結走得通,代表的是下載引擎與入庫流程這條主幹正常,平台來源的表現(速度、畫質、cookie 需求)留給部署後的自己驗證。不想先裝的人,官方留了一個唯讀 demo 站,裡面有三個收藏分類共八支示範影片,還有多 P 分集的標記,介面長相可以先看個大概;demo 站本身掛了 Google Analytics,自己架的實例不會帶。

翻開原始碼,下載這層比「yt-dlp 殼」的印象講究。專案維護了一個抽象下載器基類,底下分出四條線:泛用的 YtDlpDownloader 吃所有 yt-dlp 相容來源;Bilibili 有自己的專屬下載器,多 P、合集與系列整包下載都在這條線上;Twitch 走獨立的服務模組;另外針對特定成人串流站台,還寫了一個以無頭瀏覽器解析影片來源的專屬下載器。官方支援清單在說明文件裡寫得明白,連成人站台都直接列名,這點後面談版權時會再回到。
yt-dlp 本體不打包在專案裡。後端啟動時會掃描系統路徑找可執行檔,實測中它正確找到了我機器上 Homebrew 裝的 yt-dlp,版本 2026.08.19,並回報這個版本在九十天的「新鮮期」內不算過期;設定頁裡有一鍵更新,走 pip 就地升級,不用重建容器。對自架者來說這個設計很實際:yt-dlp 是整個專案裡最常需要追平台改版的部分,讓它跟著系統走、又能從介面直接更新,維運負擔小很多。
入庫這端的細節也有誠意。下載完成會自動抓縮圖與影片資訊,YouTube 與 Bilibili 的預設語言字幕可以設定自動下載;自己上傳的本地檔案會自動產生縮圖,接了 TMDB 之後還能靠檔名比對出電影與影集的正式條目、海報與評分。檔名模板會把標題、作者、年份組合成可讀的檔名,我那支樣本影片就是照這套規則落盤的,之後把資料夾丟給其他媒體播放器,檔名也站得住。
佇列管理也有章法。多個下載任務同時排隊、各自顯示進度,併發上限可以在設定裡調整,批次貼上多個網址能一次入列;資料庫裡有一張專門的表記錄已下載的影片,跨連線防重複,同一支片不會因為重開瀏覽器就被抓兩次。下載過程的暫存檔有對應的清理入口,設定頁可以一鍵清掉,長期下載累積的空間垃圾有地方收拾。
判斷一個工具的企圖,看它把力氣花在哪裡。MyTube 的功能清單裡,頻道訂閱與自動下載排在很前面:把 YouTube、Bilibili、Twitch 的頻道加進訂閱清單,排程器會定期檢查新片並自動抓下來入庫,程式碼裡用的是 node-cron 的排程服務,搭配保留策略控制庫的大小。對收藏型使用者來說,這才是它與一般下載工具拉開差距的地方:你在經營一個會自己更新的庫,而不是一次一次手動抓檔。
庫內的整理工具也齊全。影片可以收進收藏夾、打標籤、給五星評分,實測的 API 回應裡 rating、viewCount、tags 都是現成欄位;清單支援分頁與排序,每頁筆數與欄位數在設定頁可調,首頁能在全部影片、收藏夾、播放歷史與最愛之間切換,作者欄位本身就是篩選器,點下去就是某個頻道的全部收藏。這些功能單看都不稀奇,稀奇的是它們跟訂閱自動下載接在同一條流程上:新片自動進來、照規則歸檔,你只負責看。
對外的介面也不只瀏覽器。私人 RSS 連結可以把庫裡的新片餵給外部閱讀器,每一條連結可以設定頻道、作者、標籤與則數的過濾條件;下載成功或失敗能推 Telegram 通知;任務掛鉤可以在下載開始、成功、失敗、取消等節點執行自己寫的 shell 腳本,接進既有的自動化流程。週邊生態更完整:原生 Android 客戶端、給 AI 助理用的 MCP 伺服器(讓代理幫你搜尋管理片庫)、短影音專用的 MikMok 網頁客戶端,還有一支 Chrome 擴充功能可以直接在瀏覽器裡把影片丟回自己的實例。
放在同類工具之間看,定位差異就更清楚了。同樣以 yt-dlp 為引擎,Downlodr 這類桌面軟體解決的是單機的下載與排程,關機就停;MyTube 是常駐的伺服器服務,庫、訂閱與對外介面是一體的。而和 Jellyfin 這類媒體櫃伺服器相比,它管的是「片從哪裡來」這一段,Jellyfin 接手的是「片怎麼被客廳電視吃掉」,兩者其實可以串著用,Kinby 這類跨平台播放器就是接在後面那一端。如果你只是偶爾想抓單支影片,yt-dlp 批次腳本或桌面工具都輕得多;想長期訂閱頻道、把 B 站收藏像 Mybili 那樣自動存進 NAS,再自己管理整個收藏庫,這種需求才是 MyTube 的主場。
播放器本身也有下過功夫的痕跡。鍵盤快捷鍵照 YouTube 的習慣設計,播放速度、字幕、全螢幕、逐格前進都有;比較少見的是車用模式,用 Canvas 與 WebCodecs 取代標準的影片元素,說明文件寫明這是給行進間會封鎖一般播放器的車機螢幕用的,同時但書提醒僅供乘客使用、開車時不要操作螢幕。實測中設定頁也值得繞一圈:網站名稱可以自訂、每頁影片數與欄位數可調、主題可以跟隨系統切換明暗,介面預設是英文。

庫一旦養大,遲早要面對清理與腐壞兩件事,MyTube 對兩件事都有明確規則。自動清理預設關閉,打開後每天凌晨三點(伺服器時間)掃描全庫,入庫超過設定天數的影片連檔案、縮圖、字幕一起刪除,下載歷史標記為已刪,天數上限可以拉到十年;不想被刪的片可以逐支上鎖,鎖定的影片不受任何自動規則影響,訂閱來源的影片另有各自的保留策略。計時基準是「入庫那天」而不是影片的原始上傳日,把舊檔搬進來的人不會第一天就被掃掉。
完整性稽核處理的是另一種痛:清單上還在、硬碟上卻已經出問題的片。它會逐一檢查檔案失蹤、音軌與視訊軌長度對不上、儲存的時長與實際不符、或者根本讀不出來等狀況,把結果列出來。設計上刻意做成唯讀:只報告與建議,不自動修復,官方在版本說明裡講了理由,重新下載成本高、來源可能已下線,一支還能看一半的片被自動砍掉換來一無所有,比留著更糟;有來源網址的項目會提供重新下載按鈕,讓你手動決定。這種「寧可建議、不要自作主張」的取捨,在自動化工具裡是成熟的味道。
檔名安全的處理也可以看出同一種性格。上傳功能從 v1.11.14 起可以保留原始檔名,但檔名從頭到尾被當成不可信的輸入:目錄部分、控制字元、會讓檔名顯示成另一個檔名的特殊覆蓋字元都會被剝掉,井號與百分比符號也拿掉,因為媒體網址的組裝不做編碼,這兩個符號會讓連結斷掉或被誤讀。版本說明對每個決定都給了理由,這份工程文件的詳盡程度,在個人開源專案裡相當少見。
資料落地是自架媒體庫的基本盤,這部分 MyTube 給得很乾淨:所有內容落在自家機器的 SQLite 資料庫與 uploads 資料夾,前端依賴清單裡看不到任何分析或遙測套件,Sentry 與統計 SDK 都不存在,媒體庫本身也不經過任何第三方雲端。這在什麼都要連雲的年代,已經算是少見的乾淨。
但「庫在本地」不等於「所有處理都在本地」,有三個開口要看緊。即時語音翻譯是唯一會把內容送出家的功能:啟用後播放中的影片音訊會串流送到 Google 的 Gemini 翻譯模型(程式碼裡指定的型號是 gemini-3.5-live-translate-preview),換到的是即時口譯與字幕。這是管理員專屬、預設關閉的選項,API key 存在後端、原始碼註解明寫不可序列化給瀏覽器,官方文件也說明文字稿不落地保存;即便如此,開啟的那一刻,你家的音訊就是進了 Google 的伺服器,要不要開,自己衡量。
第二個開口是 cookie。設定裡可以上傳 cookies.txt 來解鎖年齡限制或會員內容,等於把你在平台上的登入身分交給這個自架實例,用帳號換畫質或內容的風險,平台條款怎麼認定,責任在使用者。第三個開口是對外曝光:內建的 Cloudflare Tunnel 支援讓你不用在路由器開埠就能把實例掛上網,方便,但也代表家庭網路的邊界往外推了一層。好在登入保護做得完整,密碼、通行金鑰(WebAuthn)、管理員專屬的九宮格手勢登入都內建,還能開唯讀的訪客帳號給家人;實測中 CSRF 防護預設就是開的,不帶 token 直接打下載 API 會被拒絕,未設定 JWT 金鑰時每個程序自行生成隨機金鑰並在日誌裡明說 session 不跨重啟。管理權限還分了 application、container、host 三層信任邊界,shell 掛鉤這類能碰到系統的功能會依層級開放,自架對外前先把這份安全模型文件讀一遍,是值得花的十分鐘。
有的中文介紹還寫著部署條件是 Node.js 14 以上、npm 6 以上,照著裝會在安裝階段就撞牆。對照原始倉庫,現行要求是 Node 22.22 以上或 23 到 26 版、npm 9 以上,原因在後端依賴 better-sqlite3 這個原生模組,不支援的 Node 版本會在 npm install 時失敗,而且官方特別提醒在 Windows 上的錯誤訊息常誤導成 node-gyp 或 Visual Studio 的問題,繞遠路排查。這篇介紹發布於 2025 年 11 月,上面的部署條件與倉庫現行要求已經對不上;真要裝,以倉庫的 Getting Started 文件為準,別照舊文抄。
不想碰 Node 環境的人走 Docker 比較省事。官方映像 ghcr.io/franklioxygen/mytube 內建 Node 22,倉庫裡附了單容器版與 host 網路版的 compose 檔,對 NAS 部署族群來說,照著 Docker Compose 範本庫的套路改幾行就能上線。連接埠記得留 5551 與 5556,媒體資料集中在 backend/data 與 backend/uploads 兩個目錄,備份搬移都圍繞它們。
語言方面有個細節先講:介面內建十種語言,中文也在清單上,但語言檔是簡體中文寫的,繁體中文沒有獨立版本。要嘛用英文介面,要嘛讀簡體字,習慣繁體介面的人,這是個小但天天會碰到的摩擦點,介意的話改語言包也是社群可以補的位置。
下載工具的版權問題躲不掉,官方的態度寫得算坦白。說明文件的免責段落自述:這套軟體僅供個人學習、研究與技術交流,禁止用於商業用途或違反當地法規的活動,因使用產生的任何法律責任(包含版權侵權)由使用者自行承擔;同時宣告專案完全非營利、不收捐款、也從未授權任何人代收費,提醒使用者提防打著專案名號收費的詐騙。各平台的服務條款對下載各有規範,自用下載落在哪個區間,每個使用者該自己想清楚,這條界線 MyTube 不會也不能替你劃。
授權條款上有個值得玩味的張力:倉庫裡的 LICENSE 檔是標準 MIT(版權宣告寫著 2025 Peifan Li),法律上允許商用與再散布;但說明文件的免責段又宣示禁止商業使用。兩者並存時,條款檔的法律效力一般優先,不過作者的立場表達得很清楚,要拿它做商業應用的人,這個矛盾值得先想一遍,而不是假裝沒看到。成人站台的支援也是類似的「事實存在但要看場合」:官方清單直接列名,程式碼還為它寫了專屬下載器,家庭共用或公開部署的場合,訪客帳號的唯讀分權就派上用場了。
專案狀態則是加分的。一年半的歷史、2,400 多次提交、CHANGELOG 每版都寫得像小型技術報告,開放的七個 issue 有五個掛著功能請求標籤,另有兩個開放 PR,活躍度沒有疑慮;風險在結構,主力是一位開發者加 AI 工作流,這種型態產出快,但長期依賴單一人物的判斷,重大分歧時沒有第二個維護者接手,自架前把資料目錄的備份習慣先養好,是面對任何個人專案都成立的保險。總結起來:想讓頻道訂閱自動長成一個家用的影片庫、有一台常開的機器或 NAS、願意花一個下午面對 Docker 或 Node 環境,MyTube 值得一試,先從唯讀 demo 看介面,再用單容器 compose 起一個實例訂閱一個頻道跑一週,它會自己證明適不適合你家。