Slackへの文字起こし:実際に機能する道筋
APISlackツール連携

Slackへの文字起こし:実際に機能する道筋

BMMamane B. MoussaMay 26, 2026Updated July 2, 20262 min read

Summarize this article with:

TL;DR

文字起こし結果をSlackに届ける方法は3つあります。ネイティブのSlackアプリを備えたツールを使う(Otter.aiまたはFireflies)、Webhook対応の任意の文字起こしサービスを自分でSlackにつなぐ、あるいはConvertAudioToTextの組み込みSlack通知を有効にする。ネイティブアプリはセットアップが速い一方で、その会議ボット型のモデルに固定されます。カスタムWebhook方式ならどんなサービスでも使えますが、構築に半日ほどかかります。

2026年の今、文字起こし結果をSlackに届けるのは解決済みの課題ですが、最適な道筋は使っているツールによって変わります。 Otter.aiとFirefliesは、議事録を自動的にSlackへ投稿できるネイティブのSlackアプリを備えています。ConvertAudioToTextを含むその他すべての文字起こしサービスは、組み込みのWebhook通知設定か、自分で構築したハンドラーのいずれかを経由してSlackにつながります。このガイドでは3つの道筋をすべて紹介します。

文字起こしテキストこそがペイロード:まず生成してからSlackへ振り分ける
文字起こしテキストこそがペイロード:まず生成してからSlackへ振り分ける

ネイティブのSlackアプリを持つツール

Slack Marketplaceでインストールが確認できているツールは2つです。

ツールSlack連携投稿される内容必要なプラン
Otter.aiネイティブアプリ(マーケットプレイス)議事録、要約、アクションアイテム全プラン
Fireflies.aiネイティブアプリ(マーケットプレイス)文字起こし、要約、アクションアイテム全有料プラン(Integration RulesはBusiness以上)
その他大半Incoming WebhookまたはZapierセットアップによる場合による

Otter.aiは通話前にリマインダーを投稿し、リアルタイムでメモを取り、会議終了後にAI要約付きの完成したメモを指定したSlackチャンネルへ送信します。誰かがOtterのリンクをSlackで共有すると、アプリが会議のメタデータ付きで展開表示します。これらはすべて無料のBasicプランで動作します。OtterのアプリはSlack Marketplaceに掲載されています。

Fireflies.aiは、文字起こし・要約・アクションアイテムを公開チャンネル、非公開グループ、ダイレクトメッセージのいずれかに投稿します。キーワードアラートの設定も可能で、通話中に競合他社名や特定のフレーズが出てきたらSlackで通知を受け取れます。FirefliesはSlack Huddleの文字起こし(2026年初頭時点でベータ)にも対応しており、Huddleでの会話をキャプチャしてFirefliesダッシュボードに記録します。Firefliesの連携ページから利用できます。

私見ですが:チームがZoom、Google Meet、Teamsで会議を行っていて、コードを一切書かずにSlackへ議事録を届けたいなら、OtterかFirefliesで十分です。ただし両ツールとも会議ボットとして動作するため、汎用的な音声ファイルやアップロードされたファイルよりも、会議中心のワークフローに向いています。

CATTの組み込みSlack通知

ConvertAudioToTextには、ダッシュボードの「設定」内にSlack通知設定があります。SlackワークスペースのIncoming Webhook URLを貼り付け、「完了時に通知」を有効にすると、文字起こしが完了するたびにCATTがそのチャンネルへ投稿します。

通知にはファイル名、音声の長さ、文字起こしへの直接リンク、AI要約(最大400文字)が添付ファイルとして含まれます。これにより、最も一般的なチームのユースケース——誰かが録音をアップロードし、文字起こしが準備できたらチームがSlackで通知を受け取る——がカバーされます。

文字起こしツールからアップロードされた任意の音声・動画ファイルに対して機能します。コードは不要です。唯一できないのは、Slack上で共有されたファイルを自動で文字起こしすることで、それには後述のカスタムWebhook方式が必要です。

