ノーコードツール「Zapier」を活用する

今年は、AIエージェントの話題がもちきりですが、なかなか自分が使いたい便利かつ安いものがない、と言う人も多いのではないでしょうか。→過去の「柳谷智宣のAIトレンドインサイト」の回はこちらを参照。

いつまでも、チャットだけでAIを使い続けるのももったいないので、ぜひAIエージェントで今までやっていた業務を自動化してみましょう。そこで、今回おすすめしたいのが「Zapier」(ザピアー)です。

  • 柳谷智宣のAIトレンドインサイト 第12回

    「Zapier」を使って、生成AIをワークフローの中に組み込みましょう

Zapierは、プログラミングの知識なしでさまざまなWebサービスやアプリを連携させ、日々の反復作業を自動化できるノーコードツールです。

GmailやSlack、Googleスプレッドシート、ChatGPTなど8000以上ものアプリに対応しており、「トリガー(あるアプリでのできごと)」をきっかけに「アクション(別のアプリでの処理)」を自動実行する「Zap」というワークフローを作成できます。

例えば「Dropboxの特定のフォルダに新しいファイルがアップロードされたら(トリガー)、そのファイルを自動でGoogle Driveの指定フォルダにコピー(バックアップ)し、さらにチームのSlackチャンネルに「新しいファイルが追加されました:[ファイル名]」と通知する(アクション)」や「WordPressやnoteで新しいブログ記事を公開したら(トリガー)、その記事のタイトルとURLを自動的に取得し、X(旧Twitter)とFacebookページに投稿フォーマットに合わせて自動投稿する(アクション)」などを実現できるのです。

  • 柳谷智宣のAIトレンドインサイト 第12回

    Zapierでは8000を超えるサービスや機能を連携できます

異なるサービスをつなぐことで、今まで手動で行っていた作業を自動化し、業務効率化や時間短縮、ヒューマンエラーの削減が期待できます。無料プランから始められ、直感的な操作で誰でも簡単に自動化の仕組みを構築できるのが大きな魅力です。

このワークフローの中に生成AIを組み込むと、さらにできることが広がります。「特定のキーワードを含むニュース記事がRSSフィードで更新されたら(トリガー)、その記事のURLと概要をChatGPTに渡し、要点をまとめたレポートを生成。

完成したレポートをGoogleドキュメントに自動で保存し、Dropboxにバックアップする(アクション)」といった従来は人間が介在しないと行えなかった作業を自動化できるのです。

そこで、今回はホームページなどから寄せられた「問い合わせメール」をChatGPTに分析させ、その結果に応じて適した部門やスタッフに連絡する、といったなんちゃってAIエージェントを作ってみましょう。

「なんちゃって」としたのは、AIエージェントの定義である「環境を知覚し、その知覚に基づいて意思決定を行い、目標を達成するために自律的に行動するシステムやプログラム」をクリアしていると言いづらかったためです。

AIエージェントはAIが自分で行動を選択するという自律性がポイントなのですが、Zapierでは定義されたアクションを実行します。人の手を介さないという意味では自律的ですが、AIが行動を決定しているとは言いづらいところがあるのです。とは言え、AIを活用した自動化が便利であることには変わりません。

  • 柳谷智宣のAIトレンドインサイト 第12回

    Zapierで定義されたアクション

Zapの作成には慣れが必要。手順もChatGPTに聞くべし

Zapierで作る自動化ワークフローののことをZapと呼びます。それぞれのトリガーやアクションをノーコードで繋いでいくので、プログラミングの知識は不要です。しかし、UIは英語ですし、流れるデータをZapierが処理できるようにするためにコツが必要なところもあります。

Zapierはユーザーが多いので、検索すれば大抵の設定方法はすぐに見つかります。しかし、初めてZapierを使う時にいちいち設定につまづいていると、ギブアップしたくなってしまうことでしょう。

そこでおすすめなのが、ChatGPTに欲しいZapの作り方を聞くことです。驚くべきことに、正規のマニュアルのように具体的な設定手順を教えてくれます。

今回は、ホームページに設置した問い合わせフォームに入力された内容がメールで届くと、その内容を分析し、顧客の感情や緊急度、処理すべき部署などを判断させたいので、そのままChatGPTに入れましょう。適当に指示しても回答してくれますが、パラメータなどは自分で入れておく方が修正の回数が少なくて済みます。

  • プロンプト

    以下の条件で動くZapierのZapを考えてください。ビギナーでも設定できるように具体的に指示すること。
    #条件
    「【問い合わせ】」という文字列を件名に含むメールが届いたら、本文の内容をChatGPTで分析し、以下の5項目を判定する。その結果に基づいて、Zapierが各担当者(営業、サポート、エスカレーション)にEメールを送信するようにする。
    (1)sentiment:「怒り」「満足」「中立」のいずれか
    (2)urgency:「高」「中」「低」のいずれか
    (3)category:「営業」(製品そのものの問い合わせ)、「サポート」(使い方/設定)のいずれか
    (4)recommend_to:categoryに従い「営業」「サポート」を出力。ただしsentimentが「怒り」の場合は必ず「エスカレーション」を返す
    (5)summary:120文字で要約

  • 出力

    ###ZAP全体の流れ
    #条件
    (1)トリガー:Gmail(またはOutlookなど)で件名に【問い合わせ】を含むメールを受信
    (2)ChatGPTへプロンプト送信:本文を分析し、結果をJSON形式で受け取る
    (3)JSON を解析:Formatter by Zapier ▶ Utilities ▶ Parse JSON
    (4)ルーティング:Paths by Zapierでrecommend_toの値(営業/サポート/エスカレーション)ごとに分岐
    (5)担当者へメール送信:分岐先でGmail ▶ Send Email(またはSMTP)

