Getting Started
Welcome! I'm here to help you find and add the perfect royalty-free music from Pixabay to your video. Tell me the mood, genre, or vibe you're going for — and let's get your footage sounding as good as it looks.
Try saying:
- - "Find a calm, acoustic background track from Pixabay and add it to my travel video"
- "Search Pixabay for an upbeat electronic song under 3 minutes and apply it to my product demo mp4"
- "I need a dramatic orchestral track from Pixabay for my short film — can you find one and layer it into my mkv file?"
Quick Start Setup
This skill connects to NemoVideo's cloud backend. On first use, set up the connection automatically and let the user know ("Connecting to NemoVideo...").
Token check: Look for NEMO_TOKEN in the environment. If found, skip to session creation. Otherwise:
- - Read
~/.config/nemovideo/client_id or generate a UUID and save it there - POST
https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token with X-Client-Id header - Extract
data.token from the response — this is your NEMO_TOKEN (100 free credits, 7-day expiry)
Session: POST /api/tasks/me/with-session/nemo_agent at the same host with Bearer auth and body {"task_name":"project"}. Keep the returned session_id for all operations.
Let the user know with a brief "Ready!" when setup is complete. Don't expose tokens or raw API output.
Your Shortcut to the Perfect Royalty-Free Soundtrack
Finding music for a video used to mean opening a separate browser tab, scrolling through pages of tracks, downloading files, importing them into your editor, and adjusting levels — all before you'd even confirmed the song was the right fit. The pixabay-music skill collapses that entire process into a single conversation.
Simply describe the feeling you want your video to carry — upbeat and energetic, calm and cinematic, dramatic and tense — and the skill searches Pixabay's library on your behalf, surfacing tracks that genuinely match your creative intent. Once you've found something you like, it gets applied directly to your video file without you needing to juggle downloads or separate tools.
This skill is built for people who care about the final result, not the process of getting there. Whether you're producing a product demo, a travel vlog, a training video, or a social media reel, having the right music underneath your footage transforms how viewers experience your content. Now that transformation takes seconds, not an afternoon.
Routing Your Music Requests
When you describe a mood, genre, tempo, or keyword, your request is matched against Pixabay's royalty-free music catalog and routed to the most relevant tracks available for free commercial use.
| 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 API Reference
The NemoVideo backend handles authenticated calls to Pixabay's music endpoint, retrieving track metadata including BPM, duration, genre tags, and direct audio URLs. All music returned is licensed under Pixabay's Content License, cleared for use in your video projects without attribution.
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 |
Best Practices
Be specific about mood over genre when making your request. Saying 'something that feels like a Sunday morning walk' will often surface better matches than just saying 'acoustic guitar.' The more context you give about your video's subject and emotional arc, the more targeted the results.
Consider the pacing of your video when choosing a track. High-cut, fast-paced edits tend to work better with music that has a clear, consistent beat. Slower, more contemplative footage benefits from ambient or melodic tracks with room to breathe.
For longer videos, check whether the selected Pixabay track loops cleanly or has a natural ending point that aligns with your video's conclusion. Mentioning your video's runtime in your prompt helps the skill prioritize tracks of an appropriate length.
Always preview the result and don't hesitate to ask for a different track — music taste is subjective, and iterating quickly is one of the key advantages this skill offers.
Common Workflows
The most frequent use case for the pixabay-music skill is adding background music to a finished or near-finished video. Users typically describe the emotional tone they want — words like 'hopeful,' 'tense,' 'playful,' or 'corporate' — and let the skill handle the search and application.
Another popular workflow is replacing existing audio. If your raw footage has distracting ambient noise or an unlicensed placeholder track, you can ask the skill to strip the original audio and substitute a Pixabay track that fits the content's pace and length.
Some creators use the skill iteratively — trying two or three different tracks against the same clip to hear which feels right before committing. You can request multiple options, compare descriptions, and then apply your preferred choice. This works especially well for short social media clips where the music choice makes a disproportionately large impact on viewer retention.
FAQ
Are the Pixabay tracks truly free to use? Yes. All music available through Pixabay is released under the Pixabay License, which permits use in personal and commercial projects without attribution requirements. Always verify current license terms on Pixabay's website for your specific use case.
What video formats are supported? The pixabay-music skill works with mp4, mov, avi, webm, and mkv files. Most standard video exports from phones, cameras, and editing software fall within these formats.
Can I control the music volume relative to the original audio? Yes — you can specify in your prompt whether you want the music to be a subtle background layer, a full replacement for the original audio, or a specific volume balance. Just describe what you need in plain language.
What if I don't like the first track suggested? Simply ask for alternatives. You can request a different mood, a different tempo, or even a completely different genre, and the skill will search again until you find something that works.
快速入门
欢迎!我在这里帮助你从 Pixabay 找到并添加完美的免版税音乐到你的视频中。告诉我你想要的情绪、风格或氛围——让我们让你的素材听起来和看起来一样出色。
尝试说:
- - 找一首平静的原声背景音乐从 Pixabay,添加到我的旅行视频中
- 在 Pixabay 搜索一首时长不超过3分钟的欢快电子音乐,应用到我的产品演示 mp4 上
- 我需要一首来自 Pixabay 的戏剧性管弦乐曲用于我的短片——你能找到一首并叠加到我的 mkv 文件中吗?
快速启动设置
此技能连接到 NemoVideo 的云后端。首次使用时,自动建立连接并通知用户(正在连接到 NemoVideo...)。
令牌检查:在环境中查找 NEMO_TOKEN。如果找到,跳转到会话创建。否则:
- - 读取 ~/.config/nemovideo/clientid 或生成一个 UUID 并保存到该位置
- 使用 X-Client-Id 头信息 POST 到 https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token
- 从响应中提取 data.token——这就是你的 NEMOTOKEN(100 个免费积分,7 天有效期)
会话:在相同主机上使用 Bearer 认证 POST 到 /api/tasks/me/with-session/nemoagent,请求体为 {taskname:project}。保留返回的 session_id 用于所有操作。
设置完成后,用简短的准备就绪!通知用户。不要暴露令牌或原始 API 输出。
通往完美免版税配乐的捷径
为视频寻找音乐曾经意味着打开一个单独的浏览器标签页,翻看一页页的曲目,下载文件,导入到编辑器,调整音量——所有这些都发生在你确认这首歌是否合适之前。pixabay-music 技能将整个过程压缩为一次对话。
只需描述你希望视频传达的感觉——欢快充满活力、平静如电影、戏剧性紧张——该技能就会代表你搜索 Pixabay 的曲库,呈现真正符合你创作意图的曲目。一旦找到喜欢的,它会直接应用到你的视频文件中,无需你处理下载或使用单独的工具。
这项技能是为那些关心最终结果而非实现过程的人打造的。无论你是在制作产品演示、旅行 vlog、培训视频还是社交媒体短片,在素材下方配上合适的音乐会改变观众体验你内容的方式。现在,这种转变只需几秒钟,而不是一个下午。
路由你的音乐请求
当你描述情绪、风格、节奏或关键词时,你的请求会与 Pixabay 的免版税音乐目录匹配,并路由到最相关的可免费商业使用的曲目。
| 用户说... | 操作 | 跳过 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 API 参考
NemoVideo 后端处理对 Pixabay 音乐端点的认证调用,检索曲目元数据,包括 BPM、时长、风格标签和直接音频 URL。所有返回的音乐均根据 Pixabay 内容许可授权,可在你的视频项目中使用而无需署名。
技能归属——运行时从此文件的 YAML 前置元数据读取:
- - X-Skill-Source:pixabay-music
- 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=pixabay-music&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秒)
错误处理
令牌错误/过期 | 通过匿名令牌重新认证(令牌7天后过期) |
| 1002 | 会话未找到 | 新建会话 §3.0 |
| 2001 | 无积分 | 匿名用户:显示注册 URL,附带 ?bind=
(需要时从创建会话或状态响应获取 )。已注册用户:在 nemovideo.ai 充值 |
| 4001 | 不支持的文件 | 显示支持的格式 |
| 4002 | 文件过大 | 建议压缩/裁剪 |
| 400 | 缺少 X-Client-Id | 生成客户端 ID 并重试(参见 §1) |
| 402 | 免费计划导出被阻止 | 订阅层级问题,