# 開発者向けドキュメント

> ボットの追加・字幕の見方・応援して機能を強化など、プログラムを書かずに使う方法は[使い方](../help/index.md)にあります。

あなたのプログラムは、公式の表示ページと同じ、話している人ごとのリアルタイムの発話を、API で受け取れます。

## 何が作れるか

| 作りたいもの | 使う API | ガイド |
|---|---|---|
| OBS の字幕・自作のオーバーレイ・配信画面 | WebSocket（Subscribe） | [オーバーレイ](guides/overlay.md) |
| Discord・Slack などへの中継ボット、翻訳・要約ボット | WebSocket（Subscribe） | [ボットへの中継](guides/bot-relay.md) |
| 議事録の保存・書き出し・検索 | HTTP（書き出し）+ WebSocket | [記録と書き出し](guides/archive.md) |
| 発言量・話者ごとの統計 | HTTP（書き出し）+ WebSocket | [分析](guides/analytics.md) |
| Discord 以外の音声（マイク・録音・別の通話アプリ）の文字起こし | WebSocket（Ingest） | [音声を送る](ingest.md) |
| 文字起こしが終わるたびの記録の書き出し・文字起こしの最初からの発言の購読 | Webhook + HTTP（書き出し）+ WebSocket | [Webhook リファレンス](webhooks.md) |

公式の表示ページ・配信用オーバーレイの見た目を変えるだけなら、プログラムは要りません。見た目の変え方は[表示ページの URL パラメータと CSS](viewer.md)に、表示ページのリンクの OBS への貼り方は使い方の[表示ページと OBS](../help/obs.md)にあります。

## 始めるのに要るもの

| 資格情報 | 誰がどこで出すか | ブラウザ・OBS に置いてよいか |
|---|---|---|
| API キー（`mjk_live_…`） | ボットを入れた Discord サーバーの管理者が、[管理画面](/app/)で作る（[手順](quickstart.md#from-api-key)） | **置かない**。サーバー側のコードだけに置く（キーが漏れると、キーを手に入れた人が、その Discord サーバーの記録を読んだり消したりできる） |
| セッショントークン（使えるセッションも権限も 1 つだけで、期限がある） | Discord サーバーのメンバーが Discord で `/link` を実行すると、文字おこしくんが、トークンの入ったリンクを返答のボタンで渡す。API キーを持つあなたのサーバー側のコードも、トークンを発行できる | 置いてよい |
| Webhook の署名のシークレット（`whsec_…`。Webhook を使うときだけ） | ボットを入れた Discord サーバーの管理者が[管理画面](/app/)で Webhook の送信先を作ると、管理画面がシークレットを 1 回だけ表示する（[送信先を登録する](webhooks.md#register)） | **置かない**。Webhook を受け取るサーバー側のコードだけに置く（シークレットを手に入れた人は文字おこしくんからの知らせを装える） |

ブラウザからは、文字おこしくんの HTTP API を呼べません（文字おこしくんの HTTP API は CORS のヘッダーを返しません）。HTTP API は、あなたのサーバー側のコードから呼んでください。

**次に読む**: [クイックスタート](quickstart.md)（字幕を受け取るまで）

## 仕様ファイルと参照実装

- 機械可読な仕様: [openapi.yaml](openapi.yaml)（HTTP と Webhook の本文〔`webhooks`〕。OpenAPI 3.1）・[asyncapi.yaml](asyncapi.yaml)（WebSocket。AsyncAPI 3.1）・JSON Schema 2020-12（[common](schemas/common.json)・[subscribe-client-message](schemas/subscribe-client-message.json)・[subscribe-server-message](schemas/subscribe-server-message.json)・[ingest-client-message](schemas/ingest-client-message.json)・[ingest-server-message](schemas/ingest-server-message.json)）・[errors.json](errors.json)
- 参照実装（依存なし。そのままコピーして使える）: WebSocket で受け取るもの [mojiokoshi-subscribe.js](examples/mojiokoshi-subscribe.js)・[mojiokoshi_subscribe.py](examples/mojiokoshi_subscribe.py)、HTTP API を呼ぶもの（サーバー側だけ） [mojiokoshi-http.ts](examples/mojiokoshi-http.ts)・[mojiokoshi_http.py](examples/mojiokoshi_http.py)、Webhook の署名を確かめるもの（サーバー側だけ） [mojiokoshi-webhook.ts](examples/mojiokoshi-webhook.ts)・[mojiokoshi_webhook.py](examples/mojiokoshi_webhook.py)
- 文字おこしくんは、TypeScript の SDK を npm にまだ公開していません。参照実装を使ってください。

コーディングエージェントにクライアントのコードを書かせるときは、[llms.txt](llms.txt)（全文は [llms-full.txt](llms-full.txt)）か [Agent Skill](skill/SKILL.md)、各ページの Markdown 版（同じパスの `.md`）をエージェントに渡してください。
