Email Triage and Response Automation with OpenClaw

Automate email triage, categorization, and intelligent responses with OpenClaw AI agents. Process hundreds of daily emails with zero manual sorting and faster response times.

E
ECOSIRE Research and Development Team
|2026年3月19日5 分で読める967 語数|

OpenClaw を使用した電子メールのトリアージと応答の自動化

平均的なナレッジ ワーカーは、電子メールの管理に 1 日あたり 2.6 時間を費やします。顧客対応チーム、営業開発担当者、エグゼクティブアシスタントの場合、この数字はさらに高く、その時間のかなりの部分が、電子メールを緊急度ごとに分類し、問い合わせを適切な担当者にルーティングし、よくある質問への回答、会議出席依頼のスケジュールを設定し、未処理のスレッドのフォローアップなど、有能なシステムで処理できるタスクに費やされています。これらのタスクには理解力が必要ですが、創造性は必要ありません。これらはまさに OpenClaw エージェントが構築されたタスクです。

OpenClaw の電子メール自動化は、キーワードベースのルールを超えています。電子メール トリアージ エージェントは、熟練した人間のアシスタントと同じようにすべての電子メールを読み取り、コンテキストを理解し、意図を推測し、送信者とビジネスとの関係を認識し、インテリジェントなルーティングと応答の決定を行います。このガイドでは、企業展開のための完全な電子メール自動化アーキテクチャについて説明します。

重要なポイント

  • OpenClaw の電子メール トリアージ エージェントは、電子メールを種類 (問い合わせ、苦情、請求書、会議出席依頼、スパム、内部通知) と優先度によって 2 秒以内に分類します。
  • エージェントは、反復的な問い合わせに対する回答の草案を作成し、自動的に送信するか、ポリシーに基づいて承認のために人間に送信します。
  • 会議スケジュールのリクエストはエンドツーエンドで処理されます。エージェントはカレンダーの空き状況を確認し、時間を提案し、予約を確認し、招待状を送信します。
  • エージェントはスレッドのコンテキストを維持します。同じスレッド内のフォローアップ電子メールは、会話履歴を意識して処理されます。
  • 感情のエスカレーションを検出すると、話題に関係なく、苦しんでいる送信者や怒っている送信者をすぐに人間の担当者にルーティングします。
  • 機密性の高い電子メール カテゴリ (法的通知、規制対応、企業アカウントからの苦情) にはフラグが付けられ、自動応答はされません。
  • Gmail、Outlook (Microsoft 365)、および IMAP/SMTP 互換の電子メール システムとの統合。
  • ECOSIRE は、経営陣、顧客サービス部門、販売開発業務向けに OpenClaw 電子メール自動化を構築します。

アーキテクチャ: 電子メール自動化スタック

電子メール自動化パイプラインは、順番に動作する 4 つのエージェントで構成されます。

Inbound Email
      ↓
[ Triage Agent ]         — classify type, priority, sender relationship, intent
      ↓
[ Response Agent ]       — draft appropriate response or action
      ↓
[ Review Gate ]          — auto-send, human-approve, or escalate
      ↓
[ Follow-up Agent ]      — track replies, manage open threads, send reminders

レビュー ゲートは電子メール カテゴリごとに構成できます。内部通知の場合、エージェントはすぐにアクションを実行できます。顧客からの問い合わせの場合、人間が送信する返信候補として下書きが受信箱に送られます。スパムとマーケティングについては、エージェントが自動的にアーカイブします。機密カテゴリの場合、エージェントは応答せずにフラグを立てます。


電子メールの統合: メールボックスへの接続

OpenClaw は、標準プロトコルと OAuth を介して電子メールに接続します。 Gmail の推奨アーキテクチャ:

