⚠️ 本記事について
本記事はAIの補助を受けて作成しています。
内容の正確性には注意していますが、環境差異やバージョン違いにより動作しない可能性があります。
実行する際はご自身の環境に合わせてご確認ください。
■LINE × Notion タスク管理システム 仕様書
■① 概要
■目的
LINEをインターフェースとしてタスク・目標・アイデアを記録し、
Notionで管理しながら毎朝の通知で習慣化を支援する。
■② システム構成
LINE
↓
Webhook(Laravel / Railway)
↓
Notion API
↓
LINE返信 / cron通知
■③ 機能一覧
■① タスク登録機能(LINE → Notion)
■入力
#task 内容
■処理
・タグ抽出
・本文抽出
・Notionへ保存
■出力(LINE返信)
タグ: #task
内容: ○○
保存しました!
【登録タグ一覧】
#今日のタスク #明日の目標 #アイデア
■② タグ管理機能
■仕様
・日本語タグで管理
・Notionのmulti_select使用
・タグ追加可能
■タグ例
・今日のタスク
・明日の目標
・今日の実績
・アイデア
・緊急
■設計ルール
・表記ゆれ防止
・タグ一覧を毎回表示
・重複を防ぐ
■③ Webhook受信機能
■エンドポイント
POST /api/webhook
■処理
・LINEイベント受信
・userId取得
・メッセージ解析
・Notion保存
・LINE返信
■ログ
Log::info($request->all());
■④ userId管理
■取得
Webhookログから取得
■設定
LINE_USER_ID=Uxxxxxxxxxxxx
👉 単一ユーザー前提
■⑤ cronリマインダー機能
■目的
・習慣化
・タスク確認
・振り返り
■構成
cron-job.org
↓
GET /api/cron/daily
↓
Laravel
↓
LINE通知
■実行時間
毎日 05:30(JST)
■cron設定
30 5 * * *
Timezone: Asia/Tokyo
■⑥ cron API仕様
■エンドポイント
GET /api/cron/daily
■処理
- Notionからデータ取得
- 整形
- LINE送信
■レスポンス
{
"status": "ok"
}
■注意
・レスポンスは軽量化
・デバッグ情報は返さない
■⑦ LINE通知フォーマット
【今日のタスク】
・xxxx
【昨日の目標】
・xxxx
【登録タグ一覧】
#今日のタスク #明日の目標 #アイデア
■④ 非機能要件
■① パフォーマンス
・cronは軽量レスポンス
・Notionデータは最小使用
■② 可用性
・cron-job.org使用
・Railwayで常時稼働
■③ セキュリティ
if (request()->header('X-CRON-TOKEN') !== env('CRON_TOKEN')) {
abort(403);
}
■④ ログ管理
・laravel.logに出力
・Webhookデバッグ可能
■⑤ エラー対応
■① cronエラー
Failed (output too large)
対応:レスポンス軽量化
■② API誤動作
原因:
・web.phpに定義
・URLミス
対応:
routes/api.php に定義
■③ LINE APIエラー
| エラー | 原因 |
|---|---|
| Authorization error | トークン不備 |
| Authentication failed | トークン不正 |
| Access denied | API制限 |
■⑥ 技術構成
■バックエンド
・Laravel
■インフラ
・Railway
■外部サービス
・LINE Messaging API
・Notion API
・cron-job.org
■⑦ 設計思想
単なるメモではなく「習慣化支援システム」
■特徴
・LINEで簡単入力
・自動記録
・自動振り返り
・タグ管理
■⑧ 今後の拡張
■短期
・タグ自動提案
・フィルタ強化
■中期
・複数ユーザー対応
・Web UI
■長期
・AI分析
・優先度自動化
■⑨ 完成状態
毎朝5:30
↓
LINE通知
↓
タスク確認
↓
習慣化
■まとめ
本システムは以下を実現する:
・LINE入力で記録
・Notionで管理
・cronで通知
・習慣化の仕組み化