Meow App 開源短筆記:把 memos 風格筆記搬進瀏覽器,雲端掛 D1

實測開源短筆記工具 Meow App:原始碼抓下來跑,熱力圖、畫布、遮罩背誦都在本機可用,遙測為零;但雲端同步只剩 Cloudflare D1 一條路,共用鑰匙加未上鎖的 API 讓資料邊界要自己扛,專案也已七個月未更新,自架前先看清這幾件事。

用 AI 摘要這篇文章:

Memo 風格的短筆記工具這幾年已經很熱鬧,從付費的 flomo 到自架的 memos 都有固定族群。Meow App(GitHub 專案名 MeowNocode)走的是另一條路:整個應用就是一個網頁,筆記先存在瀏覽器的本機儲存裡,想要跨裝置再開 Cloudflare D1 雲端同步,授權是 MIT,文稿完成時累積 455 顆星。我把原始碼整份抓下來在本機跑過一輪,也把雲端同步那層的程式碼逐檔翻完,先講結論:當純本機的短筆記工具,它功能齊、零遙測,裝來玩很可以;但雲端同步這條路的設計是把「帳號系統」換成「一把共用鑰匙加一個沒上鎖的 API」,資料邊界要自己扛,而且專案已經七個月沒有動靜。

這篇把你自架前該知道的事一次攤開:它跟 memos 本尊差在哪、我實際跑起來看到什麼、雲端同步層的程式碼到底長什麼樣子,以及哪些人適合裝、哪些人該留在原本的方案。

跟 memos 本尊相比,它把伺服器換成了一個網頁

Meow App 的靈感來源很明確:開源界的 自架短筆記與微網誌 這一掛,其中最知名的就是 usememos/memos,Go 語言寫的伺服器配 Docker 部署,文稿完成時 62,451 顆星、前一天還有提交紀錄,是活躍維護中的成熟專案。Meow 反向操作:前端用 Vite 與 React 打成一個靜態網頁,沒有常駐程序,打開瀏覽器就能用,雲端同步靠 Cloudflare 的免費額度層。代價也很清楚:455 顆星對上 62,451 顆星,一個是七個月沒有提交的個人專案,一個是每天有人維護的社群專案。

項目usememos/memosMeow App
架構Go 伺服器,需要一檔容器或常駐主機純前端靜態網頁,可掛在 Cloudflare Pages
資料位置自己伺服器的資料庫瀏覽器 localStorage,開同步才進 D1
身分機制多使用者帳號系統單一共用密碼,無使用者隔離
桌面版有第三方客戶端官方提供 Electron 腳本與 Windows 安裝包
維護狀態(文稿完成時)活躍,幾乎每日提交main 分支停在 2026 年 1 月 24 日

兩邊不是誰取代誰的關係。要穩定的多裝置知識庫,memos 本尊或 其他自架筆記方案 仍然是更穩的底盤;Meow 吸引人的點在於門檻整個壓到地板:不想付錢、不想顧機器、只想有個漂亮的網頁把碎片想法丟進去,它剛好站在這個位置。專案自己也準備了退路,原始碼裡有一個「從 Memos 匯入」的功能,讀 memos 的匯出 JSON、跳過重複項目後寫進本機,已經有 memos 資料的人搬遷有現成路徑。

實際跑起來:當純本機短筆記,該有的都在

照 README 的步驟,clone 下來、npm install、npm run dev,幾秒鐘本地就起了一個完整的應用,不需要任何資料庫或金鑰。第一次打開會先跳一份使用者協議對話框,同意後進主畫面:中間是輸入區,左邊是熱力圖與統計,輸入區上方掛著一行隨機詩句。輸入文字按 Ctrl 加 Enter 就建檔,單則上限 5000 字,標籤用 # 符號直接接在內容後面,資料落在瀏覽器的 localStorage。

我連建了三筆帶標籤的筆記,統計面板的筆記數、標籤數、字數跟著跳,熱力圖也亮起當天的格子。功能面幾個有記憶點的設計都實際打開過:畫布模式把便條變成可拖曳的節點,適合整理零散想法;每日復習隨機抽舊筆記出來重看一遍;編輯器還留了語音剪輯的欄位,可以錄一段聲音附在筆記上。外觀的客製化程度比多數同類工具深:主題色、暗色模式、三種中文字型、背景圖亮度與模糊度都可調,背景甚至支援隨機圖模式;左欄有標籤管理與全文搜尋,快速鍵整組可改。這些選項在資料庫裡各佔一個欄位,看得出作者是真的把「自己用得順」當成需求在開發。

