Loading...
Loading...
Use when someone asks to enhance an image, generate AI images, remove background, improve image quality, or create product shots. Also use when the user mentions 'AI image generation,' 'generate an image,' 'enhance my photo,' 'remove background,' 'improve image quality,' 'make this image better,' 'product shot enhancement,' 'generate background,' 'image enhancement,' 'AI photo,' or 'touch up my image.' Uses Sivi's generate API to create or enhance images using AI models. For uploading existing local files, see brand-assets. For generating designs from prompts, see generate-design.
npx skill4agent add sivi/skills enhance-mediageneraterequestIdget-request-statushead -n -1jqpython3curl -o <file> -w '%{http_code}'/tmp/promptimageUrlmediaIdwidthheightmodelz-image-turbonano-banana:1knegativePromptprompt_shared/conventions.mdbId#!/bin/bash
set -e
source <SKILL_REPO>/.env
BRAND_ID="<BRAND_ID>"
PAYLOAD=$(python3 -c "
import json
data = {
'prompt': '''PROMPT_PLACEHOLDER''',
'dimensions': {'width': 1024, 'height': 1024},
'model': 'z-image-turbo',
'negativePrompt': 'blurry, low quality',
'bId': '$BRAND_ID'
}
# For enhancement, add:
# data['model'] = 'nano-banana:1k'
# data['assets'] = {'photo': [{'url': 'IMAGE_URL_PLACEHOLDER'}]}
# data['siviAssets'] = [{'mId': 'MEDIA_ID_PLACEHOLDER'}]
print(json.dumps(data))
")
HTTP_CODE=$(curl -s -o /tmp/sivi_genmedia_response.json -w '%{http_code}' \
-X POST "https://connect.sivi.ai/api/prod/v2/general/media/generate" \
-H "Content-Type: application/json" \
-H "sivi-api-key: $SIVI_API_KEY" \
-d "$PAYLOAD")
BODY=$(cat /tmp/sivi_genmedia_response.json)
if [ "$HTTP_CODE" != "200" ]; then
echo "ERROR: HTTP $HTTP_CODE"
echo "$BODY"
exit 1
fi
REQUEST_ID=$(python3 -c "import json,sys; d=json.load(sys.stdin); print(d['body']['requestId'])" <<< "$BODY")
echo "REQUEST_ID=$REQUEST_ID"#!/bin/bash
set -e
source <SKILL_REPO>/.env
REQUEST_ID="<REQUEST_ID_FROM_STEP_A>"
MAX_ATTEMPTS=30
ATTEMPT=0
while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
ATTEMPT=$((ATTEMPT + 1))
echo "Poll attempt $ATTEMPT/$MAX_ATTEMPTS..."
QUERY_PARAMS=$(python3 -c "
import json, urllib.parse
params = json.dumps({'requestId': '$REQUEST_ID'})
print(urllib.parse.quote(params, safe=''))
")
HTTP_CODE=$(curl -s -o /tmp/sivi_media_status.json -w '%{http_code}' \
-X GET "https://connect.sivi.ai/api/prod/v2/general/get-request-status?queryParams=$QUERY_PARAMS" \
-H "sivi-api-key: $SIVI_API_KEY")
BODY=$(cat /tmp/sivi_media_status.json)
if [ "$HTTP_CODE" != "200" ]; then
echo "ERROR: HTTP $HTTP_CODE"
echo "$BODY"
exit 1
fi
STATUS=$(python3 -c "import json,sys; d=json.load(sys.stdin); print(d['body']['status'])" <<< "$BODY")
if [ "$STATUS" = "completed" ]; then
echo "MEDIA GENERATION COMPLETE"
python3 -c "
import json, sys
d = json.load(sys.stdin)
result = d['body'].get('result', {})
media = result.get('media', {})
if media:
print(f\"MEDIA_URL={media.get('url', '')}\")
print(f\"MEDIA_ID={media.get('mId', '')}\")
else:
# Try alternate response format
print(f\"RESULT={json.dumps(result)}\")
" <<< "$BODY"
exit 0
elif [ "$STATUS" = "failed" ] || [ "$STATUS" = "suspended" ]; then
echo "MEDIA GENERATION FAILED ($STATUS)"
echo "$BODY"
exit 1
fi
sleep 10
done
echo "TIMEOUT"
exit 1#!/bin/bash
set -e
MEDIA_URL="<MEDIA_URL_FROM_STEP_B>"
BRAND_SLUG="<brand-slug>"
ASSETS_DIR="brands/$BRAND_SLUG/assets"
mkdir -p "$ASSETS_DIR"
if [ -n "$MEDIA_URL" ] && [[ "$MEDIA_URL" == https://* ]]; then
FILE_NAME="generated_$(date +%s).jpg"
curl -sL -o "$ASSETS_DIR/$FILE_NAME" "$MEDIA_URL"
echo "IMAGE_SAVED=$ASSETS_DIR/$FILE_NAME"
else
echo "IMAGE_SAVED=none"
fi<img src="</absolute/path/to/file.jpg>" alt="Generated Image" style="box-shadow: 0px 0px 18px rgba(0,0,0,0.18);">model: "z-image-turbo"assetssiviAssetsmodel: "nano-banana:1k"assets.photo[].urlsiviAssets[].mIdsiviAssetsassetsbId