開發工具箱系列:為什麼工程師要自己刻一個?Next.js 內部工具開發實錄

更新 發佈閱讀 10 分鐘
這篇文章是「開發工具箱系列」的第一篇,記錄我為什麼決定從零用 Next.js 打造一個專屬的行銷工程內部工具箱,以及技術選型背後的思考。如果你也曾想過「乾脆自己刻一個」,這篇或許能給你一些參考。

有一天下午,我收到同事的訊息,附件是一份從 WordPress 後台複製出來、滿是殘留 class 和 inline style 的 HTML。她已經花了將近半小時手動清格式,但還是沒清乾淨。

這件事,我聽過不止一次。

我們的行銷團隊每天都在做幾件高度重複的事:把文章從草稿站搬到上架站、手動核對各社群帳號的數據、用 Excel 追蹤客戶發票有沒有付款。這些事情不難,但每次都要花時間,而且很容易出錯。

我盤算了一下:如果花幾週把這些流程工具化,之後每個月能省下多少小時?答案讓我開始動手。

問題:手工作業吃掉了多少時間?

在開始動手之前,我先把團隊的重複性工作列了一張清單:

  • 每篇文章上架前,要手動清理從 Elementor 複製出來的 HTML 格式——平均每篇花 30 分鐘
  • 每週要手動到各帳號查看愛心數、留言數、觀看數,填到試算表
  • 客戶發票開立後,要在 Excel 追蹤付款狀態,容易漏催款
  • 推薦文需要先搜尋競品、整理關鍵字,再動手寫,人工作業耗時

這些加起來,一週輕易就有 5 到 8 小時消耗在可以自動化的重複工作上。

評估過 SaaS,為什麼最後還是自己做?

市面上有很多工具宣稱能解決這些問題,我確實評估過幾個方向。

HTML 清洗工具

有些線上工具可以移除 HTML 標籤,但無法根據不同客戶套用不同的樣式規則,更無法自動生成目錄、處理 FAQ 區塊、保留 emoji 圖示。這些細節對我們來說很重要,一個都不能少。

社群監控平台

市面上的社群監控 SaaS 動輒每月數千元,功能遠超我們需要的範圍。我們只需要追蹤固定幾個帳號的基本數據,不需要輿情分析、競品比較等進階功能。

發票管理系統

現有的財務 SaaS 介面複雜,台灣電子發票的串接方式每家也不太一樣,用現成工具反而要花更多時間客製化。

最後的決定很簡單:自己做一個,完全符合工作流程,資料也留在自己手上。

技術選型:每個決定背後的理由

我希望這個工具箱能長期維護,所以在開始之前認真想清楚了技術架構。

Next.js 16 App Router

選 Next.js 的原因很直接:前後端放在同一個專案裡API Route 讓我不需要另外建一個 Express 或 Python 伺服器。HTML 清洗、Webhook 觸發、AI 生成等後端邏輯,全部寫在同個 repo,部署時只要一個服務,維護負擔大幅降低。

App Router 的 Server Component 讓部分資料處理可以直接在伺服器端完成,不用繞到客戶端再發 API,架構更簡潔。

TypeScript

純粹是長期維護的考量。這個工具箱預計會持續增加功能,如果全程用 JavaScript,幾個月後回來修改,函式的輸入輸出全憑記憶。TypeScript 的型別定義等於是免費的文件,省去大量反查程式碼的時間。

Tailwind CSS v4

快速刻 UI 的首選。不需要另外維護一份 CSS 檔,設計一致性也比較容易掌控。Tailwind CSS v4 改用 CSS-native 的設定方式,少了一個設定檔,整體更乾淨。

Zeabur(而非 Vercel)

這個選擇可能比較少人想到,但對我來說是關鍵決定。

Vercel 雖然是部署 Next.js 的主流選擇,但它的免費方案是 Serverless 架構——每次請求是獨立的,沒有持久化的磁碟空間,意味著 SQLite 資料庫完全無法使用。

Zeabur 支援 Volume 掛載,可以把 SQLite 檔案存在持久化磁碟上。加上設定非常簡單,幾乎是把 Vercel 的使用體驗搬到支援真實後端的環境裡。

工具箱現在有哪些功能?

經過幾個月的迭代,工具箱目前包含以下九個功能模組:

模組名稱

功能說明

文章上架工具

四步驟精靈,把草稿 HTML 清洗成符合客戶樣式的上架版本

IG 監控報告

自動同步追蹤帳號的貼文數據,支援篩選、排序

推薦文生成器

填入關鍵字與品牌資訊,讓 AI 自動產出推薦文章草稿

精選知識文章

整理 AI 趨勢與 SEO 新知,方便團隊查閱

部落格文章生成器

自動抓取站內連結、生成文章初稿

財務發票管理

建立、開立、追蹤台灣電子發票

GSC 排名查詢

串接 Google Search Console,直接在工具箱看關鍵字排名

社群貼文追蹤

