[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F7SWBBW4KK12CGD907PP93":3,"skill-same:01M6F7SWBBW4KK12CGD907PP93":79},{"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":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M6F7SWBBW4KK12CGD907PP93","brightdata-reference-architecture",null,"Implement Bright Data reference architecture with best-practice project layout.\nUse when designing new Bright Data integrations, reviewing project structure,\nor establishing architecture standards for Bright Data applications.\nTrigger with phrases like \"brightdata architecture\", \"brightdata best practices\",\n\"brightdata project structure\", \"how to organize brightdata\", \"brightdata layout\".","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\u002Fbrightdata-reference-architecture\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"reference","brightdata reference architecture","brightdata","architecture","code","how to","trigger","io","layout","project","structure","organize","data","project structure","standards","scraping","read","integrations","how","applications","2026-11-10 10:12:30",false,"---\nname: brightdata-reference-architecture\ndescription: |\n  Implement Bright Data reference architecture with best-practice project layout.\n  Use when designing new Bright Data integrations, reviewing project structure,\n  or establishing architecture standards for Bright Data applications.\n  Trigger with phrases like \"brightdata architecture\", \"brightdata best practices\",\n  \"brightdata project structure\", \"how to organize brightdata\", \"brightdata layout\".\nallowed-tools: Read, Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, scraping, data, brightdata]\ncompatible-with: claude-code\n---\n\n# Bright Data Reference Architecture\n\n## Overview\n\nProduction-ready architecture for Bright Data scraping systems. Covers project layout, data pipeline design, and integration patterns for Web Unlocker, Scraping Browser, SERP API, and Datasets API.\n\n## Prerequisites\n\n- Understanding of layered architecture\n- Node.js\u002FTypeScript project setup\n- Database for storing scraped data\n\n## Project Structure\n\n```\nmy-scraper\u002F\n├── src\u002F\n│   ├── brightdata\u002F\n│   │   ├── proxy.ts            # Proxy config helper (zone, country, session)\n│   │   ├── client.ts           # Axios client with proxy + retry\n│   │   ├── browser.ts          # Scraping Browser connection manager\n│   │   ├── api.ts              # REST API client (trigger, snapshot)\n│   │   ├── cache.ts            # Response cache (LRU + optional Redis)\n│   │   └── types.ts            # Shared TypeScript interfaces\n│   ├── scrapers\u002F\n│   │   ├── product-scraper.ts  # Domain-specific scraper\n│   │   ├── serp-scraper.ts     # Search result collector\n│   │   └── parser.ts           # HTML → structured data (cheerio)\n│   ├── pipeline\u002F\n│   │   ├── scheduler.ts        # Cron-based scraping scheduler\n│   │   ├── processor.ts        # Raw HTML → clean data\n│   │   └── storage.ts          # Database\u002Ffile output\n│   ├── webhooks\u002F\n│   │   └── brightdata.ts       # Webhook delivery handler\n│   └── api\u002F\n│       ├── health.ts           # Health check endpoint\n│       └── scrape.ts           # On-demand scrape endpoint\n├── tests\u002F\n│   ├── unit\u002F                   # Mocked tests (no proxy needed)\n│   ├── integration\u002F            # Live proxy tests\n│   └── fixtures\u002F               # Cached HTML for testing\n├── config\u002F\n│   ├── zones.json              # Zone configuration per environment\n│   └── targets.json            # Target URLs and scraping schedules\n└── .env.example\n```\n\n## Architecture Diagram\n\n```\n┌──────────────────────────────────────────────────────┐\n│                    API \u002F Scheduler                     │\n│         (On-demand scrape, cron jobs, webhooks)        │\n├──────────────────────────────────────────────────────┤\n│                   Scraper Layer                        │\n│    (Product scraper, SERP scraper, custom parsers)     │\n├────────────┬─────────────────┬───────────────────────┤\n│ Web        │  Scraping       │  SERP \u002F Datasets      │\n│ Unlocker   │  Browser        │  API                  │\n│ (Proxy)    │  (WebSocket)    │  (REST)               │\n├────────────┴─────────────────┴───────────────────────┤\n│          Bright Data Infrastructure Layer              │\n│  (Proxy config, retry, cache, session management)      │\n├──────────────────────────────────────────────────────┤\n│              Storage \u002F Pipeline                        │\n│    (Database, file output, webhook delivery)           │\n└──────────────────────────────────────────────────────┘\n```\n\n## Key Components\n\n### Step 1: Multi-Product Client\n\n```typescript\n\u002F\u002F src\u002Fbrightdata\u002Fclient.ts\nimport axios, { AxiosInstance } from 'axios';\nimport https from 'https';\nimport { chromium } from 'playwright';\n\nexport class BrightDataClient {\n  private proxyClient: AxiosInstance;\n  private apiToken: string;\n\n  constructor(private config: {\n    customerId: string;\n    zone: string;\n    zonePassword: string;\n    apiToken: string;\n  }) {\n    this.apiToken = config.apiToken;\n    this.proxyClient = axios.create({\n      proxy: {\n        host: 'brd.superproxy.io',\n        port: 33335,\n        auth: {\n          username: `brd-customer-${config.customerId}-zone-${config.zone}`,\n          password: config.zonePassword,\n        },\n      },\n      httpsAgent: new https.Agent({ keepAlive: true, rejectUnauthorized: false }),\n      timeout: 60000,\n    });\n  }\n\n  \u002F\u002F Web Unlocker — simple HTTP through proxy\n  async scrape(url: string, country?: string): Promise\u003Cstring> {\n    const response = await this.proxyClient.get(url);\n    return response.data;\n  }\n\n  \u002F\u002F Scraping Browser — Playwright over CDP\n  async scrapeWithBrowser(url: string, extract: (page: any) => Promise\u003Cany>) {\n    const auth = `brd-customer-${this.config.customerId}-zone-scraping_browser1:${this.config.zonePassword}`;\n    const browser = await chromium.connectOverCDP(`wss:\u002F\u002F${auth}@brd.superproxy.io:9222`);\n    try {\n      const page = await browser.newPage();\n      await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });\n      return await extract(page);\n    } finally {\n      await browser.close();\n    }\n  }\n\n  \u002F\u002F Web Scraper API — async bulk collection\n  async triggerCollection(datasetId: string, inputs: any[]) {\n    const response = await fetch(\n      `https:\u002F\u002Fapi.brightdata.com\u002Fdatasets\u002Fv3\u002Ftrigger?dataset_id=${datasetId}&format=json`,\n      {\n        method: 'POST',\n        headers: { 'Authorization': `Bearer ${this.apiToken}`, 'Content-Type': 'application\u002Fjson' },\n        body: JSON.stringify(inputs),\n      }\n    );\n    return response.json();\n  }\n}\n```\n\n### Step 2: Scraping Pipeline\n\n```typescript\n\u002F\u002F src\u002Fpipeline\u002Fscheduler.ts\nimport cron from 'node-cron';\n\ninterface ScrapeJob {\n  name: string;\n  urls: string[];\n  product: 'web_unlocker' | 'scraping_browser' | 'datasets_api';\n  schedule: string; \u002F\u002F cron expression\n  parser: (html: string) => any;\n}\n\nexport function startScheduler(jobs: ScrapeJob[], client: BrightDataClient) {\n  for (const job of jobs) {\n    cron.schedule(job.schedule, async () => {\n      console.log(`Running job: ${job.name}`);\n      if (job.product === 'datasets_api') {\n        await client.triggerCollection('dataset_id', job.urls.map(url => ({ url })));\n      } else {\n        for (const url of job.urls) {\n          const html = await client.scrape(url);\n          const data = job.parser(html);\n          await saveToDatabase(job.name, data);\n        }\n      }\n    });\n  }\n}\n```\n\n### Step 3: Environment Configuration\n\n```json\n\u002F\u002F config\u002Fzones.json\n{\n  \"development\": {\n    \"web_unlocker\": \"web_unlocker_dev\",\n    \"scraping_browser\": \"scraping_browser_dev\",\n    \"api_datasets\": true\n  },\n  \"production\": {\n    \"web_unlocker\": \"web_unlocker_prod\",\n    \"scraping_browser\": \"scraping_browser_prod\",\n    \"api_datasets\": true\n  }\n}\n```\n\n## Decision Matrix\n\n| Scenario | Product | Why |\n|----------|---------|-----|\n| Simple HTML pages | Web Unlocker | Cheapest, fastest |\n| JavaScript SPA | Scraping Browser | Needs browser rendering |\n| Search results | SERP API | Pre-parsed JSON output |\n| 1000+ URLs one-time | Web Scraper API | Async, handles parallelism |\n| Amazon\u002FLinkedIn\u002Fetc. | Pre-built Datasets | No code needed |\n| Login-required pages | Scraping Browser + sticky session | Session persistence |\n\n## Output\n\n- Multi-product Bright Data client\n- Domain-specific scrapers with parsers\n- Cron-based scraping pipeline\n- Environment-isolated zone configuration\n\n## Error Handling\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Mixed product confusion | Wrong zone for task | Use decision matrix above |\n| Circular dependencies | Tight coupling | Keep scraper layer separate from proxy layer |\n| Test pollution | Shared mocks | Use dependency injection |\n| Config mismatch | Wrong environment | Load zone config from `zones.json` |\n\n## Resources\n\n- [Bright Data Products Overview](https:\u002F\u002Fbrightdata.com\u002Fproducts)\n- [Scraping Browser](https:\u002F\u002Fdocs.brightdata.com\u002Fscraping-automation\u002Fscraping-browser\u002Foverview)\n- [Web Scraper API](https:\u002F\u002Fdocs.brightdata.com\u002Fscraping-automation\u002Fweb-data-apis\u002Fweb-scraper-api\u002Foverview)\n- [SERP API](https:\u002F\u002Fdocs.brightdata.com\u002Fscraping-automation\u002Fserp-api\u002Foverview)\n\n## Next Steps\n\nFor multi-environment setup, see `brightdata-deploy-integration`.\n\n","# Bright Data Reference Architecture\n\n## Overview\n\nProduction-ready architecture for Bright Data scraping systems. Covers project layout, data pipeline design, and integration patterns for Web Unlocker, Scraping Browser, SERP API, and Datasets API.\n\n## Prerequisites\n\n- Understanding of layered architecture\n- Node.js\u002FTypeScript project setup\n- Database for storing scraped data\n\n## Project Structure\n\n```\nmy-scraper\u002F\n├── src\u002F\n│   ├── brightdata\u002F\n│   │   ├── proxy.ts            # Proxy config helper (zone, country, session)\n│   │   ├── client.ts           # Axios client with proxy + retry\n│   │   ├── browser.ts          # Scraping Browser connection manager\n│   │   ├── api.ts              # REST API client (trigger, snapshot)\n│   │   ├── cache.ts            # Response cache (LRU + optional Redis)\n│   │   └── types.ts            # Shared TypeScript interfaces\n│   ├── scrapers\u002F\n│   │   ├── product-scraper.ts  # Domain-specific scraper\n│   │   ├── serp-scraper.ts     # Search result collector\n│   │   └── parser.ts           # HTML → structured data (cheerio)\n│   ├── pipeline\u002F\n│   │   ├── scheduler.ts        # Cron-based scraping scheduler\n│   │   ├── processor.ts        # Raw HTML → clean data\n│   │   └── storage.ts          # Database\u002Ffile output\n│   ├── webhooks\u002F\n│   │   └── brightdata.ts       # Webhook delivery handler\n│   └── api\u002F\n│       ├── health.ts           # Health check endpoint\n│       └── scrape.ts           # On-demand scrape endpoint\n├── tests\u002F\n│   ├── unit\u002F                   # Mocked tests (no proxy needed)\n│   ├── integration\u002F            # Live proxy tests\n│   └── fixtures\u002F               # Cached HTML for testing\n├── config\u002F\n│   ├── zones.json              # Zone configuration per environment\n│   └── targets.json            # Target URLs and scraping schedules\n└── .env.example\n```\n\n## Architecture Diagram\n\n```\n┌──────────────────────────────────────────────────────┐\n│                    API \u002F Scheduler                     │\n│         (On-demand scrape, cron jobs, webhooks)        │\n├──────────────────────────────────────────────────────┤\n│                   Scraper Layer                        │\n│    (Product scraper, SERP scraper, custom parsers)     │\n├────────────┬─────────────────┬───────────────────────┤\n│ Web        │  Scraping       │  SERP \u002F Datasets      │\n│ Unlocker   │  Browser        │  API                  │\n│ (Proxy)    │  (WebSocket)    │  (REST)               │\n├────────────┴─────────────────┴───────────────────────┤\n│          Bright Data Infrastructure Layer              │\n│  (Proxy config, retry, cache, session management)      │\n├──────────────────────────────────────────────────────┤\n│              Storage \u002F Pipeline                        │\n│    (Database, file output, webhook delivery)           │\n└──────────────────────────────────────────────────────┘\n```\n\n## Key Components\n\n### Step 1: Multi-Product Client\n\n```typescript\n\u002F\u002F src\u002Fbrightdata\u002Fclient.ts\nimport axios, { AxiosInstance } from 'axios';\nimport https from 'https';\nimport { chromium } from 'playwright';\n\nexport class BrightDataClient {\n  private proxyClient: AxiosInstance;\n  private apiToken: string;\n\n  constructor(private config: {\n    customerId: string;\n    zone: string;\n    zonePassword: string;\n    apiToken: string;\n  }) {\n    this.apiToken = config.apiToken;\n    this.proxyClient = axios.create({\n      proxy: {\n        host: 'brd.superproxy.io',\n        port: 33335,\n        auth: {\n          username: `brd-customer-${config.customerId}-zone-${config.zone}`,\n          password: config.zonePassword,\n        },\n      },\n      httpsAgent: new https.Agent({ keepAlive: true, rejectUnauthorized: false }),\n      timeout: 60000,\n    });\n  }\n\n  \u002F\u002F Web Unlocker — simple HTTP through proxy\n  async scrape(url: string, country?: string): Promise\u003Cstring> {\n    const response = await this.proxyClient.get(url);\n    return response.data;\n  }\n\n  \u002F\u002F Scraping Browser — Playwright over CDP\n  async scrapeWithBrowser(url: string, extract: (page: any) => Promise\u003Cany>) {\n    const auth = `brd-customer-${this.config.customerId}-zone-scraping_browser1:${this.config.zonePassword}`;\n    const browser = await chromium.connectOverCDP(`wss:\u002F\u002F${auth}@brd.superproxy.io:9222`);\n    try {\n      const page = await browser.newPage();\n      await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });\n      return await extract(page);\n    } finally {\n      await browser.close();\n    }\n  }\n\n  \u002F\u002F Web Scraper API — async bulk collection\n  async triggerCollection(datasetId: string, inputs: any[]) {\n    const response = await fetch(\n      `https:\u002F\u002Fapi.brightdata.com\u002Fdatasets\u002Fv3\u002Ftrigger?dataset_id=${datasetId}&format=json`,\n      {\n        method: 'POST',\n        headers: { 'Authorization': `Bearer ${this.apiToken}`, 'Content-Type': 'application\u002Fjson' },\n        body: JSON.stringify(inputs),\n      }\n    );\n    return response.json();\n  }\n}\n```\n\n### Step 2: Scraping Pipeline\n\n```typescript\n\u002F\u002F src\u002Fpipeline\u002Fscheduler.ts\nimport cron from 'node-cron';\n\ninterface ScrapeJob {\n  name: string;\n  urls: string[];\n  product: 'web_unlocker' | 'scraping_browser' | 'datasets_api';\n  schedule: string; \u002F\u002F cron expression\n  parser: (html: string) => any;\n}\n\nexport function startScheduler(jobs: ScrapeJob[], client: BrightDataClient) {\n  for (const job of jobs) {\n    cron.schedule(job.schedule, async () => {\n      console.log(`Running job: ${job.name}`);\n      if (job.product === 'datasets_api') {\n        await client.triggerCollection('dataset_id', job.urls.map(url => ({ url })));\n      } else {\n        for (const url of job.urls) {\n          const html = await client.scrape(url);\n          const data = job.parser(html);\n          await saveToDatabase(job.name, data);\n        }\n      }\n    });\n  }\n}\n```\n\n### Step 3: Environment Configuration\n\n```json\n\u002F\u002F config\u002Fzones.json\n{\n  \"development\": {\n    \"web_unlocker\": \"web_unlocker_dev\",\n    \"scraping_browser\": \"scraping_browser_dev\",\n    \"api_datasets\": true\n  },\n  \"production\": {\n    \"web_unlocker\": \"web_unlocker_prod\",\n    \"scraping_browser\": \"scraping_browser_prod\",\n    \"api_datasets\": true\n  }\n}\n```\n\n## Decision Matrix\n\n| Scenario | Product | Why |\n|----------|---------|-----|\n| Simple HTML pages | Web Unlocker | Cheapest, fastest |\n| JavaScript SPA | Scraping Browser | Needs browser rendering |\n| Search results | SERP API | Pre-parsed JSON output |\n| 1000+ URLs one-time | Web Scraper API | Async, handles parallelism |\n| Amazon\u002FLinkedIn\u002Fetc. | Pre-built Datasets | No code needed |\n| Login-required pages | Scraping Browser + sticky session | Session persistence |\n\n## Output\n\n- Multi-product Bright Data client\n- Domain-specific scrapers with parsers\n- Cron-based scraping pipeline\n- Environment-isolated zone configuration\n\n## Error Handling\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Mixed product confusion | Wrong zone for task | Use decision matrix above |\n| Circular dependencies | Tight coupling | Keep scraper layer separate from proxy layer |\n| Test pollution | Shared mocks | Use dependency injection |\n| Config mismatch | Wrong environment | Load zone config from `zones.json` |\n\n## Resources\n\n- [Bright Data Products Overview](https:\u002F\u002Fbrightdata.com\u002Fproducts)\n- [Scraping Browser](https:\u002F\u002Fdocs.brightdata.com\u002Fscraping-automation\u002Fscraping-browser\u002Foverview)\n- [Web Scraper API](https:\u002F\u002Fdocs.brightdata.com\u002Fscraping-automation\u002Fweb-data-apis\u002Fweb-scraper-api\u002Foverview)\n- [SERP API](https:\u002F\u002Fdocs.brightdata.com\u002Fscraping-automation\u002Fserp-api\u002Foverview)\n\n## Next Steps\n\nFor multi-environment setup, see `brightdata-deploy-integration`.\n\n",{"name":5,"tags":49,"author":51,"license":15,"version":52,"description":53,"allowed-tools":54,"compatible-with":55},[50,39,36,26],"saas","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Implement Bright Data reference architecture with best-practice project layout.\nUse when designing new Bright Data integrations, reviewing project structure,\nor establishing architecture standards for Bright Data applications.\nTrigger with phrases like \"brightdata architecture\", \"brightdata best practices\",\n\"brightdata project structure\", \"how to organize brightdata\", \"brightdata layout\".\n","Read, Grep","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fbrightdata-reference-architecture",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":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill brightdata-reference-architecture",{"tool":71,"command":72},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill brightdata-reference-architecture",{"tool":74,"command":75},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill brightdata-reference-architecture","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fbrightdata-reference-architecture\u002FSKILL.md",true,[],[80,94,104,113,119,126],{"skillNo":81,"name":82,"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":83,"categories":84,"keywords":90,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[91,92,93],"model","model hierarchy","model hierarchy skill",{"skillNo":95,"name":96,"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":97,"categories":98,"keywords":100,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[99],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[101,102,103],"MCP","zoom","zoom mcp",{"skillNo":105,"name":106,"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":107,"categories":108,"keywords":109,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[110,111,112,102],"sdk","zoom apps sdk","apps",{"skillNo":114,"name":115,"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":116,"categories":117,"keywords":118,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[115],{"skillNo":120,"name":121,"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":122,"categories":123,"keywords":125,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[124],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[121],{"skillNo":127,"name":128,"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":129,"categories":130,"keywords":131,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[128]]