Coolkid mascot CoolkidLab Build in Public. Level up together.
首頁新手教學免費工具AI 新聞GitHub 精選陪跑服務關於

新手教學 · AI Agent 實戰 · 永久免費 LINE 機器人 step-by-step

我用 AI 做了一個 LINE 機器人幫全家管行程:自然語言記事 + 自動提醒、永久免費

閱讀
摘要

短答給趕時間的人:做得出來,而且每個月 0 元。四樣東西湊起來就夠用:FastAPI 寫機器人的主程式、Supabase 存資料、Render 部署,再加 cron-job.org 每分鐘戳一次負責定時提醒。順便讓免費方案的服務不會閒置休眠。從申請 LINE 帳號到上線大約 4 到 6 小時。最容易卡住的是 LINE 後台預設開著的自動回覆,會蓋掉你自己寫的機器人邏輯。沒有任何錯誤訊息,我翻了 30 分鐘紀錄檔才知道。真正難的其實不在技術。機器人上線之後家人到現在都還沒加,只有我一個人在用。

我家常常出狀況。長輩看醫生的日期忘了,繳費單過期才發現,接小孩的時間也沒對齊。

我們家 LINE 群裡長期有人在喊「明天誰要去哪裡」。

但訊息一直被洗下去,到當天就沒人記得。

我想做的東西很簡單,就是一個

家人可以直接在私聊跟說「明天下午3點 媽媽 醫院回診 提前1小時提醒」,機器人記下來,時間到了自動推播給對的人。

需求很簡單,但真的動手做,照樣遇到三個問題。

這篇把整個流程重整成一步一步的做法,讀完你會做出一個永久免費的家族行事曆 LINE 機器人。

用到的四樣東西是 FastAPI、,再加上 -job.org。

範例是家族行程,但任何「LINE 私聊指令型機器人」都套得上,像是個人提醒、健身打卡、讀書心得記錄、客戶常見問答。

4-6 小時可以全部跑完。

LINE 機器人該用群組,還是一對一私聊?

直覺想法是,我們家本來就有 LINE 群,機器人加進群就好。

但寫了幾行程式之後,我發現群組有兩個問題。

第一,群組訊息會被洗掉。

每個家人都在傳貼圖、轉新聞、討論晚餐,行程指令很容易就被埋掉。

機器人也分不清楚,誰是要新增行程,誰只是在聊天。

第二,通知的精準度很差。

如果推播傳到群組,全家都會收到「媽媽明天看醫生」這則提醒。

不相關的人會覺得煩,真正該收到的人,在訊息海裡也一樣容易漏掉。

後來改成一對一私聊,再用一組邀請碼把家人綁成同一個家族。

每個家人各自跟機器人對話,新增行程的時候指定通知對象,時間到了,機器人就私訊那個人。

家人要先用同一組邀請碼綁進同一個家族,媽媽新增的「醫院回診」,才找得到爸爸來通知。

做完之後回頭看,群組跟私聊真正的差別,其實是「資料邊界」,不是技術選型。

群組是公共空間,一對一才有清楚的「誰要做什麼給誰」這層關係。

資料庫要選 Supabase 還是 Render PostgreSQL?

FastAPI 寫好之後,要找個地方存資料。

Render 自己有 PostgreSQL,但那不在免費方案裡,Supabase 則是給 500 MB 免費空間。

家裡一年新增 3,650 筆行程,也佔不到 1 MB,Supabase 綽綽有餘。

但 Supabase 給我的連線字串開頭是 postgresql://,貼進 跑起來就直接報錯。

我以為是密碼打錯,重設了一次,還是不行。

後來才發現,我用的 SQLAlchemy 非同步驅動要的是 postgresql+asyncpg:// 開頭,差一個字母,套件就找不到。

這種驅動前綴的問題,AI 看一眼錯誤堆疊就知道,但你不知道要問什麼的時候,會卡很久。

後來我養成一個習慣,先把錯誤訊息整段丟給 AI,請 AI 先告訴我這是哪一層的問題。

是驅動、是設定、是帳號密碼,還是防火牆?分清楚了,再決定要不要改程式。

為什麼 LINE 機器人只會回「感謝您加為好友」?(Auto-reply 一定要關)

Render 完, 設好,我傳了第一句「你好」測試。

結果機器人回我:「感謝您加為好友!我們會盡快回覆您。」

我整個傻住,回去翻 Render 的紀錄檔。

我自己寫的那段處理程式,完全沒有被呼叫過。

是我程式寫壞了?webhook 沒接到?還是網路有問題?

翻了 30 分鐘紀錄檔,一條線索也沒有。

最後我把整段丟給 AI 看,AI 一句話就點醒我:「你 LINE Developers Console 的 Auto-reply messages 有沒有關?」

