[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F8BTTSGHT7EKXB8TP3XPNH":3,"skill-same:01M6F8BTTSGHT7EKXB8TP3XPNH":83},{"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":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":60,"commitSha":61,"skillDirectory":62,"forksCount":63,"repositoryHtmlUrl":64,"repositoryHomepageUrl":65,"ownerHtmlUrl":66,"ownerBlogUrl":6,"ownerDescription":67,"updatedAt":68,"install":69,"resources":82},"01M6F8BTTSGHT7EKXB8TP3XPNH","clay-cost-tuning",null,"Optimize Clay credit spending with provider key management, waterfall tuning, and budget controls.\nUse when analyzing Clay costs, reducing credit consumption,\nor implementing spending alerts and caps.\nTrigger with phrases like \"clay cost\", \"clay billing\", \"reduce clay costs\",\n\"clay pricing\", \"clay expensive\", \"clay budget\", \"clay credits\".","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\u002Fclay-cost-tuning\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000040","财务",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"tuning","clay","clay cost tuning","cost","credits","billing","key management","io","alerts","optimize","provider","openclaw","edit","write","read","api","Budget","analyzing","monitoring","code","2026-11-10 10:12:30",false,"---\nname: clay-cost-tuning\ndescription: |\n  Optimize Clay credit spending with provider key management, waterfall tuning, and budget controls.\n  Use when analyzing Clay costs, reducing credit consumption,\n  or implementing spending alerts and caps.\n  Trigger with phrases like \"clay cost\", \"clay billing\", \"reduce clay costs\",\n  \"clay pricing\", \"clay expensive\", \"clay budget\", \"clay credits\".\nallowed-tools: Read, Write, Edit, Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\ntags: [saas, clay, api, monitoring, cost-optimization]\n\n---\n# Clay Cost Tuning\n\n## Overview\n\nReduce Clay data enrichment spending by connecting your own API keys (70-80% savings), optimizing waterfall depth, improving input data quality, and implementing budget controls. Clay's March 2026 pricing split credits into Data Credits and Actions, changing the optimization calculus.\n\n## Prerequisites\n\n- Clay account with visibility into credit consumption\n- Understanding of which enrichment columns are in your tables\n- Access to Clay Settings > Plans & Billing\n\n## Instructions\n\n### Step 1: Connect Your Own Provider API Keys (Biggest Savings)\n\nThis is the single most impactful cost reduction. Clay charges 0 Data Credits when you use your own API keys:\n\n| Provider | Clay-Managed Cost | Own Key Cost | Annual Savings (10K rows\u002Fmo) |\n|----------|-------------------|-------------|------------------------------|\n| Apollo | 2 credits\u002Flookup | 0 credits | ~240K credits\u002Fyear |\n| Clearbit | 2-5 credits | 0 credits | ~360K credits\u002Fyear |\n| Hunter.io | 2 credits | 0 credits | ~240K credits\u002Fyear |\n| Prospeo | 2 credits | 0 credits | ~240K credits\u002Fyear |\n| People Data Labs | 3 credits | 0 credits | ~360K credits\u002Fyear |\n| ZoomInfo | 5-13 credits | 0 credits | ~1M+ credits\u002Fyear |\n\n**Setup:** Go to **Settings > Connections** in Clay, click **Add Connection**, and paste your provider API key. All enrichments using that provider will consume 0 Clay credits (1 Action is still consumed per enrichment).\n\n### Step 2: Optimize Waterfall Enrichment Depth\n\nEach waterfall step costs credits (if using Clay-managed keys) and time:\n\n```yaml\n# Expensive waterfall (5 providers, 10-15 credits\u002Frow):\nexpensive:\n  - apollo:      2 credits\n  - hunter:      2 credits\n  - prospeo:     2 credits\n  - dropcontact: 3 credits\n  - findymail:   3 credits\n  total_max: 12 credits\u002Frow\n  coverage: ~92%\n\n# Optimized waterfall (2 providers, 4 credits\u002Frow):\noptimized:\n  - apollo:      2 credits  # Highest coverage provider first\n  - hunter:      2 credits  # Strong backup\n  total_max: 4 credits\u002Frow\n  coverage: ~83%\n  savings: \"67% credit reduction, ~9% coverage loss\"\n```\n\n**March 2026 change:** Failed lookups no longer cost Data Credits. This makes wider waterfalls less expensive than before, since you only pay when data is actually found.\n\n### Step 3: Pre-Filter Input Data\n\nCredits wasted on unenrichable rows are the most common cost leak:\n\n```typescript\n\u002F\u002F src\u002Fclay\u002Fcost-filter.ts\nfunction estimateCreditCost(rows: any[], creditsPerRow: number): {\n  filteredRows: any[];\n  estimatedCredits: number;\n  savings: number;\n} {\n  const personalDomains = new Set([\n    'gmail.com', 'yahoo.com', 'hotmail.com', 'outlook.com', 'icloud.com',\n  ]);\n\n  const filtered = rows.filter(row => {\n    if (!row.domain?.includes('.')) return false;\n    if (personalDomains.has(row.domain)) return false;\n    if (!row.first_name || !row.last_name) return false;\n    return true;\n  });\n\n  \u002F\u002F Deduplicate\n  const seen = new Set\u003Cstring>();\n  const deduped = filtered.filter(row => {\n    const key = `${row.domain}:${row.first_name}:${row.last_name}`.toLowerCase();\n    if (seen.has(key)) return false;\n    seen.add(key);\n    return true;\n  });\n\n  return {\n    filteredRows: deduped,\n    estimatedCredits: deduped.length * creditsPerRow,\n    savings: (rows.length - deduped.length) * creditsPerRow,\n  };\n}\n\n\u002F\u002F Usage\nconst { filteredRows, estimatedCredits, savings } = estimateCreditCost(rawLeads, 6);\nconsole.log(`Will process ${filteredRows.length} rows (${estimatedCredits} credits)`);\nconsole.log(`Saved ${savings} credits by pre-filtering`);\n```\n\n### Step 4: Use Sampling Before Full Runs\n\nTest enrichment quality on a small sample before committing credits to the full list:\n\n```typescript\n\u002F\u002F src\u002Fclay\u002Fsampler.ts\nfunction sampleForTest(rows: any[], sampleSize = 100): {\n  sample: any[];\n  remaining: any[];\n  estimatedTotalCredits: number;\n} {\n  \u002F\u002F Random sample for representative results\n  const shuffled = [...rows].sort(() => Math.random() - 0.5);\n  const sample = shuffled.slice(0, sampleSize);\n  const remaining = shuffled.slice(sampleSize);\n\n  return {\n    sample,\n    remaining,\n    estimatedTotalCredits: rows.length * 6, \u002F\u002F Estimate 6 credits\u002Frow average\n  };\n}\n\n\u002F\u002F Workflow:\n\u002F\u002F 1. Send sample (100 rows) to Clay test table\n\u002F\u002F 2. Check hit rate after enrichment completes\n\u002F\u002F 3. If hit rate > 60%, proceed with full list\n\u002F\u002F 4. If hit rate \u003C 40%, clean input data first\n```\n\n### Step 5: Implement Credit Budget Alerts\n\n```typescript\n\u002F\u002F src\u002Fclay\u002Fbudget-monitor.ts\ninterface CreditBudget {\n  monthlyLimit: number;      \u002F\u002F From your plan\n  dailyThreshold: number;    \u002F\u002F Alert if exceeded\n  perTableMax: number;       \u002F\u002F Cap per table\n}\n\nconst PLAN_BUDGETS: Record\u003Cstring, CreditBudget> = {\n  launch:     { monthlyLimit: 2_500, dailyThreshold: 125, perTableMax: 500 },\n  growth:     { monthlyLimit: 6_000, dailyThreshold: 300, perTableMax: 1_500 },\n  enterprise: { monthlyLimit: 50_000, dailyThreshold: 2_500, perTableMax: 10_000 },\n};\n\nclass BudgetMonitor {\n  private dailyUsage = 0;\n  private monthlyUsage = 0;\n  private tableUsage = new Map\u003Cstring, number>();\n\n  constructor(private budget: CreditBudget) {}\n\n  recordUsage(tableId: string, credits: number) {\n    this.dailyUsage += credits;\n    this.monthlyUsage += credits;\n    this.tableUsage.set(tableId, (this.tableUsage.get(tableId) || 0) + credits);\n\n    \u002F\u002F Check thresholds\n    if (this.dailyUsage > this.budget.dailyThreshold) {\n      console.warn(`ALERT: Daily credit usage (${this.dailyUsage}) exceeds threshold (${this.budget.dailyThreshold})`);\n    }\n    if (this.monthlyUsage > this.budget.monthlyLimit * 0.8) {\n      console.warn(`ALERT: Monthly credits at ${((this.monthlyUsage \u002F this.budget.monthlyLimit) * 100).toFixed(0)}%`);\n    }\n    if ((this.tableUsage.get(tableId) || 0) > this.budget.perTableMax) {\n      console.error(`STOP: Table ${tableId} exceeded per-table cap (${this.budget.perTableMax} credits)`);\n    }\n  }\n}\n```\n\n### Step 6: Credit-Per-Lead Cost Calculator\n\n```typescript\nfunction calculateCostPerLead(\n  totalCredits: number,\n  totalRows: number,\n  rowsWithEmail: number,\n  rowsPushedToCRM: number,\n): void {\n  console.log('=== Clay Cost Analysis ===');\n  console.log(`Credits used: ${totalCredits}`);\n  console.log(`Cost per row processed: ${(totalCredits \u002F totalRows).toFixed(1)} credits`);\n  console.log(`Cost per email found: ${(totalCredits \u002F Math.max(rowsWithEmail, 1)).toFixed(1)} credits`);\n  console.log(`Cost per CRM lead: ${(totalCredits \u002F Math.max(rowsPushedToCRM, 1)).toFixed(1)} credits`);\n  console.log(`Email find rate: ${((rowsWithEmail \u002F totalRows) * 100).toFixed(1)}%`);\n  console.log(`Qualification rate: ${((rowsPushedToCRM \u002F totalRows) * 100).toFixed(1)}%`);\n}\n```\n\n## Error Handling\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Credits burning fast | Waterfall enriching all providers | Enable \"stop on first result\", reduce depth |\n| Low hit rate (\u003C30%) | Bad input data | Filter personal domains, validate before import |\n| Unexpected charges | New column added with auto-run | Review all auto-run columns monthly |\n| Credit rollover capped | Balance exceeds 2x monthly | Use credits before they cap out |\n\n## Resources\n\n- [Clay Pricing 2026](https:\u002F\u002Fwww.clay.com\u002Fpricing)\n- [Clay University -- Actions & Data Credits](https:\u002F\u002Funiversity.clay.com\u002Fdocs\u002Factions-data-credits)\n- [Clay University -- Plans & Billing](https:\u002F\u002Funiversity.clay.com\u002Fdocs\u002Fplans-and-billing)\n\n## Next Steps\n\nFor reference architecture patterns, see `clay-reference-architecture`.\n\n","# Clay Cost Tuning\n\n## Overview\n\nReduce Clay data enrichment spending by connecting your own API keys (70-80% savings), optimizing waterfall depth, improving input data quality, and implementing budget controls. Clay's March 2026 pricing split credits into Data Credits and Actions, changing the optimization calculus.\n\n## Prerequisites\n\n- Clay account with visibility into credit consumption\n- Understanding of which enrichment columns are in your tables\n- Access to Clay Settings > Plans & Billing\n\n## Instructions\n\n### Step 1: Connect Your Own Provider API Keys (Biggest Savings)\n\nThis is the single most impactful cost reduction. Clay charges 0 Data Credits when you use your own API keys:\n\n| Provider | Clay-Managed Cost | Own Key Cost | Annual Savings (10K rows\u002Fmo) |\n|----------|-------------------|-------------|------------------------------|\n| Apollo | 2 credits\u002Flookup | 0 credits | ~240K credits\u002Fyear |\n| Clearbit | 2-5 credits | 0 credits | ~360K credits\u002Fyear |\n| Hunter.io | 2 credits | 0 credits | ~240K credits\u002Fyear |\n| Prospeo | 2 credits | 0 credits | ~240K credits\u002Fyear |\n| People Data Labs | 3 credits | 0 credits | ~360K credits\u002Fyear |\n| ZoomInfo | 5-13 credits | 0 credits | ~1M+ credits\u002Fyear |\n\n**Setup:** Go to **Settings > Connections** in Clay, click **Add Connection**, and paste your provider API key. All enrichments using that provider will consume 0 Clay credits (1 Action is still consumed per enrichment).\n\n### Step 2: Optimize Waterfall Enrichment Depth\n\nEach waterfall step costs credits (if using Clay-managed keys) and time:\n\n```yaml\n# Expensive waterfall (5 providers, 10-15 credits\u002Frow):\nexpensive:\n  - apollo:      2 credits\n  - hunter:      2 credits\n  - prospeo:     2 credits\n  - dropcontact: 3 credits\n  - findymail:   3 credits\n  total_max: 12 credits\u002Frow\n  coverage: ~92%\n\n# Optimized waterfall (2 providers, 4 credits\u002Frow):\noptimized:\n  - apollo:      2 credits  # Highest coverage provider first\n  - hunter:      2 credits  # Strong backup\n  total_max: 4 credits\u002Frow\n  coverage: ~83%\n  savings: \"67% credit reduction, ~9% coverage loss\"\n```\n\n**March 2026 change:** Failed lookups no longer cost Data Credits. This makes wider waterfalls less expensive than before, since you only pay when data is actually found.\n\n### Step 3: Pre-Filter Input Data\n\nCredits wasted on unenrichable rows are the most common cost leak:\n\n```typescript\n\u002F\u002F src\u002Fclay\u002Fcost-filter.ts\nfunction estimateCreditCost(rows: any[], creditsPerRow: number): {\n  filteredRows: any[];\n  estimatedCredits: number;\n  savings: number;\n} {\n  const personalDomains = new Set([\n    'gmail.com', 'yahoo.com', 'hotmail.com', 'outlook.com', 'icloud.com',\n  ]);\n\n  const filtered = rows.filter(row => {\n    if (!row.domain?.includes('.')) return false;\n    if (personalDomains.has(row.domain)) return false;\n    if (!row.first_name || !row.last_name) return false;\n    return true;\n  });\n\n  \u002F\u002F Deduplicate\n  const seen = new Set\u003Cstring>();\n  const deduped = filtered.filter(row => {\n    const key = `${row.domain}:${row.first_name}:${row.last_name}`.toLowerCase();\n    if (seen.has(key)) return false;\n    seen.add(key);\n    return true;\n  });\n\n  return {\n    filteredRows: deduped,\n    estimatedCredits: deduped.length * creditsPerRow,\n    savings: (rows.length - deduped.length) * creditsPerRow,\n  };\n}\n\n\u002F\u002F Usage\nconst { filteredRows, estimatedCredits, savings } = estimateCreditCost(rawLeads, 6);\nconsole.log(`Will process ${filteredRows.length} rows (${estimatedCredits} credits)`);\nconsole.log(`Saved ${savings} credits by pre-filtering`);\n```\n\n### Step 4: Use Sampling Before Full Runs\n\nTest enrichment quality on a small sample before committing credits to the full list:\n\n```typescript\n\u002F\u002F src\u002Fclay\u002Fsampler.ts\nfunction sampleForTest(rows: any[], sampleSize = 100): {\n  sample: any[];\n  remaining: any[];\n  estimatedTotalCredits: number;\n} {\n  \u002F\u002F Random sample for representative results\n  const shuffled = [...rows].sort(() => Math.random() - 0.5);\n  const sample = shuffled.slice(0, sampleSize);\n  const remaining = shuffled.slice(sampleSize);\n\n  return {\n    sample,\n    remaining,\n    estimatedTotalCredits: rows.length * 6, \u002F\u002F Estimate 6 credits\u002Frow average\n  };\n}\n\n\u002F\u002F Workflow:\n\u002F\u002F 1. Send sample (100 rows) to Clay test table\n\u002F\u002F 2. Check hit rate after enrichment completes\n\u002F\u002F 3. If hit rate > 60%, proceed with full list\n\u002F\u002F 4. If hit rate \u003C 40%, clean input data first\n```\n\n### Step 5: Implement Credit Budget Alerts\n\n```typescript\n\u002F\u002F src\u002Fclay\u002Fbudget-monitor.ts\ninterface CreditBudget {\n  monthlyLimit: number;      \u002F\u002F From your plan\n  dailyThreshold: number;    \u002F\u002F Alert if exceeded\n  perTableMax: number;       \u002F\u002F Cap per table\n}\n\nconst PLAN_BUDGETS: Record\u003Cstring, CreditBudget> = {\n  launch:     { monthlyLimit: 2_500, dailyThreshold: 125, perTableMax: 500 },\n  growth:     { monthlyLimit: 6_000, dailyThreshold: 300, perTableMax: 1_500 },\n  enterprise: { monthlyLimit: 50_000, dailyThreshold: 2_500, perTableMax: 10_000 },\n};\n\nclass BudgetMonitor {\n  private dailyUsage = 0;\n  private monthlyUsage = 0;\n  private tableUsage = new Map\u003Cstring, number>();\n\n  constructor(private budget: CreditBudget) {}\n\n  recordUsage(tableId: string, credits: number) {\n    this.dailyUsage += credits;\n    this.monthlyUsage += credits;\n    this.tableUsage.set(tableId, (this.tableUsage.get(tableId) || 0) + credits);\n\n    \u002F\u002F Check thresholds\n    if (this.dailyUsage > this.budget.dailyThreshold) {\n      console.warn(`ALERT: Daily credit usage (${this.dailyUsage}) exceeds threshold (${this.budget.dailyThreshold})`);\n    }\n    if (this.monthlyUsage > this.budget.monthlyLimit * 0.8) {\n      console.warn(`ALERT: Monthly credits at ${((this.monthlyUsage \u002F this.budget.monthlyLimit) * 100).toFixed(0)}%`);\n    }\n    if ((this.tableUsage.get(tableId) || 0) > this.budget.perTableMax) {\n      console.error(`STOP: Table ${tableId} exceeded per-table cap (${this.budget.perTableMax} credits)`);\n    }\n  }\n}\n```\n\n### Step 6: Credit-Per-Lead Cost Calculator\n\n```typescript\nfunction calculateCostPerLead(\n  totalCredits: number,\n  totalRows: number,\n  rowsWithEmail: number,\n  rowsPushedToCRM: number,\n): void {\n  console.log('=== Clay Cost Analysis ===');\n  console.log(`Credits used: ${totalCredits}`);\n  console.log(`Cost per row processed: ${(totalCredits \u002F totalRows).toFixed(1)} credits`);\n  console.log(`Cost per email found: ${(totalCredits \u002F Math.max(rowsWithEmail, 1)).toFixed(1)} credits`);\n  console.log(`Cost per CRM lead: ${(totalCredits \u002F Math.max(rowsPushedToCRM, 1)).toFixed(1)} credits`);\n  console.log(`Email find rate: ${((rowsWithEmail \u002F totalRows) * 100).toFixed(1)}%`);\n  console.log(`Qualification rate: ${((rowsPushedToCRM \u002F totalRows) * 100).toFixed(1)}%`);\n}\n```\n\n## Error Handling\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Credits burning fast | Waterfall enriching all providers | Enable \"stop on first result\", reduce depth |\n| Low hit rate (\u003C30%) | Bad input data | Filter personal domains, validate before import |\n| Unexpected charges | New column added with auto-run | Review all auto-run columns monthly |\n| Credit rollover capped | Balance exceeds 2x monthly | Use credits before they cap out |\n\n## Resources\n\n- [Clay Pricing 2026](https:\u002F\u002Fwww.clay.com\u002Fpricing)\n- [Clay University -- Actions & Data Credits](https:\u002F\u002Funiversity.clay.com\u002Fdocs\u002Factions-data-credits)\n- [Clay University -- Plans & Billing](https:\u002F\u002Funiversity.clay.com\u002Fdocs\u002Fplans-and-billing)\n\n## Next Steps\n\nFor reference architecture patterns, see `clay-reference-architecture`.\n\n",{"name":5,"tags":52,"author":55,"license":15,"version":56,"description":57,"allowed-tools":58,"compatible-with":59},[53,28,42,45,54],"saas","cost-optimization","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Optimize Clay credit spending with provider key management, waterfall tuning, and budget controls.\nUse when analyzing Clay costs, reducing credit consumption,\nor implementing spending alerts and caps.\nTrigger with phrases like \"clay cost\", \"clay billing\", \"reduce clay costs\",\n\"clay pricing\", \"clay expensive\", \"clay budget\", \"clay credits\".\n","Read, Write, Edit, Grep","claude-code, codex, openclaw","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fclay-cost-tuning",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":70,"prompt":80,"zipAvailable":81},[71,74,77],{"tool":72,"command":73},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill clay-cost-tuning",{"tool":75,"command":76},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill clay-cost-tuning",{"tool":78,"command":79},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill clay-cost-tuning","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fclay-cost-tuning\u002FSKILL.md",true,[],[84,98,108,117,123,130],{"skillNo":85,"name":86,"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":87,"categories":88,"keywords":94,"publishedAt":47},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[89],{"categoryNo":90,"categoryName":91,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[95,96,97],"model","model hierarchy","model hierarchy skill",{"skillNo":99,"name":100,"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":101,"categories":102,"keywords":104,"publishedAt":47},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[103],{"categoryNo":90,"categoryName":91,"taxonomyType":92,"taxonomyTypeDesc":93},[105,106,107],"MCP","zoom","zoom mcp",{"skillNo":109,"name":110,"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":111,"categories":112,"keywords":113,"publishedAt":47},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[114,115,116,106],"sdk","zoom apps sdk","apps",{"skillNo":118,"name":119,"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":120,"categories":121,"keywords":122,"publishedAt":47},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[119],{"skillNo":124,"name":125,"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":126,"categories":127,"keywords":129,"publishedAt":47},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[128],{"categoryNo":90,"categoryName":91,"taxonomyType":92,"taxonomyTypeDesc":93},[125],{"skillNo":131,"name":132,"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":133,"categories":134,"keywords":135,"publishedAt":47},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[132]]