[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FA4P2B43Q53XFTDR4BXA88":3,"skill-same:01M6FA4P2B43Q53XFTDR4BXA88":80},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":62,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6FA4P2B43Q53XFTDR4BXA88","elevenlabs-security-basics",null,"Apply ElevenLabs security best practices for API keys, webhook HMAC validation,\nand voice data protection.\nUse when securing API keys, validating webhook signatures,\nor auditing ElevenLabs security configuration.\nTrigger: \"elevenlabs security\", \"elevenlabs secrets\",\n\"secure elevenlabs\", \"elevenlabs API key security\",\n\"elevenlabs webhook signature\", \"elevenlabs HMAC\".","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Felevenlabs-security-basics\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"elevenlabs security basics","elevenlabs","basics","security","write","trigger","io","webhook","signatures","webhooks","use","read","secrets","api","saas","data","security best practices","best practices","code","secure","2026-11-10 10:12:30",false,"---\nname: elevenlabs-security-basics\ndescription: |\n  Apply ElevenLabs security best practices for API keys, webhook HMAC validation,\n  and voice data protection.\n  Use when securing API keys, validating webhook signatures,\n  or auditing ElevenLabs security configuration.\n  Trigger: \"elevenlabs security\", \"elevenlabs secrets\",\n  \"secure elevenlabs\", \"elevenlabs API key security\",\n  \"elevenlabs webhook signature\", \"elevenlabs HMAC\".\nallowed-tools: Read, Write, Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, voice, ai, elevenlabs, security, webhooks]\ncompatible-with: claude-code\n---\n\n# ElevenLabs Security Basics\n\n## Overview\n\nSecurity best practices for ElevenLabs API key management, webhook HMAC signature verification, and protecting cloned voice data. ElevenLabs uses a single API key (`xi-api-key`) and HMAC webhook authentication.\n\n## Prerequisites\n\n- ElevenLabs SDK installed\n- Understanding of environment variables\n- Access to ElevenLabs dashboard (Settings > API Keys)\n\n## Instructions\n\n### Step 1: API Key Management\n\n```bash\n# .env (NEVER commit to git)\nELEVENLABS_API_KEY=sk_your_key_here\n\n# .gitignore — MUST include these\n.env\n.env.local\n.env.*.local\n```\n\n**Git pre-commit hook** to prevent accidental key commits:\n```bash\n#!\u002Fbin\u002Fbash\n# .git\u002Fhooks\u002Fpre-commit\nif git diff --cached | grep -qE 'sk_[a-zA-Z0-9]{20,}'; then\n  echo \"ERROR: ElevenLabs API key detected in staged changes!\"\n  echo \"Remove the key and use environment variables instead.\"\n  exit 1\nfi\n```\n\n### Step 2: Environment-Specific Keys\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Fconfig.ts\ninterface ElevenLabsSecurityConfig {\n  apiKey: string;\n  webhookSecret: string;\n  environment: \"development\" | \"staging\" | \"production\";\n}\n\nexport function getSecurityConfig(): ElevenLabsSecurityConfig {\n  const env = (process.env.NODE_ENV || \"development\") as ElevenLabsSecurityConfig[\"environment\"];\n\n  const apiKey = process.env.ELEVENLABS_API_KEY;\n  if (!apiKey) {\n    throw new Error(\"ELEVENLABS_API_KEY is required\");\n  }\n\n  \u002F\u002F Warn if production key is used in dev\n  if (env === \"development\" && apiKey.startsWith(\"sk_live_\")) {\n    console.warn(\"WARNING: Using production API key in development environment\");\n  }\n\n  return {\n    apiKey,\n    webhookSecret: process.env.ELEVENLABS_WEBHOOK_SECRET || \"\",\n    environment: env,\n  };\n}\n```\n\n### Step 3: Webhook HMAC Signature Verification\n\nElevenLabs webhooks include an `ElevenLabs-Signature` header for HMAC verification:\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Fwebhook-verify.ts\nimport crypto from \"crypto\";\n\n\u002F**\n * Verify ElevenLabs webhook signature using HMAC-SHA256.\n * The shared secret is generated when you create a webhook in the dashboard.\n *\u002F\nexport function verifyWebhookSignature(\n  payload: string | Buffer,\n  signatureHeader: string,\n  secret: string\n): boolean {\n  if (!signatureHeader || !secret) return false;\n\n  \u002F\u002F ElevenLabs signature format: t=\u003Ctimestamp>,v1=\u003Csignature>\n  const parts = signatureHeader.split(\",\");\n  const timestamp = parts.find(p => p.startsWith(\"t=\"))?.slice(2);\n  const signature = parts.find(p => p.startsWith(\"v1=\"))?.slice(3);\n\n  if (!timestamp || !signature) return false;\n\n  \u002F\u002F Reject timestamps older than 5 minutes (replay protection)\n  const age = Math.floor(Date.now() \u002F 1000) - parseInt(timestamp);\n  if (age > 300) {\n    console.error(\"Webhook timestamp too old:\", age, \"seconds\");\n    return false;\n  }\n\n  \u002F\u002F Compute expected HMAC\n  const signedPayload = `${timestamp}.${payload.toString()}`;\n  const expected = crypto\n    .createHmac(\"sha256\", secret)\n    .update(signedPayload)\n    .digest(\"hex\");\n\n  \u002F\u002F Timing-safe comparison to prevent timing attacks\n  try {\n    return crypto.timingSafeEqual(\n      Buffer.from(signature, \"hex\"),\n      Buffer.from(expected, \"hex\")\n    );\n  } catch {\n    return false;\n  }\n}\n```\n\n### Step 4: Express Webhook Endpoint with Verification\n\n```typescript\nimport express from \"express\";\nimport { verifyWebhookSignature } from \".\u002Fwebhook-verify\";\n\nconst app = express();\n\n\u002F\u002F IMPORTANT: Must use raw body for signature verification\napp.post(\"\u002Fwebhooks\u002Felevenlabs\",\n  express.raw({ type: \"application\u002Fjson\" }),\n  (req, res) => {\n    const signature = req.headers[\"elevenlabs-signature\"] as string;\n    const secret = process.env.ELEVENLABS_WEBHOOK_SECRET!;\n\n    if (!verifyWebhookSignature(req.body, signature, secret)) {\n      console.error(\"Webhook signature verification failed\");\n      return res.status(401).json({ error: \"Invalid signature\" });\n    }\n\n    const event = JSON.parse(req.body.toString());\n\n    \u002F\u002F Return 200 quickly to acknowledge receipt\n    \u002F\u002F Process asynchronously to avoid webhook timeout\u002Fdisable\n    res.status(200).json({ received: true });\n\n    processWebhookAsync(event).catch(console.error);\n  }\n);\n```\n\n### Step 5: API Key Rotation Procedure\n\n```bash\n# 1. Generate new API key in ElevenLabs dashboard\n#    Settings > API Keys > Create new key\n\n# 2. Test new key before rotating\ncurl -s https:\u002F\u002Fapi.elevenlabs.io\u002Fv1\u002Fuser \\\n  -H \"xi-api-key: sk_new_key_here\" | jq '.subscription.tier'\n\n# 3. Update in all environments\n# Vercel:\nvercel env add ELEVENLABS_API_KEY production\n\n# Fly.io:\nfly secrets set ELEVENLABS_API_KEY=sk_new_key_here\n\n# GitHub Actions:\ngh secret set ELEVENLABS_API_KEY --body \"sk_new_key_here\"\n\n# 4. Deploy with new key\n# 5. Verify production works\n# 6. Delete old key in ElevenLabs dashboard\n```\n\n### Step 6: Voice Data Protection\n\n```typescript\n\u002F\u002F Cloned voices contain biometric data — treat as PII\nconst voiceSecurityPolicy = {\n  \u002F\u002F Restrict who can create\u002Fdelete cloned voices\n  clonePermissions: \"admin_only\",\n\n  \u002F\u002F Log all voice cloning operations\n  auditCloning: true,\n\n  \u002F\u002F Require consent documentation before cloning\n  consentRequired: true,\n\n  \u002F\u002F Auto-delete test clones after N days\n  testVoiceTtlDays: 30,\n};\n\n\u002F\u002F Audit log for voice operations\nfunction logVoiceOperation(operation: string, voiceId: string, userId: string) {\n  console.log(JSON.stringify({\n    timestamp: new Date().toISOString(),\n    type: \"elevenlabs.voice.audit\",\n    operation,  \u002F\u002F \"clone\", \"delete\", \"use\"\n    voiceId,\n    userId,\n  }));\n}\n```\n\n## Security Checklist\n\n- [ ] API keys in environment variables (never in source code)\n- [ ] `.env` files in `.gitignore`\n- [ ] Different API keys for dev\u002Fstaging\u002Fprod\n- [ ] Pre-commit hook scanning for key patterns (`sk_`)\n- [ ] Webhook signatures verified with HMAC-SHA256\n- [ ] Replay protection on webhooks (5-minute timestamp check)\n- [ ] Webhook failures monitored (auto-disabled after 10 consecutive failures)\n- [ ] Voice cloning operations audit-logged\n- [ ] Cloned voice consent documented\n- [ ] API key rotation scheduled quarterly\n\n## Webhook Failure Policy\n\nElevenLabs auto-disables webhooks after:\n- 10+ consecutive delivery failures, AND\n- Last successful delivery was 7+ days ago (or never delivered)\n\nAlways return HTTP 200 quickly from your webhook handler.\n\n## Error Handling\n\n| Security Issue | Detection | Mitigation |\n|----------------|-----------|------------|\n| Exposed API key | Git scanning, CI check | Rotate immediately, revoke old key |\n| Invalid webhook signature | `verifyWebhookSignature()` returns false | Log and reject (HTTP 401) |\n| Replay attack | Timestamp > 5 minutes old | Reject with timestamp check |\n| Unauthorized voice cloning | Audit logs | Restrict clone permissions |\n\n## Resources\n\n- [ElevenLabs Webhooks](https:\u002F\u002Felevenlabs.io\u002Fdocs\u002Foverview\u002Fadministration\u002Fwebhooks)\n- [ElevenLabs API Keys](https:\u002F\u002Felevenlabs.io\u002Fapp\u002Fsettings\u002Fapi-keys)\n- [Voice Cloning Policy](https:\u002F\u002Felevenlabs.io\u002Fsafety)\n\n## Next Steps\n\nFor production deployment, see `elevenlabs-prod-checklist`.\n\n","# ElevenLabs Security Basics\n\n## Overview\n\nSecurity best practices for ElevenLabs API key management, webhook HMAC signature verification, and protecting cloned voice data. ElevenLabs uses a single API key (`xi-api-key`) and HMAC webhook authentication.\n\n## Prerequisites\n\n- ElevenLabs SDK installed\n- Understanding of environment variables\n- Access to ElevenLabs dashboard (Settings > API Keys)\n\n## Instructions\n\n### Step 1: API Key Management\n\n```bash\n# .env (NEVER commit to git)\nELEVENLABS_API_KEY=sk_your_key_here\n\n# .gitignore — MUST include these\n.env\n.env.local\n.env.*.local\n```\n\n**Git pre-commit hook** to prevent accidental key commits:\n```bash\n#!\u002Fbin\u002Fbash\n# .git\u002Fhooks\u002Fpre-commit\nif git diff --cached | grep -qE 'sk_[a-zA-Z0-9]{20,}'; then\n  echo \"ERROR: ElevenLabs API key detected in staged changes!\"\n  echo \"Remove the key and use environment variables instead.\"\n  exit 1\nfi\n```\n\n### Step 2: Environment-Specific Keys\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Fconfig.ts\ninterface ElevenLabsSecurityConfig {\n  apiKey: string;\n  webhookSecret: string;\n  environment: \"development\" | \"staging\" | \"production\";\n}\n\nexport function getSecurityConfig(): ElevenLabsSecurityConfig {\n  const env = (process.env.NODE_ENV || \"development\") as ElevenLabsSecurityConfig[\"environment\"];\n\n  const apiKey = process.env.ELEVENLABS_API_KEY;\n  if (!apiKey) {\n    throw new Error(\"ELEVENLABS_API_KEY is required\");\n  }\n\n  \u002F\u002F Warn if production key is used in dev\n  if (env === \"development\" && apiKey.startsWith(\"sk_live_\")) {\n    console.warn(\"WARNING: Using production API key in development environment\");\n  }\n\n  return {\n    apiKey,\n    webhookSecret: process.env.ELEVENLABS_WEBHOOK_SECRET || \"\",\n    environment: env,\n  };\n}\n```\n\n### Step 3: Webhook HMAC Signature Verification\n\nElevenLabs webhooks include an `ElevenLabs-Signature` header for HMAC verification:\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Fwebhook-verify.ts\nimport crypto from \"crypto\";\n\n\u002F**\n * Verify ElevenLabs webhook signature using HMAC-SHA256.\n * The shared secret is generated when you create a webhook in the dashboard.\n *\u002F\nexport function verifyWebhookSignature(\n  payload: string | Buffer,\n  signatureHeader: string,\n  secret: string\n): boolean {\n  if (!signatureHeader || !secret) return false;\n\n  \u002F\u002F ElevenLabs signature format: t=\u003Ctimestamp>,v1=\u003Csignature>\n  const parts = signatureHeader.split(\",\");\n  const timestamp = parts.find(p => p.startsWith(\"t=\"))?.slice(2);\n  const signature = parts.find(p => p.startsWith(\"v1=\"))?.slice(3);\n\n  if (!timestamp || !signature) return false;\n\n  \u002F\u002F Reject timestamps older than 5 minutes (replay protection)\n  const age = Math.floor(Date.now() \u002F 1000) - parseInt(timestamp);\n  if (age > 300) {\n    console.error(\"Webhook timestamp too old:\", age, \"seconds\");\n    return false;\n  }\n\n  \u002F\u002F Compute expected HMAC\n  const signedPayload = `${timestamp}.${payload.toString()}`;\n  const expected = crypto\n    .createHmac(\"sha256\", secret)\n    .update(signedPayload)\n    .digest(\"hex\");\n\n  \u002F\u002F Timing-safe comparison to prevent timing attacks\n  try {\n    return crypto.timingSafeEqual(\n      Buffer.from(signature, \"hex\"),\n      Buffer.from(expected, \"hex\")\n    );\n  } catch {\n    return false;\n  }\n}\n```\n\n### Step 4: Express Webhook Endpoint with Verification\n\n```typescript\nimport express from \"express\";\nimport { verifyWebhookSignature } from \".\u002Fwebhook-verify\";\n\nconst app = express();\n\n\u002F\u002F IMPORTANT: Must use raw body for signature verification\napp.post(\"\u002Fwebhooks\u002Felevenlabs\",\n  express.raw({ type: \"application\u002Fjson\" }),\n  (req, res) => {\n    const signature = req.headers[\"elevenlabs-signature\"] as string;\n    const secret = process.env.ELEVENLABS_WEBHOOK_SECRET!;\n\n    if (!verifyWebhookSignature(req.body, signature, secret)) {\n      console.error(\"Webhook signature verification failed\");\n      return res.status(401).json({ error: \"Invalid signature\" });\n    }\n\n    const event = JSON.parse(req.body.toString());\n\n    \u002F\u002F Return 200 quickly to acknowledge receipt\n    \u002F\u002F Process asynchronously to avoid webhook timeout\u002Fdisable\n    res.status(200).json({ received: true });\n\n    processWebhookAsync(event).catch(console.error);\n  }\n);\n```\n\n### Step 5: API Key Rotation Procedure\n\n```bash\n# 1. Generate new API key in ElevenLabs dashboard\n#    Settings > API Keys > Create new key\n\n# 2. Test new key before rotating\ncurl -s https:\u002F\u002Fapi.elevenlabs.io\u002Fv1\u002Fuser \\\n  -H \"xi-api-key: sk_new_key_here\" | jq '.subscription.tier'\n\n# 3. Update in all environments\n# Vercel:\nvercel env add ELEVENLABS_API_KEY production\n\n# Fly.io:\nfly secrets set ELEVENLABS_API_KEY=sk_new_key_here\n\n# GitHub Actions:\ngh secret set ELEVENLABS_API_KEY --body \"sk_new_key_here\"\n\n# 4. Deploy with new key\n# 5. Verify production works\n# 6. Delete old key in ElevenLabs dashboard\n```\n\n### Step 6: Voice Data Protection\n\n```typescript\n\u002F\u002F Cloned voices contain biometric data — treat as PII\nconst voiceSecurityPolicy = {\n  \u002F\u002F Restrict who can create\u002Fdelete cloned voices\n  clonePermissions: \"admin_only\",\n\n  \u002F\u002F Log all voice cloning operations\n  auditCloning: true,\n\n  \u002F\u002F Require consent documentation before cloning\n  consentRequired: true,\n\n  \u002F\u002F Auto-delete test clones after N days\n  testVoiceTtlDays: 30,\n};\n\n\u002F\u002F Audit log for voice operations\nfunction logVoiceOperation(operation: string, voiceId: string, userId: string) {\n  console.log(JSON.stringify({\n    timestamp: new Date().toISOString(),\n    type: \"elevenlabs.voice.audit\",\n    operation,  \u002F\u002F \"clone\", \"delete\", \"use\"\n    voiceId,\n    userId,\n  }));\n}\n```\n\n## Security Checklist\n\n- [ ] API keys in environment variables (never in source code)\n- [ ] `.env` files in `.gitignore`\n- [ ] Different API keys for dev\u002Fstaging\u002Fprod\n- [ ] Pre-commit hook scanning for key patterns (`sk_`)\n- [ ] Webhook signatures verified with HMAC-SHA256\n- [ ] Replay protection on webhooks (5-minute timestamp check)\n- [ ] Webhook failures monitored (auto-disabled after 10 consecutive failures)\n- [ ] Voice cloning operations audit-logged\n- [ ] Cloned voice consent documented\n- [ ] API key rotation scheduled quarterly\n\n## Webhook Failure Policy\n\nElevenLabs auto-disables webhooks after:\n- 10+ consecutive delivery failures, AND\n- Last successful delivery was 7+ days ago (or never delivered)\n\nAlways return HTTP 200 quickly from your webhook handler.\n\n## Error Handling\n\n| Security Issue | Detection | Mitigation |\n|----------------|-----------|------------|\n| Exposed API key | Git scanning, CI check | Rotate immediately, revoke old key |\n| Invalid webhook signature | `verifyWebhookSignature()` returns false | Log and reject (HTTP 401) |\n| Replay attack | Timestamp > 5 minutes old | Reject with timestamp check |\n| Unauthorized voice cloning | Audit logs | Restrict clone permissions |\n\n## Resources\n\n- [ElevenLabs Webhooks](https:\u002F\u002Felevenlabs.io\u002Fdocs\u002Foverview\u002Fadministration\u002Fwebhooks)\n- [ElevenLabs API Keys](https:\u002F\u002Felevenlabs.io\u002Fapp\u002Fsettings\u002Fapi-keys)\n- [Voice Cloning Policy](https:\u002F\u002Felevenlabs.io\u002Fsafety)\n\n## Next Steps\n\nFor production deployment, see `elevenlabs-prod-checklist`.\n\n",{"name":5,"tags":49,"author":52,"license":15,"version":53,"description":54,"allowed-tools":55,"compatible-with":56},[38,50,51,25,27,33],"voice","ai","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Apply ElevenLabs security best practices for API keys, webhook HMAC validation,\nand voice data protection.\nUse when securing API keys, validating webhook signatures,\nor auditing ElevenLabs security configuration.\nTrigger: \"elevenlabs security\", \"elevenlabs secrets\",\n\"secure elevenlabs\", \"elevenlabs API key security\",\n\"elevenlabs webhook signature\", \"elevenlabs HMAC\".\n","Read, Write, Grep","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Felevenlabs-security-basics",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill elevenlabs-security-basics",{"tool":72,"command":73},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill elevenlabs-security-basics",{"tool":75,"command":76},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill elevenlabs-security-basics","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Felevenlabs-security-basics\u002FSKILL.md",true,[],[81,95,105,114,120,127],{"skillNo":82,"name":83,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":91,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[92,93,94],"model","model hierarchy","model hierarchy skill",{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":101,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[100],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[102,103,104],"MCP","zoom","zoom mcp",{"skillNo":106,"name":107,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[111,112,113,103],"sdk","zoom apps sdk","apps",{"skillNo":115,"name":116,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[116],{"skillNo":121,"name":122,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[125],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[122],{"skillNo":128,"name":129,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[129]]