Meow App 本機實測主畫面:三筆示範筆記、標籤、熱力圖與每日復習入口,介面為淺色主題Pin
本機跑起來的主畫面:筆記、標籤統計與熱力圖都在同一頁(圖片來源:官方原始碼本機實測截圖)
Meow App 畫布模式實測畫面:便條變成可拖曳的節點,工具列提供畫布操作Pin
畫布模式把便條攤成可拖曳的節點,適合整理零散想法(圖片來源:官方原始碼本機實測截圖)

README 裡列的「模糊語法」容易被想成模糊搜尋,看了原始碼才知道是完全不同的東西:語法是 spoiler 標籤包住一段文字,渲染成 blur 模糊遮罩,滑鼠移過去或點一下才顯現。這是給背誦用的設計,把詩句、單字、術語的答案遮起來自我測試,跟搜尋沒有關係。網路上流傳的介紹文把它寫成「便於檢索的模糊匹配」,那是誤會了這個功能的定位。

遙測是零,裝飾功能連著幾個第三方端點

把整份原始碼掃過一遍,沒有任何 analytics、Sentry、PostHog 或百度統計之類的遙測程式碼,這點值得給予肯定。不過「完全離線」四個字也說不上:我在本地跑的時候錄了整個載入過程的對外連線,第一波請求包含一言 API(v1.hitokoto.cn,輸入區上方那行詩句的來源,資料庫預設值是開啟)、一個圖床上的應用標誌圖,以及一個個人圖片站的字型檔與背景音樂檔。這些都是裝飾性功能,不是筆記內容外送,但斷網環境下畫面會缺一角。隨機背景圖模式再多一個:它會去抽另一個第三方圖片介面的動漫插圖,程式還特別做了一個伺服器端代理來繞跨域限制,等於為了換一張桌布,你的站台要代抓別人網址的圖。

更值得知道的是內建的音樂播放器:它接了一個第三方的網易雲音樂搜尋介面(api.kxzjoker.cn),預設還帶了一首背景歌。第一次打開跳出的使用者協議裡自己寫了「音樂 API 來源於網路……僅對目標站點的官方 API 進行了封裝」。短筆記工具附整套音樂搜尋是很有個人風格的範圍取捨,用的人自己知道就好:那個第三方介面的穩定性與授權狀態,專案本身沒有背書能力。

雲端同步攤開看:一把共用鑰匙,後面是沒上鎖的 API

先處理一個文件與程式碼對不上的地方。README 的雲端備份教學寫了兩條路:Supabase 或 Cloudflare D1。但現在的程式碼裡,同步設定區塊留了一行註解「簡化邏輯:只使用 D1,移除 Supabase 複雜判斷」,64 個前端依賴裡也沒有任何 Supabase 套件。照 README 走 Supabase 路線會直接撞牆,現實只剩 D1 一條路,這份文件比程式碼舊。

D1 這條路的信任模型是整個專案最需要看清的部分。資料庫結構檔 d1-schema.sql 的開頭註解寫得直白:「這個腳本用於建立 D1 資料庫表,不使用使用者 ID 進行資料隔離」,全庫就是一張 memos 表加一張 user_settings 表,沒有使用者欄位。你設定的那組 PASSWORD 環境變數,只在前端擋登入畫面;真正部署在 Cloudflare Pages 上的 API 端點,從頭到尾沒有檢查任何身分。我把 functions 目錄裡的 memos 端點整檔讀完:GET 不帶參數會吐出整張表的資料,包含標成私密的便條;POST 可以寫入任意內容;DELETE 可以指定刪除任何一筆。HTTP 標頭還開放任意網域跨域存取,等於誰都能從自己的網頁直接呼叫這組 API。

這解釋了 README 裡那句有點突兀的說明:官方公共示範實例的登入鑰匙就是 meow 這個字,還附了一句提醒:不要把不良內容與個人資料丟上去。同一個網域、同一把鑰匙、同一個資料表,任何登入的人都能看到全部資料。這在「幾個朋友共用的白板」場景是特性,在你以為自己有私人空間的場景就是漏洞。原始碼裡還有另一個不認人的端點:proxy-fetch 可以讓伺服器端代抓任意網址轉成圖片,公開部署等於免費幫所有人當跳板。

