2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ツイッターの告知を自動でGoogleカレンダーに登録する

Posted at

ツイッターのライブ告知をChat GPTで処理して整形してGoogleカレンダーに登録するサービスを作りました。
サーバレスにこだわったので、月々の維持費がほぼ0円&メンテナンスフリーです!

作ったものイメージ

いっぱいある告知を
image.png


カレンダー化!
image.png

アーキテクチャ概要

ポンチ絵
image.png

詳細

データの流れに着目して、アーキテクチャを紹介していきます。

Twitter→S3: lobstr.io利用

ツイッターから情報をスクレイピングするのに、lobstr.ioというサービスを利用しました。
以下の記事を参考に設定しました。

取得結果のCSVファイルをAWS S3に転送しています。lobstr.ioの機能でS3に配置できています。
image.png

苦労・工夫

  • 当初、APIFYというサービスを利用していました。無料だと1ヶ月程度で自動処理が使えなくなったため※、lobstr.ioに切り替えました。月50ドル払う余裕があればAPIFYの方が良いでしょう。(※そういう仕様か、仕様変更があったかは不明)
  • lobstr.ioでは処理の都合上、長文ツイートは末尾が切れ、重要な情報が後半にある場合情報を取得できないケースがある、、というデメリットはあります。。
    image.png

S3→投稿履歴(DynamoDB)

lobstr.ioでは投稿履歴のCSVを取得・S3に配置できるので、その結果を構造化して蓄積しています。
Lambda(Python)で定期的に加工して蓄積しています。

苦労・工夫

  • DynamoDBでは「ツイートに固有なID」をキーに設定すると、昨日の投稿がUPSERT的に処理されるので便利でした
    image.png

  • NoSQL初心者だったため、最初は色々戸惑いました。特に、データベースの中身を探索する際に全件スキャンしがちなので、その課金がまだ怖いです。
    ビッグデータでないなら、全件スキャンしても大した金額にならず、DBを常に起動しておくほうがトータルコストかかる、と自分に言い聞かせて使っています。

投稿履歴→ライブ情報(DynamoDB→DynamoDB)

ツイッターの告知文章(自由入力のテキスト)から、ライブの名称・時間・場所などを抽出して、構造化データに変換しています。
「自由入力の情報から必要情報を要約・抽出」というタスクは、LLMがEnablerとなってくれているなと感じます。
以下のようなプロンプトを入れています。
https://diuxamlfu3f0g.cloudfront.net/files/20241229_prompt.txt

苦労・工夫

モデル選定

当初、Anthropic Claude3 Haikuを利用していましたが、ハルシネーションが発生するケースがありました。
image.png

色々調べるとClaude系のAIはハルシネーションしやすいという記事があったりして、 「モデルごと特性があって、中身が一緒じゃない」 ということを学びました。
さらに、Claude3.5-Sonnetに切り替えたところ、一発で上手くいくケースが増えたので、 「モデルの賢さはすべてを解決する」 という要素があることを学びました。
なお、現在はOpenAIに切り替えて、GPT-4o-miniを使っています。

GPT-4o-miniでもハルシネーションは稀にあります。。
image.png

AWS固有の問題

当初、AWS上の生成AIサービスであるBedrockを使っていましたが、AWS側の都合で、2024年11月上旬になぜか利用できなくなってしまいました。
こちらと同じ事象でした・・・

AWS側の対応が遅く、別にAWSに拘る必要もないので、OpenAIのAPIを利用するようにして、回避しました。
image.png

DynamoDB→Googleカレンダー

構造化されたライブ情報をLambda(Python)を用いてGoogleカレンダーに登録しています。
以下の記事などを参考に、Google CloudのAPIで、無料かつ比較的簡単にできました。

苦労・工夫

  • オンラインでのカレンダーサービスはいくつかありますが、ChatGPTに情報収集してもらって、一番安定していそう&使いやすそうなGoogle Calendarを選定しました。
  • 時間未定なライブ情報(日付だけわかっているもの)は、全日の予定として登録しています。
  • 重複登録を確認する仕組みがなく、告知を何回も行われると、その回数登録されてしまっています(あまりにも勘違いしやすい・見にくい場合は手動で消しています)

いくらかかる?

トータルで、月々のコストは約5円でした。(24年12月実績)
サーバを立てて動かすサービスであれば月500円は最低限でもかかるので、クラウド・サーバレスの恩恵を感じています。
(Sin直後1ヶ月の金額ではあるので、、安定運用してきたら、後日更新したいと思います)

lobstr.io、Google Calendar:無料

AWS:無料

  • DynamoDB
    image.png

  • Lambda(別件で使っている分が加算されてしまっています)
    image.png

OpenAI:$0.03

image.png

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?