データの流れと保存期間
「文字おこしくん」(以下「本サービス」)で、音声と文字がどこを通り、どこに、いつまで残るかをまとめたページです。社内の情報セキュリティの確認に、そのまま使えるように書いています。法的な約束はプライバシーポリシーと利用規約が正で、このページはその具体的な説明です。
要点
| 項目 | 内容 |
|---|---|
| 音声 | 音声認識のために Google に送りますが、本サービスは保存しません。 |
| 文字起こしの結果 | 本サービスのサーバーのデータベースに、文字起こしの終了から 30・90・180・365 日(サーバーのレベルによる)保存し、過ぎたら自動で削除します。 |
| 削除後の残り | バックアップに最大 7 日間残り、その後消えます。Webhook の送信先にすでに届いた知らせは、送信先に残ります(本サービスからは消せません)。 |
| AI の学習 | 運営者は、音声と文字起こしの結果を AI のモデルの学習に使いません。外部の事業者の扱いは下の表のとおりです。 |
| AI による修正(AI 補正) | 運営者がテスターとして選び、管理者が了承したサーバーだけ。それ以外のサーバーの文字は LLM の事業者に送りません。 |
| 決済 | カード番号は Stripe が直接受け取り、本サービスには届きません。メールアドレスやカードの下 4 桁などは、運営者が Stripe の管理画面で確認できます。 |
| 書き出しと削除 | そのボイスチャンネルで「チャンネルを見る」と「接続」の権限を持つメンバーと、サーバーの管理者が、管理画面から 1 件ずつ書き出せます。削除は、サーバーの管理者だけができます。 |
| Webhook | 管理者が送信先を登録したサーバーだけ、管理者の指示に基づいて、文字起こしの開始と終了を、管理者が登録した URL に知らせます。文字起こしの結果・話者・音声は送りません。送信の記録は、送り終えてから 7 日で削除します。 |
1. データの流れ
- Discord のボイスチャンネル
- ① 音声(Discord のエンドツーエンド暗号化 DAVE)
- ボット(参加者として受信・復号)
- ② 音声(同じホストの中。外部のネットワークを通らない)
- 本サービスのサーバー
-
③ 音声(TLS)
④ 文字(TLS)
Google(音声認識)
-
⑤ 確定した文字を保存
SQLite
⑧ 常時複製(TLS)
Cloudflare R2
-
⑥ AI 補正のテスターのサーバーだけ(TLS)
OpenRouter(→ Cerebras / Groq)
-
⑦ 表示(TLS。Cloudflare を経由)
表示ページ・OBS・Discord アクティビティ
-
⑨ 開始と終了の知らせ(Webhook を登録したサーバーだけ。TLS)
Cloudflare Workers(中継)
⑩ 署名付きの知らせ(TLS)
管理者が登録した送信先
- ボットは、文字起こしを開始したボイスチャンネルに参加者として入り、Discord のエンドツーエンド暗号化(DAVE)を復号して、話している人ごとの音声を受け取ります。
- ボットは、音声を同じホストの本サービスのサーバーに渡します。
- 本サービスのサーバーが、話している人ごとの音声を Google の音声認識に送ります。Google には音声だけを送り、参加者の表示名などは送りません。
- Google から本サービスのサーバーに文字が返ります。途中の文字(確定前)は表示にだけ使い、保存しません。
- 確定した文字、話者の表示名、時刻を、本サービスのサーバーのデータベース(SQLite)に保存します。
- AI 補正が有効なテスターのサーバーだけ、確定した文字と、直前の数件の発言、話者の表示名を OpenRouter に送り、誤りを直した文字を受け取って保存します。
- 文字は、表示ページ・OBS のオーバーレイ・Discord アクティビティに配信します。公開の通信は Cloudflare を経由し、TLS で暗号化されます。管理者が「発言をテキストチャンネルにも流す」を設定したサーバーでは、ボットが、確定した文字を、話者の表示名とアイコンを付けて、Discord のテキストチャンネルにも投稿します。本サービスは、投稿した文字(Discord のメッセージ)を、本サービスの保存期間が過ぎても削除しません。
- データベースは、障害に備えて Cloudflare R2 に常時複製しています。
- 管理者が Webhook の送信先を登録したサーバーだけ、本サービスのサーバーは、管理者の指示に基づいて、管理者が選んだ出来事(文字起こしの開始・終了)のたびに、文字起こしの ID・サーバー ID・ラベルと参照の値(ボットで始めた文字起こしでは、ボイスチャンネルの名前と ID)・開始と終了の時刻・終了の理由・発話の時間・保存期限に、送信先ごとのシークレットで署名を付けて、Cloudflare Workers の中継に渡します。管理者が「テストを送る」を押したときは、送信先の ID とサーバー ID だけを渡します。文字起こしの結果(発言の文字)・話者の表示名とユーザー ID・音声は渡しません。
- 中継は、送るたびに送信先の URL を確かめてから、管理者が登録した https の URL に送ります。送信先に見えるのは Cloudflare の IP アドレスで、本サービスのサーバーの IP アドレスは見えません。送信先が受け取れなかったときは、最初の送信から約 28 時間のうちに最大 7 回送り直すため、同じ知らせが 2 回以上届くことがあります。送信先は管理者が選んだもので、運営者の委託先ではありません。本サービスは、送信先に届いた知らせを削除できません。
このページは、上の改定日の時点の構成を説明しています。ボットとサーバーを別のホストに分けるなど、上の説明が変わる構成の変更は、このページを改めてから行います。
管理画面(月額の応援の申込みの画面を含みます)は、Cloudflare Workers で動き、そのデータは Cloudflare D1 に保存します。決済は Stripe の画面で行います。管理画面は、本サービスのサーバーの管理用の API(専用の鍵が必要)を通じて、保存期間などの契約内容の反映、利用状況の読み出し、文字起こしの一覧・書き出し・削除、Webhook の送信先の登録・変更・削除と送信の記録の読み出しを行います。Webhook の送信先の設定と送信の記録は D1 に置かず、本サービスのサーバーに置きます(D1 には操作の記録だけを残します)。Webhook の中継(⑨・⑩)も Cloudflare Workers で動き、知らせの中身を D1 に保存しません。
2. 保存する場所と期間
| データ | 場所 | 期間 |
|---|---|---|
| 音声 | 保存しない | ─(メモリの中で処理するだけ) |
| 途中の文字(確定前) | 保存しない | ─ |
| 確定した文字・話者の表示名とユーザー ID・時刻・チャンネル名 | 本サービスのサーバーの SQLite(サーバーの所在国とディスクの暗号化の有無は、ご請求があれば遅滞なくお答えします) | 文字起こしの終了から、サーバーのレベルの保存期間(30・90・180・365 日。終了の後にレベルが上がると延びます。決まり方は表の下)。過ぎたら、サーバーが 1 時間ごと(と起動のとき)に行う削除で消し、データベースのファイルの中で消した部分は 0 で上書きします(SQLite の secure_delete)。 |
| 本サービスのサーバーの SQLite にあるもの(上の文字起こしのほか、この表の利用量・API キー・Webhook の送信先の設定と送信の記録を含みます)のバックアップ | Cloudflare R2(常時の複製。保存地域は、ご請求があれば遅滞なくお答えします)と、更新の前の退避(本サービスのサーバー) | 本体から削除した後、最大 7 日間。R2 の過去の時点は 24 時間、更新の前の退避は作ってから 7 日で自動で消えます。 |
| 利用量 | 本サービスのサーバーの SQLite | 文字起こしごとの発話の時間は、その文字起こしと同じ。サーバーごとの、日ごと・1 時間ごとの発話の時間の合計と、サーバーごとの累計(どれも数値だけで、文字や話者は含みません)は、利用状況の表示のために、保存期間の後も残します。管理画面は、利用状況を出すたびに、本サービスのサーバーから発話の時間の合計(数値だけ)を読みます。前の版の管理画面が Cloudflare D1 に保存した発話の時間(数値だけ)は、今は使いません。 |
| 月額の応援の記録・Stripe の識別子 | Cloudflare D1(保存地域は、ご請求があれば遅滞なくお答えします) | 税法などの法令で保存が求められる期間。ひとことと表示名は、購入者が管理画面の「自分の支援」から消せるほか、依頼があれば削除します。 |
| 応援の申込みの試みの記録(決済を始めた人のユーザー ID と日時) | Cloudflare D1 | 試みから 1 時間(回数の上限を数える期間)を過ぎたら、15 分ごとの処理で削除します。 |
| 管理画面のログイン(ユーザー ID・名前・暗号化した Discord のアクセストークン) | Cloudflare D1 | ログインの有効期限まで。ログアウトで削除します。 |
| サーバーの設定(自動入室・発言を流す先・サポーターのロールなど) | Cloudflare D1。自動入室と発言を流す先の設定は本サービスのサーバーにも写します | 管理者が変更・削除するまで |
| 前の機能(辞書)で登録した用語と、登録した人のユーザー ID | Cloudflare D1。辞書の用語は本サービスのサーバーにも写しています | 今は使いませんが、音声認識の方式を切り替えたときに使えるよう、残しています。削除の依頼に応じます。 |
| API キー | 本サービスのサーバーの SQLite | ハッシュ(SHA-256)だけを保存。キーそのものは発行の時に 1 回だけ表示し、保存しません。 |
| Webhook の送信先の設定(URL・説明・送る出来事・送信を止めているか・署名のシークレット) | 本サービスのサーバーの SQLite | 管理者が送信先を削除するまで。削除の依頼に応じます。署名のシークレットは、送るたびに署名を作るのに元の値が要るため、ハッシュにも暗号化にもせずに保存します(作り直した後の 24 時間は、前のシークレットも保存します)。 |
| Webhook の送信の記録(送った知らせの中身・出来事の種類・日時・試した回数・送信先が返した状態コード・かかった時間・失敗の種類) | 本サービスのサーバーの SQLite | 送信の成功か失敗が決まってから 7 日で、1 時間ごとの処理で削除します(管理者がもう一度送ったときは、その送信から 7 日)。送り直しを待つものは、ふつうは最初の送信から約 28 時間で成功か失敗が決まります(中継に届かない間と、本サービスのサーバーが止まっている間は、送り直しを待ったまま残ります)。その文字起こしを削除したとき(保存期間が過ぎたときを含みます)と、送信先を削除したときは、送り直しを待つものも含めて、あわせて削除します。知らせの中身は管理画面と API には出さず、送信先が返した応答の本文は保存しません。 |
| 管理画面での Webhook の操作の記録(操作した人のユーザー ID・サーバー ID・日時・操作の種類と、送信先の ID・送る出来事・有効か・URL のオリジン〔https://example.com の部分〕。URL の全体と署名のシークレットは書きません) | Cloudflare D1 | 不正な利用や障害を後から調べるために残し、自動では削除しません。 |
| カード番号の全体・セキュリティコード | Stripe だけ(本サービスには来ない) | Stripe の定めによる |
| 決済の画面で入力されたメールアドレス・カードの名義・カードの種類と下 4 桁・有効期限・請求先の国 | Stripe(運営者は Stripe の管理画面と Stripe からの通知で確認できる) | Stripe の定めによる |
| アクセスの記録 | 本サービスのサーバー、Cloudflare | Cloudflare:Cloudflare の定める期間。本サービスのサーバーの動作の記録:サーバーを更新する(作り直す)までの間。 |
保存期間は、文字起こしを終了した時点のサーバーのレベルで決め、終了した時にその文字起こしに書き込みます。その後にサーバーのレベルが上がると、まだ削除していない文字起こしの保存期間を、終了した時から数えて、上がった後のレベルの保存期間まで延ばします。すでに削除した文字起こしは元に戻りません。その後にサーバーのレベルが下がっても、書き込んだ保存期間は短くしません。
3. 外部の事業者
各事業者の扱いは、それぞれの公開文書によります。下の「事業者の公開文書によると」の欄は、運営者が 2026年9月27日に確認した内容の要約で、運営者が保証するものではありません。最新の内容はリンク先をご確認ください。
| 事業者 | 送る情報と場面 | 事業者の公開文書によると |
|---|---|---|
| Google LLC (音声認識) |
すべての文字起こしで、音声(参加者の同意に基づいて送ります。プライバシーポリシー 3.) | Google のプライバシーポリシーによります(プライバシー ポリシー)。 |
| OpenRouter, Inc. (AI 補正。その先で Cerebras Systems Inc.・Groq LLC だけが処理) |
AI 補正のテスターのサーバーだけで、確定した文字・直前の数件の発言・話者の表示名 | OpenRouter は、顧客(運営者)がアカウントの設定でオプトインしない限りプロンプトと応答を保存せず、要求ごとにトークン数などのメタデータを保存する、としています。ただし、レポートとモデルのランキングのために、少数のプロンプトを抽出して分類することがある、としています(Data Collection)。運営者のアカウントでは、プロンプトと応答の保存(Input & Output Logging)、製品の改善への利用、データを学習に使う提供者への送信をいずれも無効にしています(2026年9月28日に確認)。その先の提供者のデータの扱いは提供者ごとに異なり、OpenRouter が一覧を公開しています(Provider Logging)。 |
| Stripe Japan 株式会社(契約の相手方)と、Stripe Payments Europe, Limited(アイルランド)・Stripe, LLC(米国) (決済) |
月額の応援の申込みと毎月の支払いのとき、金額・品名・識別子(支払い・サーバー・購入者の Discord のユーザー ID)。カードの情報は購入者が Stripe に直接入力 | Stripe は、事業者のために決済のデータを処理し、不正の防止などのためには自らの責任で扱う、としています(プライバシーポリシー)。 |
| Cloudflare, Inc. (通信の中継・R2・D1・Workers) |
すべての公開の通信、データベースの複製(R2)、管理画面のデータ(D1)、Webhook の送信の中継(Workers。送る知らせの中身と送信先の URL) | R2 と D1 に保存したデータは AES-256(GCM)で自動で暗号化される、としています(R2 Data security・D1 Data security)。 |
| Discord Inc. | ボットの動作、ボイスチャンネルのチャットへの文字起こしの開始と終了のお知らせ、ログイン(identify・guilds)、ダイレクトメッセージでの月額の応援の終了のお知らせ、ロールの付与。発言をテキストチャンネルにも流す設定のサーバーでは、確定した文字・話者の表示名とアイコン |
Discord のプライバシーポリシーによります(Privacy Policy)。 |
Webhook の送信先(管理者が登録した URL)は、サーバーの管理者が選び、管理者の指示に基づいて本サービスが送る先で、運営者の委託先ではないため、上の表に載せていません。送信先には、1. の ⑨・⑩ のとおり、文字起こしの開始と終了の情報だけを送り、文字起こしの結果・話者の表示名とユーザー ID・音声は送りません。送信先での保存・学習への利用・第三者への提供などの扱いは、送信先を管理する人が決めます。
4. 学習への利用
- 運営者は、音声と文字起こしの結果を、AI のモデルの学習・評価に使いません。
- AI 補正は、テスターのサーバーで管理者が了承した場合だけ行います。OpenRouter の先の提供者の扱いは、上の表のリンク先をご確認ください。AI 補正を使わないサーバーの文字は、LLM の事業者に送りません。
5. 書き出しと削除の方法
- そのサーバーのメンバーが、管理画面に Discord でログインします。
- サーバーを選び、「文字おこしの記録」を開くと、保存されている文字起こしの一覧(日時・チャンネル・長さ・保存期限)が出ます。メンバーには、そのメンバーが「チャンネルを見る」と「接続」の権限を持つボイスチャンネルの文字起こしだけが出ます。サーバーの管理者(「サーバーの管理」の権限を持つ人など)には、すべての文字起こしが出ます。
- 1 件ずつ、CSV・JSON・テキストで書き出せます。
- サーバーの管理者が削除を選ぶと、確認の後に、その文字起こしをすぐに削除します(元に戻せません)。動いている文字起こしは、終えてから削除してください。削除したものは、バックアップからも最大 7 日で消えます。
- 参加者本人など、管理者でない方の削除の依頼は、contact@kaitoranma.com で受け付けます。
文字起こしが終わったときにボイスチャンネルのチャットに投稿するお知らせのボタンからも、そのチャットを読める人が、お知らせに書いた期限まで書き出せます。API キーの権限があれば、HTTP API でも書き出し・削除できます(開発者向けドキュメント)。
6. セキュリティの対策
| 項目 | 対策 |
|---|---|
| 通信の暗号化 | 外部とのすべての通信(表示・管理画面・Google・OpenRouter・Stripe・Discord・R2・Webhook の中継と送信先)は TLS で暗号化します(Webhook は https の URL にだけ送ります)。ボイスチャンネルの音声は Discord のエンドツーエンド暗号化(DAVE)で届き、ボットが参加者として復号します。ボットから本サービスのサーバーへは、同じホストの中で渡します。 |
| 公開の仕方 | 本サービスのサーバーは Cloudflare Tunnel で公開し、受信のためのポートをインターネットに開けていません。Webhook は、本サービスのサーバーから直接は送らず、Cloudflare Workers の中継から送ります。中継は、送るたびに送信先の URL を確かめ、https 以外の URL、IP アドレスを直接書いた URL、localhost などの内部向けの名前、本サービス自身のドメインには送りません。リダイレクトはたどらず、送信先が返した応答の本文は読みません。 |
| 保存の暗号化 | Cloudflare R2 と D1 は、Cloudflare により保存時に暗号化されます。管理画面のログインに使う Discord のアクセストークンは、AES-GCM で暗号化して保存します。Webhook の署名のシークレットは、署名を作るのに元の値が要るため、暗号化せずに本サービスのサーバーのデータベースに保存します(画面には、作った時と作り直した時に 1 回だけ表示します)。 |
| 認証と権限 |
|
| 秘密の鍵の管理 | 決済・Discord・署名・管理用の API の鍵は、ソースコードに置かず、環境変数と Cloudflare Workers の Secrets に置きます。管理用の API の鍵は、管理画面用と運営者用で分け、片方だけを差し替えられるようにしています。R2 の鍵は、そのバケットだけに読み書きを許したものを、複製の処理にだけ渡します。R2 のバケットは公開していません。 |
| 決済 | カード番号の全体とセキュリティコードは Stripe の決済画面で入力され、本サービスには届きません。Stripe からの通知は署名を確かめてから処理し、同じ通知が 2 回届いても結果が変わらないようにしています。不正な決済を防ぐため、月額の応援の申込みは Discord でログインしたメンバーだけが行え、1 人あたりの回数に上限を設けています。 |
| 削除 | 保存期間を過ぎた文字起こしと、削除を指示された文字起こしは、データベースから消し、データベースのファイルの中で消した部分を 0 で上書きします(SQLite の secure_delete)。書き込みの途中の記録や複製のための一時的なファイル、ディスクの上に残りうる写しまでの消去を保証するものではありません。バックアップは期間を決めて自動で消します。 |
お問い合わせ
運営者:快刀乱麻
連絡先:contact@kaitoranma.com