Easy Gif Compressor

v1.0.0

Cloud-based easy-gif-compressor tool that handles reducing GIF file size for web and social media use. Upload GIF, MP4, WebM, APNG files (up to 200MB), descr...

0· 83·0 current·0 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the declared API endpoints and the single required credential (NEMO_TOKEN). Requiring a service token and a session for a cloud render pipeline is expected for this functionality.
Instruction Scope
Runtime instructions are focused on obtaining/using an API token, creating a session, uploading media, and polling for render results. A minor note: the skill instructs automatic anonymous-token acquisition if NEMO_TOKEN is not present and asks agents to hide raw token values from users; this is coherent for usability but means the skill will contact the remote API and create credentials without explicit user-provided keys.
Install Mechanism
No install spec and no code files — instruction-only skill. This is the lowest-risk install profile (nothing is written to disk by the skill package itself).
Credentials
Only NEMO_TOKEN is required, which is proportional. Metadata also lists a config path (~/.config/nemovideo/) and the instructions reference detecting an install path to set X-Skill-Platform; these imply filesystem access for platform detection or local config but are not excessive for a client integrating with a cloud service. There is no request for unrelated credentials.
Persistence & Privilege
always is false and there is no installation routine that requests permanent elevated privileges or modifies other skills. The skill will operate only when invoked and uses session tokens for server-side jobs.
Assessment
This skill will upload the GIF/MP4/WebM files you send to the nemovideo.ai backend and will automatically obtain a short-lived anonymous token if you don't provide one. That behavior is consistent with a cloud compressor, but consider privacy: uploaded media and any metadata will go to a third-party service (https://mega-api-prod.nemovideo.ai). If you want more control, set NEMO_TOKEN yourself (do not share long‑lived secrets you don't trust), or avoid using the skill and use an offline compressor. Also be aware the skill may read runtime/install paths (to set X-Skill-Platform) and may store session state for job polling; review the service's privacy/terms if you care about retention or orphaned jobs.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🗜️ Clawdis
EnvNEMO_TOKEN
Primary envNEMO_TOKEN
latestvk9748xbtrq7csp316jdb5crm0584k56c
83downloads
0stars
1versions
Updated 1w ago
v1.0.0
MIT-0

Getting Started

Got GIF files to work with? Send it over and tell me what you need — I'll take care of the GIF compression optimization.

Try saying:

  • "compress a 2MB animated GIF with 60 frames into a 720p MP4"
  • "compress this GIF to under 500KB without losing too much quality"
  • "reducing GIF file size for web and social media use for web designers, social media managers, bloggers"

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 <token>, Content-Type: application/json, and body {"task_name":"project","language":"<detected>"}. 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.

Easy GIF Compressor — Compress and Optimize GIF Files

Send me your GIF files and describe the result you want. The GIF compression optimization runs on remote GPU nodes — nothing to install on your machine.

A quick example: upload a 2MB animated GIF with 60 frames, type "compress this GIF to under 500KB without losing too much quality", and you'll get a 720p MP4 back in roughly 10-30 seconds. All rendering happens server-side.

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

Matching Input to Actions

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

User says...ActionSkip 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.

All calls go to https://mega-api-prod.nemovideo.ai. The main endpoints:

  1. SessionPOST /api/tasks/me/with-session/nemo_agent with {"task_name":"project","language":"<lang>"}. Gives you a session_id.
  2. Chat (SSE)POST /run_sse with session_id and your message in new_message.parts[0].text. Set Accept: text/event-stream. Up to 15 min.
  3. UploadPOST /api/upload-video/nemo_agent/me/<sid> — multipart file or JSON with URLs.
  4. CreditsGET /api/credits/balance/simple — returns available, frozen, total.
  5. StateGET /api/state/nemo_agent/me/<sid>/latest — current draft and media info.
  6. ExportPOST /api/render/proxy/lambda with render ID and draft JSON. Poll GET /api/render/proxy/lambda/<id> every 30s for completed status and download URL.

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

Headers are derived from this file's YAML frontmatter. X-Skill-Source is easy-gif-compressor, X-Skill-Version comes from the version field, and X-Skill-Platform is detected from the install path (~/.clawhub/ = clawhub, ~/.cursor/skills/ = cursor, otherwise unknown).

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

Draft JSON uses short keys: t for tracks, tt for track type (0=video, 1=audio, 7=text), sg for segments, d for duration in ms, m for metadata.

Example timeline summary:

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

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

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.

Error Codes

  • 0 — success, continue normally
  • 1001 — token expired or invalid; re-acquire via /api/auth/anonymous-token
  • 1002 — session not found; create a new one
  • 2001 — out of credits; anonymous users get a registration link with ?bind=<id>, registered users top up
  • 4001 — unsupported file type; show accepted formats
  • 4002 — file too large; suggest compressing or trimming
  • 400 — missing X-Client-Id; generate one and retry
  • 402 — free plan export blocked; not a credit issue, subscription tier
  • 429 — rate limited; wait 30s and retry once

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.

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 GIF to MP4 often yields 80% smaller files with better quality.

Comments

Loading comments...