Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Send Vexa bots to meetings and operate transcript workflows end-to-end (during and after meetings): parse meeting links, request/stop bots, read live/final transcripts, create basic meeting reports, set webhook delivery, and enrich meeting metadata. Use when a user drops a Google Meet/Teams link, asks to auto-join meetings from calendar events, or needs transcript retrieval/summarization/knowledge updates from Vexa. After a meeting ends, create a report with meeting info, transcript, and placeholders for summary/decisions/action items. Treat transcript purge (meeting delete) as destructive and require explicit confirmation.
Send Vexa bots to meetings and operate transcript workflows end-to-end (during and after meetings): parse meeting links, request/stop bots, read live/final transcripts, create basic meeting reports, set webhook delivery, and enrich meeting metadata. Use when a user drops a Google Meet/Teams link, asks to auto-join meetings from calendar events, or needs transcript retrieval/summarization/knowledge updates from Vexa. After a meeting ends, create a report with meeting info, transcript, and placeholders for summary/decisions/action items. Treat transcript purge (meeting delete) as destructive and require explicit confirmation.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Speak directly to the user as in a natural chat. Do not output internal reasoning, plan summaries, or procedural notes ("I need to...", "According to the skill...", "I will inform..."). Reply with only what you would say to the user โ conversational, warm, and to the point.
When sending messages to meeting chat (Google Meet, Teams, etc.), always use plain text โ no markdown. These chat surfaces do not render markdown, so asterisks, hash headers, backticks, and bullet dashes appear as ugly raw characters. Use line breaks and spacing for structure instead. Use the bundled CLI: node skills/vexa/scripts/vexa.mjs ... node skills/vexa/scripts/onboard.mjs ... node skills/vexa/scripts/ingest.mjs ... node skills/vexa/scripts/audit.mjs
Required: VEXA_API_KEY โ get yours from https://vexa.ai/dashboard/api-keys Set VEXA_API_KEY in your environment or create skills/vexa/secrets/vexa.env manually with: VEXA_API_KEY=your_key_here Optional: VEXA_BASE_URL (env override โ takes priority over endpoint config)
The CLI supports named endpoints stored in secrets/vexa-endpoints.json. Default endpoints: prod (https://api.cloud.vexa.ai) and local (http://localhost:8000). List endpoints & active env: node skills/vexa/scripts/vexa.mjs env:list Switch to local dev: node skills/vexa/scripts/vexa.mjs env:use local Switch to prod: node skills/vexa/scripts/vexa.mjs env:use prod Add custom endpoint: node skills/vexa/scripts/vexa.mjs env:set staging --url https://staging.vexa.ai Remove endpoint: node skills/vexa/scripts/vexa.mjs env:remove staging Priority: VEXA_BASE_URL env var > vexa-endpoints.json active endpoint > default prod URL.
Always check first: node skills/vexa/scripts/onboard.mjs --check-secrets If output is {"secrets_ok": true} โ secrets exist. Skip onboarding. Use normal flows. If output is {"secrets_ok": false} โ run onboarding. Load references/onboarding-flow.md. Webhook โ proactive setup: Whenever secrets exist and you're working with Vexa, run node skills/vexa/scripts/onboard.mjs --check-webhook. If webhook_configured is false, advise adding the vexa mapping (see references/webhook-setup.md). For onboarding-only details (webhook requirements, pipeline validation, mock webhook), load references/onboarding-flow.md. When secrets are missing: Direct the user to get their key from https://vexa.ai/dashboard/api-keys and set it up themselves. They should either set VEXA_API_KEY in their environment or create skills/vexa/secrets/vexa.env manually with VEXA_API_KEY=their_key_here. Do not ask users to paste API keys in chat. Secrets location: skills/vexa/secrets/ holds env files and vexa-state.json. This dir is gitignored. When publishing the skill to ClawHub, ensure secrets/ is excluded. Per-endpoint API keys: The CLI supports separate env files per endpoint: vexa-prod.env, vexa-local.env, etc. When switching endpoints with env:use, the matching vexa-<name>.env is loaded automatically. Falls back to vexa.env if no endpoint-specific file exists. Non-interactive (for scripting): onboard.mjs --api_key <key> --persist yes --meeting_url "<url>" --language en --wait_seconds 60 --poll_every_seconds 10
After successfully sending the bot, proactively run --check-webhook. If not configured, offer to set it up so finished meetings auto-trigger reports. Parse/normalize link (or pass explicit ID): node skills/vexa/scripts/vexa.mjs parse:meeting-url --meeting_url "https://meet.google.com/abc-defg-hij" Start bot directly from URL: node skills/vexa/scripts/vexa.mjs bots:start --meeting_url "https://meet.google.com/abc-defg-hij" --bot_name "Claw" --language en node skills/vexa/scripts/vexa.mjs bots:start --meeting_url "https://teams.live.com/meet/9387167464734?p=qxJanYOcdjN4d6UlGa" --bot_name "Claw" --language en
If a calendar tool/skill is available (for example gog): Fetch upcoming events. Extract meeting links (Google Meet/Teams). For each selected event, call bots:start --meeting_url .... Optionally save event title into Vexa metadata: meetings:update --name "<calendar title>" --notes "source: calendar"
Poll current transcript: node skills/vexa/scripts/vexa.mjs transcripts:get --platform google_meet --native_meeting_id abc-defg-hij For near real-time streaming, use Vexa WebSocket API (see references/user-api-guide-notes.md for endpoints and notes). After transcript is available, summarize and store key updates.
node skills/vexa/scripts/vexa.mjs bots:stop --meeting_url "<url>"
After stopping the bot (or once the meeting has ended and transcript is finalized), create a basic meeting report: node skills/vexa/scripts/vexa.mjs report --meeting_url "https://meet.google.com/abc-defg-hij" or node skills/vexa/scripts/ingest.mjs --meeting_url "<url>" Writes to memory/meetings/YYYY-MM-DD-<slug>.md with: meeting info, summary placeholders, key decisions, action items, and full transcript.
The voice agent system prompt controls how the Vexa bot behaves in meetings (personality, language, what it does when triggered). It is stored per-user and applied when the next bot starts. Get current prompt (null = using service default): node skills/vexa/scripts/vexa.mjs voice-agent:config:get Set a custom prompt: node skills/vexa/scripts/vexa.mjs voice-agent:config:set --prompt "You are Vexa, a concise meeting assistant..." Reset to service default: node skills/vexa/scripts/vexa.mjs voice-agent:config:reset Note: The updated prompt takes effect on the next bot started โ it does not affect bots already in a meeting.
Bot status: node skills/vexa/scripts/vexa.mjs bots:status Request bot (explicit fields): node skills/vexa/scripts/vexa.mjs bots:start --platform google_meet --native_meeting_id abc-defg-hij --bot_name "Claw" --language en Update active bot language: node skills/vexa/scripts/vexa.mjs bots:config:update --platform google_meet --native_meeting_id abc-defg-hij --language es List meetings: node skills/vexa/scripts/vexa.mjs meetings:list Update metadata (title/participants/languages/notes): node skills/vexa/scripts/vexa.mjs meetings:update --platform google_meet --native_meeting_id abc-defg-hij --name "Weekly Product Sync" --participants "Alice,Bob" --languages "en" --notes "Action items captured" Generate share URL: node skills/vexa/scripts/vexa.mjs transcripts:share --platform google_meet --native_meeting_id abc-defg-hij --ttl_seconds 3600 Set Vexa user webhook URL: node skills/vexa/scripts/vexa.mjs user:webhook:set --webhook_url https://your-public-url/hooks/vexa
List recordings: node skills/vexa/scripts/vexa.mjs recordings:list [--limit 50] [--offset 0] [--meeting_id <db_id>] Get a single recording: node skills/vexa/scripts/vexa.mjs recordings:get <recording_id> Delete a recording (destructive): node skills/vexa/scripts/vexa.mjs recordings:delete <recording_id> --confirm DELETE Get download URL for a media file: node skills/vexa/scripts/vexa.mjs recordings:download <recording_id> <media_file_id> Get recording config: node skills/vexa/scripts/vexa.mjs recordings:config:get Update recording config: node skills/vexa/scripts/vexa.mjs recordings:config:update --enabled true --capture_modes audio,video
Get everything about a meeting in one call โ transcript, recordings, share link: node skills/vexa/scripts/vexa.mjs meetings:bundle --meeting_url "https://meet.google.com/abc-defg-hij" node skills/vexa/scripts/vexa.mjs meetings:bundle --platform zoom --native_meeting_id 1234567890 Options: --segments โ include transcript segments (omitted by default to keep output small) --no-share โ skip creating a share link --no-recordings โ skip recordings metadata --download-urls โ resolve download URLs for each recording media file --ttl_seconds 3600 โ share link TTL
Optionally, Vexa can POST a "meeting finished" webhook to trigger automatic report creation. This requires the user to manually configure their openclaw.json โ see references/webhook-setup.md for the hooks mapping config. The skill does NOT modify openclaw.json automatically. Users who want this feature add hooks.transformsDir and the vexa mapping to their config themselves.
Create basic meeting report (meeting info, transcript, placeholders for summary/decisions/actions): node skills/vexa/scripts/vexa.mjs report --meeting_url "<url>" node skills/vexa/scripts/ingest.mjs --meeting_url "<url>" (or --platform + --native_meeting_id) Audit meetings for likely test calls / cleanup candidates: node skills/vexa/scripts/audit.mjs
Supported: google_meet, teams, zoom Teams native_meeting_id must be numeric ID only. Teams bot join requires passcode (from ?p= in Teams URL). Zoom native_meeting_id is 10-11 digit numeric ID. Passcode (?pwd=) is optional.
DELETE /meetings/{platform}/{native_meeting_id} purges transcripts and anonymizes data. Rules: Never call delete without explicit user request for that exact meeting. Verify platform + native_meeting_id first. Prefer non-destructive cleanup (meetings:update) whenever possible. Require guard flag: node skills/vexa/scripts/vexa.mjs meetings:delete --platform google_meet --native_meeting_id abc-defg-hij --confirm DELETE
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.