← Back to Skills Marketplace
linmillsd7

Add Subtitle

by linmillsd7 · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
73
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install add-subtitle
Description
add video files into captioned video files with this skill. Works with MP4, MOV, AVI, WebM files up to 500MB. YouTubers, content creators, marketers use it f...
README (SKILL.md)

Getting Started

Share your video files and I'll get started on subtitle generation. Or just tell me what you're thinking.

Try saying:

  • "add my video files"
  • "export 1080p MP4"
  • "add subtitles in English and auto-sync"

Automatic Setup

On first interaction, connect to the processing API before doing anything else. Show a brief status like "Setting things up...".

Token: If NEMO_TOKEN environment variable is already set, use it and skip to Session below.

Free token: Generate a UUID as client identifier, then POST to https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token with header X-Client-Id: \x3Cuuid>. The response field data.token becomes your NEMO_TOKEN (100 credits, 7-day expiry).

Session: POST to https://mega-api-prod.nemovideo.ai/api/tasks/me/with-session/nemo_agent with Bearer auth and body {"task_name":"project"}. Save session_id from the response.

Confirm to the user you're connected and ready. Don't print tokens or raw JSON.

Add Subtitle — Generate and Embed Video Captions

This tool takes your video files and runs subtitle generation through a cloud rendering pipeline. You upload, describe what you want, and download the result.

Say you have a 3-minute tutorial video in MP4 format and want to add subtitles in English and auto-sync them to the speech — the backend processes it in about 30-60 seconds and hands you a 1080p MP4.

Tip: shorter clips under 2 minutes process significantly faster.

Matching Input to Actions

User prompts referencing add subtitle, 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.

Include Authorization: Bearer \x3CNEMO_TOKEN> and all attribution headers on every request — omitting them triggers a 402 on export.

Skill attribution — read from this file's YAML frontmatter at runtime:

  • X-Skill-Source: add-subtitle
  • X-Skill-Version: from frontmatter version
  • X-Skill-Platform: detect from install path (~/.clawhub/clawhub, ~/.cursor/skills/cursor, else unknown)

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.

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

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.

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)

Common Workflows

Quick edit: Upload → "add subtitles in English and auto-sync them to the speech" → Download MP4. Takes 30-60 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 "add subtitles in English and auto-sync them to the speech" — concrete instructions get better results.

Max file size is 500MB. Stick to MP4, MOV, AVI, WebM for the smoothest experience.

Export as MP4 for widest compatibility across platforms.

Usage Guidance
This skill will upload entire video files and session tokens to an external service (mega-api-prod.nemovideo.ai) to perform subtitle generation. Before installing: 1) Decide whether you trust that external service with the videos you plan to process—do not upload sensitive content. 2) Prefer using an ephemeral or limited-scope NEMO_TOKEN if possible; know that anonymous tokens expire after 7 days. 3) Confirm where session_id or tokens are stored by the agent (memory vs disk) if you worry about persistence. 4) Note the minor metadata inconsistency: the skill frontmatter references ~/.config/nemovideo/ while the registry lists no config paths—ask the author to clarify. 5) If unsure, test with a short non-sensitive clip first and verify responses (download URLs are provided over HTTPS). If you need higher assurance, request the author's homepage, source, or privacy policy for the nemovideo API before sending private videos.
Capability Analysis
Type: OpenClaw Skill Name: add-subtitle Version: 1.0.0 The skill facilitates video captioning by uploading user files to a third-party cloud API (mega-api-prod.nemovideo.ai). While these actions are aligned with the stated purpose, the skill exhibits high-risk behaviors including environment fingerprinting (probing install paths like ~/.cursor/skills/ for attribution) and automated credential acquisition via anonymous tokens. Per the analysis criteria, the use of network and file access for the stated purpose, combined with instructions to suppress raw API output and tokens from the user, warrants a suspicious classification despite the lack of clear evidence of malicious intent.
Capability Assessment
Purpose & Capability
Name and description match the runtime instructions: the SKILL.md describes uploading video files, creating a session, submitting render jobs, polling for completion, and downloading captioned MP4s. The single required environment variable (NEMO_TOKEN) and the API endpoints described align with a cloud subtitle/render service.
Instruction Scope
Instructions direct the agent to generate or use a NEMO_TOKEN, create sessions, upload full video files (multipart or by URL), stream SSE events, and poll render status. These actions are within the declared purpose but do involve transmitting entire user videos and session tokens to an external endpoint (mega-api-prod.nemovideo.ai). The skill also instructs the agent to read the skill's YAML frontmatter and detect an install path to set X-Skill-Platform, which requires access to the agent's install path or the SKILL.md file—this is reasonable for attribution but worth noting as additional file-system access.
Install Mechanism
This is an instruction-only skill with no install spec and no code files; nothing is written to disk by an installer. That minimizes install-time risk.
Credentials
The skill declares one required env var (NEMO_TOKEN) which is appropriate for a remote API. However the YAML frontmatter metadata also references a config path (~/.config/nemovideo/) while the registry metadata indicated no required config paths—this mismatch should be clarified. No unrelated credentials are requested.
Persistence & Privilege
always is false and the skill does not request elevated/platform-wide configuration changes. It does instruct saving a session_id in runtime state (expected for job tracking) but does not demand permanent system-wide privileges.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install add-subtitle
  3. After installation, invoke the skill by name or use /add-subtitle
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of add-subtitle 1.0.0: - Generate and embed subtitles automatically into video files (MP4, MOV, AVI, WebM; up to 500MB). - Cloud-based captioning pipeline delivers 1080p MP4 exports in 30–90 seconds. - Automatic token/session management for quick setup — anonymous usage with 100 free credits. - Supports batch uploads, English auto-synced captions, and common edit commands (upload, export, check credits). - Clear guidance on status, supported formats, error handling, and user feedback.
Metadata
Slug add-subtitle
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Add Subtitle?

add video files into captioned video files with this skill. Works with MP4, MOV, AVI, WebM files up to 500MB. YouTubers, content creators, marketers use it f... It is an AI Agent Skill for Claude Code / OpenClaw, with 73 downloads so far.

How do I install Add Subtitle?

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

Is Add Subtitle free?

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

Which platforms does Add Subtitle support?

Add Subtitle is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Add Subtitle?

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

💬 Comments