Install
openclaw skills install @camscanner-ai/camscanner-image-hdUse CamScanner to enhance image clarity and quality. Applies auto-crop then HD super filter to produce a cleaner, sharper image. Optionally removes moire patterns when explicitly requested. Use when the user wants to make an image clearer, sharper, higher quality, or HD. Triggers on "HD image", "enhance image clarity", "make image clearer", "sharpen image", "high definition", "improve image quality", "super filter", or when the user wants to improve the visual quality of a photo or scanned document. Only use demoire mode when the user explicitly mentions removing moire patterns.
openclaw skills install @camscanner-ai/camscanner-image-hdCamScanner provides HD image enhancement: auto-crop followed by super filter processing to produce cleaner, sharper images. Optionally supports demoire mode to remove moire patterns when explicitly requested. The workflow is a 3-step pipeline: upload the image, enhance it, then download the result.
hd_mode=demoire)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.
- Local files: Output files are saved to your local filesystem at the path you specify.
Base URL: https://ai-tools.camscanner.com
| hd_mode | Description | When to Use |
|---|---|---|
| (empty) | Auto-crop + super filter (default) | General HD enhancement |
| demoire | Auto-crop + demoire deblur | Only when user explicitly asks for moire removal |
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.png" | jq -r '.tool_result.data.file_id')
Response:
{
"code": 200,
"tool": "upload_file",
"tool_result": {
"success": true,
"data": {
"file_id": "file_1741857600_ab12cd34ef56",
"size": 24576
}
}
}
Default mode (super filter):
OUT_FILE_ID=$(curl -sS -X POST "$BASE/v1/tools/image_hd/execute" \
-H "Content-Type: application/json" \
-d "{\"file_id\":\"$IN_FILE_ID\"}" \
| jq -r '.tool_result.data.file_id')
Demoire mode (only when user explicitly requests moire removal):
OUT_FILE_ID=$(curl -sS -X POST "$BASE/v1/tools/image_hd/execute" \
-H "Content-Type: application/json" \
-d "{\"file_id\":\"$IN_FILE_ID\",\"hd_mode\":\"demoire\"}" \
| jq -r '.tool_result.data.file_id')
Response:
{
"code": 200,
"tool": "image_hd",
"tool_result": {
"success": true,
"data": {
"file_id": "file_1741857701_9988aabbccdd",
"target_type": ""
},
"metadata": {
"crop_engine": "cropenhance",
"hd_engine": "imagefilter"
}
}
}
curl -sS -X POST "$BASE/v1/tools/download_file/execute?response_mode=raw" \
-H "Content-Type: application/json" \
-d "{\"file_id\":\"$OUT_FILE_ID\"}" \
-o /path/to/image_hd.jpg
Critical: The response_mode=raw query parameter is required to get the binary file. Without it, the response is JSON.
BASE="https://ai-tools.camscanner.com"
INPUT_IMAGE="/path/to/image.png"
OUTPUT_FILE="/path/to/image_hd.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')
# HD enhance (default: super filter; add "hd_mode":"demoire" only for explicit moire removal)
OUT_FILE_ID=$(curl -sS -X POST "$BASE/v1/tools/image_hd/execute" \
-H "Content-Type: application/json" \
-d "{\"file_id\":\"$IN_FILE_ID\"}" \
| jq -r '.tool_result.data.file_id')
# Download
curl -sS -X POST "$BASE/v1/tools/download_file/execute?response_mode=raw" \
-H "Content-Type: application/json" \
-d "{\"file_id\":\"$OUT_FILE_ID\"}" \
-o "$OUTPUT_FILE"
| User says | hd_mode parameter |
|---|---|
| "make it clearer", "HD", "enhance quality" | (omit — default filter) |
| "sharpen", "super filter", "improve clarity" | (omit — default filter) |
| "remove moire", "fix moire pattern", "demoire" | "hd_mode": "demoire" |
Default to no hd_mode parameter unless the user explicitly mentions moire patterns.
| Mistake | Fix |
|---|---|
Forgetting response_mode=raw on download | Always append ?response_mode=raw to the download URL |
| Wrong Content-Type on upload | Upload uses application/octet-stream, not multipart/form-data |
| Using GET instead of POST | All three endpoints use POST |
| Setting hd_mode when not requested | Only use "hd_mode": "demoire" when user explicitly asks for moire removal |
| Wrong output extension | Output is typically JPEG — use .jpg extension |
Check each step before proceeding:
# After upload
if [ -z "$IN_FILE_ID" ] || [ "$IN_FILE_ID" = "null" ]; then
echo "Upload failed"; exit 1
fi
# After enhance
if [ -z "$OUT_FILE_ID" ] || [ "$OUT_FILE_ID" = "null" ]; then
echo "Enhancement failed"; exit 1
fi