Coolkid mascot CoolkidLab Build in Public. Level up together.
首頁新手教學SEO 歷程開源工具庫陪跑服務關於

Workflow · 生活自動化

家族共享行程提醒 LINE 機器人:邀請碼加入 + 一句話建行程 + 自動提醒

閱讀

生活自動化

家裡每個人的行程各記各的:誰幾點回診、小孩幾點補習、誰要去機場接人。用嘴講會忘,丟家族群組刷一下就洗掉,真的到那天才發現「啊我忘了」。我不想要又一個沒人會開的行事曆軟體,所以直接做在大家本來就在用的 LINE 裡。一句話建行程,到點機器人自動跳出來提醒相關的人。

開源工具 · 可直接安裝

github.com/Coolkidlab-Yin/family-line-bot

/plugin marketplace add Coolkidlab-Yin/Coolkidlab
/plugin install family-line-bot@coolkidlab

在 Claude Code 輸入上面兩行即可安裝。裝完直接說你想做什麼,AI 會照 skill 的 SOP 帶你建;原始碼與 README 都在 GitHub。

摘要

家人在 LINE 一句話「明天 3 點 媽媽 醫院回診 提前 1 小時」,機器人自動 parse、存資料庫、到點 push 提醒相關人。架構是 FastAPI + Supabase + Render + cron-job.org 三件套全免費。刻意不接 LLM (regex parser),省 API 費也避開家人輸入隱私上傳。已上線給家人用 2 個月。

卡點:家人的行程各記各的 到點才發現忘了

每個人的行程散在各自腦袋裡:回診、補習、接送、繳費。

口頭講會忘,丟群組會被洗掉,共用 Google 日曆又沒人真的會去開。

家庭工具的死亡點就是「要另外開一個軟體」。

所以這個機器人的前提是不另開介面,就活在 LINE 裡,大家本來就整天掛在上面。

關鍵決策:這種機器人刻意不接 LLM

很多人一聽「LINE 機器人」就想接 AI 讓它聊天。我故意不接。

一個家族行程機器人要做的事很固定:建行程、查行程、刪行程、提醒。

這種有限的指令用關鍵字比對加一句話規則解析就 100% 搞定。

不接 AI 的好處是零成本、回應即時,而且行為可預測。AI 偶爾自由發揮,家裡長輩會被搞糊塗。

AI 是好工具,但不是每個機器人都該塞。判斷「哪裡不用 AI」跟「哪裡用 AI」一樣重要。下面是它怎麼不靠 AI 也聽得懂:

# 不用 LLM 也能讓機器人「聽懂」:keyword → 狀態機 → 一句話解析 → fallback
async def route_message(session, user, text):
    t = text.strip()
    if t in CANCEL_KEYWORDS: return [msg.text("已取消")]
    if t in HELP_KEYWORDS:   return [msg.text(help_message())]

    if user.family_id is None:                      # 還沒加入家族
        return await onboarding.handle(session, user, t)   # → 走邀請碼流程

    if t in LIST_KEYWORDS:  return await list_events.handle(session, user)
    if t in NEW_KEYWORDS:   return await create_event.start_guided(session, user)

    state = await repo.get_state(session, user.line_user_id)
    if state.state in EVENT_CREATION_STATES:        # 多步驟新增中
        return await create_event.step(session, user, t)   # → 繼續對話狀態機

    one_liner = await create_event.try_one_liner(session, user, t)  # 試一句話解析
    if one_liner is not None:
        return one_liner

    return [msg.text(help_fallback())]              # 都不中 → 給指令清單

建行程兩種方式:一句話 或 引導式問答

懶人版是我自己用的:直接打「明天下午 3 點 媽媽 醫院回診 提前 1 小時提醒」。機器人用規則解析出時間、對象、事由、提前量,直接建好。

新手版給長輩用:打「新增行程」,機器人就一步一步問下去。標題、開始時間、結束、參加的人、提前多久提醒、確認。

