3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「お前今日何したんだよ」に答えるワークフローをn8nで構築した

3
Posted at

作ったもの

LINEで学習した内容を送るだけで、AIが自動でカテゴリーを分類し、それらをGoogleカレンダーとNotionに記録するワークフローです!

・学習内容の送信(LINE)
line.jpeg

・記録結果(Googleカレンダー)
google_calendar.png

・記録結果(Notion)
notion.png

さらに、毎日22時に、学習記録がない場合にリマインドのLINEをくれます。

・リマインド(LINE)
image.png
(記録がないことを伝えると、鼓舞してくれて優しい)


これにより、いつ・どんなことを学習したか、簡単に振り替えることができます。
("今日"何したというよりも、"今週"・"今月"何したかを振り替えられるイメージですね…!)

背景

「エンジニアは学習あるのみ!」でありますので、自分も日頃から、PCに向かってカタカタやっていることが多いです。

そんな中、「あれ、今日何したっけ?」「今週何してたんだっけ?」と、学習したことを把握できていないことがちらほらあります。(興味が転々と移り変わることがあるからでしょう)

把握できていないのなら何もやっていないようなもの、時間を溶かした気がして気持ち悪いので、この状態を解決できたらいいなと感じていました。

そこで、学習記録を簡単に記録でき、かつ便利に振り返りできる仕組みとして構築したのが、今回のワークフローです。

実装内容

概要

以下2つのワークフローで構成されています。

①学習記録ワークフロー
メインとなるワークフローです。
LINEからメッセージを受け取り、Geminiを使用してカテゴリ分類を行い、GoogleカレンダーとNotionへの登録を行います。
workflow1.png

②リマインダーワークフロー
リマインダー用のワークフローです。
毎日22時に、その日の学習記録がない場合に確認のLINEをくれます。
workflow2.png

それぞれ、実装内容の詳細は以下の通りです。

詳細

学習記録ワークフロー

LINEメッセージの受信

image.png

Webhookノードを使用して、LINEボットからのリクエストの受け付けをトリガーとしています。
LINEボットは、LINE Developers Console より作成し、Webhook URLは別途設定済みです。

記録要否の判定

image.png

メッセージの内容が、以下のいずれかに当てはまる場合、記録処理を中断しメッセージを返します。

  • 「なし」に完全一致
  • 「してない」に部分一致
  • 「やってない」に部分一致

ちなみに、LINEの返信は、HTTP Request ノードを使用して、LINE Messaging APIを叩いています。

カテゴリー一覧の取得

image.png

NotionのGet many databasesノードを使用します。
別途、Notionのインテグレーションを作成し、接続に必要な情報を設定済みです。

image.png

ところで、私のNotionワークスペースには、技術情報のトピックをデータベース化したものがあります。

ここから全レコードの情報を取得し、この後分類するカテゴリーの選択肢としています。

カテゴリーの分類

image.png

HTTP Request ノードを使用して、Gemini APIを叩いています。
学習した内容とカテゴリーの一覧を渡して、最も適切なカテゴリーを返してもらいます。
APIキーは、Google AI Studio より発行しています。

学習内容の記録

image.png

Google Calendar の Create an event ノード、および Notion の Create a database page ノードを使用して、学習内容とそのカテゴリーを登録します。

Google製品への接続に必要となる認証情報は、別途 Google Cloud から作成しています。

リマインダーワークフロー

毎日22時の自動発火

image.png

Schedule Trigger を使用して、毎日22時にワークフローを実行するようにしています。

学習記録の取得

image.png

Google Calendar の Get many events ノードを使用して、その日記録された学習内容を取得します。

リマインドメッセージの送信

image.png

取得結果が空だった場合のみ、リマインドメッセージをLINEで送信します。


以上の通り、基本的にはメインとなる学習記録ワークフローにて、LINE, Gemini, Googleカレンダー, Notionと連携して、学習記録に必要な一連の処理を実施します。

その上で、記録忘れを防ぐために、リマインダーワークフローを日時で走らせる構成です。

デプロイ

Renderにデプロイしています。
選定理由は、Dockerイメージでデプロイでき手軽な点と、コストを抑えられる点が魅力的だったからです。(無料で運用したい)

image.png
手順としては、Web Serviceの作成から、n8nの公式イメージ(n8nio/n8n:latest)を指定して、n8nアプリを立ち上げています。

また、DB用のサービスは用意しないことにしました。
理由は当然ケチりたいからです。

n8nは、デフォルトで内蔵されたSQLiteを使用するようなので、こちらを使用することにします。

ただそうすると、n8nのサービスを再デプロイなどすると、当然データが失われてしまいます。
が、ワークフローのエクスポートファイルを保管しておいて、それをもとに手で復元すればいいやという考えです。

使用ツール

  • n8n:ワークフローの構築
  • LINE Messaging API:LINEボットとのメッセージ
  • Gemini API:カテゴリー分類用Geminiの呼び出し
  • Googleカレンダー:学習記録の登録先
  • Notion:カテゴリーの取得元、学習記録の登録先
  • Render:n8nのホスティング

おわりに

ワークフロー構築ツールを初めて触りましたが、画面ポチポチで異なるサービスを連携できるのは、想像以上に便利ですね。

n8nはMCPに対応していたはずなので、自然言語での操作も試してみたく思いました。

今回構築したワークフローですが、GoogleカレンダーとNotion、双方に記録する点が気に入っています。

日にちベースでやったことを知りたい時は、Googleカレンダーで即座に確認できますし、その他分析などしたい時は、やはりNotionのデータベース機能が強力だからです。

身の回りのちょっとした課題解決に、n8nのようなワークフロー構築を活用できると実感しました!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?