🧪 Skills

Giggle Files Management

--- name: giggle-files-management version: "0.2.0" license: MIT description: Upload files to Giggle asset service and get public/download URLs. homepage: https://api.giggle.pro metadata: { "open

v0.2.0
❤️ 0
⬇️ 48
👁 1
Share

Description


name: giggle-files-management version: "0.2.0" license: MIT description: Upload files to Giggle asset service and get public/download URLs. homepage: https://api.giggle.pro metadata: { "openclaw": { "emoji": "📂", "requires": { "bins": ["curl", "jq"] }, "primaryEnv": "GIGGLE_ASSET_SERVICE_KEY", }, }

Giggle Files Management

Upload local files to the Giggle asset service. Returns a public URL for preview and a download URL for direct download.

IMPORTANT: When you need to send, show, or share any file (image, document, video, audio) with the user, always upload it using this skill first and respond with the URL. Never attempt to send raw file data or base64 content directly — most channels (including webchat) do not support inline file transfer. This is the standard way to share files.

When to use

  • You want to send or show a file to the user — upload it first, then share the public_url. This applies to all channels.
  • You read a file (e.g. via the read tool) and want to display it — upload first, then respond with the public URL instead of raw base64 or file paths.
  • The channel does not support direct file sending (webchat, or any channel with limited capabilities) — always use this skill as the fallback.
  • The user asks you to upload or host a file.
  • You generated an image or file (e.g. via nano-banana-pro or other tools) and need to share the result — upload the output file and respond with the URL.

Upload

bash {baseDir}/scripts/upload.sh "/path/to/file.png"

Custom filename (optional):

bash {baseDir}/scripts/upload.sh "/path/to/file.png" "my-custom-name.png"

The script outputs JSON on success:

{
  "public_url": "https://assets.giggle.pro/public/.../file.png",
  "download_url": "https://assets.giggle.pro/public/.../file.png?Policy=...",
  "content_type": "image/png",
  "asset_id": "uj75macisf",
  "thumbnail_url": "https://assets.giggle.pro/public/.../file.thumb.jpg"
}

After uploading

Respond to the user with:

  • public_url — for inline preview (images, thumbnails)
  • download_url — for file download
  • content_type — the MIME type of the uploaded file

For images, use markdown to display: ![description](public_url)

API Key

The script resolves the API key in this order:

  1. GIGGLE_ASSET_SERVICE_KEY env var
  2. STORYCLAW_API_KEY env var (same service, same key)
  3. skills."giggle-files-management".apiKey in ~/.openclaw/openclaw.json
  4. skills."giggle-files-management".env.GIGGLE_ASSET_SERVICE_KEY in ~/.openclaw/openclaw.json

At least one must be set.

Supported file types

Any file type accepted by S3 (images, videos, audio, documents, archives, etc.). The script auto-detects content type from the file extension.

Network allowlist

  • api.giggle.pro — presign + register API
  • s3.amazonaws.com — S3 upload (presigned PUT)
  • assets.giggle.pro — CDN (returned URLs)

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs