← Back to Skills Marketplace
whitejohnk-26

Gif Compressor

by whitejohnk-26 · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
41
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install gif-compressor
Description
Get compressed GIF files ready to post, without touching a single slider. Upload your GIF files (GIF, MP4, WebM, APNG, up to 200MB), say something like "comp...
README (SKILL.md)

Getting Started

Share your GIF files and I'll get started on GIF compression optimization. Or just tell me what you're thinking.

Try saying:

  • "compress my GIF files"
  • "export 720p MP4"
  • "compress this GIF to under 500KB"

First-Time Connection

When a user first opens this skill, connect to the processing backend automatically. Briefly let them know (e.g. "Setting up...").

Authentication: Check if NEMO_TOKEN is set in the environment. If it is, skip to step 2.

  1. Obtain a free token: Generate a random UUID as client identifier. POST to https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token with header X-Client-Id set to that UUID. The response data.token is your NEMO_TOKEN — 100 free credits, valid 7 days.
  2. Create a session: POST to https://mega-api-prod.nemovideo.ai/api/tasks/me/with-session/nemo_agent with Authorization: Bearer \x3Ctoken>, Content-Type: application/json, and body {"task_name":"project","language":"\x3Cdetected>"}. Store the returned session_id for all subsequent requests.

Keep setup communication brief. Don't display raw API responses or token values to the user.

GIF Compressor — Compress and Optimize GIF Files

This tool takes your GIF files and runs GIF compression optimization through a cloud rendering pipeline. You upload, describe what you want, and download the result.

Say you have a 2MB animated GIF with 60 frames and want to compress this GIF to under 500KB without losing too much quality — the backend processes it in about 10-30 seconds and hands you a 720p MP4.

Tip: reducing frame rate slightly can cut file size dramatically with minimal visual difference.

Matching Input to Actions

User prompts referencing gif compressor, aspect ratio, text overlays, or audio tracks get routed to the corresponding action via keyword and intent classification.

User says... Action Skip SSE?
"export" / "导出" / "download" / "send me the video" → §3.5 Export
"credits" / "积分" / "balance" / "余额" → §3.3 Credits
"status" / "状态" / "show tracks" → §3.4 State
"upload" / "上传" / user sends file → §3.2 Upload
Everything else (generate, edit, add BGM…) → §3.1 SSE

Cloud Render Pipeline Details

Each export job queues on a cloud GPU node that composites video layers, applies platform-spec compression (H.264, up to 1080x1920), and returns a download URL within 30-90 seconds. The session token carries render job IDs, so closing the tab before completion orphans the job.

Three attribution headers are required on every request and must match this file's frontmatter:

Header Value
X-Skill-Source gif-compressor
X-Skill-Version frontmatter version
X-Skill-Platform auto-detect: clawhub / cursor / unknown from install path

All requests must include: Authorization: Bearer \x3CNEMO_TOKEN>, X-Skill-Source, X-Skill-Version, X-Skill-Platform. Missing attribution headers will cause export to fail with 402.

API base: https://mega-api-prod.nemovideo.ai

Create session: POST /api/tasks/me/with-session/nemo_agent — body {"task_name":"project","language":"\x3Clang>"} — returns task_id, session_id.

Send message (SSE): POST /run_sse — body {"app_name":"nemo_agent","user_id":"me","session_id":"\x3Csid>","new_message":{"parts":[{"text":"\x3Cmsg>"}]}} with Accept: text/event-stream. Max timeout: 15 minutes.

Upload: POST /api/upload-video/nemo_agent/me/\x3Csid> — file: multipart -F "files=@/path", or URL: {"urls":["\x3Curl>"],"source_type":"url"}

Credits: GET /api/credits/balance/simple — returns available, frozen, total

Session state: GET /api/state/nemo_agent/me/\x3Csid>/latest — key fields: data.state.draft, data.state.video_infos, data.state.generated_media

Export (free, no credits): POST /api/render/proxy/lambda — body {"id":"render_\x3Cts>","sessionId":"\x3Csid>","draft":\x3Cjson>,"output":{"format":"mp4","quality":"high"}}. Poll GET /api/render/proxy/lambda/\x3Cid> every 30s until status = completed. Download URL at output.url.

Supported formats: mp4, mov, avi, webm, mkv, jpg, png, gif, webp, mp3, wav, m4a, aac.

Reading the SSE Stream

Text events go straight to the user (after GUI translation). Tool calls stay internal. Heartbeats and empty data: lines mean the backend is still working — show "⏳ Still working..." every 2 minutes.

About 30% of edit operations close the stream without any text. When that happens, poll /api/state to confirm the timeline changed, then tell the user what was updated.

Translating GUI Instructions

The backend responds as if there's a visual interface. Map its instructions to API calls:

  • "click" or "点击" → execute the action via the relevant endpoint
  • "open" or "打开" → query session state to get the data
  • "drag/drop" or "拖拽" → send the edit command through SSE
  • "preview in timeline" → show a text summary of current tracks
  • "Export" or "导出" → run the export workflow

