這是「開發工具箱系列」的第三篇,介紹 IG 監控報告模組的設計思路。如果你需要定期追蹤多個社群帳號的貼文成效,卻不想付社群監控工具的月費,這篇或許能給你一個不同的方向。
這套系統的核心理念只有一個:用已經在用的免費工具(Google Sheets)當資料庫,用自動化工具(n8n)排程同步資料,用自己寫的前端呈現結果。三個工具組合在一起,就能做到市售工具幾千元月費的基本功能。
問題:手動查 IG 數字有多低效
我們的行銷團隊每週固定要做一件事:分別打開追蹤中的各個 IG 帳號,查看近期每篇貼文的愛心數、留言數、觀看數,然後把數字填到 Google Sheets 裡,最後再分析哪種類型的內容成效比較好。
這個流程有幾個明顯的問題:
- 帳號一多,手動查閱的時間成本線性增加
- 資料由人工填寫,容易有筆誤,也難以做歷史趨勢比較
- 每個人對「成效好」的定義不一致,缺乏統一的可視化呈現讓整個團隊對齊
- 市售社群監控工具要嘛太貴,要嘛功能遠超需要的範圍
我需要的東西其實很簡單:一個頁面,列出所有追蹤帳號的近期貼文,可以按不同指標排序,方便開會時快速拉出來討論。
架構設計:Google Sheets 當輕量資料庫
最關鍵的設計決策是:用什麼存資料?
傳統思路是建一個資料庫(PostgreSQL、MySQL),但對這個使用場景來說太重了。我需要的是一個:
- 可以讓 n8n 直接寫入資料的地方
- 也能讓人工手動補資料的地方
- 不需要寫 migration、不需要維護 schema 的地方
Google Sheets 完全符合這三個條件。
更巧妙的是,Google Sheets 提供了 CSV 格式的匯出 URL,不需要 OAuth 授權,直接用 fetch 就能拿到資料:
- 試算表設為「知道連結的人可以查看」後,CSV 匯出 URL 可以直接存取
- Next.js 的 API Route 定期從這個 URL 抓資料,解析 CSV 後回傳給前端
- 這個方法省去了 Google Sheets API 的 OAuth 流程,大幅降低開發複雜度
試算表裡有兩個工作表:一個放貼文報告資料(發佈時間、帳號、內容摘要、愛心數、留言數、觀看數),一個放追蹤清單(帳號 URL、顯示名稱、頭像)。
n8n 定時同步:自動化資料寫入
n8n 負責做最苦的事:定期爬取各帳號的貼文數據,寫入 Google Sheets。
整體的資料流程是這樣的:
- n8n 排程觸發:每天固定時間自動執行
- 讀取追蹤清單:從試算表的追蹤帳號工作表取得帳號列表
- 抓取貼文數據:針對每個帳號取得近期貼文的互動數據
- 寫回試算表:把新資料寫入貼文報告工作表
工具箱這邊提供了一個「手動觸發同步」的按鈕,呼叫 /api/ig-n8n-trigger 打到 n8n 的 Webhook,讓使用者可以在需要時立即更新資料,不用等排程。
把繁重的爬蟲邏輯交給 n8n 處理,Next.js 只負責觸發和呈現結果,這種分工讓兩邊的程式碼都保持簡單。
追蹤帳號管理:Google Apps Script 當輕量 API
追蹤清單除了查看,還需要支援新增和刪除帳號。直接操作 Google Sheets API 需要 OAuth,流程繁瑣。
解法是用 Google Apps Script 部署一個輕量的 Web App,作為試算表的 CRUD API:
POST請求:新增一筆追蹤帳號到清單工作表DELETE請求:從清單工作表移除指定帳號
Apps Script 部署為 Web App 後,會產生一個公開的 URL,Next.js 的 /api/ig-track 端點把使用者的操作轉發到這個 URL,完成資料的新增刪除。整個流程不需要 Google OAuth,也不需要維護任何後端資料庫。
前端呈現:篩選、排序、貼文卡片
資料來了之後,前端負責把它呈現得好看且實用。主要功能包含:
篩選與排序
- 帳號篩選:可以只看特定帳號的貼文
- 日期範圍:設定要查看哪個時間區間的資料
- 排序方式:依照愛心數、留言數、觀看數、播放數、發佈時間排序
貼文卡片
每篇貼文以卡片形式呈現,包含:
- 帳號頭像與顯示名稱
- 發佈時間
- 貼文內容摘要
- 互動數據(愛心、留言、觀看、播放)
- 精選留言
- 原始貼文連結
這個卡片設計讓開會時可以直接拉開這個頁面討論,不用再打開 IG app 逐一查看。
頭像代理:繞過 IG 的圖片保護
IG 的頭像圖片有跨來源保護,直接在 <img> 標籤裡用 IG 的圖片網址,瀏覽器會因為 CORS 政策而無法顯示。
解法是在 Next.js 建立一個圖片代理端點 /api/avatar:
- 前端請求
/api/avatar?url=帳號URL - 伺服器端抓取對應 IG 頁面的
og:image標籤,取得頭像 URL - 再把圖片串流回給前端
- 如果抓取失敗,fallback 到 DiceBear API 根據帳號名稱生成一個頭像
透過伺服器端代理,繞過了瀏覽器的 CORS 限制,同時提供了失敗時的優雅降級方案。
常見問題 FAQ
Q1:Google Sheets 當資料庫,資料量大了會不會太慢?
對於這個使用場景來說,Google Sheets 完全夠用。我們追蹤約 10 個帳號,每帳號每週同步 10–20 篇貼文,一年累計幾千筆資料。試算表在這個量級的存取速度幾乎感覺不到延遲。如果資料量成長到數萬筆以上,或是需要複雜查詢,才需要考慮遷移到真正的資料庫。
Q2:n8n 需要自己架嗎?有沒有更簡單的方式?
n8n 可以用雲端版(n8n.cloud),不需要自己架伺服器,有免費方案可以試用。如果想完全掌控,也可以像我一樣把 n8n 部署在 Zeabur 上,跟工具箱主服務放在同一個平台,方便管理。另外,Make(前身 Integromat)或 Zapier 也是可以達到類似效果的替代方案。
Q3:為什麼不直接用 IG 的官方 API?
IG 官方的 Graph API 需要通過 Facebook 的審核流程,而且對個人帳號的存取權限有較多限制。對於內部追蹤用途,透過 n8n 直接讀取頁面資料的方式更快、更靈活,不需要等待審核。當然,這種方式需要注意 IG 的使用條款,避免高頻率的自動化存取。
Q4:追蹤的帳號數量有上限嗎?
技術上沒有硬性上限,但追蹤的帳號愈多,n8n 每次同步花的時間就愈長,被平台偵測到異常存取的風險也愈高。建議控制在 20 個帳號以內,並設定合理的同步頻率(例如每天一次),在實用性和安全性之間取得平衡。
Q5:如果 IG 改版,整套系統會壞掉嗎?
有這個風險。依賴爬蟲或非官方 API 的系統,都存在平台改版導致失效的可能。這也是這套方案適合「內部工具」而非「商業產品」的原因——壞了,修一下就好;如果是對外的服務,就需要考慮更穩健的官方 API 方案。建置時做好心理準備,遇到平台改版時快速修復,而不是期望它永遠不壞。
總結
這套 IG 監控報告系統的核心是善用免費工具的組合,而不是從頭打造所有東西:
- Google Sheets:免費、彈性、可手動補資料,當輕量資料庫剛剛好
- n8n:負責自動化資料同步,工具箱只管觸發和呈現
- Google Apps Script:當試算表的輕量 CRUD API,省去 OAuth 複雜度
- Next.js API Route:代理圖片、串接各端點,前後端整合在一起
這套組合的月費是零元,而且完全自己掌控資料。對於不需要即時資料、每天或每週同步一次就夠的使用場景,這是一個非常划算的方案。
下一篇會介紹 AI 推薦文生成器——如何讓 Claude 透過 n8n Webhook 非同步幫你寫文章,以及 JobId 狀態機的設計細節。
對更多AI與自動化流程有興趣的讀者歡迎到我的品牌官網觀看唷~
本系列文章
- 第 1 篇:為什麼工程師要自己做工具箱?Next.js 內部工具開發實錄
- 第 2 篇:文章上架再也不怕格式爆掉:我如何用 Next.js 做 HTML 清洗精靈
- 第 3 篇:用 Google Sheets + n8n 做 IG 貼文監控報告:不花錢的社群數據追蹤方案(本篇)
- 第 4 篇:讓 Claude AI 幫你寫推薦文:Webhook 非同步任務實作全記錄
- 第 5 篇:從聊天機器人到財務發票:工具箱裡的兩個彩蛋功能
- 第 6 篇:部署到 Zeabur:Next.js 全端 App 上線與多環境管理心得


