開発者向けの道:CATT WebhookからSlackへ

CATTには送信Webhook(Businessプラン)があります。文字起こしジョブが完了すると、CATTは署名付きペイロードを登録済みの任意のHTTPS URLへPOSTします。イベントを受け取り、それをSlackへ転送します。

ダッシュボードまたはAPIからWebhookを登録します:

curl -X POST https://api.convertaudiototext.com/api/v1/dashboard/webhooks \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://your-server.com/webhooks/catt", "events": ["job.completed"]}'

レスポンスにはsecretフィールドが含まれます。保存しておいてください。以降のすべての配信はこのシークレットで署名されます。

ジョブが完了すると、ペイロードは次のようになります:

{
  "event": "job.completed",
  "timestamp": "2026-07-01T10:23:45Z",
  "data": {
    "job_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "completed",
    "duration": 342,
    "completed_at": "2026-07-01T10:23:44Z",
    "result_url": "https://api.convertaudiototext.com/api/v1/result/<job_id>"
  }
}

署名はX-Webhook-Signatureヘッダーでsha256=&lt;hmac-hex&gt;という形式で届きます。

Webhookを受信してSlackへ投稿

import crypto from 'crypto';
import express from 'express';
import fetch from 'node-fetch';

const app = express();

app.post('/webhooks/catt',
  express.raw({ type: 'application/json' }),
  async (req, res) => {
    const rawSig = req.header('X-Webhook-Signature') ?? '';
    const [algo, receivedHex] = rawSig.split('=');
    if (algo !== 'sha256' || !receivedHex) {
      return res.status(401).send('Bad signature format');
    }

    const expected = crypto
      .createHmac('sha256', process.env.CATT_WEBHOOK_SECRET)
      .update(req.body)
      .digest('hex');

    if (!crypto.timingSafeEqual(Buffer.from(receivedHex), Buffer.from(expected))) {
      return res.status(401).send('Signature mismatch');
    }

    const event = JSON.parse(req.body.toString());
    if (event.event !== 'job.completed') return res.sendStatus(200);

    const { job_id, duration, result_url } = event.data;
    const durationMin = (duration / 60).toFixed(1);

    // Optionally fetch the full transcript text from result_url
    // using your API key before posting to Slack.

    await fetch(process.env.SLACK_WEBHOOK_URL, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        text: `Transcript ready (${durationMin} min). View: ${result_url}`,
        attachments: [{
          color: '#2563eb',
          title: 'ConvertAudioToText',
          text: `Job ID: ${job_id}`
        }]
      })
    });

    res.sendStatus(200);
  }
);

ポーリングとWebhookのどちらが有利かについて詳しく知りたい場合は、文字起こしにおけるWebhook vs ポーリングをご覧ください。

Slackメッセージに完全な文字起こしテキストを含めたい場合は、投稿前にAPIキーを使ってresult_urlから取得してください。長い文字起こしの場合は、3万字ものテキストをSlackメッセージに流し込むより、要約と全文へのリンクを投稿する方がきれいに収まります。

ノーコードの代替案:Zapierとn8n

どちらのツールも、コードなしでSlackと文字起こしAPIをつなげられます。

ZapierにはSlack向けの「新規ファイル」トリガーがあります。制限点として、外部サービスからの完了Webhookを受け取るには、Zapierの有料Webhookトリガーが必要です。文字起こしサービスが完了時にWebhookを送る仕様であれば、Zapierがそれを受け取ってSlackへ投稿できます。ZapierからSlackへの方向(メッセージ投稿)はすべてのプランで利用可能です。

n8nはSlackのfile-sharedイベントをトリガーノードとしてサポートし、外部APIへのリクエスト送信も可能です。セルフホストのn8nは無料です。数時間確保できる開発者がいるチームなら、前述のカスタムWebhook方式の方が柔軟です。開発者がまったくいないチームなら、n8nを検討する価値があります。手順についてはZapierによる文字起こしの自動化をご覧ください。