追蹤社群貼文的發布與成效

AI 聊天機器人

浮動聊天視窗,隨時回答工具箱相關問題

架構設計的三個原則

整個工具箱在架構上遵守幾個核心原則,讓它在快速迭代的同時保持可維護性。

一、一個功能,一個路由

每個工具有自己的路由,彼此獨立。壞了一個功能,不影響其他工具的正常運作。這樣的設計讓我可以隨時下架或暫停某個功能,不用動到整個應用。

二、資料盡量留在自己手上

除了少數必須串接外部 API 的功能(電子發票、社群數據),其他資料都存在自己的資料庫或 localStorage。不把核心業務資料交給第三方平台,是這個工具箱的基本原則。

三、不過度設計

這是內部工具,不是 SaaS 產品。能用簡單方式解決的,就不引入複雜的架構。等真的需要再優化,不為假設中的未來需求過度設計。

開發過程的實際心得

做工具箱和做產品最大的差異,是使用者就在你旁邊

每次新功能上線,隔天就有人在用,立刻有真實的使用回饋。「這個步驟可以跳過嗎?」「圖片替換能不能一次全部填?」這些回饋比任何 user research 都直接。這種緊密的回饋循環,讓每次迭代都很有動力。

另一個心得是:完美是進度的敵人。工具箱一開始只有文章上架工具一個功能,設計也很陽春。但因為它解決了一個真實的痛點,大家開始用,才有後來不斷加功能的動力。先做出能用的,再慢慢變好。

常見問題 FAQ

Q1:Next.js 適合用來做內部工具嗎?

非常適合Next.js 的 API Route 讓前後端整合在同一個專案,不用另外維護一個後端服務。對於中小型的內部工具來說,這種架構的開發和維護成本都很低。如果你已經熟悉 React,上手 Next.js 的內部工具開發幾乎沒有學習曲線。

Q2:為什麼不用 Python + Flask 做後端?

如果團隊成員以 Python 為主,Flask 或 FastAPI 確實是好選擇。我選 Next.js 的原因是:前端 UI 也需要快速迭代,用同一套語言(TypeScript)處理前後端,可以減少切換語境的摩擦。這是個團隊技術棧的選擇,沒有絕對的對錯。

Q3:Zeabur 和 Vercel 部署 Next.js 有什麼實際差異?

最關鍵的差異是資料持久化能力。Vercel 的 Serverless 架構沒有持久磁碟,每次請求結束後檔案系統狀態就消失,無法使用 SQLiteZeabur 支援 Volume 掛載,可以讓 SQLite 資料庫正常運作。如果你的工具需要本機資料庫,Zeabur 是更適合的選擇。

Q4:自己做內部工具需要多久才能上線?

第一個功能大約花了一週做出可用版本。從有想法到第一個同事開始用,差不多是五個工作天。之後的每個新功能,快的三天、慢的一週。關鍵是先做出能解決痛點的最小版本,而不是一次把所有功能都做完。

Q5:這個工具箱只適合工程師嗎?需要會寫程式才能用嗎?

使用工具箱完全不需要寫程式。工具箱的設計目標就是讓行銷人員、編輯、業務等非技術職能的同事直接上手使用。唯一需要技術背景的部分,是最初的建置與部署,以及日後新增功能的開發。一旦建好之後,日常操作就跟使用一般網頁工具一樣直覺。

總結

自己做工具箱,不是每個團隊都需要走的路。但如果你遇到以下幾個條件同時成立,這條路非常值得考慮:

  • 團隊有高度重複的手工作業流程
  • 現有 SaaS 工具要嘛太貴、要嘛功能不符需求
  • 團隊裡有人能寫程式,或願意學
  • 對資料掌控度有要求

用 Next.js + TypeScript + Zeabur 這套組合,從想法到第一個功能上線,一週內可以完成。之後隨著使用回饋持續迭代,工具箱會愈來愈符合你們自己的工作流程。

這個系列接下來幾篇,我會分別深入每個功能模組的技術細節。下一篇是文章上架工具——HTML 清洗精靈是怎麼做的,敬請期待。


本系列文章

