Workatoでリンク先を読み込んでAI活用する

# はじめに
必要な情報を効率よく収集し、定期的にキャッチアップすることは、企業活動やプロジェクト運営に欠かせない作業の一つです。
例えば、あるサイトの内容を自動で読み取って要約したり、必要なデータの収集まで行ってくれる仕組みがあれば、多忙な業務の中でもタイムパフォーマンスを向上させることができます。

昨今では自動化フローにAIを組み込むことで、さまざまな処理を効率化することが一般的になっていますが、ChatGPT（OpenAIのAPI経由）は指定の外部サイトへのアクセスやスクレイピング機能を備えていません。プロンプトでURLを指定しても見に行ってくれないのです。

そのため、指定のリンク先を読みに行きデータを取得する処理については、何らかの外部ツールで実装しなければなりませんが、実はWorkatoのある機能を利用することで実現できます。

本記事では実装方法と、AIとを掛け合わせた活用ケースについてご紹介します。


# 使用するアクション

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/c7f042de-fa46-b120-9f1c-6b3d94e9bf14.png">

「File tools by Workato」コネクタの、「Get file from URL」アクションを使用します。
ファイルをダウンロードするための機能ですが、要は指定されたリンク先の情報を取得するものです。ファイルのURLの代わりにWebサイトのURLを与えることで**Webページの読み込み**が可能です。

本来の使い方（ファイルのダウンロード）については、以下の記事が参考になります。

https://qiita.com/tabimoba/items/c593aa0c8e11c3816d50

Webページを読み込むことができるとお伝えしましたが、以下の点に注意が必要です。

### 向いていないケース
- **ログインや認証が必要なページ**
    認証情報が必要なページにはアクセスできません。
- **JavaScriptによって動的に生成されるページ**
    JavaScriptなどのクライアントサイドスクリプトによってコンテンツが動的に生成されるページには対応していません。
- **複数ページにわたるコンテンツ**
  ページ送りができないため、複数ページにまたがる情報の読み込みには対応していません。先頭ページのテキストのみが読み込まれ、不完全なデータとなる場合があります。

これらのケースの実現には、RPAやSeleniumなどを使ったスクレイピング技術が必要です。

### 向いているケース
したがって、当アクションを使う際は**内容が1ページに収まった静的なページ**を対象として、効率的にWebデータを抽出することを推奨します。

# 使い方
**Webページの読み込み**に続けて、**読み込んだデータをデコードする**処理も併せて実装します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/3441c4fe-21f5-f881-08bf-7eac845d566e.png)

### 1. Webページを読み込む
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/4d0f5f2a-417a-0d2d-b9f9-752e6955d210.png)

### 2. 読み込んだデータをデコードする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/624c8b5f-148f-cea7-5a56-b6ecd3e31442.png)


# 活用例①：リンク先を要約する
RSSやAtomで配信されたフィードの新着記事を読み込み、その要約をSlackで通知するレシピです。
記事のURLをクリックして全文を読まなくても、概要が把握できます。
例）競合企業のニュースリリースなどのモニタリング

▼読込対象の記事

https://www.ricksoft.jp/blog/articles/001633.html

▼Workatoで投稿されたメッセージ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/9c5f5cad-7788-2e58-50d8-657ee57b82ad.png)

### レシピ
この例では、当社運営のブログのフィードを取得しています。
![スクリーンショット 2024-12-13 153905.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/b4a1e178-869f-8307-5708-3634510e69b3.png)


### 処理の詳細

<!-- open属性なし -->
<details><summary>各Stepの詳細はこちら（折りたたまれています）</summary>

- Step1) 新着記事キャッチ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/202e88cc-ec1b-855b-b8fa-2837603c8e94.png)

- Step2～3) ページ読込とデコード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/920e5873-e97b-ea98-a2fb-00a9c3f767f9.png)

- Step4) 要約前の準備として、記事本文を抽出
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/7a6f5477-463b-4fd4-7625-09186cb8da69.png)

- Step5～6) 記事をAIで要約、Slack通知
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/6a7d3dc2-138e-730c-7302-7516f94c57f9.png)

</details>

# 活用例②：特定のWebページを監視する
新着情報を把握する方法としてはRSSやメールマガジン配信サービスを利用するのが一般的ですが、サイトによってはRSSが提供されていない場合や、配信される内容が業務上必要な情報に十分対応していない場合もあります。
「このページの、ここが変わったら知りたいんだよな」というピンポイントなニーズに応える一例として紹介します。

### 対象のページ
日本銀行HPの下記ページでは、データ系列数が多量にのぼる統計（物価統計、資金循環統計、短観、国際収支統計、BIS関連統計）について、一括ダウンロードが可能となっています。

https://www.stat-search.boj.or.jp/info/dload.html

いくつかのテーブルに分かれ、「統計の名称」と「最終更新日付」が記載されているのが特徴的です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/838e164f-5489-ba8b-9a5a-bbcd5945e921.png)

### 実行結果
上記Webページで**前日に更新された統計をピックアップして通知する**処理をWorkatoで構築すると、次のような通知が届きます。

▼対象データ
（実行日が2024年12月12日の場合、12月11日に更新されたデータが該当します）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/d87bf232-c7a1-c1b5-d824-c655901a67f6.png)


▼Workatoで投稿されたメッセージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/a69b89b1-314f-7855-6032-b5ad1c622513.png)

### レシピ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/709a94e1-3dfc-0ff6-15f8-6114a28ad520.png)

### 処理の詳細

<!-- open属性なし -->
<details><summary>各Stepの詳細はこちら（折りたたまれています）</summary>

- Step2～3) ページ読込とデコード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/6adc1737-9375-4ad1-eb7e-b66617f62f63.png)

- Step4) AIでぺージ全体から統計リストを生成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/7b77472b-9b23-afdb-b217-31a8e8ab8d4d.png)

- Step5～6) 条件に合う統計データをSlack通知
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/4a3aab34-9ad7-c368-81cd-701836b405ce.png)

※`format_map`formulaの使い方については、下記の記事で紹介しています。

[WorkatoでSlack等の複数メンションを動的に生成する](https://qiita.com/yabikkio/items/3e995b39213258059f34)

</details>



#### 補足
Step4では、AIの力を借りて必要なデータを難なく構造化しています。
新しく統計テーブルが追加されたり、ページの構成に多少の変更があった場合でも対応できる柔軟性があり、AIの恩恵を実感できる部分ですね。