
Slackへの文字起こし:実際に機能する道筋
Summarize this article with:
文字起こし結果をSlackに届ける方法は3つあります。ネイティブのSlackアプリを備えたツールを使う(Otter.aiまたはFireflies)、Webhook対応の任意の文字起こしサービスを自分でSlackにつなぐ、あるいはConvertAudioToTextの組み込みSlack通知を有効にする。ネイティブアプリはセットアップが速い一方で、その会議ボット型のモデルに固定されます。カスタムWebhook方式ならどんなサービスでも使えますが、構築に半日ほどかかります。
2026年の今、文字起こし結果をSlackに届けるのは解決済みの課題ですが、最適な道筋は使っているツールによって変わります。 Otter.aiとFirefliesは、議事録を自動的にSlackへ投稿できるネイティブのSlackアプリを備えています。ConvertAudioToTextを含むその他すべての文字起こしサービスは、組み込みのWebhook通知設定か、自分で構築したハンドラーのいずれかを経由してSlackにつながります。このガイドでは3つの道筋をすべて紹介します。

ネイティブの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=<hmac-hex>という形式で届きます。
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.getUploadURLExternalとfiles.completeUploadExternalのフロー、または公式Slack Node SDKのuploadV2メソッドを使ってください。旧式のfiles.uploadエンドポイントは2025年11月に動作しなくなりました。
会議ボット不要のCATT。 ライブ会議ではなく、音声ファイル、ポッドキャスト、アップロードされた録音の文字起こしが必要な場合は、ConvertAudioToTextが会議ボットをインストールせずに対応します。通知には組み込みのSlack Webhookを設定するか、開発者向けWebhook(Businessプラン)を使ってより緊密な連携を構築してください。
はじめ方
動くSlack文字起こし環境への最短ルート:
- 会議を実施していてすでにOtterやFirefliesを使っているなら、マーケットプレイスからSlackアプリをインストールしてください。10分以内で完了します。
- 音声アップロードにCATTを使っているなら、ダッシュボード設定でSlack通知を有効にし、Incoming Webhook URLを貼り付けてください。
- 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
How to Add Timestamps to a Transcript
Learn how to add timestamps to a transcript with an audio-to-text tool, then export timestamped SRT or VTT subtitle files for easy navigation and editing.
How to Transcribe a Conference Talk to Text
Learn how to transcribe a conference talk or keynote to text, label speakers, and export SRT, VTT, or TXT using a straightforward upload or URL workflow.