export const GmailTool = defineTool({
  name: "email",
  type: "google-gmail",
  auth: {
    type: "oauth2",
    clientId: "${GOOGLE_CLIENT_ID}",
    clientSecret: "${GOOGLE_CLIENT_SECRET}",
    refreshToken: "${GMAIL_REFRESH_TOKEN}", // Stored in Vault
    scopes: [
      "https://www.googleapis.com/auth/gmail.readonly",
      "https://www.googleapis.com/auth/gmail.send",
      "https://www.googleapis.com/auth/gmail.modify",
    ],
  },
  polling: {
    intervalMs: 30_000, // Check every 30 seconds
    maxResults: 50,
    labelFilter: ["INBOX", "UNREAD"],
  },
});

Microsoft 365 の場合、このツールは同様の OAuth 構成で Microsoft Graph API を使用します。他の電子メール システムの場合、IMAP ツールは互換性を提供します。

export const ImapTool = defineTool({
  name: "email",
  type: "imap",
  config: {
    host: "${IMAP_HOST}",
    port: 993,
    tls: true,
    auth: { user: "${EMAIL_ADDRESS}", pass: "${EMAIL_PASSWORD}" },
    smtpHost: "${SMTP_HOST}",
    smtpPort: 587,
  },
});

電子メールのポーリングは、構成可能な間隔で実行されます。大量の受信トレイ (1 日あたり 1,000 件以上のメール) の場合、Gmail の Pub/Sub 統合または Outlook の Webhook サブスクリプションを介したプッシュ通知モデルにより、ポーリング オーバーヘッドのないリアルタイム処理が実現します。


トリアージ エージェント: すべてのメールを理解する

トリアージ エージェントは、すべての受信メールを次の 4 つの側面に沿って分類します。

タイプ: このメールはどのカテゴリに分類されますか?一般的なタイプには、顧客からの問い合わせ、販売機会、ベンダーとのコミュニケーション、請求書/請求書、会議出席依頼、苦情、法的通知、内部通知、マーケティング/プロモーション、スパム、ニュースレターが含まれます。

優先度: これはどれくらい緊急に対応が必要ですか?優先順位は、送信者の関係 (企業アカウントと不明な連絡先)、タイプ (法的通知が常に高優先)、感情 (怒りまたは苦痛の信号が高優先)、および明示的な時間参照 (「金曜日までにこれが必要です」) によって決まります。

意図: 送信者は何を望んでいますか?電話の予約、質問への回答の取得、返金のリクエスト、苦情の提出、会議の確認、文書の承認。

送信者の関係: この送信者は顧客ですか (顧客である場合はどの層ですか)。ベンダー?販売パイプラインに見込み客はいますか?社内の同僚?初めての接触ですか?送信者の電子メール ドメインが CRM および ERP と照合され、トリアージ コンテキストが強化されます。

export const TriageEmail = defineSkill({
  name: "triage-email",
  tools: ["email", "crm", "llm"],
  async run({ input, tools }) {
    const email = await tools.email.getMessage(input.messageId);

    // Enrich sender context
    const senderContext = await tools.crm.findByEmail(email.from.address);

    // Classify with LLM
    const classification = await tools.llm.classify({
      prompt: buildTriagePrompt(email, senderContext),
      schema: {
        type: z.enum(["customer-inquiry", "sales-opportunity", "complaint", "invoice",
                       "meeting-request", "legal-notice", "internal", "spam", "other"]),
        priority: z.enum(["urgent", "high", "normal", "low"]),
        intent: z.string().max(100),
        requiresHuman: z.boolean(),
        requiresHumanReason: z.string().optional(),
        sentiment: z.enum(["positive", "neutral", "negative", "distressed"]),
      },
    });

    // Emotional escalation — always to human
    if (classification.sentiment === "distressed" || classification.type === "legal-notice") {
      return {
        ...classification,
        requiresHuman: true,
        requiresHumanReason: classification.sentiment === "distressed" ? "Distressed sender" : "Legal notice",
        autoAction: "FLAG_FOR_HUMAN",
      };
    }

    return { ...classification, senderContext };
  },
});

応答エージェント: 文脈に沿った正確な応答の作成

