Coolkid mascot CoolkidLab

新手教學 · 永久免費 LINE Bot step-by-step · 最後更新:2026-05-15

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

家裡常常出狀況。長輩看醫生的日期忘了、繳費單過期才發現、接小孩時間沒對齊。我們家 LINE 群裡長期有人在喊「明天誰要去 X」,但訊息一直被洗下去,到當天就沒人記得。

我想做的東西很簡單:一個 LINE Bot,家人可以直接在私聊跟它說「明天下午3點 媽媽 醫院回診 提前1小時提醒」,它記下來,時間到自動 push 給對的人。

需求簡單,但實作照樣撞了三個雷。這篇把整個流程重整成 step-by-step:讀完你會做出一個永久免費的家族行事曆 LINE Bot(FastAPI + Supabase + Render + cron-job.org 三件套)。範例是家族行程,但任何「LINE 私聊指令型 bot」都套得上:個人提醒、健身打卡、讀書心得記錄、客戶 FAQ。4-6 小時可全跑完。

LINE Bot 該用群組還是 1-on-1 私聊?(資料邊界決定)

直覺想法:我們家本來就有 LINE 群,bot 加進群就好。但寫了幾行 code 之後我發現群組有兩個問題。

一:群組訊息會被洗。每個家人都在傳貼圖、轉新聞、討論晚餐,行程指令很容易被埋掉,bot 也分不清誰要新增、誰只是聊天。

二:通知精準度差。如果 push 通知傳到群組,全家都會收到「媽媽明天看醫生」的提醒——不對的人會煩,對的人在訊息海裡也容易漏。

後來決定改 1-on-1 私聊 + 邀請碼綁定家族:每個家人各自跟 bot 對話,新增行程時指定通知對象,到時間 bot 私訊那個人。家人需要先用一組邀請碼把彼此綁進同一個家族,這樣 mom 新增的「醫院回診」才能找得到 dad 來通知。

做完之後回頭看,群組跟私聊的差別不是技術選型,是「資料邊界」。群組是公共空間,1-on-1 才有清楚的「誰要做什麼給誰」這層關係。

LINE Bot 資料庫怎麼選?(Supabase 免費 vs Render PostgreSQL)

FastAPI 寫好之後要找地方存資料。Render 自己有 PostgreSQL,但不在 free tier;Supabase 給 500 MB 免費。家裡一年新增 3,650 筆行程也佔不到 1 MB,Supabase 綽綽有餘。

但 Supabase 給我的連線字串是 postgresql://...,貼進 .env 跑起來直接報錯。我以為是密碼錯,重設了一次還是不行。後來才發現是我用的 SQLAlchemy 異步驅動要 postgresql+asyncpg://... 開頭,差一個字母套件就找不到。

這種 driver 前綴的雷,AI 看 stack trace 一眼就知道,但你不知道要問的時候很卡。後來我習慣是先把錯誤訊息整段丟給 agent,請它先告訴我這是什麼層的問題(driver / 設定 / 帳密 / 防火牆),再決定要不要改 code。

為什麼 LINE Bot 收到「感謝您加為好友」?(Auto-reply 雷必關)

Render 部署完,webhook 設好,我傳第一句「你好」測試。結果 bot 回我:「感謝您加為好友!我們會盡快回覆您。」

我整個傻住。回去翻 Render log——我自己寫的 handler 完全沒被呼叫過。是我 code 寫壞了?webhook 沒接到?網路問題?翻了 30 分鐘 log 沒線索。

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

完全沒關。LINE 預設會用一段制式訊息回新好友,這段訊息會「先」於 webhook 觸發,等於蓋掉我自己的 bot 邏輯。回 console 把 Auto-reply 跟 Greeting messages 都關掉,再傳一次「你好」,bot 正常回應了。

這個雷沒有任何錯誤訊息、沒有 log、沒有 stack trace。新手 100% 會撞到,因為這是 LINE 平台的「貼心預設」,不是 code bug。要寫 LINE bot 之前先把 Auto-reply 跟 Greeting 都關掉,省 30 分鐘。

Render 2025 砍掉免費 cron 怎麼辦?(cron-job.org 免費替代)

Bot 跑起來之後要做「時間到自動推播」這件事。我以為 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 服務,每分鐘可以戳一個 URL。我在 Render 的 web service 裡寫一個 /api/cron/dispatch 端點,cron-job.org 每分鐘 GET 一次,端點檢查資料庫有沒有要發的通知、發完。

這個方案意外比 Render 內建 cron 還好:cron-job.org 每分鐘戳一次同時達成兩件事——派發到期通知 + 喚醒 Render 免費方案的 web service(避免閒置 15 分鐘 sleep)。一石二鳥。

教訓是:當平台砍免費功能,通常已經有獨立的免費替代品在外面。先不要急著付費。

LINE Bot 自然語言 parser 要接 AI 嗎?(regex vs LLM 決策)

Bot 的招牌功能是讓家人能直接傳「明天下午3點 媽媽 醫院回診 提前1小時提醒」,bot 自動 parse 出時間 + 對象 + 事項 + 提醒前置時間。

我第一個想法是接 Claude API:丟整句訊息給 Claude,請它回傳結構化 JSON。準確度應該很高,畢竟 LLM 對自然語言這種東西超強。