留言
avatar-img
Q kangber|AI x 自動化實驗室
0會員
3內容數
電商物流自動化專員出身、現職行銷公司 AI 工程師,專注於用 n8n 幫中小企業把重複工作自動化。這裡記錄我實際拆解流程、串 API、踩坑、復活的過程。如果你也對AI結合自動化流程有興趣,歡迎一起研究。
你可能也想看
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
使用 Claude Code 時遇到 API Error 400?這通常是「思考模式」格式驗證失敗所致。本文分析錯誤成因並提供修復建議,同時詳細教學在 Linux 環境下切換 Claude 模型的三種實用方法,助你快速排除障礙。
Thumbnail
使用 Claude Code 時遇到 API Error 400?這通常是「思考模式」格式驗證失敗所致。本文分析錯誤成因並提供修復建議,同時詳細教學在 Linux 環境下切換 Claude 模型的三種實用方法,助你快速排除障礙。
Thumbnail
Google 於 2025 年推出革命性開發平台 Antigravity,搭載 Gemini 3 Pro 模型,透過 AI 代理人自動化軟體開發流程,支援多模型切換、Artifacts 驗證系統、雙模式介面,目前完全免費開放使用。本文深度解析其核心技術、與競品比較及使用方式。
Thumbnail
Google 於 2025 年推出革命性開發平台 Antigravity,搭載 Gemini 3 Pro 模型,透過 AI 代理人自動化軟體開發流程,支援多模型切換、Artifacts 驗證系統、雙模式介面,目前完全免費開放使用。本文深度解析其核心技術、與競品比較及使用方式。
Thumbnail
在 AI 開發的江湖裡,人人都說「快」才是王道。 Claude Code、Cursor、Vibe Coding 每一招都讓你在數分鐘內構出一個雛形。 但當原型變成產品、團隊從一人變多人,你就會發現:快,不再是問題,穩,才是王道。 而讓專案穩下來的心法,叫做 - Spec Kit(規格驅動開發
Thumbnail
在 AI 開發的江湖裡,人人都說「快」才是王道。 Claude Code、Cursor、Vibe Coding 每一招都讓你在數分鐘內構出一個雛形。 但當原型變成產品、團隊從一人變多人,你就會發現:快,不再是問題,穩,才是王道。 而讓專案穩下來的心法,叫做 - Spec Kit(規格驅動開發
Thumbnail
本文整理了 Claude Code 開發者 Boris Cherny 分享的十大實用心法,涵蓋平行作業、計畫模式(plan mode)、自訂 Skills、Subagents等,旨在幫助開發者、AI Coder、Vibe Coder 更有效率地利用 Claude Code 進行 AI 寫程式!
Thumbnail
本文整理了 Claude Code 開發者 Boris Cherny 分享的十大實用心法,涵蓋平行作業、計畫模式(plan mode)、自訂 Skills、Subagents等,旨在幫助開發者、AI Coder、Vibe Coder 更有效率地利用 Claude Code 進行 AI 寫程式!
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
本文介紹一款名為VibeTunnel的遠端桌面工具,它能簡化複雜的SSH設定,並完美支援Claude Code,讓使用者隨時隨地透過瀏覽器存取終端機,即時監控Claude code的工作狀態,提升遠端辦公效率。此外,本文也提供透過Tailscale建立VPN遠端連線的方法,徹底打破地域限制。
Thumbnail
本文介紹一款名為VibeTunnel的遠端桌面工具,它能簡化複雜的SSH設定,並完美支援Claude Code,讓使用者隨時隨地透過瀏覽器存取終端機,即時監控Claude code的工作狀態,提升遠端辦公效率。此外,本文也提供透過Tailscale建立VPN遠端連線的方法,徹底打破地域限制。
Thumbnail
Claude最近(2025年2月24日)出了新的3.7Sonnet被譽為目前最智能的模型,特別是在編程和開發領域展現出卓越的能力。 所以最近訂閱了Claude,聽說他能夠讓不會寫程式的人透過AI-assisted development的方法完成,而且需要修改的地方最少,所以試著來玩玩看。
Thumbnail
Claude最近(2025年2月24日)出了新的3.7Sonnet被譽為目前最智能的模型,特別是在編程和開發領域展現出卓越的能力。 所以最近訂閱了Claude,聽說他能夠讓不會寫程式的人透過AI-assisted development的方法完成,而且需要修改的地方最少,所以試著來玩玩看。
Thumbnail
想讓 AI 助手存取你的本地筆記、檔案或資料庫?本文從實際痛點出發,完整解析 MCP如何成為 AI 與工具溝通的標準協定。帶你打造第一個 MCP Server,讓 ChatGPT 或 Claude 能自動讀取你的個人知識庫。讓你快速掌握 AI Agent 開發的核心技術。
Thumbnail
想讓 AI 助手存取你的本地筆記、檔案或資料庫?本文從實際痛點出發,完整解析 MCP如何成為 AI 與工具溝通的標準協定。帶你打造第一個 MCP Server,讓 ChatGPT 或 Claude 能自動讀取你的個人知識庫。讓你快速掌握 AI Agent 開發的核心技術。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
Claude Code 提供了一套 可自動化執行的 Hooks 機制,幫助我們在大型專案中避免常見錯誤、保持程式碼品質穩定。這篇文章將分享幾個實用的 Claude Code Hooks 範例與進階技巧,讓你打造更聰明、更可靠的開發流程。
Thumbnail
Claude Code 提供了一套 可自動化執行的 Hooks 機制,幫助我們在大型專案中避免常見錯誤、保持程式碼品質穩定。這篇文章將分享幾個實用的 Claude Code Hooks 範例與進階技巧,讓你打造更聰明、更可靠的開發流程。
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News