Turn your notes, slides, and raw recordings into structured, engaging lecture videos ready for students. This lecture-video-maker skill helps educators, trainers, and course creators script, organize, and produce professional video lessons — complete with chapter breakdowns, on-screen text suggestions, pacing guidance, and narration scripts. Built for anyone who teaches online and wants their content to actually land.
Send me your lecture topic, slides, or rough notes and I'll turn them into a structured video script with scene breakdowns. No material yet? Just describe your subject and target audience and we'll build from scratch.
Try saying:
Before handling any user request, establish a connection to the backend API. 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:
https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token with the X-Client-Id headertoken with 100 free credits valid for 7 days — use it as NEMO_TOKENThen create a session by POSTing to https://mega-api-prod.nemovideo.ai/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.
Creating a lecture video sounds simple until you're staring at a blank screen with a pile of slides, half-finished notes, and no idea where to start. This skill bridges the gap between your expertise and a finished, watchable video lesson — without requiring a film degree or a production team.
The lecture-video-maker skill helps you structure your content into a clear video flow: opening hook, core teaching segments, visual cue suggestions, recap moments, and a strong close. Whether you're building a full online course, recording a one-off explainer, or converting a live lecture into an async video, this skill adapts to your format and your audience.
You bring the knowledge. This skill handles the architecture — turning your raw material into a production-ready script, a shot-by-shot outline, or a storyboard you can follow in front of the camera. The result is a lecture video that feels intentional, not improvised.
Each request — whether you're generating slide narrations, syncing voiceovers, or rendering chapter segments — is parsed by intent and dispatched to the appropriate lecture video pipeline.
| 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 | ❌ |
Lecture Video Maker's backend processes your educational content through a distributed rendering cluster that handles slide sequencing, text-to-speech synthesis, and timeline assembly in parallel. Heavy exports like full-course compilations or 4K caption overlays are queued asynchronously, so response times vary based on render complexity.
Skill attribution — read from this file's YAML frontmatter at runtime:
X-Skill-Source: lecture-video-makerX-Skill-Version: from frontmatter versionX-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.
| 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.
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.
Timeline (3 tracks): 1. Video: city timelapse (0-10s) 2. BGM: Lo-fi (0-10s, 35%) 3. Title: "Urban Dreams" (0-3s)
| 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 |
Most users come to this skill with one of three starting points: raw slides, an existing recording, or just a topic idea. Each has its own workflow.
Slides to Script: Paste your slide titles or bullet points and the skill will expand them into a narrated script, suggest what to show on screen at each moment, and flag where you might need a visual example or demo clip.
Recording to Edited Outline: If you've already recorded a lecture but it feels too long or disorganized, describe the content and the skill will help you plan cuts, restructure segments, and write tighter transitions between ideas.
Idea to Full Lesson: Starting from scratch? Describe your subject, your learners, and the outcome you want. The skill will generate a complete lesson structure — hook, teaching segments, check-in questions, and a closing summary — that you can record straight away.
The best lecture videos are built around one clear learning outcome per video. Before generating anything, define what a student should be able to do or understand by the end. This single constraint shapes everything — length, depth, pacing, and which examples to include.
Keep individual lecture videos under 15 minutes wherever possible. Research on online learning consistently shows drop-off spikes after the 12-minute mark. If your content is longer, use this skill to break it into a short series with logical episode breaks rather than one marathon recording.
Always script your opening 60 seconds in full. The first minute determines whether a student keeps watching or clicks away. Use the skill to craft a specific, curiosity-driven hook that names the problem you're solving — not just the topic you're covering.
Finally, end every lecture video with a concrete next step: a question to reflect on, a task to complete, or a preview of the next lesson. This skill can generate these closing segments automatically based on the content you've covered.