那個設定我完全沒關過。

LINE 預設會用一段制式訊息回覆新好友,這段訊息會「先」於 webhook 觸發,等於蓋掉我自己寫的機器人邏輯。

回 console 把 Auto-reply 跟 Greeting messages 都關掉,再傳一次「你好」,機器人就正常回應了。

這個問題沒有任何錯誤訊息,沒有紀錄檔,也沒有錯誤堆疊。

新手幾乎都會碰到,因為這是 LINE 平台的「貼心預設」,不是程式寫錯。

要寫 LINE 機器人之前,先把 Auto-reply 跟 Greeting 都關掉,省下 30 分鐘。

Render 2025 砍掉免費 cron 之後怎麼辦?(改用 cron-job.org)

機器人跑起來之後,要做的是「時間到自動推播」這件事。

我以為 Render 會幫我跑 cron job,畢竟我在 render.yaml 裡就寫了一個 cron service。

結果部署的時候,Render 跳出一行訊息:「Cron Jobs are not available on the free tier.」

這是 2025 年中改的規定,免費方案不能跑 cron 了。

我那一刻心想完了,難道要開始付每個月 $7?

後來 AI 建議我用 cron-job.org,那是一個獨立的免費 cron 服務,每分鐘可以戳一次網址。

我在 Render 的 web service 裡寫了一個 /api/cron/dispatch 端點。

cron-job.org 每分鐘 GET 一次,端點就去檢查有沒有要發的通知,有就發出去。

這個做法意外比 Render 本來就有的 cron 還好用。

每分鐘戳一次,同時達成兩件事。

一個是派發到期的通知,另一個是喚醒 Render 免費方案的 web service,免得閒置 15 分鐘就自動休眠。

對我來說算是一石二鳥。

教訓是,當平台砍掉免費功能,外面通常已經有獨立的免費替代品。

先不要急著掏錢訂閱。

機器人的自然語言解析,一定要接 AI 嗎?

機器人的招牌功能,是讓家人可以直接傳一句「明天下午3點 媽媽 醫院回診 提前1小時提醒」。

機器人自動解析出時間、對象、事項,還有要提前多久提醒。

我第一個想法是接 Claude ,把整句訊息丟過去,請 Claude 回傳結構化的 JSON。

準確度應該很高,畢竟 LLM 處理自然語言這種東西特別強。

但寫到一半,我停下來算了一次成本。

如果每個家人每天傳 5 則訊息,每則都要呼叫一次 API,一個月就是幾百上千次。

這個專案的核心是「永久免費」,每個月固定花錢呼叫 AI,方向就不對了。

改成用 regex 加上一份中文時間詞典。

明天、後天、下下週這種詞,先對應成日期的偏移量,「下午3點」用 regex 抓出來。

「媽媽」「爸爸」這種家人稱謂,就拿家族成員清單去比對。

寫起來笨笨的,但是 0 元,0 延遲,也不用

AI 時代學到最反直覺的一件事,是不用什麼都接 AI。

regex 解得掉的,就不要花掉一次 API 呼叫。

AI 是好工具,但不是萬能解,尤其當你的專案限制是「永久免費」的時候。

機器人上線之後,怎麼讓家人真的開始用?

老實說,機器人已經上線了,但目前只有我一個人在用。

家人到現在都還沒加。

我自己每天傳 2-3 則:「明天下午4點 接小孩」「後天早上 繳水費」「下週三 媽媽 健檢 提前1天提醒」。

一週下來,確實一次都沒有忘記過。

但「我自己在用」跟「全家都在用」,是兩個世界。

家人不會主動去加機器人,要先看到實際的好處才會動。

下一步是先在 LINE 群組轉發我自己被準時提醒的截圖,讓家人覺得「這個東西好像有用」,再請他們掃 QR code 加好友。

做工具最難的其實是讓使用者真的開始用,不是技術。

這條 build-in-public 還沒走完,下一篇再回報家人用起來的進度。

永久免費的 LINE 機器人,怎麼從 0 做到 100?(5 步做完)

把上面 5 個問題整合進實作流程,下面這 5 步,就可以做出一個真的跑得起來的 LINE 機器人。

  1. 步驟 1,申請 LINE 帳號並且關掉 Auto-reply。去 developers.line.biz/console 建 Provider,再建 Messaging API channel,拿 Channel secret 跟 Channel access token。Messaging API 分頁裡的 Auto-reply messages 跟 Greeting messages 一定要先關掉,理由看第 3 節。
  2. 步驟 2,用 Supabase 建資料庫。到 supabase.com 註冊,按 New project,拿連線字串。注意 SQLAlchemy 的非同步驅動要把 postgresql:// 改成 postgresql+asyncpg://,理由看第 2 節。
  3. 步驟 3,用 Claude Code 寫 FastAPI 機器人。指令範本:「請建一個 FastAPI 專案,功能:1) /api/line/webhook 接 LINE 訊息,2) 用 regex 解析中文時間(明天下午3點、後天、下週三)加上對象(家人姓名)跟事項,3) 存到 Supabase,4) /api/cron/dispatch 端點檢查到期通知並且推播出去。資料庫 schema 自己設計,requirements.txt 寫清楚。」
  4. 步驟 4,部署到 Render。先 push 上 GitHub,到 render.com 連 repo,設好環境變數(LINE_CHANNEL_SECRET、LINE_CHANNEL_ACCESS_TOKEN、DATABASE_URL),按 Deploy。拿到 .onrender.com 網址,貼回 LINE Developers Console 的 webhook URL 設定。
  5. 步驟 5,設定 cron-job.org 觸發 dispatch。到 console.cron-job.org 註冊,按 CREATE CRONJOB,URL 填 https://你的-app.onrender.com/api/cron/dispatch,Schedule 選每分鐘,加一個 X-Cron-Secret header,按 CREATE。每分鐘戳一次同時做兩件事,一個是派發到期通知,一個是喚醒 Render 免費方案的 web service,理由看第 4 節。

跑完這 5 步,機器人就上線了。

4-6 小時可以全部跑完,這包含 LINE 帳號申請、Supabase 設定,還有部署時找問題的時間。

每月成本 NT$0,Render、Supabase、cron-job.org 這三樣的免費方案都是永久免費。

不想自己從頭設定怎麼辦?

上面這套自己跑大概要 4-6 小時。如果你符合下面任何一條,可能就不適合自己跑。

可以找「不想自己研究我教你」這個服務(規劃中)。

一對一帶你從 LINE 帳號申請、Supabase 跟 Render 設定、機器人開發,到部署整套跑完。

好處是不用自己摸索 3 個平台的介面,卡關有人帶,5 分鐘就解掉,4-6 小時一次到位。

代價很直接,就是要付費。

適合想做 LINE 機器人、但不想自己找問題,或是想要客製化功能的人。

永久免費 LINE 機器人的完整做法:1) 群組還是一對一私聊,看資料邊界決定。2) Supabase 免費資料庫,加上 asyncpg 驅動前綴這個雷。3) LINE 的 Auto-reply 跟 Greeting 一定要關,不關的話,機器人訊息會被預設回覆蓋掉。4) Render 2025 砍掉免費 cron,改用 cron-job.org 替代,每分鐘戳一次,同時派發通知跟喚醒 web service。5) 自然語言解析用 regex 而不是 LLM,永久免費就不要付 API 費用。6) 五步一步一步做完,從 LINE 申請、Supabase 建庫、Claude Code 寫 FastAPI、Render 部署,到 cron-job.org 觸發。每月成本 NT$0,4-6 小時可以全部跑完。範例是家族行事曆,個人提醒、健身打卡、客戶常見問答都套得上。

名詞解釋

排程(cron)
讓程式「每天 8 點」「每小時」自動執行的定時器。自動發文、定期抓資料都靠它。
Render
雲端程式代管服務,免費方案能跑小型後端程式(例如 LINE 機器人)。免費版 15 分鐘沒流量會休眠,喚醒要 15-50 秒。
LINE 機器人
在 LINE 裡自動回覆、主動推播訊息的機器人。台灣家庭幾乎人人用 LINE,是自動化通知的最佳入口。
機器人(bot)
自動執行特定任務的程式,例如 LINE 機器人自動回訊息、發文機器人每天定時發貼文。
Supabase
免費起步的雲端資料庫服務,提供資料庫+登入驗證+API,個人專案很夠用。
API(應用程式介面)
程式跟程式之間溝通的窗口。例如你的程式透過 LINE 的 API 自動發訊息、透過 Google 的 API 讀試算表。
Webhook
「事件發生時,A 服務自動通知 B 服務」的機制。例如有人傳訊息給你的 LINE 機器人,LINE 就透過 webhook 把訊息轉給你的程式處理。
資料庫(database)
專門儲存、查詢大量資料的系統。網站的會員、留言、紀錄都放這裡。
部署(deploy)
把做好的網站或程式「推上線」讓所有人用得到的動作。
環境變數(environment variable)
放在系統層、不寫進程式碼的設定值,最常用來放 API 金鑰等機密,避免跟著程式碼被公開。
API 金鑰(API key)
服務發給你的一串密碼,程式用它證明「我有權限使用這個服務」。絕對不能公開、不能寫死在程式碼裡。