ZapierアカウントやGmailなどのメールアカウント、OpenAIのAPIキー、担当者用メールアドレス(営業・サポート・エスカレーションそれぞれ)などと準備すべきものを最初に教えてくれるのが賢いですね。

  • 柳谷智宣のAIトレンドインサイト 第12回

    事前準備すべきものを最初に教えてくれます

続いて、設定方法をステップバイステップで教えてくれます。ここからはZapierでの作業です。新しくZapを作り「Trigger」をクリック。ここでは、Gmailをクリックして、問い合わせメールを受信するアカウントでログインします。

  • 柳谷智宣のAIトレンドインサイト 第12回

    新規Zapを作成し「Trigger」にGmailを選びます

ここでGmailで何が起きると、次のアクションに進むのかを設定します。最初は「Event」に「New Email」を入れて、「Search String」設定で「subject:"【問い合わせ】"」と入力すればいい、と書いてありましたが、そのような項目はありません。

  • 柳谷智宣のAIトレンドインサイト 第12回

    トリガーの設定を行います

そんな時も大丈夫。ChatGPTに戻って、「ステップ1で、Event:New EmailにSearch Stringがありません」と聞き直せばいいのです。すると「New Email Matching Search」を推奨すると回答してきました。最初から言ってほしいものです笑

  • 柳谷智宣のAIトレンドインサイト 第12回

    ChatGPTに聞き直します

以下から先ほどのZAP全体の流れをふまえたChatGPTの出力です。

②ChatGPTへプロンプト送信

(1)App & Event
App:OpenAI(GPT-3/4/4o)
Event:Create Chat Completion

(2)Action Setup
Model:gpt-4o など
System Message:空欄で可
User Message:下記プロンプトを貼り、メール本文を動的に差し込む

あなたは問い合わせメールを分類するAIです。
入力: <<EMAIL_BODY>>
以下の5項目を必ず日本語で判定し、改行なしのJSONだけを返してください。

{
  "sentiment": "怒り | 満足 | 中立",
  "urgency": "高 | 中 | 低",
  "category": "営業 | サポート",
  "recommend_to": "営業 | サポート | エスカレーション",
  "summary": "120文字以内で要約"
}

ルール:
- sentiment が "怒り" なら recommend_to は必ず "エスカレーション"
- sentiment が "怒り" 以外のときは category と同じ値を recommend_to に入れる
- summary の末尾に句読点は不要

  • 柳谷智宣のAIトレンドインサイト 第12回

    ChatGPTにプロンプト送信します

差し込み方法
<<EMAIL_BODY>> 部分を Insert Data ボタンからメール本文(Body Plain/Body HTML)を選んで置換。

(3)Test Actionで次のようなJSONが戻ることを確認

{
  "sentiment": "怒り",
  "urgency": "高",
  "category": "サポート",
  "recommend_to": "エスカレーション",
  "summary": "購入したおもちゃが初期不良で壊れており、至急交換を求めている"
}

③JSONを解析

(1)App & Event
App:Formatter by Zapier
Event:Utilities → Parse JSON

(2)Action Setup
Input:Step 2のchoices[0].message.content
Schema:Auto-generateをクリック

(3)Test Action
・sentiment / urgency / category / recommend_to / summary の5フィールドができればOK

④ルーティング

(1)App
・Paths by Zapier

(2)Path A – 営業
・Condition:recommend_to (Text) | Exactly matches | 営業

(3)Path B – サポート
・Condition:recommend_to | Exactly matches | サポート

(4)Path C – エスカレーション
・Condition:recommend_to | Exactly matches | エスカレーション

  • 柳谷智宣のAIトレンドインサイト 第12回

    ルーティングします

⑤担当者へメール送信(各Path内)

(1)App & Event
・App:Gmail(Send Email)

(2)To
・該当部署の代表アドレス(例:sales@example.com など)

(3)Subject
【自動振り分け】${recommend_to}対応が必要です

(4)Body
・Markdown可

  • 柳谷智宣のAIトレンドインサイト 第12回

    担当者にメール送信するように設定します

▼要約
{{summary}}

▼詳細
Sentiment: {{sentiment}}
Urgency: {{urgency}}
Category: {{category}}

▼元メール
{{メール本文}}

動的データInsert Data でそれぞれ挿入。

(5)Attachments
・必要なら元メールの添付ファイルを追加

(6)Test & Continue
・テスト送信で内容を確認

テストと公開

  1. すべてのステップでTestを実行し、意図通りにデータが流れるか確認
  2. Turn on Zapをクリックして公開
  3. 本番メールで最終動作確認
  • 柳谷智宣のAIトレンドインサイト 第12回

    本番メールで最終動作確認をします

よくある質問(FAQ)

質問 対処
ChatGPT が JSON 以外の文字(例:説明文)を返す プロンプト末尾に「JSON 以外の出力は禁止」などと追記し再テスト
Parse JSONステップがエラー Inputにchoices[0].message.contentが正しく入っているか確認
Paths を使えないプランの場合 3つのFilterステップをシリアルに置き、それぞれでSend Emailを実行
Gmail側でエラー(quota exceeded) 送信元を別のSMTPサーバに切替、または送信頻度制限を見直し
  • 柳谷智宣のAIトレンドインサイト 第12回

    緊急度の高いものに対する問合せ

これで、件名に【問い合わせ】を含むメールが届くたびにChatGPTが自動で感情・緊急度・カテゴリを判定し、適切な担当者へメールを転送するZapが完成します。ビギナーでも手順通りに進めれば 15~20 分程度で構築できます。