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

Dify でクーポン情報が届くワークフローをつくってみよう

Last updated at Posted at 2025-03-22

Dify にはワークフローという仕組みがあり、作業の自動化に特化したアプリケーションです。
ボタンを押したり、定期的に実行したい場合に利用します。

1. LINE にクーポンを通知してくれる Bot

Dify のワークフローを使って、次の仕組みをつくります。

  1. ビックカメラのWebサイトにアクセスしてクーポン情報を取得し、
  2. クーポン情報を整理して、
  3. LINE に通知を行う

完成系のフローはこちらです。


2. 実装

2-1. 準備①

Dify のワークフローの準備

  • Dify でアカウントを作成しワークフローを準備します
    ※アカウント作成方法は割愛します

2-2. 準備②

LINE 公式アカウントの準備

LINE Developers から以下を用意します。
※手順は割愛します

  • 公式ラインのアカウント
  • ユーザーID
  • チャネルアクセストークン

準備ができたら、Dify に戻りノードをつないでいきます。

環境変数の設定

[ENV] ブロックから以下の2つの環境変数を設定してください。

  • ユーザーID

    • タイプ:Secret
    • 名前:to
    • 値:2-2で取得したLINEのユーザーIDの値
  • アクセストークン

    • タイプ:Secret
    • 名前:line_channel_access_token
    • 値:LINEのチャネルアクセストークンの値

2-3. Scrape ノード

Firecrawl の登録をし、API key を取得しておきます。
※取得方法は割愛します

Dify のマーケットプレイスから Firecrawl をインストールし認証します。

Dify に戻り、FireCrawlの認証画面に API key を入れてください。URLは入れなくてOKです。

SCRAPEノードが選択できるようになるので追加します。

Scrapeノードの設定
  • URL to scrape: データを取得したいサイトのURL

スクレイピングは Web サイトの利用規約を確認してから実施しましょう

2-4. LLM ノードを追加

スクレイピング結果から必要な文字を抽出するために、生成AIを使います!
これを簡単に実装できるのは Dify の魅力です。

ScrapeノードLLMノードと繋いでください。

LLM ノードの設定
  • モデル:GPT-4o-mini
  • SYSTEM:
      ビックカメラのクーポン情報の一覧のテキストが送られてきます。
      - タイトル
      - 画像URL
      - 商品リンクURL
      - 有効期限
      を抽出してリストアップしてください。
      
      ## 出力
      - 出力は最初の2件のクーポンだけ出力してください。
      - マークダウン形式にせず、プレーンなテキストで出力してください。
    
  • USER:SCRAPE > {x}text

USERメッセージの追加で編集できます

なお、USER に入れるのは変数で、変数の選択は/を押すことで候補が出現します。

2-5. コードノードと HTTP リクエストを追加

同様に LLM ノードの後ろにコードノードHTTP リクエストノードを追加します。

コードノードの設定の設定

生成AIがつくったテキストを受け取り、LINE で送れるオブジェクトに整形します。
この部分も LLM ノードのプロンプトで整形してみるのも良いかもしれません。

  • 入力変数を追加

    • 変数名:sendCoupon
    • 変数を設定:LLM > {x}text
  • JavaScript

      function main({to, sendCoupon}) {
          const messageObj = {
              "to": to,
              "messages":[
                  {
                      "type":"text",
                      "text": sendCoupon
                  }
              ]
          };
      
          return {result: JSON.stringify(messageObj)};
      }
    
    

LLM で生成した内容を sendCoupon という名前の変数にして、LINE で送るメッセージとして扱っています。

HTTP リクエストの設定の設定の設定
  • API
    • POST
    • https://api.line.me/v2/bot/message/push
  • ヘッダー
    • キー:Authorization、値:Bearer ENV > line_channel_access_token
    • キー:Content-Type、値:application/json
  • ボディ
    • JSON、{x}result

2-6. 全てのノードをつなげる

最後にこれまでのノードをつなげていきます。LLM ノードの後ろにコードノードHTTPリクエストと続くようにします。

最後に、終了のノードをつけましょう。

2-7. 実行

最後に右上の実行を押すと処理がスタートし、 LINE に情報が通知されます。

成功すると通知が送られます。


3. 自動投稿

API アクセスから API 経由でこのワークフローを実行させることができます。
API はこちらから取得できます。

Dify スケジュールアシスタントというツールを使うことができます。

具体的には GitHub Actions 利用します。

API の使い方については詳しく記載しませんが、このようにAPI 経由で定期実行するため、GAS のようなサービスでも実装可能です。

5. まとめ

これができれば、LINE 以外に Slack や Discord などに送ることも簡単です。

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