skills/resemble-detect/SKILL.md
Deepfake detection and media safety — detect AI-generated audio, images, video, and text, trace synthesis sources, apply watermarks, verify speaker identity, and analyze media intelligence using Resemble AI
npx skillsauth add williamlimasilva/.copilot resemble-detectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Analyze audio, image, video, and text for synthetic manipulation, AI-generated content, watermarks, speaker identity, and media intelligence using the Resemble AI platform.
"NEVER DECLARE MEDIA AS REAL OR FAKE WITHOUT A COMPLETED DETECTION RESULT."
Do not guess, infer, or speculate about media authenticity. Every authenticity claim must be backed by a completed Resemble detect job with a returned label, score, and status: "completed". If the detection is still processing, wait. If it failed, say so — do not substitute your own judgment.
Use this skill whenever the user's request involves any of these:
Do NOT use for text-to-speech generation, voice cloning, or speech-to-text transcription — those are separate Resemble capabilities.
| User wants to... | Use this | API endpoint |
|-------------------------------------------------------|---------------------------|---------------------------------------|
| Check if media is AI-generated / deepfake | Deepfake Detection | POST /detect |
| Know which AI platform made fake audio | Audio Source Tracing | POST /detect with flag |
| Get speaker info, emotion, transcription from media | Intelligence | POST /intelligence |
| Ask questions about a completed detection | Detect Intelligence | POST /detects/{uuid}/intelligence |
| Apply an invisible watermark to media | Watermark Apply | POST /watermark/apply |
| Check if media contains a watermark | Watermark Detect | POST /watermark/detect |
| Verify a speaker's identity against known profiles | Identity Search | POST /identity/search |
| Check if text is AI-generated | Text Detection | POST /text_detect |
| Create a voice identity profile for future matching | Identity Create | POST /identity |
When multiple capabilities apply (e.g., user wants deepfake detection AND intelligence), combine them in a single POST /detect call using the intelligence: true flag rather than making separate requests.
RESEMBLE_API_KEY)https://app.resemble.ai/api/v2Authorization: Bearer <RESEMBLE_API_KEY>If the user provides a local file path instead of a URL, inform them the file must be hosted at a public HTTPS URL first. Do not attempt to upload local files to the API. (Exception: POST /text_detect accepts text content inline.)
When the Resemble MCP server is connected, use these tools instead of raw API calls:
| Tool | Purpose |
|---------------------------|---------------------------------------------------|
| resemble_docs_lookup | Get comprehensive docs for any detect sub-topic |
| resemble_search | Search across all documentation |
| resemble_api_endpoint | Get exact OpenAPI spec for any endpoint |
| resemble_api_search | Find endpoints by keyword |
| resemble_get_page | Read specific documentation pages |
| resemble_list_topics | List all available topics |
Tool usage pattern: Use resemble_docs_lookup with topic "detect" to get the full picture, then resemble_api_endpoint for exact request/response schemas before making API calls.
Detailed request/response schemas for every endpoint are in references/api-reference.md. Consult it before making any API call to verify exact parameter names and response shapes. The sections below cover decision-making; the reference covers exact field formats.
The core capability. Submit audio, image, or video for AI-generated content analysis via POST /detect.
Key flags to consider:
visualize: true — generate heatmap/visualization artifactsintelligence: true — run multimodal intelligence alongside detection (saves a round-trip)audio_source_tracing: true — identify which AI platform synthesized fake audio (only fires on "fake" audio)use_reverse_search: true — enable reverse image search (image only)zero_retention_mode: true — auto-delete media after analysis (for sensitive content)Detection is asynchronous. Poll GET /detect/{uuid} at 2s → 5s → 10s intervals until status is "completed" or "failed". Most complete in 10–60 seconds.
Supported formats: Audio (WAV, MP3, OGG, M4A, FLAC) · Video (MP4, MOV, AVI, WMV) · Image (JPG, PNG, GIF, WEBP)
metrics — use label and aggregated_scoreimage_metrics — use label and score; ifl has an Invisible Frequency Layer heatmapvideo_metrics — hierarchical tree of frame/segment results; video-with-audio returns both metrics and video_metricsSee references/api-reference.md for full response schemas.
| Score Range | Interpretation | |-------------|-----------------------------------------------------| | 0.0 – 0.3 | Strong indication of authentic/real media | | 0.3 – 0.5 | Inconclusive — recommend additional analysis | | 0.5 – 0.7 | Likely synthetic — flag for review | | 0.7 – 1.0 | High confidence synthetic/AI-generated |
Always present scores with context. Say "The detection returned a score of 0.87, indicating high confidence that this audio is AI-generated" — never just "it's fake."
Rich structured insights about media: speaker info, emotion, transcription, translation, misinformation, abnormalities.
Two ways to run Intelligence:
intelligence: true to POST /detect (preferred; one call)POST /intelligence with a URL (when you only need analysis, not a deepfake verdict)Audio/video structured fields include: speaker_info, language, dialect, emotion, speaking_style, context, message, abnormalities, transcription, translation, misinformation.
Image structured fields include: scene_description, subjects, authenticity_analysis, context_and_setting, abnormalities, misinformation.
After a detection completes, ask natural-language questions via POST /detects/{detect_uuid}/intelligence with { "query": "..." }. Returns a question UUID — poll GET /detects/{detect_uuid}/intelligence/{question_uuid} until completed.
Good questions to suggest:
Prerequisite: The detection must have status: "completed". Submitting a question against a processing or failed detection returns 422.
See references/api-reference.md for full parameters.
When audio is labeled "fake", identify which AI platform generated it.
Enable it by setting audio_source_tracing: true in the POST /detect request. Result appears in the detection response under audio_source_tracing.label.
Known labels: resemble_ai, elevenlabs, real, and others as the model expands.
Important: Source tracing only runs on audio labeled "fake". Real audio produces no source tracing result.
Standalone queries: GET /audio_source_tracings and GET /audio_source_tracings/{uuid}.
Apply invisible watermarks to media for provenance tracking, or detect existing watermarks.
POST /watermark/apply with url, optional strength (0.0–1.0), optional custom_message. Add Prefer: wait for synchronous response, or poll GET /watermark/apply/{uuid}/result. Response includes watermarked_media URL.POST /watermark/detect with url. Audio returns { has_watermark, confidence }; image/video returns { has_watermark }.See references/api-reference.md for exact parameter rules.
Create voice identity profiles and match incoming audio against them.
Beta feature — requires joining the preview program. Inform the user if they encounter access errors.
POST /identity with { audio_url, name }POST /identity/search with { audio_url, top_k }Response returns ranked matches with confidence (higher = stronger) and distance (lower = closer match).
See references/api-reference.md for full schemas.
Detect whether text content is AI-generated or human-written via POST /text_detect.
Beta feature — requires the
detect_beta_userrole or a billing plan that includes thedfd_textproduct.
Key parameters:
text (required, max 100,000 chars)threshold (default 0.5)privacy_mode: true — text content not stored after analysiscallback_url — async notification webhookAdd Prefer: wait for synchronous response, or poll GET /text_detect/{uuid}. Response includes prediction ("ai" or "human") and confidence (0.0–1.0).
See references/api-reference.md for full schema and callback format.
For a comprehensive analysis, combine all capabilities:
{
"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 for the verdictintelligence.description for structured media analysis"fake", check audio_source_tracing.label for the source platformPOST /watermark/detect if provenance is relevant{ "url": "..." }label and aggregated_score (audio) or label and score (image/video)POST /watermark/applyPOST /watermark/detect against any copy"fake" label with score 0.51 means something very different from score 0.95"fake"zero_retention_mode for sensitive media — Always suggest this flag when the user indicates the media is sensitive or privateintelligence: true and audio_source_tracing: true on the detection call instead of separate requestsWhen presenting results to users:
| Error | Cause | Resolution |
|-----------|--------------------------------------------|-------------------------------------------------|
| 400 | Invalid request body or missing url | Check required parameters |
| 401 | Invalid or missing API key | Verify RESEMBLE_API_KEY |
| 404 | Detection UUID not found | Verify the UUID from the creation response |
| 422 | Detection not completed (for Intelligence) | Wait for detection to reach completed status |
| 429 | Rate limited | Back off and retry with exponential delay |
| 500 | Server error | Retry once, then report to user |
zero_retention_mode: true to auto-delete media after analysis. The URL is redacted and media_deleted is set to true post-completion.privacy_mode: true on text detection to prevent text content from being stored after analysis.callback_url, ensure the endpoint is HTTPS and authenticated on the receiving end.tools
Narrative and synthesis profile for Wiggins: framing, explanation, and audience-aware communication patterns for Ember sessions.
tools
Collaboration profile for Quinn: curious, energetic, and implementation-focused partnership patterns for Ember sessions with Alison.
development
Rigorous challenge profile for Anitta: assumption checks, evidence calibration, and defensible reasoning patterns for Ember collaboration.
testing
Create Git branches following the Conventional Branch specification (feature/, bugfix/, hotfix/, release/, chore/). Use when creating a new branch, naming a branch, or checking whether a branch name complies with the spec.