全站名詞表 · 161 條 →

不想錯過 Lab 的新文章?
訂閱後有新文章上線,就寄信通知你,
點有興趣的進來看就好。

填 email 就完成訂閱(信由 Substack 代寄)、隨時取消、不轉賣 email。

如果內容對你有用就太好了
隨喜斗內

Buy Me a Coffee at ko-fi.com
NEXT CHAPTER ▸ 我用 AI 做了一個每天 8 點自動發 Threads 的小機器人

▸ 常見問題

LINE 機器人怎麼做?永久免費可能嗎?

可以。技術上用四樣東西:FastAPI 當後端,Supabase 當資料庫(500 MB 免費),Render Web Service 負責部署(免費方案),cron-job.org 負責定時觸發(免費)。每月成本 NT$0。完整五個步驟:1) LINE Developers 申請帳號並關掉 Auto-reply,2) Supabase 建資料庫,3) Claude Code 寫 FastAPI,4) Render 部署,5) cron-job.org 設定每分鐘觸發。4-6 小時可以全部跑完。詳細看本文第 7 節。

為什麼 LINE 機器人收到「感謝您加為好友」?

因為 LINE Developers Console 預設開啟 Auto-reply messages,新好友會收到一段制式回覆,這段訊息會「先」於你的 webhook 觸發,等於蓋掉自己的機器人邏輯。解法是去 Messaging API 分頁,把 Auto-reply messages 跟 Greeting messages 都關掉。這個雷沒有錯誤訊息,也沒有紀錄檔,新手幾乎都會碰到,浪費 30 分鐘以上。詳細看本文第 3 節。

Render 2025 砍掉免費 cron 怎麼辦?

用 cron-job.org 免費替代。在 Render web service 寫一個 /api/cron/dispatch 端點,讓 cron-job.org 每分鐘 GET 一次。一石二鳥,一邊派發到期通知,一邊喚醒 Render 免費方案的 web service,避免閒置 15 分鐘就休眠。設定 5 分鐘搞定,永久免費。教訓是當平台砍掉免費功能,外面通常已經有獨立的免費替代品,先不要急著付費。詳細看本文第 4 節。

LINE 機器人自然語言 parser 一定要接 AI 嗎?

不一定,要看情境。簡單的「明天下午3點 媽媽 醫院」這種固定格式,用 regex 加中文時間詞典就夠了,明天、後天、下下週對應成日期,下午3點用 regex 抓,家人姓名查清單。0 元,0 延遲,也不用 API key。AI 留給真的需要理解上下文的場景,例如「老媽下次回診那天」要從歷史紀錄推算。每個月固定呼叫 API,對「永久免費」的專案來說方向不對。詳細看本文第 5 節。

LINE 機器人該用群組還是 1-on-1 私聊?

看資料邊界。群組適合公共功能,像是投票、答題、群組查詢,缺點是訊息會被洗掉,通知精準度也差。一對一適合個人提醒這種有清楚對象的功能,每個用戶各自跟機器人對話,通知比較精準。家族行事曆我選一對一,再用邀請碼綁定家族,每個家人各自對話,新增行程時指定通知對象,時間到了機器人就私訊那個人。詳細看本文第 1 節。

Supabase 連線字串貼進 .env 跑不起來怎麼辦?

多半是驅動前綴的問題。Supabase 給的字串開頭是 postgresql://,但 SQLAlchemy 的非同步驅動要 postgresql+asyncpg:// 才跑得動。差一個字母,套件就找不到,而且完全不會報你看得懂的錯。解法是把 postgresql:// 改成 postgresql+asyncpg://。這種錯誤訊息整段丟給 Claude Code,AI 一眼就能定位到驅動層。詳細看本文第 2 節。

看完這篇之前先確認:

適合你
  • 想做給家人 / 小團體用的 LINE 機器人
  • 想用永久免費三件套架構(FastAPI + Supabase + Render)
  • 想學自然語言 parser 該不該全交給 AI
不適合
  • 已有付費 LINE OA 月費方案的人
  • 商用要走 Verified 路線的人
  • 不在乎免費額度限制的人

看完想自己做一個、卻不知道從哪一步下手的話,可以看 AI Workflow 陪跑(NT$ 1,999)。一對一陪你把手上那個場景做到會自己跑。

← 回新手教學 · 看「自動化怎麼做」這個主題

⚠ 本站所有內容僅供教育與研究用途,不構成投資建議,不保證任何獲利。投資有風險,使用者須自行判斷並承擔結果。
TAO 道 · Hikari Zen YouTube ↗
音樂透過 YouTube 播放
♪ TAO 道 · Hikari Zen — Japanese Zen Music(YouTube)