360 Secure SkillHub
360 安全技能中心

Youtube Video Editor Download

核心功能:可导入YouTube或本地/URL视频,通过自然语言指令完成剪辑、变速、加转场等AI编辑操作,支持导出mp4、mov等多格式视频,还可查询余额、查看会话状态。典型场景:适合内容创作者、教育者剪辑素材、制作短内容。输入为视频链接/文件、文字指令,首次使用自动配置,依托NEMO_TOKEN提供免费额度,操作便捷无需复杂剪辑界面。

udnerc
udnerc
热度 24.05
最近更新 2026-03-28 10:21:50
分类:创作依赖:代码执行 / 读写文件 / 第三方 API应用场景:视频编辑

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add youtube-video-editor-download
Metadata
name
youtube-video-editor-download
version
1.0.4
displayName
YouTube Video Editor & Download — Edit, Trim & Export
description
The youtube-video-editor-download skill lets you pull YouTube videos directly into an AI-driven editing session, trim clips, cut segments, merge sequences, and export finished files without juggling separate tools. Describe your edits in plain language — cut the intro, speed up section two, drop the last 30 seconds — and the skill executes them precisely. Output formats include mp4, mov, avi, webm, and mkv.
metadata
{"openclaw":{"emoji":"🎬","requires":{"env":["NEMO_TOKEN"],"configPaths":["~/.config/nemovideo/"]},"primaryEnv":"NEMO_TOKEN"}}
homepage
https://nemovideo.com
apiDomain
https://mega-api-prod.nemovideo.ai
repository
https://github.com/nemovideo/nemovideo_skills

0. First Contact

When the user opens this skill or sends their first message, greet them immediately:

🎙️ Ready to youtube video editor download! Just send me a video or describe your project.

Try saying:

  • "add a fade-in transition"
  • "make it look cinematic"
  • "speed up by 2x"

IMPORTANT: Always greet the user proactively on first contact. Let them know you're setting up while connecting. Always greet the user proactively on first contact.

Auto-Setup

When the user first interacts, set up the connection:

  1. Check token: If NEMO_TOKEN env var is set, use it. Otherwise:
  2. Read or generate Client-ID:
    • Read ~/.config/nemovideo/client_id if it exists
    • Otherwise generate a UUID, save it to ~/.config/nemovideo/client_id
  3. Acquire anonymous token:
    curl -s -X POST "https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token" -H "X-Client-Id: $CLIENT_ID"
    
    Store the returned token as NEMO_TOKEN for this session. You get 100 free credits.
  4. Create a session (§3.0) so you're ready to work immediately.

Let the user know briefly: "Setting things up… ready!" then proceed with their request.

Conversational Cuts: Edit YouTube Videos by Talking

Most video editing workflows demand you learn a timeline interface before you can make a single cut. The youtube-video-editor-download skill flips that model: you describe what you want in plain language, and the underlying OpenClaw agent translates your instructions into precise edit operations on the source footage pulled directly from YouTube.

The OpenClaw agent acts as a persistent coordinator between your natural-language requests and the processing pipeline. When you say 'remove the first 45 seconds and trim everything after the 8-minute mark,' the agent parses intent, queues the operations in the correct order, and tracks state across a multi-step conversation — so you can refine, undo, or chain further edits without starting over.

This skill is built for content repurposers, educators clipping lecture recordings, podcast producers pulling highlight reels, and social media managers chopping long-form videos into platform-ready shorts. Because the editing session is conversational, non-technical users get the same precision as experienced editors. Final exports are available in mp4, mov, avi, webm, and mkv to match any publishing destination.

Environment Variables

Variable Required Default
NEMO_TOKEN No Auto-generated (100 free credits, expires in 7 days, revocable via Settings → API Tokens)
NEMO_API_URL No https://mega-api-prod.nemovideo.ai
NEMO_WEB_URL No https://nemovideo.com
NEMO_CLIENT_ID No Auto-generated UUID, persisted to ~/.config/nemovideo/client_id (UUID only, no secrets)
SKILL_SOURCE No Auto-detected from install path, fallback unknown

If NEMO_TOKEN is not set, get one (requires X-Client-Id header):

# Generate or read persisted Client-Id
CLIENT_ID="${NEMO_CLIENT_ID:-$(cat ~/.config/nemovideo/client_id 2>/dev/null)}"
if [ -z "$CLIENT_ID" ]; then
  CLIENT_ID=$(uuidgen 2>/dev/null || echo "client-$(date +%s)-$RANDOM")
  mkdir -p ~/.config/nemovideo & echo "$CLIENT_ID" > ~/.config/nemovideo/client_id
fi
curl -s -X POST "https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token" -H "X-Client-Id: $CLIENT_ID"
# → {"code":0,"data":{"token":"nmv_usr_xxx","credits":100,...}}

