✨ はじめに
「今日はどんな展示がやってるんだろう?」
「障がい者向けに無料で入れる美術館ってあるのかな?」
そんな疑問に応えるために、毎朝 LINE に展示情報を自動で通知する Bot を作ってみました。
生成AI(Gemini)と通知の仕組み(LINE API)を組み合わせ、コードを書くことで文化を届けるという試みにチャレンジした記録です。
🧩 構成概要
[定時実行型クラウドサービス(例:Google Cloud Scheduler)]
↓
[Gemini APIで展示情報を取得・要約]
↓
[LINE Messaging APIを使ってグループに通知]
- データ収集:Gemini API(Google Generative AI)
- 配信手段:LINE Messaging API
- 自動化:定時実行スケジューラ(Google Cloud Scheduler など)
- フォーマット整形:Pythonスクリプト(Colabで開発)
📦 機能概要
- 東京の美術館の障がい者向け割引/無料の特別展示情報を取得
- Geminiで自然文から必要情報だけを要約
- LINEグループに 絵文字付きで見やすくフォーマットされた通知をPush送信
通知例:
🗓️2025年4月5日時点、東京で開催中の障がい者向け無料鑑賞ができる美術館情報です。
🌟特別展示🌟
🎨ミロ展:東京都美術館
🖼️TDC2025:ギンザ・グラフィック・ギャラリー
🎭青池保子展:弥生美術館
🏛️皇后のまなざし:明治神宮ミュージアム
✨常設展示✨
🎨東京国立博物館
🖼️東京都現代美術館
🔐 アクセストークンとグループIDの取得
- LINE チャネルアクセストークンは LINE Developers から発行。
- グループIDの取得には、Botをグループに招待しWebhook経由で取得します。
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
print("✅ 受信した groupId:", event.source.group_id)
🧠 Gemini APIプロンプト設計
生成AIは便利ですが、意図通りの出力にするには工夫が必要。
LINEに最適な形で情報を届けるため、プロンプトは以下のように設計しました。
🗓️{日付}時点、東京で開催中の障がい者向け無料鑑賞ができる美術館情報です。
🎨展示名:館名
🏛️展示名:館名
特別展示と常設展示に分けて簡潔に、詳細説明やリンクは不要
この結果、毎朝LINEで届く情報が わかりやすく・コンパクト・視覚的になりました。
🤖 自動化における工夫
- スケジューラ(例:Google Cloud Scheduler)を使って定期的に実行
- トークンや機密情報はクラウドサービス側のシークレット管理機能で安全に管理
- Pythonでロジックを組み、生成・整形・送信まで一気通貫で実行
💡 本取り組みは、個人開発者が文化情報を自動配信することを目的とした、非営利で軽量な構成として構築しています。
💡 学びと気づき
学び | ポイント |
---|---|
Geminiは要約と分類が得意 | 絵文字の使い方もプロンプトで調整可能 |
LINE Botは送信先制限に注意 | グループID取得など事前準備が必要 |
自動通知はシンプルに実装可能 | 開発や学習を目的にすれば実現ハードルは低い |
小さく作って確実に動かす | 毎日続けるなら軽量・簡素な設計が重要 |
🚀 おわりに
今回の仕組みは、小さなアイデアから生まれた個人開発の実践例です。
誰かにとって「今日、行ってみよう」と思えるきっかけになれば本望です。
また、このBotの仕組みは以下のようにも展開可能です:
- 子ども向けのイベント通知
- 地域ごとのバリアフリー施設情報
- 季節に応じたおすすめスポット
生成AIとAPIの力で、社会参加や文化アクセスのハードルを一歩下げられたら──
そんな思いで開発しました。
📬 ご感想・フィードバック・質問など大歓迎です!
ぜひ、みなさんのアイデアや応用事例も教えてください 🙌