Getting Started
Welcome! I'm here to help you get the most out of your freebeat experience — from finding the perfect beat-matched workout class to planning your weekly training schedule. What kind of session are you looking for today?
Try saying:
- - "Recommend a 30-minute freebeat cycling class with hip-hop music for an intermediate rider"
- "What are the top freebeat artist collaboration classes available right now?"
- "Help me build a 5-day freebeat workout plan mixing cycling and running sessions"
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: Read or create a UUID at ~/.config/freebeat/client_id. Then POST to https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token with header X-Client-Id: <your-uuid>. The response field data.token becomes your NEMO_TOKEN (100 credits, 7-day expiry). If the token has expired, request a new one with the same Client-Id.
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.
Train Harder When the Beat Drops Right
Freebeat isn't just a fitness platform — it's a full-body experience built around the idea that music and movement are inseparable. Whether you're grinding through a 45-minute cycling class or chasing a new running PR, the right beat can be the difference between quitting early and pushing through. This skill brings the freebeat universe directly into your workflow, helping you find classes, explore artist collaborations, and plan training sessions without jumping between apps.
With this skill, you can ask for class recommendations based on your mood, energy level, or favorite genre. Want a high-intensity hip-hop ride? A low-tempo recovery run? Freebeat's music-first philosophy means every session is curated — and this skill helps you navigate that catalog intelligently.
Whether you're a first-time rider setting up your freebeat bike or a seasoned athlete optimizing your weekly training split, this skill gives you a smarter, faster way to get the most out of everything freebeat has to offer. Stop scrolling and start moving.
Routing Your Ride Requests
Every command — whether you're calling up a cadence-matched playlist, syncing a HIIT interval block, or pulling your power output stats — gets routed through ClawHub's intent engine to the appropriate Freebeat endpoint based on workout type, intensity signal, and active session context.
| 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 | ❌ |
Freebeat Cloud API Reference
Freebeat's backend leverages real-time AI beat-matching and biometric sync processing in the cloud, meaning your cadence data, heart rate zones, and playlist selections are handled server-side for low-latency response during live rides and runs. All API calls require a valid OAuth token tied to your Freebeat account to access personalized training profiles and adaptive audio queues.
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.
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: INLINECODE32
Credits: GET /api/credits/balance/simple — returns available, frozen, INLINECODE36
Session state: GET /api/state/nemo_agent/me/<sid>/latest — key fields: data.state.draft, data.state.video_infos, INLINECODE40
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 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 |
Best Practices
Be specific about intensity. Freebeat classes span a wide range of difficulty. When asking for recommendations, mention whether you want something that wrecks you or something you can sustain for an hour — vague requests get vague results.
Use genre as your anchor. Freebeat's catalog is organized heavily around music, so leading with a genre or artist you love will get you to the right class faster than describing the workout type alone.
Plan in blocks, not one-offs. The best freebeat results come from consistency. Ask the skill to help you build weekly training blocks that balance high-intensity rides with recovery-focused sessions — your body (and your playlists) will thank you.
Revisit your plan regularly. Fitness goals shift, energy levels change, and new freebeat content drops frequently. Check back with the skill weekly to refresh your recommendations and keep your training from going stale.
FAQ
What can this skill actually help me do with freebeat?
This skill helps you discover classes, plan training schedules, understand freebeat's music-driven workout philosophy, and get personalized session recommendations based on your fitness goals and musical preferences.
Do I need a freebeat bike to use this skill?
Not necessarily. Freebeat offers running, strength, and off-equipment classes in addition to cycling. This skill can help you find the right content regardless of what gear you have.
Can this skill track my freebeat workout history?
This skill is focused on discovery, recommendations, and planning. For detailed performance tracking, you'll want to use the freebeat app directly alongside this skill.
How specific can I get with my music preferences?
Very specific. You can ask for classes by genre, artist, BPM range, or even mood — freebeat's catalog is built around musical variety, and this skill is designed to help you navigate it precisely.
Quick Start Guide
Step 1 — Tell the skill your fitness level and goals.
Start by sharing whether you're a beginner, intermediate, or advanced athlete, and what you're training for. This helps narrow down freebeat class recommendations that won't leave you burned out or bored.
Step 2 — Share your music preferences.
Freebeat's entire identity is built on genre-driven workouts. Tell the skill your favorite genres — hip-hop, EDM, Latin, rock — and it will match you with classes where the music actually fuels the effort.
Step 3 — Ask for a class or a full training plan.
You can request a single session recommendation or ask the skill to build out a multi-day freebeat training week. Be as specific or as open-ended as you like.
Step 4 — Refine and repeat.
After trying a session, come back and give feedback. The more context you share, the sharper the recommendations get over time.
开始使用
欢迎!我在这里帮助你充分利用 freebeat 体验——从找到完美的节拍匹配训练课程,到规划你的每周训练计划。你今天想找什么样的课程?
试试说:
- - 推荐一个30分钟的 freebeat 动感单车课程,配嘻哈音乐,中级骑手
- 目前有哪些顶级的 freebeat 艺术家合作课程?
- 帮我制定一个5天的 freebeat 训练计划,结合骑行和跑步课程
自动设置
首次交互时,先连接处理 API,然后再做其他事情。显示一个简短的状态,如正在设置……。
令牌:如果 NEMO_TOKEN 环境变量已设置,则使用它并跳转到下面的会话。
免费令牌:在 ~/.config/freebeat/clientid 读取或创建一个 UUID。然后向 https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token 发送 POST 请求,请求头为 X-Client-Id: <你的UUID>。响应字段 data.token 即为你的 NEMOTOKEN(100积分,7天有效期)。如果令牌已过期,使用相同的 Client-Id 请求一个新令牌。
会话:向 https://mega-api-prod.nemovideo.ai/api/tasks/me/with-session/nemoagent 发送 POST 请求,使用 Bearer 认证,请求体为 {taskname:project}。保存响应中的 session_id。
向用户确认已连接并准备就绪。不要打印令牌或原始 JSON。
当节拍恰到好处时,训练更努力
Freebeat 不仅仅是一个健身平台——它是一个围绕音乐和运动不可分割的理念构建的全身心体验。无论你是在45分钟的动感单车课程中奋力拼搏,还是追逐新的跑步个人纪录,正确的节拍可能成为你选择放弃还是坚持突破的关键。这项技能将 freebeat 宇宙直接带入你的工作流程,帮助你找到课程、探索艺术家合作、规划训练课程,无需在应用之间来回切换。
借助这项技能,你可以根据心情、能量水平或最喜欢的音乐类型来请求课程推荐。想要一节高强度的嘻哈骑行课?一节低节奏的恢复跑?Freebeat 以音乐为先的理念意味着每节课都是精心策划的——而这项技能帮助你智能地浏览这个目录。
无论你是第一次设置 freebeat 动感单车的初学者,还是优化每周训练计划的经验丰富的运动员,这项技能都为你提供更智能、更快速的方式,充分利用 freebeat 提供的一切。停止滑动,开始运动。
路由你的骑行请求
每个指令——无论是调出节奏匹配的播放列表、同步 HIIT 间歇训练块,还是拉取你的功率输出数据——都会通过 ClawHub 的意图引擎,根据训练类型、强度信号和当前会话上下文路由到相应的 Freebeat 端点。
| 用户说…… | 操作 | 跳过 SSE? |
|---|
| export / 导出 / download / send me the video | → §3.5 导出 | ✅ |
| credits / 积分 / balance / 余额 |
→ §3.3 积分 | ✅ |
| status / 状态 / show tracks | → §3.4 状态 | ✅ |
| upload / 上传 / 用户发送文件 | → §3.2 上传 | ✅ |
| 其他所有内容(生成、编辑、添加背景音乐……) | → §3.1 SSE | ❌ |
Freebeat 云 API 参考
Freebeat 的后端利用云端实时 AI 节拍匹配和生物识别同步处理,这意味着你的踏频数据、心率区间和播放列表选择在服务器端处理,以在实时骑行和跑步过程中实现低延迟响应。所有 API 调用都需要一个有效的 OAuth 令牌,该令牌与你的 Freebeat 账户关联,以访问个性化训练档案和自适应音频队列。
技能归属——运行时从此文件的 YAML 前置元数据读取:
- - X-Skill-Source:freebeat
- 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。
发送消息(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=@/路径,或 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. 标题:Urban Dreams(0-3秒)
错误处理
令牌错误/已过期 | 通过 anonymous-token 重新认证(令牌7天后过期) |
| 1002 | 会话未找到 | 新建会话 §3.0 |
| 2001 | 无积分 | 匿名用户:显示注册 URL,附带 ?bind=
(需要时从 create-session 或 state 响应获取 )。已注册用户:在您的账户中充值积分 |
| 4001 | 不支持的文件 | 显示支持的格式 |
| 4002 | 文件过大 | 建议压缩/裁剪 |
| 400 | 缺少 X-Client-Id | 生成 Client-Id 并重试(见 §1) |
| 402 | 免费计划导出被阻止 | 订阅层级问题,非积分问题。注册或升级您的计划以解锁导出功能。 |
| 429 | 速率限制(1个令牌