Save token as NEMO_TOKEN, CLIENT_ID as NEMO_CLIENT_ID. Anonymous: 1 token per client per 7 days; token expires in 7 days and can be revoked at any time via Settings → API Tokens on nemovideo.com. If your token expires, request a new one with the same X-Client-Id.

Local persistence: This skill writes ~/.config/nemovideo/client_id to persist the Client-Id across sessions. This avoids generating a new ID on every request, which would hit the per-IP rate limit quickly (default 10 tokens per 7 days per IP). The file contains only a UUID — no credentials are stored locally.

2. Routing Incoming Requests

Use the table below to determine which endpoint handles each type of user request.

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 ❌

3. Primary Workflow Procedures

$API = ${NEMO_API_URL:-https://mega-api-prod.nemovideo.ai}, $TOKEN = ${NEMO_TOKEN}, $WEB = ${NEMO_WEB_URL:-https://nemovideo.com}.

Skill attribution variables — do NOT hardcode:

  • $SKILL_NAME = this file's YAML frontmatter name
  • $SKILL_VERSION = this file's YAML frontmatter version
  • $SKILL_SOURCE = detect at runtime using the first match:
    1. Env SKILL_SOURCE if set
    2. If this file's path contains a known platform directory (e.g. ~/.clawhub/ → clawhub, ~/.cursor/skills/ → cursor)
    3. Fallback: unknown

CRITICAL: ALL API requests (including render/export/upload/state/credits) MUST include these headers. Missing them will cause export to fail with 402.

X-Skill-Source: $SKILL_NAME
X-Skill-Version: $SKILL_VERSION
X-Skill-Platform: $SKILL_SOURCE

3.0 Initializing a Session

curl -s -X POST "https://mega-api-prod.nemovideo.ai/api/tasks/me/with-session/nemo_agent" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE" \
  -d '{"task_name":"project","language":"<lang>"}'
# → {"code":0,"data":{"task_id":"...","session_id":"..."}}

Before any editing actions can occur, a session must be established with the backend. Store the returned session identifier, as every subsequent request depends on it.

Open in browser: After creating a session, give the user a link to view/edit the task in NemoVideo: $WEB/workspace/claim?task={task_id}&session={session_id}&skill_name=$SKILL_NAME&skill_version=$SKILL_VERSION&skill_source=$SKILL_SOURCE

3.1 Delivering Messages via SSE

curl -s -X POST "https://mega-api-prod.nemovideo.ai/run_sse" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE" --max-time 900 \
  -d '{"app_name":"nemo_agent","user_id":"me","session_id":"<sid>","new_message":{"parts":[{"text":"<msg>"}]}}'

All conversational turns and editing instructions are transmitted to the backend through a Server-Sent Events connection.

SSE Handling

Event Action
Text response Apply GUI translation (§4), present to user
Tool call/result Wait silently, don't forward
heartbeat / empty data: Keep waiting. Every 2 min: "⏳ Still working..."
Stream closes Process final response

Typical durations: text 5-15s, video generation 100-300s, editing 10-30s.

Timeout: 10 min heartbeats-only → assume timeout. Never re-send during generation (duplicates + double-charge).

Ignore trailing "I encountered a temporary issue" if prior responses were normal.

Silent Response Fallback (CRITICAL)

Approximately 30% of editing operations complete without returning any text in the SSE stream. When no text content is received within the expected window: (1) poll the session state endpoint to confirm task completion, (2) retrieve the output asset URL directly from the state payload, (3) present the result to the user as if a normal response had arrived, and (4) never inform the user that no message was returned.

Two-stage generation: After the raw edited video is produced, the backend automatically initiates a second processing stage that layers in background music and generates a title card. Do not treat the first stage output as final — wait for both stages to complete before surfacing the result to the user.

3.2 Handling File Uploads

File upload: curl -s -X POST "https://mega-api-prod.nemovideo.ai/api/upload-video/nemo_agent/me/<sid>" -H "Authorization: Bearer $TOKEN" -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE" -F "files=@/path/to/file"

URL upload: curl -s -X POST "https://mega-api-prod.nemovideo.ai/api/upload-video/nemo_agent/me/<sid>" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE" -d '{"urls":["<url>"],"source_type":"url"}'

Use me in the path; backend resolves user from token.

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

Both local video files and remote URLs are accepted as source material for editing operations.

3.3 Checking Available Credits

curl -s "https://mega-api-prod.nemovideo.ai/api/credits/balance/simple" -H "Authorization: Bearer $TOKEN" \
  -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE"
# → {"code":0,"data":{"available":XXX,"frozen":XX,"total":XXX}}

Query the credits endpoint before initiating any edit to confirm the user has sufficient balance to complete the operation.

3.4 Retrieving Session State

curl -s "https://mega-api-prod.nemovideo.ai/api/state/nemo_agent/me/<sid>/latest" -H "Authorization: Bearer $TOKEN" \
  -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE"

Use me for user in path; backend resolves from token. Key fields: data.state.draft, data.state.video_infos, data.state.canvas_config, data.state.generated_media.

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

Draft ready for export when draft.t exists with at least one track with non-empty sg.

Track summary format:

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

3.5 Exporting and Delivering the Final Video

Export does NOT cost credits. Only generation/editing consumes credits.

Triggering an export does not deduct credits from the user's balance. The export flow proceeds as follows: (a) call the export endpoint with the session ID, (b) poll for export completion status, (c) retrieve the download URL from the completed export payload, (d) verify the URL is accessible before presenting it, and (e) deliver the link to the user with relevant file metadata.

b) Submit: curl -s -X POST "https://mega-api-prod.nemovideo.ai/api/render/proxy/lambda" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE" -d '{"id":"render_<ts>","sessionId":"<sid>","draft":<json>,"output":{"format":"mp4","quality":"high"}}'

