Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Video Lesson

v1.0.0

convert raw video footage into structured lesson videos with this skill. Works with MP4, MOV, AVI, WebM files up to 500MB. educators and course creators use...

0· 52·0 current·0 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The skill claims to convert/structure video and its runtime instructions cover uploads, rendering, progress, and downloads — which aligns with the stated purpose. However the SKILL.md frontmatter lists a config path (~/.config/nemovideo/) while the registry metadata shows no required config paths; this mismatch is unexplained and should be confirmed.
Instruction Scope
Instructions are detailed and mostly within scope (uploading files, SSE for edits, polling export status). Two behaviors to be aware of: the skill instructs an automatic first-time connection that POSTs to an external API to obtain an anonymous token (network activity without an explicit user upload step), and it instructs detecting install-path/platform by reading host paths (~/.clawhub, ~/.cursor/skills/) and the skill's own YAML frontmatter at runtime. Those are plausible for attribution, but they extend filesystem/network access beyond only 'upload-on-demand' and should be acceptable to you before enabling.
Install Mechanism
No install spec or code files — instruction-only skill. This is low-risk from an installation perspective because nothing is downloaded or written by an installer.
Credentials
The only declared required environment variable is NEMO_TOKEN (primaryEnv), which is appropriate for a third‑party API. But the SKILL.md describes generating an anonymous token automatically when NEMO_TOKEN is missing and implies storing/using that token; that automatic creation could result in outbound network requests and temporary credentials being created without the user explicitly providing a token. Also the frontmatter's configPaths (~/.config/nemovideo/) appears in the skill but was not declared elsewhere — inconsistency to clarify.
Persistence & Privilege
always is false and the skill is user invocable; it does not request permanent/force-inclusion privileges. It does suggest keeping a session_id for the session lifetime, which is normal for a remote-rendering workflow.
What to consider before installing
This skill largely does what it says: upload video, request server-side processing, and return a processed MP4. Before installing, consider: 1) The skill will try to contact https://mega-api-prod.nemovideo.ai automatically on first use to obtain an anonymous token if you don't provide NEMO_TOKEN yourself — decide whether you prefer to supply your own token rather than allowing automatic token creation. 2) Confirm you trust the API domain and review its privacy/terms (your uploaded videos and metadata will be sent to that backend). 3) The SKILL.md mentions reading the skill file frontmatter and checking common install paths (~/.clawhub, ~/.cursor/skills/) to set an attribution header; if you have sensitive filesystem layout you may want to restrict or inspect this behavior. 4) There is a metadata inconsistency: the skill's frontmatter references a config path (~/.config/nemovideo/) not declared elsewhere — ask the publisher to clarify why that path is needed. If you decide to proceed, prefer providing a token you control (NEMO_TOKEN) and test with non-sensitive sample videos first.

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

Runtime requirements

🎓 Clawdis
EnvNEMO_TOKEN
Primary envNEMO_TOKEN
latestvk97dn9h7swh5fz6dsq9zqxr74s8560p6
52downloads
0stars
1versions
Updated 1d ago
v1.0.0
MIT-0

Getting Started

Ready when you are. Drop your raw video footage here or describe what you want to make.

Try saying:

  • "convert a 12-minute screen recording of a coding tutorial into a 1080p MP4"
  • "split into chapters, add captions, and insert a title slide at the start"
  • "turning raw recordings into chaptered, captioned educational videos for educators and course creators"

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.

Video Lesson — Turn Recordings Into Structured Lessons

This tool takes your raw video footage and runs AI lesson structuring through a cloud rendering pipeline. You upload, describe what you want, and download the result.

Say you have a 12-minute screen recording of a coding tutorial and want to split into chapters, add captions, and insert a title slide at the start — the backend processes it in about 1-2 minutes and hands you a 1080p MP4.

Tip: breaking a long lecture into segments under 10 minutes speeds up processing and improves viewer retention.

Matching Input to Actions

User prompts referencing video lesson, 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.

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

  • X-Skill-Source: video-lesson
  • X-Skill-Version: from frontmatter version
  • X-Skill-Platform: detect from install path (~/.clawhub/clawhub, ~/.cursor/skills/cursor, else 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.

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

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

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

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

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

Session state: GET /api/state/nemo_agent/me/<sid>/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_<ts>","sessionId":"<sid>","draft":<json>,"output":{"format":"mp4","quality":"high"}}. Poll GET /api/render/proxy/lambda/<id> 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.

Backend Response Translation

The backend assumes a GUI exists. Translate these into API actions:

Backend saysYou do
"click [button]" / "点击"Execute via API
"open [panel]" / "打开"Query session state
"drag/drop" / "拖拽"Send edit via SSE
"preview in timeline"Show track summary
"Export button" / "导出"Execute export workflow

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)

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

Tips and Tricks

The backend processes faster when you're specific. Instead of "make it look better", try "split into chapters, add captions, and insert a title slide at the start" — 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 with learning platforms like Teachable and Udemy.

Common Workflows

Quick edit: Upload → "split into chapters, add captions, and insert a title slide at the start" → Download MP4. Takes 1-2 minutes 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.

Comments

Loading comments...