Skill: camscanner-ai/camscanner-image-detect-aigc (version 1.0.0)

--- name: camscanner-image-detect-aigc description: Use CamScanner to detect whether an image was generated by an AI model (e.g. Stable Diffusion, Midjourney, DALL·E). Powered by an AIGC-detection engine that classifies an image as genuine, suspected AI-generated, or AI-generated, with a confidence score. Returns a JSON result containing `ai_check_result` (1/2/3), `confidence`, and `result_text`. Use when the user asks whether a photo is AI-generated, wants to verify an image's authenticity against AI generation, or asks "is this AI art / Stable Diffusion / Midjourney?". Triggers on "检测AI生成", "是不是AI画的", "AIGC检测", "AI图片识别", "detect AI-generated image", "is this AI art", "is this diffusion / midjourney", or when the user shares an image and asks whether it was produced by AI. metadata: author: CamScanner version: "1.0" openclaw: emoji: "🤖" requires: bins: ["curl", "jq"] homepage: "https://www.camscanner.com" --- # CamScanner Image Detect AIGC ## Overview CamScanner provides an AIGC-detection engine that determines whether an image was produced by an AI generator. The workflow is a 2-step pipeline: **upload** the image, then **validate** it with `validate_mode: 2`. Unlike conversion skills, this skill does not produce a file — the validate step returns a JSON result whose key fields (`ai_check_result`, `confidence`, `result_text`) should be reported back to the user directly. ## When to Use - User asks whether an image was generated by AI (Stable Diffusion, Midjourney, DALL·E, etc.) - User wants to distinguish a real photo from AI-generated artwork - User asks "is this AI art / AI-generated?" or similar authenticity questions - User shares an image and explicitly asks whether it came from a generative model ## Presenting the Result - Always read `ai_check_result`, `confidence`, and `result_text` from the response and report them in plain language. - Map `ai_check_result` to a verdict: `1` = not AI-generated, `2` = suspected AI-generated, `3` = AI-generated. - Include the `confidence` value (a float in `[0, 1]`) so the user understands how certain the verdict is. - **Match the user's language.** `result_text` is returned in Chinese by the API. If the user asked in English (or any other language), translate/rephrase it into that language. If the user asked in Chinese, you can use `result_text` as-is. - Do not overstate the verdict: "suspected AI-generated" is not the same as "AI-generated". ## Privacy & Data > **Important: Privacy & Data Flow Notice** > > - **Third-party service**: This skill sends your files to CamScanner's official servers (`ai-tools.camscanner.com`) for processing. > - **Data retention**: CamScanner servers process your files in real-time. Files are not permanently stored on the server. > - **Result**: Only a JSON detection result is returned — no file is downloaded. ## API Reference **Base URL:** `https://ai-tools.camscanner.com` ### Supported Validations | source_type | validate_mode | Detection | Engine | | ----------- | ------------- | ----------------------- | --------------- | | image | 2 | AIGC (AI-generated) | aigcdetection | ### Step 1: Upload Image ```bash BASE="https://ai-tools.camscanner.com" IN_FILE_ID=$(curl -sS -X POST "$BASE/v1/tools/upload_file/execute" \ -H "Content-Type: application/octet-stream" \ --data-binary "@/path/to/image.jpg" | jq -r '.tool_result.data.file_id') ``` **Response:** ```json { "code": 200, "tool": "upload_file", "tool_result": { "success": true, "data": { "file_id": "file_1741857600_ab12cd34ef56.jpg", "size": 24576 } } } ``` ### Step 2: Validate Image (Detect AIGC) ```bash curl -sS -X POST "$BASE/v1/tools/validate_image/execute" \ -H "Content-Type: application/json" \ -d "{\"file_id\":\"$IN_FILE_ID\",\"validate_mode\":2}" ``` **Response (suspected AI-generated example):** ```json { "code": 200, "tool": "validate_image", "tool_result": { "success": true, "data": { "ai_check_result": 2, "confidence": 0.346435546875, "engine": "aigcdetection", "file_id": "file_xxx.jpg", "result_text": "检测结果为疑似 AI 生成图片", "review_state": "auto_checked", "validate_mode": 2 }, "metadata": { "ai_check_result": 2, "confidence": 0.346435546875, "engine": "aigcdetection", "result_text": "检测结果为疑似 AI 生成图片", "review_state": "auto_checked", "validate_mode": 2 } } } ``` ## Interpreting the Result | Field | Type | Meaning | | ----------------- | ------- | ------------------------------------------------------------------------------ | | `ai_check_result` | integer | `1` = not AI-generated, `2` = suspected AI-generated, `3` = AI-generated | | `confidence` | float | Model confidence score in `[0, 1]` | | `result_text` | string | Human-readable conclusion (Chinese by default — translate for other languages) | | `review_state` | string | Review status (e.g. `auto_checked`) — informational, not user-facing | | `validate_mode` | integer | Echo of the requested mode (always `2` for AIGC detection) | ### Verdict Mapping | `ai_check_result` | Verdict | Suggested phrasing (EN) | | ----------------- | ----------------------- | ------------------------------------ | | 1 | Not AI-generated | "Looks like a real image" | | 2 | Suspected AI-generated | "Suspected to be AI-generated" | | 3 | AI-generated | "Detected as AI-generated" | ## Quick Reference: Complete Pipeline Detect whether an image is AI-generated (two-step, reads JSON result): ```bash BASE="https://ai-tools.camscanner.com" INPUT_IMAGE="/path/to/image.jpg" # Upload IN_FILE_ID=$(curl -sS -X POST "$BASE/v1/tools/upload_file/execute" \ -H "Content-Type: application/octet-stream" \ --data-binary "@$INPUT_IMAGE" | jq -r '.tool_result.data.file_id') # Validate and extract key fields RESULT=$(curl -sS -X POST "$BASE/v1/tools/validate_image/execute" \ -H "Content-Type: application/json" \ -d "{\"file_id\":\"$IN_FILE_ID\",\"validate_mode\":2}") AI_CHECK=$(echo "$RESULT" | jq -r '.tool_result.data.ai_check_result') CONFIDENCE=$(echo "$RESULT" | jq -r '.tool_result.data.confidence') RESULT_TEXT=$(echo "$RESULT" | jq -r '.tool_result.data.result_text') echo "ai_check_result: $AI_CHECK" echo "confidence: $CONFIDENCE" echo "result_text: $RESULT_TEXT" ``` ## Common Mistakes | Mistake | Fix | | ------------------------------------------ | --------------------------------------------------------------------------- | | Wrong Content-Type on upload | Upload uses `application/octet-stream`, not `multipart/form-data` | | Using GET instead of POST | Both endpoints use POST | | Passing `validate_mode` as a string | `validate_mode` is an integer — use `2`, not `"2"` | | Including `output_mode` in the request | `validate_image` does not use `output_mode`; it always returns JSON | | Treating `ai_check_result` as boolean | It is a 3-state integer (`1`/`2`/`3`); map explicitly to a verdict | | Reporting "suspected" as "AI-generated" | `ai_check_result == 2` means *suspected*, not confirmed — phrase accordingly | | Reporting `result_text` verbatim in EN | `result_text` is Chinese; translate to match the user's language | ## Error Handling Check each step before proceeding: ```bash # After upload if [ -z "$IN_FILE_ID" ] || [ "$IN_FILE_ID" = "null" ]; then echo "Upload failed"; exit 1 fi # After validate if [ "$AI_CHECK" = "null" ] || [ -z "$AI_CHECK" ]; then echo "Validation failed"; exit 1 fi ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)