実務上の注意点

Slackのファイルサイズ上限。 Slackは全プランで最大1GBまでのファイルを受け付けます。上限に近いサイズの音声・動画ファイルでは、ワークフローが拾えるようになるまで、Slack内でのアップロードにそれなりの時間がかかることを想定しておきましょう。

Slackのメッセージレート制限。 chat.postMessage APIは、バースト分の余裕はあるものの、1チャンネルあたり毎秒約1メッセージに制限されています。実際に問題になるのは、多数の文字起こしが同時に完了し、すべてが同じチャンネルへ通知するケースだけです。

SlackのファイルアップロードAPI。 API経由で文字起こしのテキストファイルをSlackにアップロードしたい場合は、files.getUploadURLExternalfiles.completeUploadExternalのフロー、または公式Slack Node SDKのuploadV2メソッドを使ってください。旧式のfiles.uploadエンドポイントは2025年11月に動作しなくなりました。

会議ボット不要のCATT。 ライブ会議ではなく、音声ファイル、ポッドキャスト、アップロードされた録音の文字起こしが必要な場合は、ConvertAudioToTextが会議ボットをインストールせずに対応します。通知には組み込みのSlack Webhookを設定するか、開発者向けWebhook(Businessプラン)を使ってより緊密な連携を構築してください。

はじめ方

動くSlack文字起こし環境への最短ルート:

  1. 会議を実施していてすでにOtterやFirefliesを使っているなら、マーケットプレイスからSlackアプリをインストールしてください。10分以内で完了します。
  2. 音声アップロードにCATTを使っているなら、ダッシュボード設定でSlack通知を有効にし、Incoming Webhook URLを貼り付けてください。
  3. Slackへのファイルアップロードに反応させたり独自のルーティングロジックを持たせたりするカスタム構成が必要なら、CATTのWebhookエンドポイントを登録し、上記のハンドラーで接続してください。

FAQ

文字起こし結果をSlackに入れるのにコードを書く必要はありますか?

必ずしもそうではありません。Otter.aiとFirefliesはどちらもSlack Marketplaceにアプリがあり、コード不要で議事録を自動投稿できます。ネイティブのSlackアプリがないサービスを使う場合、ノーコードの選択肢は2つあります。Zapier(Webhookトリガーには有料プランが必要)かn8n(セルフホスト可能)です。自分でWebhookハンドラーを書くのが最も自由度が高く、Node.jsでおよそ100〜150行程度で書けます。

ConvertAudioToTextにはネイティブのSlackアプリがありますか?

Slack Marketplaceのアプリはありません。CATTには組み込みのSlack通知設定があります。ダッシュボード設定でIncoming Webhook URLを貼り付けると、文字起こしが完了するたびにCATTがリンクとAI要約付きの完了通知を投稿します。Businessプランの開発者は、job.completedで発火する送信Webhookを登録し、そのペイロードを自分で管理するハンドラーからSlackに投稿することもできます。

FirefliesのSlack連携にはどのプランが必要ですか?

Firefliesのドキュメントによると、Slack連携はすべての有料プランで利用できます。高度なIntegration Rules(タイトル、ホスト、参加者に基づいてどの会議をSlackに投稿するかを絞り込む機能)にはBusinessプラン以上が必要です。

CATTのWebhookを検証するための正しいヘッダーは何ですか?

署名はX-Webhook-Signatureヘッダーでsha256=<hmac-hex>として送信されます。Webhookシークレットを使って生のリクエストボディのHMAC-SHA256を計算し、先頭に「sha256=」を付けて、crypto.timingSafeEqualで比較することでタイミング攻撃を防ぎます。

参考資料

Try transcription free

Convert any audio or video to clean, unwatermarked text — speaker labels, timestamps, and AI summaries included. First 10 minutes free, no account.

Related Articles