自動応答の対象となる電子メール (注文状況、よくある質問、スケジュール設定に関する顧客からの問い合わせ) については、応答エージェントが組織のコミュニケーション スタイルで返信の草案を作成します。

応答の品質は、エージェントがアクセスできる知識に依存します。応答エージェントは次のクエリを実行します。

  • 事実に基づいた回答のための知識ベース (製品仕様、価格設定、ポリシー)
  • 顧客固有の情報(口座ステータス、未処理の注文、以前のやり取り)用の CRM
  • スケジュールを設定するときに空き状況を確認できるカレンダー
  • 注文と請求書の詳細のための ERP
export const DraftEmailResponse = defineSkill({
  name: "draft-email-response",
  tools: ["email", "crm", "knowledge-base", "erp", "calendar", "llm"],
  async run({ input, tools }) {
    const { email, classification, senderContext } = input;
    let contextData: Record<string, any> = {};

    // Gather relevant context based on email type
    if (classification.type === "customer-inquiry" && senderContext?.customerId) {
      contextData.recentOrders = await tools.erp.getRecentOrders(senderContext.customerId, { limit: 3 });
      contextData.openTickets = await tools.crm.getOpenTickets(senderContext.customerId);
    }

    if (classification.intent.includes("schedule") || classification.type === "meeting-request") {
      contextData.availability = await tools.calendar.getFreeSlots({ days: 7, duration: 30 });
    }

    // Query knowledge base for relevant answers
    const knowledgeResults = await tools.knowledgeBase.search(email.body, { topK: 3 });
    contextData.knowledgeAnswers = knowledgeResults;

    // Generate draft
    const draft = await tools.llm.generate({
      prompt: buildResponsePrompt(email, classification, senderContext, contextData),
      systemPrompt: loadBrandVoiceGuide(), // Tone, style, sign-off format
      maxTokens: 500,
      temperature: 0.3,
    });

    return {
      draft,
      contextUsed: Object.keys(contextData),
      confidence: knowledgeResults[0]?.confidence ?? 0.5,
    };
  },
});

ブランドの声の一貫性: 応答生成のためのシステム プロンプトには、組織のコミュニケーション スタイル ガイドラインが含まれています。つまり、形式レベル、優先サインオフ、顧客への呼びかけ方 (ファーストネームまたはフォーマル)、および使用または避けるべき特定のフレーズです。これにより、エージェントが起草した回答は、著者が書いていない場合でも、スタイル的にはチームの文章と区別できなくなります。


会議のスケジュール設定: カレンダーの前後関係をなくす

会議のスケジュールを設定するメールは大量で創造性が低く、エージェントが適切に処理する予測可能なパターンに従っています。トリアージ エージェントが会議出席依頼を識別すると、スケジュール応答フローがアクティブになります。

export const HandleMeetingRequest = defineSkill({
  name: "handle-meeting-request",
  tools: ["calendar", "email"],
  async run({ input, tools }) {
    const { email, requestedDuration } = input;

    // Find available slots
    const slots = await tools.calendar.getFreeSlots({
      duration: requestedDuration ?? 30,
      days: 7,
      businessHoursOnly: true,
      timezone: inferTimezone(email),
    });

    if (slots.length === 0) {
      return {
        action: "DRAFT_RESPONSE",
        message: "No available slots in the next 7 days — response template: suggest extending the window",
        requiresHuman: true,
      };
    }

    const topSlots = slots.slice(0, 3);

    // Create a scheduling page link (or include times directly in the email)
    const schedulingLink = await tools.calendar.createSchedulingPage({
      slots: topSlots,
      title: `Meeting with ${input.hostName}`,
      duration: requestedDuration ?? 30,
      confirmationEmailTemplate: "meeting-confirmed",
    });

    const draft = buildSchedulingResponse(email, topSlots, schedulingLink, input.hostName);

    return { action: "DRAFT_READY", draft, schedulingLink };
  },
});