問到哪一步會被記住,中途隨時打「取消」就跳出。

兩種輸入對應兩種人。同一個機器人不強迫所有人用同一種方式。

提醒的雷:cron 每分鐘跑 怎麼不重複發

提醒是一個排程每分鐘呼叫一次派送介面,帶密鑰防止外部亂打。

它撈出提醒時間已過、而且還沒發過的行程,推播給所有參加的人,然後立刻標記成已發。

這個標記是關鍵,不然下一分鐘又會撈到同一筆,重複發。

還有個細節:就算推播給其中一個人失敗,我也不重試整筆,只記錄下來。

重試會害已經收到的人收第二次。寧可漏記一個,也不要全家被疲勞轟炸。

本機 SQLite、線上 Postgres,同一套 code

開發時我不想為了測一個小功能就連雲端資料庫。

所以資料層做了一層轉換,讓同一份程式碼在本機跑輕量資料庫、上線跑雲端資料庫,不用改一行。

本機隨開隨測,線上接 Supabase,資料表結構的變更用 Alembic 管。

這樣「本機測完直接上線」不會踩到兩邊資料庫的差異。

整段複製給 AI agent,你就有這個 workflow

把下面整段複製貼給你的 AI agent,它就能照著幫你把這個「家族共享行程提醒 LINE 機器人」從零建起來 — 邀請碼加入家族、一句話建行程、到點自動提醒,你不用自己摸。

我要你幫我做一個「家族共享行程提醒 LINE 機器人」,活在家人本來就在用的 LINE 裡,不另外開 app。技術棧請用 Python FastAPI 接 LINE Messaging API 收訊息與 push,資料庫用 Supabase Postgres,但開發階段我要能在本機跑 SQLite、上線跑 Postgres 用同一套程式碼,所以資料層請用 SQLAlchemy 加自訂 TypeDecorator 把 UUID 與 JSONB 在兩邊抹平,migration 用 Alembic 管。

功能我要這些:第一,邀請碼加入家族 — 第一個人建家族當 admin,其他家人輸入邀請碼加入當 member。第二,建行程要兩種方式並存:懶人版用一句話(像是「明天下午三點 媽媽 醫院回診 提前一小時提醒」),請用規則解析出時間、對象、事由、提前量,不要接任何 LLM;新手版用引導式問答,做一個對話狀態機一步步問標題、開始時間、結束、參加的人、提前多久,過程中的草稿存進 conversation_states 表的 JSONB 欄位,中途打「取消」可隨時跳出。第三,提醒用一個 cron job 每分鐘呼叫一次派送端點,撈出提醒時間已過且尚未通知的行程,push 給所有參加的人。

請務必避開這些我已知的雷:cron 派送端點一定要驗 secret header,防外部亂打;每筆行程要有一個 notified 旗標,push 完立刻標成已通知,不然下一分鐘會重複撈到同一筆狂發;就算 push 給其中一個人失敗也不要重試整筆,只記 log,否則已經收到的家人會被重複轟炸;訊息路由請走 keyword 比對加狀態機加一句話解析加 fallback 的順序,刻意不接 LLM,因為指令集很固定、要回應即時又行為可預測,長輩才不會被搞糊塗。

開工前請先確認我的環境:我有沒有 LINE 官方帳號與 channel token、Supabase 專案、Python 版本、本機要不要先用 SQLite 跑通。然後一步一步建,每完成一步就停下來跟我確認再繼續,不要一次全寫完。

把上面整段複製貼給 agent 就好,它會先問你 LINE token、Supabase 這些環境細節再動工,你只要回答、卡住時補充環境資訊就行。

完整 SOP 清單

上面把「為什麼刻意不接 LLM」「一句話 vs 引導式建行程」「cron 提醒怎麼不重複發」「本機線上同一套 code」都寫出來了。下面是完整元件對照:

看完這篇之前先確認:

