LINE Rich Menus Manager 研究筆記¶
資料來源¶
| 項目 | 連結 |
|---|---|
| GitHub repo | https://github.com/kenakamu/line-richmenus-manager |
| npm 套件 | line-richmenus-manager(npm i -g 後直接執行) |
| 作者 | Kenichiro Nakamura(中村憲一郎,微軟,日本) |
| LINE Rich Menu 官方文件 | https://developers.line.me/en/docs/messaging-api/using-rich-menus/ |
| UI 元件庫 | Ignite UI for Angular(INFRAGISTICS) |
Repo 統計:⭐ 28、TypeScript、MIT License、topics:
linemessaging-apirichmenu。最後更新 2025-10。提供英/日雙語 README。
專案概述¶
line-richmenus-manager 是一套本機執行的圖形化工具,專門用來管理 LINE bot 的 Rich Menu(聊天室下方那塊可點擊的圖文選單)。
問題背景:LINE 的 Rich Menu 沒有官方後台 GUI。要建立一個 Rich Menu,開發者得手動呼叫 Messaging API——先用 JSON 定義每個可點區域的座標(x / y / width / height)與動作,再上傳一張底圖,最後把選單綁到使用者身上。座標全靠人工算、要反覆試錯,開發體驗很差。
這個工具把整套流程搬進瀏覽器:上傳底圖後直接用滑鼠在圖上拖拉框選可點區域,或用文字框做 pixel 級微調,省去手算座標與裸寫 API 呼叫。本質是一個架在 LINE Messaging API 之上的 CRUD GUI。
核心功能¶
| 功能 | 說明 |
|---|---|
| List | 列出該 bot 的所有 Rich Menu |
| Find by user | 查某個使用者目前綁定的 Rich Menu |
| Detail / Link / Unlink | 看選單細節、把選單綁定或解綁到特定 user |
| Create | 上傳底圖 → 拖拉框選可點區域 → 設定動作 → 建立 |
| Delete | 刪除 Rich Menu |
| 拖拉 + 數值雙模式 | 滑鼠拉框做粗調,文字框輸入 x/y/w/h 做 pixel 級精修 |
技術架構¶
┌─────────────────────────────┐
│ Browser (Chrome only) │ Angular 2 + Ignite UI for Angular
│ 拖拉框選 / 數值微調 UI │
└──────────────┬──────────────┘
│ proxy.conf.json 轉發
▼
┌─────────────────────────────┐
│ Express server (Node.js) │ 代理呼叫 LINE Messaging API
└──────────────┬──────────────┘
▼
LINE Messaging API (Rich Menu endpoints)
- 前端:Angular 2,UI 元件用 INFRAGISTICS 的 Ignite UI for Angular
- 後端:Express,透過
proxy.conf.json把前端請求代理到 LINE API(也避開瀏覽器 CORS) - 啟動後開在
localhost:3000,僅在 Chrome 測過 - 開發除錯流程綁定 VSCode(Launch Node + Launch Chrome)與 Debugger for Chrome
快速開始¶
# 最簡單:從 npm 全域安裝後直接跑
npm install -g line-richmenus-manager
line-richmenus-manager # 開瀏覽器,服務跑在 :3000
line-richmenus-manager --port:3200 # 指定埠號
# macOS 可能需 sudo
sudo npm install -g line-richmenus-manager
sudo line-richmenus-manager
從原始碼跑(開發用):
git clone https://github.com/kenakamu/line-richmenus-manager
npm install
ng serve --aot --progress=false --proxy-config proxy.conf.json
目前限制 / 注意事項¶
- 僅支援 Chrome:作者明言只在 Chrome 測過,其他瀏覽器自負風險。
- 技術棧偏舊:Angular 2(2016 年代)。對現代 Angular(v17+ standalone components)而言已是古早版本,從原始碼維護的門檻較高。
- 需自帶 Channel Access Token:工具本身只是 API 前端,仍需 LINE bot 的 token 才能操作;token 在本機輸入、本機代理,使用前要確認執行環境可信。
- 依賴商用 UI 元件:Ignite UI 為 INFRAGISTICS 商業產品,二次開發或商用需留意授權。
- 功能聚焦單一:只做 Rich Menu,不涉及訊息推播、webhook、其他 bot 設定。
- 小眾、低活躍:28 stars、更新緩慢,遇到問題多半得自己讀程式碼。
研究價值與啟示¶
關鍵洞察¶
-
「給沒有官方後台的 API 補一個 GUI」是極具槓桿的工具切入點。 LINE Rich Menu 的痛點不在功能,而在「手算座標 + 裸寫 JSON」的開發體驗。這個工具不發明任何新能力,只是把既有 API 包成所見即所得的介面——價值全在 DX(開發者體驗)。任何「只有 API、沒有 dashboard」的服務,都存在同類型的工具機會。
-
拖拉 + 數值雙輸入,是座標編輯類 UI 的黃金組合。 滑鼠拉框快速但不精準、數值輸入精準但繁瑣,兩者並存讓使用者依情境切換。這個模式在 Figma、影像標註工具、地圖框選等場景反覆出現,是處理「空間座標輸入」的成熟解法。
-
「本機 Express 代理 + 瀏覽器前端」是 API 工具的經典架構,且順手解掉兩個問題。 一是 CORS(瀏覽器無法直接打 LINE API),二是 token 不外洩(憑證留在本機 server,不進公開雲端)。這個「local-first 代理」模式至今仍是開發者工具(如各種 API explorer、本機 dashboard)的主流選擇。
-
npm 全域安裝 + 一行啟動,是 Node 生態「工具即指令」的 DX 範本。
npm i -g後敲一個指令就開瀏覽器,把「安裝 → 設定 → 啟動」壓成兩步。這正是 CLI 工具降低上手門檻的標準做法,與本站收錄的多數 CLI 工具同一思路。 -
技術棧會過時,但「補足官方缺的後台」這個需求不會。 Angular 2 已老,但工具解決的核心問題(缺 Rich Menu GUI)依然存在。這提醒:工具的長期價值取決於它對應的需求是否持久,而非實作技術是否時髦——必要時用現代框架重寫即可延續價值。
與其他專案的關聯¶
| 專案 | 關聯 |
|---|---|
| LINE Chatbot Boilerplate | 同為 LINE bot 開發工具鏈:boilerplate 解決「程式骨架」,本工具解決「Rich Menu 視覺設定」,互補 |
| LINE Bot Multimodal RAG (kkdai) | 同屬 LINE 生態;前者做對話智能,本工具做選單介面,合起來是一個完整 bot 的兩端 |
| WebToApp | 同為「把某種能力包成可立即使用的 GUI/App」的工具思路,DX 導向相通 |