受信者がスケジュール リンクのスロットをクリックすると、Webhook によってカレンダー イベントを予約する確認スキルが起動され、すべての関係者にカレンダーの招待が送信され、確認で電子メール スレッドが閉じられます。


スレッドコンテキスト管理

電子メールでの会話は複数のメッセージにまたがります。フォローアップ電子メールは、前のスレッドのコンテキストでのみ意味を持ちます。スレッド マネージャーは、開いている各スレッドのセマンティック サマリーを維持し、新しいメッセージが到着すると更新されます。

export const UpdateThreadContext = defineSkill({
  name: "update-thread-context",
  tools: ["email"],
  async run({ input, tools, memory }) {
    const threadKey = `thread:${input.threadId}`;
    const existingContext = await memory.episode.get(threadKey);

    const newMessages = await tools.email.getThreadMessages(input.threadId, {
      since: existingContext?.lastMessageId ?? null,
    });

    const updatedSummary = await summarizeThread([
      ...(existingContext?.messages ?? []),
      ...newMessages,
    ]);

    await memory.episode.set(threadKey, {
      threadId: input.threadId,
      summary: updatedSummary,
      lastMessageId: newMessages[newMessages.length - 1]?.id,
      openItems: extractOpenItems(updatedSummary),
      lastUpdated: new Date().toISOString(),
    });

    return { summary: updatedSummary };
  },
});

新しいメッセージがスレッドに到着すると、トリアージおよび応答エージェントはスレッドの概要をコンテキストとして受信するため、すべてのメッセージを再読することなく完全な会話履歴を理解できます。


追跡追跡: 何も漏れることはありません

フォローアップ エージェントは、組織がメッセージを送信したが応答を受け取っていない、開いているスレッドを監視します。設定可能な期間 (通常、顧客対応には 3 営業日、時間制限のある販売フォローアップには 1 日) が経過すると、フォローアップ メールの草案が作成され、適切なレビュー ゲートにルーティングされます。

export const TrackOpenThreads = defineSkill({
  name: "track-open-threads",
  tools: ["email"],
  async run({ input, tools, memory }) {
    const sentEmails = await tools.email.getSentMessages({
      since: hoursAgo(24 * 7), // Last week's sent emails
      excludeInternalDomains: true,
    });

    const waitingForReply = [];
    for (const sent of sentEmails) {
      const thread = await tools.email.getThread(sent.threadId);
      const lastMessage = thread.messages[thread.messages.length - 1];
      const weWroteLastMessage = lastMessage.from.address === input.ourEmailAddress;

      if (weWroteLastMessage) {
        const daysSinceSent = daysSince(lastMessage.date);
        if (daysSinceSent >= input.followUpAfterDays) {
          waitingForReply.push({ threadId: sent.threadId, daysSinceSent, subject: sent.subject });
        }
      }
    }

    return { waitingForReply, count: waitingForReply.length };
  },
});

機密電子メールの処理: エージェントが自動応答しないもの

一部の電子メール カテゴリでは、自動応答を受信して​​はなりません。トリアージ エージェントは、人間がすぐに処理できるようにこれらにフラグを立てます。

  • 法的通知、停止措置通知、規制上の通信
  • 収益基準を超える企業アカウントからの苦情
  • メディア、報道機関、またはジャーナリズムに言及した電子メール
  • 法的文書を示唆する添付ファイルの種類を含む電子メール (法的な文書と思われるファイル名パターンを含む PDF)
  • フィッシングまたはソーシャル エンジニアリングの試み (フラグが立てられ、隔離され、応答されません)
  • 分類の信頼度が非常に低い電子メール (エージェントは電子メールの内容がわかりません)

フラグ付けシステムは、チームのワークフロー システムにラベルを追加してタスクを作成します。電子メールは決して失われることはなく、人間の手に渡されるだけです。


よくある質問

エージェントは応答において人間の作者であるかのように見える状態をどのように維持するのでしょうか?