適合你
  • 家人 LINE 群已經很活躍想加智能助手
  • 想用永久免費三件套 (FastAPI + Supabase + Render) 學端到端架構
  • 想學「自然語言 parser 該不該全交給 AI」的決策思路
不適合
  • 想做商用 LINE OA (要走 verified 路線跟付費方案)
  • 家人 LINE 不熟悉就要硬推機器人加入
  • 已經有付費月費方案的人 (這個架構是給「不付月費也要能跑」的)
最常踩
  • LINE 後台 Auto-reply 沒關 — 內建自動回覆會蓋掉機器人真正的回應
  • Render 2025 砍了 free tier cron — 必須改用 cron-job.org 外部觸發
  • 自然語言 parser 全交給 AI 結果月燒 $30 API 費 — 改成 regex 抓常見句型,LLM 只做 fallback

▸ 常見問題

這個機器人用 LLM 嗎?為什麼說「刻意不接」?

主流程不接 LLM。家人句子格式很固定 (「明天 3 點 媽媽 醫院」),regex 抓「日期 + 時間 + 人 + 事」就夠,跑 100 次成功率 95%+。LLM 只當 fallback (regex 抓不到才丟給 Claude Haiku)。理由:省 API 費加上避開家人隱私上傳第三方。

Supabase / Render 免費額度夠嗎?

夠。Supabase free tier 500MB DB 加上 50K monthly active users,家族 5-10 人遠低於上限。Render free tier 750 hr/month 加上自動 sleep 後 cold start 30 秒,有 cron-job.org 每 14 分鐘 ping 一次保持活著。

一定要用 LINE 嗎?Telegram / Discord 不行?

可以換。FastAPI handler 那段抽掉,換 Telegram 機器人 API / Discord webhook 即可,parser 加上資料庫加上 cron 三段通用。台灣家人最常用 LINE 所以我做 LINE,換平台約 30 分鐘工程。

家人不會用 LINE 機器人怎麼辦?

我家用法是「不解釋,直接示範」 — 我自己在群組打「明天 3 點 媽媽 醫院回診」機器人跳出提醒,家人看 1 次就會用。機器人不要寫指令說明書,要寫個範例觸發後跳第一個成功案例。

名詞解釋

機器人(bot)
自動執行特定任務的程式,例如 LINE 機器人自動回訊息、發文機器人每天定時發貼文。
大型語言模型(LLM, Large Language Model)
ChatGPT、Claude 這類 AI 背後的技術:讀過海量文字後,學會理解與生成人類語言的模型。
排程(cron)
讓程式「每天 8 點」「每小時」自動執行的定時器。自動發文、定期抓資料都靠它。
API(應用程式介面)
程式跟程式之間溝通的窗口。例如你的程式透過 LINE 的 API 自動發訊息、透過 Google 的 API 讀試算表。
Supabase
免費起步的雲端資料庫服務,提供資料庫+登入驗證+API,個人專案很夠用。
LINE 機器人
在 LINE 裡自動回覆、主動推播訊息的機器人。台灣家庭幾乎人人用 LINE,是自動化通知的最佳入口。
Render
雲端程式代管服務,免費方案能跑小型後端程式(例如 LINE 機器人)。免費版 15 分鐘沒流量會休眠,喚醒要 15-50 秒。
Webhook
「事件發生時,A 服務自動通知 B 服務」的機制。例如有人傳訊息給你的 LINE 機器人,LINE 就透過 webhook 把訊息轉給你的程式處理。
資料庫(database)
專門儲存、查詢大量資料的系統。網站的會員、留言、紀錄都放這裡。
狀態機
把一段對話拆成固定步驟,記住「現在問到第幾步」,一步一步問完才收工。引導式問答就是靠它,不需要 AI 也能聽懂使用者。

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

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

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

Buy Me a Coffee at ko-fi.com

相關 workflow

← 回開源工具庫

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