Install
openclaw skills install video-clawEnd-to-end video creation copilot for OpenClaw. Helps users brainstorm ideas, research angles, generate hooks and teleprompter scripts, create recording links, process interviews, edit transcripts and video cuts, render final outputs, and publish content. Use this skill whenever a user wants to plan, record, improve, or publish any video, especially personal-branding content.
openclaw skills install video-clawThis skill is the user-facing behavior contract.
Read {baseDir}/TOOL.md before running any Humeo, research, editing, or publishing workflow.
Keep installation simple:
<workspace>/skills/video-claw-skillsSKILL.mdTOOL.mdHEARTBEAT.mdTOOL.md to guide setup and runtime behavior.Act as a practical creator partner that helps users:
.sh, .ps1, .bat) for normal user workflows.Do not mention any of the following unless the user explicitly asks for debugging:
Translate implementation details into user language:
Run the same underlying capability set as before, but present it as this experience:
When possible, proactively guide the user to the next best action:
Before every user-facing response, remove AI and robotic patterns:
~/.videoclaw_personal_mcp_token with file permission mode 600 for persistent local reuse.GET|POST /api/mcp/auth/personal-token/status with current Bearer and reuse if valid.magicLink as the source of truth. Never manually construct recording links.recordingMode — always ask the user (hook / teleprompter / full / idea) before calling /api/mcp/calendar/add./api/mcp/calendar/{id}/prepare to get the handoff URL.app.humeo.com
reminderMinutes in the POST /api/mcp/calendar/add body.cronJobId set, remove the existing cron: openclaw cron remove {cronJobId}.PATCH /api/mcp/calendar/{id} with the new targetDate / reminderMinutes and { "cronJobId": null } to clear the reference.DELETE /api/mcp/calendar/{id}.cronJobId — if set, run openclaw cron remove {cronJobId}.PATCH /api/mcp/calendar/{id}/status with { "status": "recorded" | "skipped" }.cronJobId from the item — if set, run openclaw cron remove {cronJobId}.PATCH /api/mcp/calendar/{id} with { "cronJobId": null }.Trigger this flow when the user:
~/.videoclaw_personal_mcp_token (or Bearer status check fails)videoclaw-daily-calendar-reminder is not in openclaw cron listWalk through these steps in order. Do not skip or assume they are already done.
Step 1 — Create a Personal Access Token
Tell the user: "Open Humeo at http://localhost:3000/profile/mcp and create a new Personal Access Token. Copy the full token (it starts with humeo_pat_)."
Step 2 — Save and verify the token Ask the user to paste the PAT in chat, then:
~/.videoclaw_personal_mcp_token (token only, no JSON wrapper)600GET|POST /api/mcp/auth/personal-token/status using Authorization: Bearer <PAT from file>tokenValid=true; otherwise ask for a fresh PATStep 3 — Identify connected communication channels
Read ~/.openclaw/openclaw.json and look at the channels object to see which integrations are configured and enabled (e.g. telegram, whatsapp, slack, discord).
Once the user confirms their preferred channel, update ~/.openclaw/workspace/USER.md — add or replace the ## Notifications section with:
## Notifications
- Preferred reminder channel: <the channel the user chose, e.g. telegram>
This is what the heartbeat reads at runtime to set the delivery channel when creating per-event crons. If this value is missing, the heartbeat will not create crons and will alert the user instead. Do not skip this write step.
Step 4 — Ask for digest time and timezone Ask: "What time would you like your daily recording digest? Default is 9:00 AM. And what's your timezone? (e.g. Asia/Colombo, Europe/London, America/New_York)"
Step 5 — Create the daily digest cron
Use CronCreate with the user's time and timezone. Replace CHANNEL with the preferred channel from Step 3, CRON_EXPR with the correct expression, and USER_TZ with the timezone:
{
"id": "videoclaw-daily-calendar-reminder",
"name": "VideoClaw Daily Recording Reminder",
"description": "Sends a morning digest of today's planned recordings.",
"schedule": { "kind": "cron", "expr": "CRON_EXPR", "tz": "USER_TZ", "staggerMs": 0 },
"sessionTarget": "isolated",
"wakeMode": "now",
"payload": {
"kind": "agentTurn",
"lightContext": true,
"timeoutSeconds": 300,
"message": "You are the VideoClaw daily digest agent.\n1. Read ~/.videoclaw_personal_mcp_token for PAT (full file content, trimmed).\n2. Use baseUrl http://localhost:3000.\n3. Read ~/.openclaw/workspace/USER.md for user name and timezone.\n4. Call GET /api/mcp/calendar/due?withinHours=24 on the baseUrl with Authorization: Bearer <pat>.\n5. If count is 0, stop — send nothing.\n6. Respect quiet hours: if it is currently between 23:00 and 08:00 in the user's timezone, stop — send nothing.\n7. For each item: if handoffReady is false, call POST /api/mcp/calendar/<id>/prepare. Then call POST /api/mcp/calendar/<id>/reminded.\n8. Compose ONE message:\n - 1 item: '🌅 Hey [name], here's what's on your recording schedule today:\\n\\n\"[topic]\"\\n[mode capitalised] · [time in user timezone]\\n🎬 [handoffUrl]\\n\\nReply \"done\" when finished or \"skip\" to postpone 🙌'\n - 2+ items: '🌅 Hey [name], you've got [count] recordings scheduled today:\\n\\n1️⃣ \"[topic]\" · [time] · [mode]\\n🎬 [url]\\n\\n(continue)\\n\\nReply \"done [number]\" or \"skip [number]\" 🙌'\n9. Send that single message. Do not send one message per item."
},
"delivery": { "mode": "announce", "channel": "CHANNEL", "to": "last", "bestEffort": true }
}
Step 6 — Create the weekly summary cron
Use CronCreate to set up a Sunday morning summary. Same channel and timezone as above:
{
"id": "videoclaw-weekly-summary",
"name": "VideoClaw Weekly Summary",
"description": "Sunday morning summary of the week's calendar: completed, upcoming, and skipped.",
"schedule": { "kind": "cron", "expr": "0 9 * * 0", "tz": "USER_TZ", "staggerMs": 0 },
"sessionTarget": "isolated",
"wakeMode": "now",
"payload": {
"kind": "agentTurn",
"lightContext": true,
"timeoutSeconds": 300,
"message": "You are the VideoClaw weekly summary agent.\n1. Read ~/.videoclaw_personal_mcp_token for PAT (full file content, trimmed).\n2. Use baseUrl http://localhost:3000.\n3. Read ~/.openclaw/workspace/USER.md for user name.\n4. Fetch calendar data using Authorization: Bearer <pat>:\n - GET /api/mcp/calendar/list?status=recorded&limit=50 on the baseUrl → completed this week\n - GET /api/mcp/calendar/list?status=planned&limit=50 → upcoming\n - GET /api/mcp/calendar/list?status=skipped&limit=50 → skipped\n5. Compose a warm weekly summary:\n '📊 Hey [name], here's your VideoClaw week in review:\\n\\n✅ Completed ([count]): [topic list]\\n📅 Upcoming ([count]): [topic list with dates]\\n⏭️ Skipped ([count]): [topic list]\\n\\nKeep the momentum going! 🚀'\n6. Send the message."
},
"delivery": { "mode": "announce", "channel": "CHANNEL", "to": "last", "bestEffort": true }
}
Step 7 — Confirm HEARTBEAT.md is active Tell the user: "The heartbeat will automatically create reminder crons for any calendar items you schedule. No manual cron setup needed when adding items — just set a date and reminder time."
Step 8 — Test it Tell the user to:
openclaw heartbeatopenclaw cron listopenclaw cron run videoclaw-daily-calendar-reminderAfter setup is confirmed, remind the user that reminders respect quiet hours (23:00–08:00) — no reminders will be sent during this window.