応答エージェントは、人間の送信者の通信スタイル (優先フレーズ、サインオフ形式、一般的な応答の長さ、形式レベル) で構成されます。ドラフトはそのスタイルで生成されます。送信前に回答がレビューされるチームの場合、必要に応じて人間が下書きを編集して自分で送信します。電子メールは AI の支援を示すことなく自分のアドレスから送信されます。完全に自動化された応答 (FAQ 応答、注文ステータス) の場合、組織は電子メールのフッターで自動化を開示することを選択できます。

エージェントが応答方法に自信がない場合はどうなりますか?

信頼度のしきい値は電子メール カテゴリごとに構成できます。分類または提案された応答に対するエージェントの信頼度がしきい値を下回ると、エージェントは自動応答ではなく、提案されたアクションとともに人間のレビュー キューにルーティングされます。人間はワンクリックで提案を承認したり、変更したり、手動で処理したりできます。承認されたすべての提案は、学習フィードバック ループを通じて、同様の電子メールに対するエージェントの将来の信頼度を向上させます。

エージェントは複数言語のメールを処理できますか?

はい。言語検出は、トリアージ パイプラインの最初のステップとして実行されます。ナレッジ ベースにその言語のコンテンツがある場合、エージェントは受信メールと同じ言語で応答の下書きを作成できます。ナレッジ ベースが英語のみである言語の場合、エージェントは応答草稿を送信者の言語に翻訳します。英語以外の言語での応答品質は、基礎となる LLM が強力なトレーニングをカバーしている言語 (スペイン語、フランス語、ドイツ語、中国語、日本語、ポルトガル語、アラビア語) で最も高くなります。

フォローアップ トラッカーはどのようにして過剰なリマインダーの送信を回避しますか?

フォローアップ エージェントは、リマインダーを送信する前に、受信者のエンゲージメント シグナルを確認します。受信者が以前の電子メールを開封したものの (開封確認がある場合は開封確認で追跡されます)、返信がなかった場合、フォローアップはより穏やかなものとなり、受信者が検討しているものとみなします。オープン信号がない場合、追跡はより直接的になります。エージェントはオプトアウト シグナルも尊重します。以前のフォローアップで連絡を取らないように求める応答が生成された場合、スレッドはクローズ済みとしてマークされ、それ以上のフォローアップは送信されません。

電子メールに対して実行されたすべての自動アクションの監査証跡はありますか?

はい。すべての自動アクション (トリアージ分類、ドラフト生成、自動送信、ラベル適用、アーカイブ) は、タイムスタンプ、エージェントの分類根拠、電子メールのメッセージ ID とともに記録されます。管理者は監査ログにアクセスでき、コンプライアンス レビューのためにエクスポートできます。電子メール アーカイブ要件がある組織の場合、OpenClaw のアクションは既存の電子メール アーカイブ ソリューションを妨げません。


次のステップ

ほとんどの専門チームにとって、電子メールは大量かつ創造性の低いボトルネックとなっています。 OpenClaw 電子メール自動化は、分類、ルーティング、繰り返しの応答を処理するため、チームは人間の判断、関係構築、創造性が必要な会話に集中できます。

ECOSIRE の OpenClaw サービス には、カスタマー サービス チーム、エグゼクティブ アシスタント、販売開発業務、ベンダー管理機能向けの電子メール自動化実装が含まれます。私たちのチームは、組織のコミュニケーション標準に合わせてトリアージ ルール、ナレッジ ベース、ブランド ボイス ガイドライン、レビュー ゲートを構成します。

ECOSIRE に連絡して、電子メールの自動化要件について話し合い、実装の見積もりを受け取ります。

E

執筆者

ECOSIRE Research and Development Team

ECOSIREでエンタープライズグレードのデジタル製品を開発。Odoo統合、eコマース自動化、AI搭載ビジネスソリューションに関するインサイトを共有しています。

WhatsAppでチャット