兩個小細節順便記下。其一,倉庫裡另有一份給 Cloudflare Workers 用的 worker.js,那個版本反而有 userId 參數,但它查詢的欄位在現行資料表裡不存在,是對不起來的舊殘留,別被它誤導成有帳號隔離。其二,同步的寫法是一個迴圈逐筆把便條送到 API,沒有批次,筆記累積到幾百則之後,每次同步的請求量會跟著等比長上來,這也是 issue 版上有人反映同步不穩的可能來源之一。

另外一個現況:README 現在給的示範站網域已經解析不出來,早期文件與介紹文用的另一個示範網域(曾經直接叫 flomo.nocode.host)如今打開是託管平台的制式頁面,API 全部不存在。想在官方 demo 先試手感這條路目前是斷的,要看它長什麼樣,直接 clone 原始碼跑本地最快。

AI 對話要自己帶鑰匙,預設不外送

功能列上的 AI 對話與 AI 續寫走的是自帶金鑰設計:設定頁讓你自己填 OpenAI 相容的 API 位址、金鑰與模型名稱,預設是關閉,API 位址與金鑰留空。從程式碼看,請求是瀏覽器直接打到你填的端點,不經過任何後端中繼,沒有內建供應商,也沒有預設打開的開關。沒填金鑰就按 AI 功能,只會跳提示叫你先去設定。對隱私在意的人,這是誠實的做法:你的筆記不會因為裝了這個工具就被送去某個你沒聽過的模型服務,要送也是送到你自己指定的對象。

自架之前,先知道專案停在 2026 年 1 月

維護狀態要誠實講:main 分支最後一次提交是 2026 年 1 月 24 日,到文稿完成已七個月沒有動靜。issue 版上六個開著的問題,從 D1 同步失敗、memos 匯入只進兩筆、「記錄沒了」到開啟時卡兩三秒;作者在 2025 年 8 到 9 月間曾在其中四題留言互動,但到文稿完成時,六題全部仍開著未解。好消息是授權乾淨(MIT 授權條款檔案完整存在),桌面版也不是空話:倉庫有 Electron 的建置腳本,0.1.0 版發佈過 Windows 安裝包。把它當一個已經凍結但能動的程式碼庫來用,比期待它修東修西來得實際。

要自架的話,路線照 README 設計是:在 Cloudflare 建 Pages 專案、用 wrangler 建一個 D1 資料庫並綁定、把 d1-schema.sql 跑一次初始化、設好 PASSWORD 環境變數,前端就部署完成。我的建議是加一道 README 沒講的防線:既然 API 層自己不認人,就別把這個站台直接掛在公開網域上,要掛就套一層 Cloudflare Access 或類似的閘道,把整個站擋在你自己的身分驗證後面。資料庫裡的東西有多私人,取決於你敢把什麼丟進便條牆,而這個工具的預設姿態是假裝沒看到這個問題。

順帶一提,同樣鎖定免費額度層的自架玩法,之前介紹過的 Cloudflare Workers 工具箱強調本機優先的作業環境 都值得放在一起看,想清楚自己要的是「資料在自己帳號的雲端」還是「資料在自己機器上」,兩種信任等級差很多。

適合裝來玩的人,以及我會建議留在原方案的人

適合的輪廓很具體:想要一個零費用、零帳號的漂亮網頁收碎片想法,主要在單機使用,偶爾自己備份匯出;喜歡熱力圖、遮罩背誦、畫布這類個人化設計;或者你本來就在 Cloudflare 生態裡,願意花一個下午把 D1 同步架起來並自己加存取控制。對這些人,455 顆星的個人專案已經夠用,MIT 授權也保證你隨時可以接手改。

不適合的場景同樣明確:需要可靠的多裝置同步、需要多人各自有私人空間、或打算把長期知識庫放在上面的人。同步層的共用鑰匙模型、逐筆上傳的同步方式、七個月的維護空窗,三件事疊在一起,把它擺在「輕量本機工具」的原始定位會比較安全。真要上雲端,memos 本尊的多使用者伺服器,或前面提過的自架筆記方案,都是把信任邊界畫得更清楚的選擇。Meow App 值得裝來玩一個下午,至於要不要把想法託付給它的雲端,那是另一個層級的決定。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 975

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...