見出し画像

makeとchatgptを使って、RSSで集めたニュースを構造化してスプレッドシートに蓄積する方法

完成系

サンプルとして、全国のスタンプラリーの開催情報をスプレッドシートにまとめるワークフローを作成しました。
RSSで収集したニュースがスプレッドシートにイベント名や開催日時等の項目ごとに整理され蓄積されていきます。


作成したワークフロー

今回はmakeを利用してワークフローを作成しました。

使用したワークフロー

RSSで取得したURLの成形

RSSで取得したURLをデータを読み込ませるためにURLの成形を行います。

https://www.google.com/url?rct=j&sa=t&url=https://minkabu.jp/news/3772084&ct=ga&cd=CAIyHDMzNThhM2VmYjMxOGQwZjM6Y28uanA6amE6SlA&usg=AOvVaw0-yKutUoLXqrNms0TSuPNj

上記のURLを
https://minkabu.jp/news/3772084

に成形するようなイメージです。
上記URLをHTTPモジュールに読み込ませることでhtmlデータが取得できます。(スクレイピングはwebサイトの規約やルールに従って実行してください。)
RSSモジュール:RSSの取得
Tools13:RSSのURL &ct--の1文字列目の取得
Tools14:文頭及び%ct--以降の文字列の切り抜き

テキスト及び本文の抽出

Textparserを使用してhtmlタグの削除を行い、文章を整えます。tool8を用いてテキストの中でタイトルを探し出し、tool10でchatgptに読み込ませるためのタイトル以降3000文字を抽出します。

chatgptに内容を構造化してもらう

chatgptに以下のプロンプトを与え、指定したフォーマットに出力してもらいます。

与えられたテキストはスタンプラリーのイベント開催に関する記事です。本文の情報を、以下の制約条件をもとに出力してください。
制約条件:
・情報からスタンプラリーに関する情報のみを参照してください。
・イベントタイトル、開催日時、開催場所、運営団体、スタンプラリーの概要、報酬をカンマで区切りcsv形式で出力すること。
・項目名は削除するし、結果のデータのみ出力すること
・日本語で出力すること。
・指定した情報が出力できない場合は、「情報が不足しています。」と回答すること
・,はデータの区切り以外に使用しないこと
期待する出力フォーマット:
イベントタイトル,開催日時,開催場所,運営団体,スタンプラリーの概要,報酬

Google Sheets④にてスプレッドシートに出力した情報を転記し、Google Sheets⑤にてシート内で情報を整理します。

情報が取れなかった項目は削除し別シートにリストする

本文中に目的の文章がなかったり、URLが正しくなかった場合にchatgptがうまく出力することができなかったデータは項目を削除し、出力ミスのシートにリスト化します。
これによりノイズとなるデータがリストに加わることを防ぐことができます。

上記で利用したmakeのjsonファイルを配布しています。(ご自身のmake環境で配布したjsonデータを読み込ませることで同様のワークフローを利用できます。)
必要な方は以下のラインアカウントから友達追加し、「ワークフロー希望」と送信ください。

備忘録のためわかりにくい点が多々あると思います。ご不明な点ございましたら上記のラインアカウントからご質問いただければ回答いたします。(余裕あれば。。。)

この記事が気に入ったらサポートをしてみませんか?