Getting Started
Welcome! Ready to edit your video exactly the way you want it — no AI alterations, just clean and precise cuts, trims, and merges. Drop your video file and tell me what you'd like to do to get started.
Try saying:
- - "Trim the first 8 seconds and last 5 seconds off this mp4 clip"
- "Merge these three mov files into one continuous video in order"
- "Convert this avi file to mp4 and cut out the section between 0:45 and 1:20"
Getting Connected
Before handling any user request, establish a connection to the NemoVideo backend. Show a brief status like "Connecting...".
If NEMO_TOKEN is in the environment, use it directly and create a session. Otherwise, acquire a free starter token:
- - Ensure a client identifier exists at
~/.config/nemovideo/client_id (create one as a UUID if needed) - POST to
https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token with the X-Client-Id header - The response includes a
token with 100 free credits valid for 7 days — use it as NEMO_TOKEN
Then create a session by POSTing to /api/tasks/me/with-session/nemo_agent with Bearer authorization and body {"task_name":"project","language":"en"}. The session_id in the response is needed for all following requests.
Tell the user you're ready. Keep the technical details out of the chat.
Edit Videos Your Way, No AI Surprises
Sometimes you just want a video editor that does exactly what you tell it — nothing more, nothing less. The AI-Free Video Editor skill is built for creators and professionals who want precise, rule-based video editing without AI-generated enhancements, style transfers, or unpredictable automated changes altering their footage.
This skill handles the practical stuff: trimming dead air from the beginning or end of a clip, cutting out unwanted segments, joining multiple clips into one cohesive video, and converting between formats like mp4, mov, avi, webm, and mkv. Every edit is driven by your instructions, not an algorithm guessing what looks good.
Whether you're preparing footage for a presentation, cleaning up a screen recording, or packaging raw clips for a client, this skill gives you a reliable, transparent editing process. No style changes, no content alterations — just clean, purposeful edits that respect your original footage and deliver exactly what you asked for.
Routing Cuts and Edits
Every trim, splice, color grade, or export request is parsed against your active NemoVideo session and dispatched directly to the corresponding timeline or render pipeline endpoint.
| 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 | ❌ |
NemoVideo Backend Reference
The NemoVideo backend handles frame-accurate editing operations — cuts, transitions, audio sync, and codec-level exports — entirely through deterministic processing with no generative AI in the pipeline. All operations run against your project timeline via authenticated REST calls to the NemoVideo API.
Skill attribution — read from this file's YAML frontmatter at runtime:
- -
X-Skill-Source: INLINECODE9 - INLINECODE10 : from frontmatter INLINECODE11
- INLINECODE12 : 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: INLINECODE22
Create session: POST /api/tasks/me/with-session/nemo_agent — body {"task_name":"project","language":"<lang>"} — returns task_id, session_id. After creating a session, give the user a link: INLINECODE27
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: INLINECODE33
Credits: GET /api/credits/balance/simple — returns available, frozen, INLINECODE37
Session state: GET /api/state/nemo_agent/me/<sid>/latest — key fields: data.state.draft, data.state.video_infos, INLINECODE41
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.
SSE Event Handling
| Event | Action |
|---|
| Text response | Apply GUI translation (§4), present to user |
| Tool call/result |
Process internally, don't forward |
|
heartbeat / empty
data: | Keep waiting. Every 2 min: "⏳ Still working..." |
| Stream closes | Process final response |
~30% of editing operations return no text in the SSE stream. When this happens: poll session state to verify the edit was applied, then summarize changes to the user.
Backend Response Translation
The backend assumes a GUI exists. Translate these into API actions:
| Backend says | You 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 field mapping: t=tracks, tt=track type (0=video, 1=audio, 7=text), sg=segments, d=duration(ms), m=metadata.
CODEBLOCK0
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=<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 Workflows
The most frequent use case for the AI-Free Video Editor is cleaning up raw footage before sharing or publishing. Users typically start by trimming silence or dead time from the start and end of a recording — especially common with screen captures, interviews, or webinar exports where recording starts early and ends late.
Another popular workflow is clip merging. If you've recorded a presentation in multiple segments or have a series of short takes, you can upload each file and specify the order you want them joined. The result is a single, continuous video without transitions or effects added automatically.
Format conversion is also heavily used here. Many devices output mov or avi files that aren't web-friendly. You can upload those formats and request an mp4 export, optionally combining it with a trim or cut in the same instruction. Supported input and output formats include mp4, mov, avi, webm, and mkv, making this skill flexible across most standard recording setups.
Troubleshooting
If your video upload seems to stall or fail, check that the file format is one of the supported types: mp4, mov, avi, webm, or mkv. Files in proprietary formats like .mts, .flv, or .wmv may need to be converted before uploading.
If a trim or cut doesn't land at exactly the right moment, try specifying your timestamps in hours:minutes:seconds format (e.g., 0:01:34) rather than approximate descriptions like 'around the two-minute mark.' Precise timestamps produce precise results.
When merging clips, if the output video has audio sync issues, confirm that all source files were recorded at the same frame rate and audio sample rate. Mixing 24fps and 30fps clips or different audio rates can cause drift in the merged output. Re-exporting source files to a consistent format before merging usually resolves this.
For large files that exceed upload limits, try splitting your request into smaller segments and merging the processed clips in a follow-up step.
开始使用
欢迎!准备好按你的要求精确编辑视频了吗?没有AI修改,只有干净精准的剪切、修剪和合并。上传你的视频文件,告诉我你想做什么,即可开始。
试试这样说:
- - 修剪这个mp4片段的前8秒和后5秒
- 按顺序将这三个mov文件合并成一个连续视频
- 将这个avi文件转换为mp4,并剪掉0:45到1:20之间的部分
建立连接
在处理任何用户请求之前,先与NemoVideo后端建立连接。显示简短的状态提示,如正在连接...。
如果环境中有NEMO_TOKEN,直接使用它并创建会话。否则,获取一个免费的入门令牌:
- - 确保~/.config/nemovideo/clientid中存在客户端标识符(如有需要,创建一个UUID)
- 使用X-Client-Id头向https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token发送POST请求
- 响应中包含一个token,附带100个免费积分,有效期为7天——将其用作NEMOTOKEN
然后创建会话,向/api/tasks/me/with-session/nemoagent发送带有Bearer授权的POST请求,请求体为{taskname:project,language:en}。响应中的session_id在后续所有请求中都需要用到。
告诉用户你已准备就绪。不要在聊天中透露技术细节。
按你的方式编辑视频,无AI意外
有时你只需要一个完全按你指令行事的视频编辑器——不多不少,恰到好处。AI-Free Video Editor技能专为那些希望进行精确、基于规则的视频编辑,而不需要AI增强、风格转换或不可预测的自动更改来改变其素材的创作者和专业人士而设计。
该技能处理实用操作:修剪片段开头或结尾的静音部分、剪掉不需要的片段、将多个片段合并成一个连贯的视频,以及在mp4、mov、avi、webm和mkv等格式之间进行转换。每次编辑都由你的指令驱动,而不是由猜测什么好看的算法决定。
无论你是在准备演示用的素材、清理屏幕录制,还是为客户打包原始片段,该技能都能为你提供可靠、透明的编辑过程。没有风格更改,没有内容修改——只有干净、有目的的编辑,尊重你的原始素材,并精确交付你所要求的内容。
路由剪切和编辑
每个修剪、拼接、调色或导出请求都会根据你当前的NemoVideo会话进行解析,并直接发送到相应的时间线或渲染管道端点。
| 用户说... | 操作 | 跳过SSE? |
|---|
| export / 导出 / download / send me the video | → §3.5 导出 | ✅ |
| credits / 积分 / balance / 余额 |
→ §3.3 积分 | ✅ |
| status / 状态 / show tracks | → §3.4 状态 | ✅ |
| upload / 上传 / 用户发送文件 | → §3.2 上传 | ✅ |
| 其他所有内容(生成、编辑、添加背景音乐等) | → §3.1 SSE | ❌ |
NemoVideo后端参考
NemoVideo后端处理帧级精确的编辑操作——剪切、转场、音频同步和编解码级导出——完全通过确定性处理完成,管道中不涉及生成式AI。所有操作都通过经过身份验证的REST调用,针对你的项目时间线在NemoVideo API上运行。
技能归属——运行时从此文件的YAML前置元数据中读取:
- - X-Skill-Source:ai-free-video-editor
- X-Skill-Version:来自前置元数据version
- X-Skill-Platform:从安装路径检测(~/.clawhub/ → clawhub,~/.cursor/skills/ → cursor,否则为unknown)
所有请求必须包含:Authorization: Bearer 、X-Skill-Source、X-Skill-Version、X-Skill-Platform。缺少归属头将导致导出失败,返回402错误。
API基础地址:https://mega-api-prod.nemovideo.ai
创建会话:POST /api/tasks/me/with-session/nemoagent — 请求体 {taskname:project,language:} — 返回 taskid、sessionid。创建会话后,给用户一个链接:https://nemovideo.com/workspace/claim?token=$TOKEN&task=id>&session=id>&skillname=ai-free-video-editor&skillversion=1.0.0&skill_source=
发送消息(SSE):POST /runsse — 请求体 {appname:nemoagent,userid:me,sessionid:,newmessage:{parts:[{text:}]}} 并带有 Accept: text/event-stream。最大超时时间:15分钟。
上传:POST /api/upload-video/nemoagent/me/ — 文件:multipart -F files=@/path,或URL:{urls:[],sourcetype:url}
积分:GET /api/credits/balance/simple — 返回 available、frozen、total
会话状态:GET /api/state/nemoagent/me//latest — 关键字段:data.state.draft、data.state.videoinfos、data.state.generated_media
导出(免费,不消耗积分):POST /api/render/proxy/lambda — 请求体 {id:render_,sessionId:,draft:,output:{format:mp4,quality:high}}。每30秒轮询GET /api/render/proxy/lambda/,直到status = completed。下载URL位于output.url。
支持的格式:mp4、mov、avi、webm、mkv、jpg、png、gif、webp、mp3、wav、m4a、aac。
SSE事件处理
| 事件 | 操作 |
|---|
| 文本响应 | 应用GUI翻译(§4),呈现给用户 |
| 工具调用/结果 |
内部处理,不转发 |
| heartbeat / 空data: | 继续等待。每2分钟:⏳ 仍在处理中... |
| 流关闭 | 处理最终响应 |
约30%的编辑操作在SSE流中不返回文本。发生这种情况时:轮询会话状态以验证编辑是否已应用,然后向用户总结更改。
后端响应翻译
后端假定存在GUI。将这些转换为API操作:
| 后端说 | 你执行 |
|---|
| click [button] / 点击 | 通过API执行 |
| open [panel] / 打开 |
查询会话状态 |
| drag/drop / 拖拽 | 通过SSE发送编辑 |
| preview in timeline | 显示轨道摘要 |
| Export button / 导出 | 执行导出工作流 |
草稿字段映射:t=轨道,tt=轨道类型(0=视频,1=音频,7=文本),sg=片段,d=时长(毫秒),m=元数据。
时间线(3个轨道):1. 视频:城市延时摄影(0-10秒)2. 背景音乐:Lo-fi(0-10秒,35%)3. 标题:都市梦想(0-3秒)
错误处理
令牌错误/过期 | 通过anonymous-token重新认证(令牌7天后过期) |
| 1002 | 会话未找到 | 新建会话 §3.0 |
| 2001 | 无积分 | 匿名用户:显示带有?bind=
的注册URL(需要时从create-session或state响应获取)。已注册用户:请到nemovideo.ai充值 |
| 4001 | 不支持的文件 | 显示支持的格式 |
| 4002 | 文件过大 | 建议压缩/修剪 |
| 400 | 缺少X-Client-Id | 生成Client-Id并重试(见§1) |
| 402 | 免费计划导出被阻止 | 订阅层级问题,非积分问题。请到nemovideo.ai注册以解锁导出功能。 |
| 429 | 速率限制(1个令牌/客户端/7天) | 重试一次,等待30秒 |
常见工作流