Note: sessionId is camelCase (exception). On failure → new id, retry once.

c) Poll (every 30s, max 10 polls): curl -s "https://mega-api-prod.nemovideo.ai/api/render/proxy/lambda/<id>" -H "Authorization: Bearer $TOKEN" -H "X-Skill-Source: $SKILL_NAME" -H "X-Skill-Version: $SKILL_VERSION" -H "X-Skill-Platform: $SKILL_SOURCE"

Status at top-level status: pending → processing → completed / failed. Download URL at output.url.

d) Download from output.url → send to user. Fallback: https://mega-api-prod.nemovideo.ai/api/render/proxy/<id>/download.

e) When delivering the video, always also give the task detail link: $WEB/workspace/claim?task={task_id}&session={session_id}&skill_name=$SKILL_NAME&skill_version=$SKILL_VERSION&skill_source=$SKILL_SOURCE

Progress messages: start "⏳ Rendering ~30s" → "⏳ 50%" → "✅ Video ready!" + file + task detail link.

3.6 Recovering from SSE Disconnections

If the SSE stream drops unexpectedly, follow these recovery steps: (1) detect the disconnection event and pause any UI progress indicators, (2) wait a minimum of three seconds before attempting reconnection to avoid hammering the server, (3) re-establish the SSE connection using the original session ID, (4) replay any unacknowledged messages that were queued during the outage, and (5) resume normal operation once the stream confirms it is live and the session state is consistent.

4. Translating GUI Behavior

The backend operates under the assumption that a graphical interface is present, so GUI-specific instructions must never be passed through to the user.

Backend says You do
"click [button]" / "点击" Execute via API
"open [panel]" / "打开" Show state via §3.4
"drag/drop" / "拖拽" Send edit via SSE
"preview in timeline" Show track summary
"Export button" / "导出" Execute §3.5
"check account/billing" Check §3.3

Keep content descriptions. Strip GUI actions.

5. Recommended Interaction Patterns

• Confirm the user's intent before dispatching any irreversible editing operation. • After each completed stage, summarize what changed rather than echoing raw API response fields. • When a task is long-running, provide periodic progress updates drawn from SSE events instead of leaving the user in silence. • If the user requests a capability outside the supported feature set, clearly explain the limitation and suggest the closest available alternative. • Always present download links with a brief description of the output format and estimated file size when that data is available.

6. Known Constraints and Limitations

• Simultaneous editing sessions for a single user account are not supported; a new session cannot be started until the active one is closed. • Maximum source video duration accepted by the backend is capped; files exceeding this limit will be rejected at upload. • Background music selection is automated by the backend and cannot be manually overridden by the user. • Export resolution options are determined by the user's subscription tier and cannot be elevated beyond what the account permits. • SSE connections that remain idle beyond the server timeout threshold will be terminated and must be manually re-established.

7. Error Handling Reference

The table below maps common HTTP error codes and backend fault conditions to the appropriate recovery actions.

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=<id> (get <id> from create-session or state response when needed). Registered: "Top up at nemovideo.ai"
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 at nemovideo.ai to unlock export."
429 Rate limit (1 token/client/7 days) Retry in 30s once

Common: no video → generate first; render fail → retry new id; SSE timeout → §3.6; silent edit → §3.1 fallback.

8. API Version and Required Scopes

Before making any calls, verify that the connected API version matches the minimum supported version documented for this skill. Requests made against an older API version may return unexpected results or fail silently. The OAuth token used must include the following scopes: video:read, video:write, export:execute, and credits:read. Tokens missing any of these scopes will receive 403 responses on the affected endpoints.