resemble-detect について
resemble-detectは、合成メディア、ディープフェイク、透かしを調べる人向けの、メディア真正性確認と内容分析のスキルです。真正性の判断は推測せず、完了したResemble検出結果に基づくことを求めます。
主な機能
- 01音声・画像・動画の合成検出
- 02話者・感情・文字起こし・誤情報の分析
- 03合成音声の生成元プラットフォーム追跡
- 04メディアへの透かしの適用と検出
- 05話者の照合とAI生成テキストの検出
活用シーン
- 01メディアがAI生成または改変か確認
- 02合成音声の生成元を特定
- 03メディアを分析して文字起こしを取得
- 04透かしの確認や話者の本人照合
MCP 対応
Resemble MCP サーバー接続時は、ドキュメント照会、検索、API エンドポイントのツールを使い、検出に関する情報やリクエスト形式を取得できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill resemble-detectインストール後、Claude Code で/resemble-detectを入力して読み込まれたか確認します。
同梱ファイルLICENSE
詳細
Resemble Detect — ディープフェイク検出とメディアの安全性
Resemble AI プラットフォームを使用して、音声、画像、動画、テキストを分析し、合成による改変、AI 生成コンテンツ、電子透かし、話者の識別、メディアインテリジェンスを検出します。
基本原則 — 絶対に守るべきルール
「検出結果が完了するまでは、メディアが本物か偽物かを決して断定しないでください。」
メディアの真正性について、推測、推論、憶測をしてはいけません。真正性に関するすべての主張は、label、score、status: "completed" が返された Resemble の検出ジョブの完了結果に基づいている必要があります。検出がまだ processing の場合は、完了を待ってください。failed の場合は、その旨を伝えてください。独自の判断で代用してはいけません。
使用する場面
ユーザーのリクエストに以下のいずれかが含まれる場合は、このスキルを使用してください。
- 音声、動画、画像、テキストが AI 生成か、改変されているかを確認する
- あらゆる形式のメディアからディープフェイクを検出する
- メディアの真正性や来歴を検証する
- 音声を合成した AI プラットフォームを特定する(ソース追跡)
- メディアに電子透かしを適用する、または検出する
- 話者情報、感情、文字起こし、誤情報についてメディアを分析する
- 検出結果について自然言語で質問する
- 既知の音声プロファイルと照合して、話者の識別情報を特定または検証する
- AI 生成または機械生成のテキストを検出する
- 「ディープフェイク」「偽物の検出」「合成メディア」「音声の検証」「電子透かし」「メディアフォレンジック」「真正性の確認」「ソース追跡」「これは本物か」「AI が書いたテキスト」「テキスト検出」などの言及
テキスト読み上げの生成、音声クローン、音声の文字起こしには使用しないでください。これらは Resemble の別の機能です。
機能の選択フローチャート
| ユーザーの要望 | 使用する機能 | API エンドポイント |
|---|---|---|
| メディアが AI 生成/ディープフェイクか確認する | ディープフェイク検出 | POST /detect |
| 偽の音声を作成した AI プラットフォーム を特定する | 音声ソース追跡 | フラグを指定して POST /detect |
| メディアから話者情報、感情、文字起こしを取得する | インテリジェンス | POST /intelligence |
| 完了した検出について質問する | 検出インテリジェンス | POST /detects/{uuid}/intelligence |
| メディアに不可視の電子透かしを適用する | 電子透かしの適用 | POST /watermark/apply |
| メディアに電子透かしが含まれているか確認する | 電子透かしの検出 | POST /watermark/detect |
| 既知のプロファイルと照合して話者の識別情報を検証する | 識別情報の検索 | POST /identity/search |
| テキストが AI 生成か確認する | テキスト検出 | POST /text_detect |
| 今後の照合に使う音声識別プロファイルを作成する | 識別情報の作成 | POST /identity |
複数の機能が該当する場合(例:ユーザーがディープフェイク検出とインテリジェンスの両方を求めている場合)は、個別にリクエストを送信するのではなく、intelligence: true フラグを使用して、1 回の POST /detect 呼び出しにまとめてください。
必要な設定
- API キー:Resemble AI ダッシュボードで発行したベアラートークン
- ベース URL:
https://app.resemble.ai/api/v2 - 認証ヘッダー:
Authorization: Bearer <RESEMBLE_API_KEY> - メディア要件:すべてのメディアは、一般公開されている HTTPS URL に配置する必要があります。
ユーザーが URL ではなくローカルファイルパスを指定した場合は、まずそのファイルを一般公開されている HTTPS URL でホストする必要があることを伝えてください。ローカルファイルを API にアップロードしようとしてはいけません。
MCP ツール一覧
Resemble MCP サーバーに接続されている場合は、直接 API を呼び出す代わりに、以下のツールを使用してください。
| ツール | 用途 |
|---|---|
resemble_docs_lookup | detect の任意のサブトピックに関する包括的なドキュメントを取得します |
resemble_search | すべてのドキュメントを検索します |
resemble_api_endpoint | 任意のエンドポイントの正確な OpenAPI 仕様を取得します |
resemble_api_search | キーワードでエンドポイントを検索します |
resemble_get_page | 特定のドキュメントページを読み込みます |
resemble_list_topics | 利用可能なトピックをすべて一覧表示します |
ツールの使用パターン:まず resemble_docs_lookup でトピック "detect" を指定して全体像を把握し、API を呼び出す前に resemble_api_endpoint で正確なリクエスト/レスポンスのスキーマを確認します。
フェーズ 1:ディープフェイク検出
中核となる機能です。音声、画像、動画を送信して、AI 生成コンテンツを分析します。
検出を送信する
POST /detect
Content-Type: application/json
Authorization: Bearer <API_KEY>
{
"url": "https://example.com/media.mp4",
"visualize": true,
"intelligence": true,
"audio_source_tracing": true
}
パラメーター:
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
url | string | はい | 音声、画像、動画ファイルの HTTPS URL |
callback_url | string | いいえ | 非同期処理の完了通知用 Webhook URL |
visualize | boolean | いいえ | ヒートマップ/可視化アーティファクトを生成します |
intelligence | boolean | いいえ | 検出と並行してマルチモーダルインテリジェンス分析を実行します |
audio_source_tracing | boolean | いいえ | 偽の音声を合成した AI プラットフォームを特定します |
frame_length | integer | いいえ | 音声/動画の分析ウィンドウサイズ(秒)(1~4、デフォルトは 2) |
start_region | number | いいえ | 分析するセグメントの開始位置(秒) |
end_region | number | いいえ | 分析するセグメントの終了位置(秒) |
model_types | string | いいえ | "image" または "talking_head"(顔の入れ替え検出用) |
use_reverse_search | boolean | いいえ | 逆画像検索を有効にします(画像のみ) |
use_ood_detector | boolean | いいえ | 分布外検出を有効にします |
zero_retention_mode | boolean | いいえ | 検出完了後にメディアを自動削除します |
対応フォーマット:
- 音声:WAV、MP3、OGG、M4A、FLAC
- 動画:MP4、MOV、AVI、WMV
- 画像:JPG、PNG、GIF、WEBP
結果をポーリングする
検出は非同期で行われます。status が "completed" または "failed" になるまで、GET /detect/{uuid} をポーリングしてください。
GET /detect/{uuid}
Authorization: Bearer <API_KEY>
ポーリングのベストプラクティス: 最初は 2 秒間隔で開始し、5 秒、次に 10 秒へと間隔を広げます。メディアの長さにもよりますが、ほとんどの検出は 10~60 秒以内に完了します。
メディアタイプ別の結果の読み方
音声の結果 — metrics 内:
{
"label": "fake",
"score": ["0.92", "0.88", "0.95"],
"consistency": "0.91",
"aggregated_score": "0.92",
"image": "https://..."
}
label:"fake"または"real"— 判定結果score:チャンクごとの予測スコア(配列)aggregated_score:全体的な信頼度(0.0~1.0。値が高いほど合成音声の可能性が高い)consistency:チャンク間での予測の一貫性image:可視化ヒートマップの URL(visualize: trueの場合)
画像の結果 — image_metrics 内:
{
"type": "ImageAnalysis",
"label": "fake",
"score": 0.87,
"image": "https://...",
"ifl": { "score": 0.82, "heatmap": "https://..." },
"reverse_image_search_sources": [
{ "url": "...", "title": "...", "verdict": "known_fake", "similarity": 0.95 }
]
}
label/score:判定結果と信頼度ifl:ヒートマップ付きの不可視周波数レイヤー分析reverse_image_search_sources:オンラインで見つかった既知のソース(use_reverse_search: trueの場合)
動画の結果 — video_metrics 内:
{
"label": "fake",
"score": 0.89,
"certainty": 0.91,
"children": [
{
"type": "VideoResult",
"conclusion": "Fake",
"score": 0.89,
"timestamp": 2.5,
"children": [...]
}
]
}
- フレームレベルおよびセグメントレベルの結果を含む階層ツリー
- 各子要素には
timestamp、score、certaintyがあり、ネストされたchildrenを含む場合があります - 音声トラック付きの動画では、
metrics(音声)とvideo_metrics(映像)の両方が返されます
スコアの解釈
| スコア範囲 | 解釈 |
|---|---|
| 0.0 – 0.3 | 真正/本物のメディアである強い兆候 |
| 0.3 – 0.5 | 判断不能 — 追加の分析を推奨 |
| 0.5 – 0.7 | 合成の可能性が高い — レビュー対象としてフラグを立てる |
| 0.7 – 1.0 | 合成/AI 生成である信頼度が高い |
スコアは常に文脈とともに提示してください。「検出はスコア 0.87 を返しました。これはこの音声が AI 生成であるという高い信頼度を示しています」のように述べ、「偽物です」とだけ言ってはいけません。
フェーズ 2: インテリジェンス — メディア分析
検出とは独立して、または検出と併せて、メディアを分析して豊富で構造化されたインサイトを得ます。
スタンドアロンインテリジェンス
POST /intelligence
Content-Type: application/json
Authorization: Bearer <API_KEY>
{
"url": "https://example.com/audio.mp3",
"json": true
}
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
url | string | いずれか | メディアファイルへの HTTPS URL |
media_token | string | いずれか | セキュアアップロードからのトークン(URL の代替) |
detect_id | string | いいえ | 関連付ける既存の検出の UUID |
media_type | string | いいえ | "audio"、"video"、または "image"(自動検出) |
json | boolean | いいえ | 構造化フィールドを返す(デフォルト: 音声/動画は false、画像は true) |
callback_url | string | いいえ | 非同期モード用の Webhook |
音声/動画の構造化レスポンス(json: true):
speaker_info— 話者の説明(年齢、性別)language/dialect— 検出された言語emotion— 検出された感情状態speaking_style— 会話的、フォーマルなどcontext— 発話の推定コンテキストmessage— 内容の要約abnormalities— メディア内で検出された異常transcription— 完全な文字起こしtranslation— 英語以外の場合の翻訳misinformation— 誤情報分析
画像の構造化レスポンス:
scene_description— 画像が示すものsubjects— 識別された人物/オブジェクトauthenticity_analysis— 視覚的な真正性の評価context_and_setting— 環境の説明abnormalities— 視覚的な異常misinformation— 誤情報分析
検出インテリジェンス — 結果について質問する
検出が完了した後、それについて自然言語で質問できます:
POST /detects/{detect_uuid}/intelligence
Content-Type: application/json
Authorization: Bearer <API_KEY>
{
"query": "How confident is the model that this audio is fake?"
}
これは質問の UUID を返します。status が "completed" になるまで GET /detects/{detect_uuid}/intelligence/{question_uuid} をポーリングして、answer を取得してください。
提案するとよい質問:
- 「検出結果をわかりやすい言葉で要約してください」
- 「これが AI 生成であることを示す具体的な指標は何ですか?」
- 「音声と動画の検出結果はどのように異なりますか?」
- 「信頼度はどのくらいで、それは何を意味しますか?」
- 「分析に矛盾点はありますか?」
ステータスの流れ: pending → processing → completed(または failed)
前提条件: 検出が status: "completed" である必要があります。処理中または失敗した検出に対して質問を送信すると、422 エラーが返されます。
フェーズ 3: 音声ソースの追跡
音声が合成(label: "fake")として検出された場合、どの AI プラットフォームがそれを生成したかを特定します。
有効にするには、POST /detect リクエストで audio_source_tracing: true を設定します。
結果は検出レスポンスの audio_source_tracing の下に表示されます:
{
"label": "elevenlabs",
"error_message": null
}
既知のソースラベルには以下が含まれます: resemble_ai、elevenlabs、real、およびモデルの拡張に伴いその他。
重要: ソース追跡は音声が "fake" とラベル付けされた場合にのみ実行されます。音声が "real" の場合、ソース追跡の結果は表示されません。
スタンドアロンクエリ:
GET /audio_source_tracings— すべてのソース追跡レポートを一覧表示GET /audio_source_tracings/{uuid}— 特定のレポートを取得
フェーズ 4:電子透かし
出所を追跡するためにメディアに不可視の電子透かしを適用するか、既存の電子透かしを検出します。
電子透かしを適用する
POST /watermark/apply
Content-Type: application/json
Authorization: Bearer <API_KEY>
Prefer: wait
{
"url": "https://example.com/image.png",
"strength": 0.3,
"custom_message": "my-organization"
}
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
url | string | はい | メディアファイルの HTTPS URL |
strength | number | いいえ | 電子透かしの強度 0.0~1.0(画像/動画のみ、デフォルト 0.2) |
custom_message | string | いいえ | 埋め込むカスタムメッセージ(画像/動画のみ、デフォルト "resembleai") |
- 同期レスポンスを受け取るには、
Prefer: waitヘッダーを追加します - 追加しない場合は、
GET /watermark/apply/{uuid}/resultをポーリングします - レスポンスには、電子透かしを適用したファイルをダウンロードするための
watermarked_mediaURL が含まれます
電子透かしを検出する
POST /watermark/detect
Content-Type: application/json
Authorization: Bearer <API_KEY>
Prefer: wait
{
"url": "https://example.com/suspect-image.png"
}
音声の検出結果:
{ "has_watermark": true, "confidence": 0.95 }
画像/動画の検出結果:
{ "has_watermark": true }
フェーズ 5:ID — 話者認証(ベータ版)
音声 ID プロファイルを作成し、受信した音声と照合します。
ベータ機能 — プレビュー プログラムへの参加が必要です。アクセスエラーが発生した場合は、ユーザーにその旨を伝えてください。
ID プロファイルを作成する
POST /identity
Content-Type: application/json
Authorization: Bearer <API_KEY>
{
"audio_url": "https://example.com/known-speaker.wav",
"name": "Jane Doe"
}
登録済みの ID と照合する
POST /identity/search
Content-Type: application/json
Authorization: Bearer <API_KEY>
{
"audio_url": "https://example.com/unknown-speaker.wav",
"top_k": 5
}
レスポンス:
{
"success": true,
"item": [
{ "uuid": "...", "name": "Jane Doe", "confidence": 0.92, "distance": 0.08 }
]
}
distance が小さいほど一致度が高くなります。confidence が高いほど一致の確度が高くなります。
フェーズ 6:テキスト検出
テキストの内容が AI によって生成されたものか、人間が書いたものかを検出します。
ベータ機能 —
detect_beta_userロール、またはdfd_text製品を含む請求プランが必要です。
テキスト検出を送信する
POST /text_detect
Content-Type: application/json
Authorization: Bearer <API_KEY>
同期(ブロッキング)レスポンスを受け取るには、Prefer: wait ヘッダーを追加します。追加しない場合、ジョブは非同期で実行されるため、ポーリングするかコールバックを使用します。
パラメーター:
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
text | string | はい | 分析するテキスト(最大 100,000 文字) |
thinking | string | いいえ | 常に "low" を使用します(デフォルト) |
threshold | float | いいえ | 判定しきい値 0.0~1.0(デフォルト:0.5) |
callback_url | string | いいえ | 非同期完了通知用の Webhook URL |
privacy_mode | boolean | いいえ | true の場合、分析後にテキストの内容は保存されません |
レスポンス:
{
"success": true,
"item": {
"uuid": "abc-123",
"status": "completed",
"prediction": "ai",
"confidence": 0.91,
"text_content": "This is some text to analyze.",
"privacy_mode": false,
"created_at": "...",
"updated_at": "..."
}
}
prediction:"ai"または"human"— 判定結果confidence:0.0~1.0。高いほど予測の確度が高くなりますstatus:"processing"、"completed"、または"failed"
結果をポーリングする
Prefer: wait を使用しなかった場合は、status が "completed" または "failed" になるまでポーリングします。
GET /text_detect/{uuid}
Authorization: Bearer <API_KEY>
テキスト検出の一覧を取得する
GET /text_detect
Authorization: Bearer <API_KEY>
チームのページ分割されたテキスト検出結果を返します。
コールバック
callback_url が指定されている場合、完了時に POST が送信されます。
{ "success": true, "item": { ... } }
失敗時:
{ "success": false, "item": { ... }, "error": "Error message here" }
推奨ワークフロー
メディアの完全なフォレンジック分析(最も詳細)
包括的な分析を行うには、すべての機能を組み合わせます。
- すべてのフラグを有効にして検出を送信します:
{ "url": "https://example.com/suspect.mp4", "visualize": true, "intelligence": true, "audio_source_tracing": true, "use_reverse_search": true } status: "completed"になるまでポーリングしますmetrics/image_metrics/video_metricsを確認して判定しますintelligence.descriptionを確認して、メディアの構造化分析を確認します- 音声に
"fake"のラベルが付いている場合は、audio_source_tracing.labelを確認してソースプラットフォームを特定します - 不明点があれば、Detect Intelligence で追加の質問をします
- 出所が重要な場合は、
POST /watermark/detectで電子透かしを確認します
簡易的な真正性チェック(最速)
合否を素早く判定するには:
- 最小限の検出を送信します:
{ "url": "..." } - 完了するまでポーリングします
labelとaggregated_score(音声)、またはlabelとscore(画像/動画)を確認します- スコアの意味を添えて結果を報告します
プロベナンスの確認手順(コンテンツクリエイター向け)
コンテンツが本物であることを証明したいクリエイター向けです。
- オリジナルコンテンツにウォーターマークを適用します:
POST /watermark/apply - ウォーターマーク付きメディアを配布します
- 後から、任意のコピーに対してプロベナンスを確認します:
POST /watermark/detect
危険信号 — 作業を中断して再評価してください
- 検出結果なしに本物だと断定する — 視覚や聴覚による確認だけで、メディアが本物か偽物かを決して判断しないでください
- スコアを無視してラベルだけを報告する — スコア0.51の
"fake"ラベルは、スコア0.95の場合とは大きく異なる意味を持ちます - ローカルファイルのパスをAPIに送信する — APIには一般公開されているHTTPS URLが必要です(テキスト検出には適用されません)
- 10万文字を超えるテキストをテキスト検出に送信する — チャンクに分割するか、上限をユーザーに伝えてください
- 頻繁すぎる間隔でポーリングする — 2秒間隔から始め、指数関数的に間隔を延ばしてください。1秒未満の間隔でループしないでください
- 検出の完了前にDetect Intelligenceへ質問する — 422エラーが発生します
- 「本物」と判定された音声のソース追跡を期待する — ソース追跡は
"fake"とラベル付けされた音声に対してのみ実行されます - ベータ機能(Identity)を本番環境向けとして扱う — ベータ版であることをユーザーに伝えてください
- 機密性の高いメディアで
zero_retention_modeを無視する — ユーザーがメディアを機密または非公開と示した場合は、必ずこのフラグを提案してください - フラグを組み合わせて使えるのに、APIを個別に複数回呼び出す — 個別のリクエストを送る代わりに、検出呼び出しで
intelligence: trueとaudio_source_tracing: trueを使用してください
結果の提示に関するガイドライン
ユーザーに結果を提示する際は、以下の点に従ってください。
- 判定結果を最初に伝える — 「検出結果によると、この音声はAI生成である可能性が高いです(スコア:0.87)」
- スコアの意味を説明する — 上記のスコア解釈表を使用してください
- 制限事項を伝える — 検出は確率に基づくものであり、絶対的な証明ではありません
- 具体的な次のステップを提示する — 適切に、Intelligenceへの問い合わせ、ソース追跡、またはウォーターマークの確認を提案してください
- 結論が出ない結果(0.3~0.5)の場合 — 結論が出ない結果であることを明示し、異なるパラメーターを使った追加分析または手動レビューを推奨してください
- 検出結果を法的証拠として決して提示しない — 検出結果は分析ツールであり、法科学的な証明ではありません
エラー処理
| エラー | 原因 | 解決方法 |
|---|---|---|
| 400 | リクエストボディが無効、またはurlが不足しています | 必須パラメーターを確認してください |
| 401 | APIキーが無効、または指定されていません | RESEMBLE_API_KEYを確認してください |
| 404 | 検出UUIDが見つかりません | 作成時のレスポンスに含まれるUUIDを確認してください |
| 422 | 検出が完了していません(Intelligenceの場合) | 検出がcompletedステータスになるまで待ってください |
| 429 | レート制限に達しました | 待機時間を指数関数的に延ばして再試行してください |
| 500 | サーバーエラー | 1回再試行してから、ユーザーに報告してください |
プライバシーとコンプライアンスに関する注意事項
- ゼロ保持モード:
zero_retention_mode: trueを設定すると、分析後にメディアが自動削除されます。URLは伏せられ、処理完了後にmedia_deletedがtrueに設定されます。 - テキストプライバシーモード:テキスト検出時に
privacy_mode: trueを設定すると、分析後にテキスト内容が保存されなくなります。 - データの取り扱い:メディアURLとテキスト内容は、デフォルトで保存されます。GDPRやコンプライアンスへの配慮が必要なワークフローでは、ゼロ保持モード(メディア)またはプライバシーモード(テキスト)を有効にしてください。
- コールバックのセキュリティ:
callback_urlを使用する場合は、エンドポイントがHTTPSであり、受信側で認証されていることを確認してください。