# 投稿前チェック — 炎上リスク判定 API SNS の投稿本文を送ると、炎上につながる要素を 20 の観点で判定し、Risk L0〜L3 の 4 段階で返します。 判定には TypeSafe AI の Jev を使っています。文章は生成せず、型のついた判断だけを返すモデルです。 1 件あたり 1 秒ほど・0.02 円。 ## 2 つの使い方 **(a) MCP サーバー**(道具を動かせるエージェント向け・登録も中で終わる) claude mcp add sendsignal -- npx -y @sparrowhawk-labs/sendsignal-mcp 道具は 3 つ。check_text(判定)/ sign_in(登録・ログイン)/ status(残り回数)。 **登録なしで 5 回**使えます。使い切ったら sign_in を呼ぶと URL が返るので、 人がブラウザで開いて Google かメールで確認すると 30 日間 300 回になります。 鍵は手元(~/.config/sendsignal/config.json)に保存され、次からは何も要りません。 くわしくは https://sendsignal.yakaze.com/mcp **(b) HTTP API**(ワークフローに直接組み込む場合)— 以下。 ## エンドポイント POST https://sendsignal.yakaze.com/api/v1/check Authorization: Bearer <トークン> Content-Type: application/json {"body": "投稿本文(5〜2000文字)"} トークンは https://sendsignal.yakaze.com/api-docs で発行します(**ログインが要ります**)。 まだ登録していない場合は https://sendsignal.yakaze.com を開いて sign in から。メールアドレスか Google で入れます。 発行したトークンは環境変数 SENDSIGNAL_TOKEN に入れてください。 **登録前に試すだけなら、トークンは要りません。** Authorization の代わりに `X-Install-Id: <自分で決めた id>` を付けると 5 回まで通ります(同じ id ごとに数えます)。 **他の人と同じ id にすると枠を分け合う**ので、推測されない長さにしてください (MCP は `ss_` + ランダム 24 バイトを使っています)。 `"refine": true` を足すと、段階の境目にある項目を 5 本平均で測り直します(消費は増えます)。 ## 消費のしかた 原価は入力トークンだけで決まるので、消費は「回数」ではなく「回数分」で数えます。 ふつうの投稿(数百字)は 1 回分。長い本文や `refine` を使うと 2 回分・3 回分になります。 目安(実測 2026-09-20): 400字=1回分 / 1,000字=2回分 / 2,000字=2回分 / 2,000字+refine=3回分。 同じ本文を再送したときは保存済みの結果が返り、消費は 0 です。 ## 返るもの - risk_level … 0〜3(画面では Risk L0〜L3)。**最も高い火種ひとつ**で決まります。足し算ではありません - 0 火種なし … 問題なし(そのまま出せます) - 1 小さな火種 … 要確認(出す前に読み返してください) - 2 はっきりした火種 … 要修正(直してから出してください) - 3 致命的な火種 … 投稿中止(この文章は出さないでください) - title / action / detail … 上の段階を日本語にしたもの - clean … risk_level が 0 かどうか - hazards[] … 火種ごとの結果。Risk レベルの高い順 - key / label / severity(fatal|major|minor) / probability(0〜1) / risk_level(0〜3) - triggered … 確率 0.3 以上。画面にはこれだけを出しています - advice … 引っかかったときの直し方(triggered が false なら null) - sentences[] … 本文を文に割った結果。level が high の文がいちばんの火種。 hazard_label に「その文がどの火種に当たるか」が入ります - credits … この判定が消費した回数分(キャッシュから返した場合は 0) - cached … 保存済みの結果をそのまま返したか。同じ本文には同じ結果が返り、消費もゼロ - remaining … あと何回分使えるか(登録したら 30 日で 300 回。日ごとの上限は無い) ## 火種 20 項目 致命(50% 超で risk_level=3、40% 超で risk_level=2) - attacks_group 集団をひとまとめに否定している - inappropriate_timing 災害・事故・不幸につけこんでいる - breaks_confidence 職務上知ったことを語っている - discriminatory_wording 差別的・侮蔑的とされる表現がある - privacy_risk 第三者の情報を許可なく出している - admits_misconduct してはいけない行為を自分から明かしている 重大(55% 超で risk_level=2、40% 超で risk_level=1) - attacks_person 特定の個人・団体を非難している - insulting 人格や能力を見下している - mocks_misfortune 他人の失敗や不幸を、笑うか切り捨てている - unfounded_claim 根拠のない断定をしている - exaggerated_promise 成果や効果を誇張して約束している - undisclosed_promotion 宣伝であることを隠している - leaks_internal 内部の情報や機密を外に出している - hostile_reply 批判に敵意や威圧で返している - tone_mismatch 戦争や災害を売り文句の比喩に使っている - boasts_harm 自分がした加害を手柄として語っている 注意(55% 超で risk_level=1) - condescending 上から目線で説教している - divisive_topic 意見が割れる話題に一方の立場で踏み込んでいる - invites_backlash 反論・抗議を呼び込む主張がある - easily_misread 前提が省かれていて、切り取ると意味が変わる ## エラー 401 トークンが不正または失効済み / 422 本文が空または 2000 文字超 429 回数の上限、または 1 分 30 回の制限 / 502 判定に失敗 ## このサービスが見ていないもの 判定するのは**本文の文字だけ**です。次は判定できません。 - 添付した画像・動画の中身 - 引用元・リプライ先の文脈 - 投稿する時期の世の中の空気(同じ文が、ある週だけ火種になることがあります) ## 規約 - 利用規約: https://sendsignal.yakaze.com/terms - プライバシーポリシー: https://sendsignal.yakaze.com/privacy(判定にかけた文章は米国の TypeSafe AI 社へ送って判定します)