Draft field mapping: t=tracks, tt=track type (0=video, 1=audio, 7=text), sg=segments, d=duration(ms), m=metadata.

Timeline (3 tracks): 1. Video: city timelapse (0-10s) 2. BGM: Lo-fi (0-10s, 35%) 3. Title: "Urban Dreams" (0-3s)

Error Handling

Code Meaning Action
0 Success Continue
1001 Bad/expired token Re-auth via anonymous-token (tokens expire after 7 days)
1002 Session not found New session §3.0
2001 No credits Anonymous: show registration URL with ?bind=\x3Cid> (get \x3Cid> from create-session or state response when needed). Registered: "Top up credits in your account"
4001 Unsupported file Show supported formats
4002 File too large Suggest compress/trim
400 Missing X-Client-Id Generate Client-Id and retry (see §1)
402 Free plan export blocked Subscription tier issue, NOT credits. "Register or upgrade your plan to unlock export."
429 Rate limit (1 token/client/7 days) Retry in 30s once

Tips and Tricks

The backend processes faster when you're specific. Instead of "make it look better", try "compress this GIF to under 500KB without losing too much quality" — concrete instructions get better results.

Max file size is 200MB. Stick to GIF, MP4, WebM, APNG for the smoothest experience.

Converting GIFs to MP4 can reduce file size by up to 90% with better quality.

Common Workflows

Quick edit: Upload → "compress this GIF to under 500KB without losing too much quality" → Download MP4. Takes 10-30 seconds for a 30-second clip.

Batch style: Upload multiple files in one session. Process them one by one with different instructions. Each gets its own render.

Iterative: Start with a rough cut, preview the result, then refine. The session keeps your timeline state so you can keep tweaking.

Usage Guidance
Install only if you are comfortable sending your GIFs/videos and related prompts to NemoVideo's cloud service. Avoid confidential media, keep the NEMO_TOKEN private, and be aware that the backend supports broader video-editing actions in addition to simple GIF compression.
Capability Analysis
Type: OpenClaw Skill Name: gif-compressor Version: 1.0.0 The skill provides GIF compression and optimization services by interfacing with a cloud-based rendering API (nemovideo.ai). It includes standard logic for handling anonymous authentication, session management, and file uploads/downloads. While it requires network access and an environment variable (NEMO_TOKEN), these are strictly aligned with its stated purpose, and the instructions explicitly advise the agent against displaying sensitive token values to the user. No indicators of data exfiltration, malicious execution, or harmful prompt injection were found in SKILL.md or _meta.json.
Capability Assessment
Purpose & Capability
The core purpose is coherent with cloud media compression/export, but the documented backend can also handle broader media edits. Evidence: SKILL.md says, "Everything else (generate, edit, add BGM…) | → §3.1 SSE".
Instruction Scope
The skill tells the agent to connect automatically on first open and translate backend GUI-style responses into API calls. Evidence: SKILL.md says, "When a user first opens this skill, connect to the processing backend automatically" and "'click' or '点击' → execute the action via the relevant endpoint".
Install Mechanism
No install script, package, or local code is provided; this is an instruction-only skill. Runtime token setup is documented in SKILL.md rather than hidden in an installer.
Credentials
Cloud upload and processing are expected for this purpose, but users should know their media leaves the local environment. Evidence: SKILL.md says, "runs GIF compression optimization through a cloud rendering pipeline".
Persistence & Privilege
The skill stores a service session identifier for subsequent requests and cloud render jobs may continue briefly if the tab is closed. Evidence: SKILL.md says, "Store the returned `session_id` for all subsequent requests" and "closing the tab before completion orphans the job".
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install gif-compressor
  3. After installation, invoke the skill by name or use /gif-compressor
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
- Initial release of GIF Compressor — a tool to compress and optimize GIF files via cloud rendering. - Upload GIF, MP4, WebM, or APNG files (up to 200MB) and request compression or conversion (e.g., “compress this GIF to under 500KB”). - Exports high-quality 720p MP4; major reduction in GIF size with minimal quality loss. - Automatic backend connection and token management for easy first-time use. - Job queuing, session management, and export all handled via a streamlined cloud API. - Designed for web designers, marketers, and social media users wanting fast, effortless GIF optimization.
Metadata
Slug gif-compressor
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Gif Compressor?

Get compressed GIF files ready to post, without touching a single slider. Upload your GIF files (GIF, MP4, WebM, APNG, up to 200MB), say something like "comp... It is an AI Agent Skill for Claude Code / OpenClaw, with 41 downloads so far.

How do I install Gif Compressor?

Run "/install gif-compressor" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Gif Compressor free?

Yes, Gif Compressor is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Gif Compressor support?

Gif Compressor is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Gif Compressor?

It is built and maintained by whitejohnk-26 (@whitejohnk-26); the current version is v1.0.0.

💬 Comments