Install
openclaw skills install 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 pat...
openclaw skills install 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