但寫到一半我停下來算成本。如果每個家人每天傳 5 則訊息,每則都 call 一次 API——一個月幾百上千次 API call。我這個專案的核心是「永久免費」,每月固定花錢 call AI 不對。

改用 regex + 中文時間詞典:明天/後天/下下週這種詞 mapping 成日期偏移,「下午3點」這種用 regex 抓,「媽媽/爸爸」這種家人稱謂從家族成員清單去比對。寫起來笨笨的,但 0 元、0 延遲、0 API key。

AI 時代學到的反直覺事情:不是所有東西都要接 AI。能用 regex 解的不要花 API call。AI 是好工具,但不是萬能解,特別是當你的專案 constraint 是「永久免費」的時候。

Bot 上線後家人 adoption 怎麼推?(最難的不是 build 是 adoption)

老實說,bot 已經上線了,但目前只有我一個人在用。家人還沒加。

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

但「我自己在用」跟「全家都在用」是兩個世界。家人不會主動加 bot——他們要看到實際好處才會。下一步是先在 LINE 群組轉發我自己被準時提醒的截圖,讓他們覺得「這個東西好像有用」,再請他們掃 QR code 加好友。

做工具最難的不是技術,是讓使用者真的開始用。這條 build-in-public 還沒走完,下一篇再回報家人 adoption 進度。

永久免費 LINE Bot 怎麼從 0 做到 100?(5 步 step-by-step)

把上面 5 個雷整合進實作流程,下面 5 步可以做出一個能跑的 LINE Bot:

  1. Step 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. Step 2 — Supabase 建資料庫。supabase.com 註冊 → New project → 拿連線字串。注意 SQLAlchemy async driver 要把 postgresql:// 改成 postgresql+asyncpg://(看第 2 節)。
  3. Step 3 — Claude Code 寫 FastAPI bot。指令範本:「請建一個 FastAPI 專案,功能:1) /api/line/webhook 接 LINE 訊息;2) 用 regex parser 解析中文時間(明天下午3點/後天/下週三)+ 對象(家人姓名)+ 事項;3) 存到 Supabase;4) /api/cron/dispatch 端點檢查到期通知 push 出去。資料庫 schema 自己設計。requirements.txt 寫清楚。」
  4. Step 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. Step 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 步 bot 上線。4-6 小時可全跑完(含 LINE 帳號申請 + Supabase 設定 + 部署 debug)。月成本 NT$0(Render Free + Supabase Free + cron-job.org Free 三件套永久免費)。

不想自己 setup 怎麼辦?

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

可以找 不想自己研究我教你(規劃中)。1-on-1 帶你從 LINE 帳號申請、Supabase / Render 設定、bot 開發、部署整套跑完。Pro:不用自己摸索 3 個平台介面、有人帶卡關 5 分鐘解決、4-6 小時一次到位。Con:要付費。適合:想做 LINE Bot 但不想自己 debug、想要客製化功能的人。

永久免費 LINE Bot 完整 step-by-step:1) 群組 vs 1-on-1 私聊(資料邊界決定);2) Supabase 免費資料庫 + asyncpg driver 雷;3) LINE Auto-reply / Greeting 必關(不關 bot 訊息會被預設回覆蓋掉);4) Render 2025 砍免費 cron → 用 cron-job.org 替代(每分鐘戳同時派發通知 + 喚醒 web service);5) 自然語言 parser regex 而不是 LLM(永久免費就不要付 API 費);6) 5 步 step-by-step(LINE 申請 → Supabase 建庫 → Claude Code 寫 FastAPI → Render 部署 → cron-job.org 觸發)。月成本 NT$0。4-6 小時可全跑完。範例家族行事曆,個人提醒/健身打卡/客戶 FAQ 都套得上。

相關文章

常見問題

LINE Bot 怎麼做?永久免費可能嗎?

可以。技術三件套:FastAPI(後端)+ Supabase(資料庫,500 MB 免費)+ Render Web Service(部署,免費方案)+ cron-job.org(定時觸發,免費)。月成本 NT$0。完整 5 步驟 step-by-step:1) LINE Developers 申請帳號 + 關 Auto-reply;2) Supabase 建資料庫;3) Claude Code 寫 FastAPI;4) Render 部署;5) cron-job.org 設定每分鐘觸發。4-6 小時可全跑完。詳細看本文第 7 節。

為什麼 LINE Bot 收到「感謝您加為好友」?

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

Render 2025 砍掉免費 cron 怎麼辦?

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

LINE Bot 自然語言 parser 一定要接 AI 嗎?

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

LINE Bot 該用群組還是 1-on-1 私聊?

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

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

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

看完這篇之前先確認:

適合你
  • 想做給家人 / 小團體用的 LINE Bot
  • 想用永久免費三件套架構(FastAPI + Supabase + Render)
  • 想學自然語言 parser 該不該全交給 AI
不適合
  • 已有付費 LINE OA 月費方案的人
  • 商用要走 Verified 路線的人
  • 不在乎免費額度限制的人
最常踩
  • LINE Auto-reply 沒關 自動訊息蓋掉 bot 回覆
  • Render 2025 砍了免費 cron 沒備援
  • 自然語言全給 AI 解析沒 fallback

← 回新手教學

⚠ 本站所有內容僅供教育與研究用途,不構成投資建議,不保證任何獲利。投資有風險,使用者須自行判斷並承擔結果。