[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F6E8P7AP0T46BQKPWA3VM5":3,"skill-same:01M6F6E8P7AP0T46BQKPWA3VM5":82},{"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":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":64,"ownerHtmlUrl":65,"ownerBlogUrl":6,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M6F6E8P7AP0T46BQKPWA3VM5","adobe-core-workflow-b",null,"Execute Adobe PDF Services workflow: create PDFs from HTML\u002FDOCX, extract text\u002Ftables,\ndocument generation from templates, and PDF-to-Markdown conversion.\nUse when building document automation, extracting content from PDFs,\nor generating dynamic reports.\nTrigger with phrases like \"adobe pdf\", \"pdf services\", \"extract pdf\",\n\"create pdf\", \"document generation\", \"pdf to markdown\".","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\u002Fadobe-core-workflow-b\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"adobe core workflow b","adobe","workflow","core","read","extracting","pdf to markdown","io","reports","conversion","edit","write","docx","text","markdown","Bash","code","create","design","PDF","2026-11-10 10:12:30",false,"---\nname: adobe-core-workflow-b\ndescription: |\n  Execute Adobe PDF Services workflow: create PDFs from HTML\u002FDOCX, extract text\u002Ftables,\n  document generation from templates, and PDF-to-Markdown conversion.\n  Use when building document automation, extracting content from PDFs,\n  or generating dynamic reports.\n  Trigger with phrases like \"adobe pdf\", \"pdf services\", \"extract pdf\",\n  \"create pdf\", \"document generation\", \"pdf to markdown\".\nallowed-tools: Read, Write, Edit, Bash(npm:*), Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, design, adobe]\ncompatible-with: claude-code\n---\n\n# Adobe Core Workflow B — PDF Services\n\n## Overview\n\nDocument automation using Adobe PDF Services API: create PDFs from HTML\u002FDOCX, extract structured text and tables with Sensei AI, generate documents from Word templates with JSON data, and convert PDFs to LLM-friendly Markdown.\n\n## Prerequisites\n\n- Completed `adobe-install-auth` with PDF Services credentials\n- `npm install @adobe\u002Fpdfservices-node-sdk` (v4.x+)\n- 500 free document transactions\u002Fmonth on the free tier\n\n## Instructions\n\n### Step 1: Create PDF from HTML\n\n```typescript\n\u002F\u002F src\u002Fworkflows\u002Fpdf-create.ts\nimport {\n  ServicePrincipalCredentials,\n  PDFServices,\n  MimeType,\n  CreatePDFJob,\n  CreatePDFResult,\n} from '@adobe\u002Fpdfservices-node-sdk';\nimport * as fs from 'fs';\n\nconst credentials = new ServicePrincipalCredentials({\n  clientId: process.env.ADOBE_CLIENT_ID!,\n  clientSecret: process.env.ADOBE_CLIENT_SECRET!,\n});\nconst pdfServices = new PDFServices({ credentials });\n\nexport async function htmlToPdf(htmlPath: string, outputPath: string): Promise\u003Cvoid> {\n  const inputStream = fs.createReadStream(htmlPath);\n  const inputAsset = await pdfServices.upload({\n    readStream: inputStream,\n    mimeType: MimeType.HTML,\n  });\n\n  const job = new CreatePDFJob({ inputAsset });\n  const pollingURL = await pdfServices.submit({ job });\n  const result = await pdfServices.getJobResult({\n    pollingURL,\n    resultType: CreatePDFResult,\n  });\n\n  const resultAsset = result.result!.asset;\n  const streamAsset = await pdfServices.getContent({ asset: resultAsset });\n  const output = fs.createWriteStream(outputPath);\n  streamAsset.readStream.pipe(output);\n\n  await new Promise((resolve, reject) => {\n    output.on('finish', resolve);\n    output.on('error', reject);\n  });\n\n  console.log(`PDF created: ${outputPath}`);\n}\n```\n\n### Step 2: Extract Text and Tables from PDF (Sensei AI)\n\n```typescript\n\u002F\u002F src\u002Fworkflows\u002Fpdf-extract.ts\nimport {\n  PDFServices,\n  MimeType,\n  ExtractPDFParams,\n  ExtractElementType,\n  ExtractPDFJob,\n  ExtractPDFResult,\n  ExtractRenditionsElementType,\n} from '@adobe\u002Fpdfservices-node-sdk';\nimport * as fs from 'fs';\nimport AdmZip from 'adm-zip';\n\nexport async function extractPdfContent(\n  pdfPath: string,\n  options?: { tables?: boolean; figures?: boolean }\n): Promise\u003C{ text: string; tables: any[]; }> {\n  const inputStream = fs.createReadStream(pdfPath);\n  const inputAsset = await pdfServices.upload({\n    readStream: inputStream,\n    mimeType: MimeType.PDF,\n  });\n\n  const elements = [ExtractElementType.TEXT];\n  if (options?.tables !== false) elements.push(ExtractElementType.TABLES);\n\n  const params = new ExtractPDFParams({\n    elementsToExtract: elements,\n    ...(options?.figures && {\n      elementsToExtractRenditions: [ExtractRenditionsElementType.FIGURES],\n    }),\n  });\n\n  const job = new ExtractPDFJob({ inputAsset, params });\n  const pollingURL = await pdfServices.submit({ job });\n  const result = await pdfServices.getJobResult({\n    pollingURL,\n    resultType: ExtractPDFResult,\n  });\n\n  \u002F\u002F Download and parse the result ZIP\n  const resultAsset = result.result!.resource;\n  const streamAsset = await pdfServices.getContent({ asset: resultAsset });\n  const chunks: Buffer[] = [];\n  for await (const chunk of streamAsset.readStream) {\n    chunks.push(Buffer.from(chunk));\n  }\n\n  const zip = new AdmZip(Buffer.concat(chunks));\n  const structuredData = JSON.parse(\n    zip.readAsText('structuredData.json')\n  );\n\n  \u002F\u002F Parse text elements\n  const textElements = structuredData.elements\n    .filter((el: any) => el.Text)\n    .map((el: any) => el.Text);\n\n  \u002F\u002F Parse table elements\n  const tableElements = structuredData.elements\n    .filter((el: any) => el.Path?.includes('\u002FTable'));\n\n  return { text: textElements.join('\\n'), tables: tableElements };\n}\n```\n\n### Step 3: Document Generation from Word Template\n\n```typescript\n\u002F\u002F src\u002Fworkflows\u002Fpdf-docgen.ts\nimport {\n  PDFServices,\n  MimeType,\n  DocumentMergeJob,\n  DocumentMergeParams,\n  DocumentMergeResult,\n  OutputFormat,\n} from '@adobe\u002Fpdfservices-node-sdk';\nimport * as fs from 'fs';\n\nexport async function generateDocument(\n  templatePath: string,   \u002F\u002F .docx Word template with {{tags}}\n  data: Record\u003Cstring, any>,\n  outputPath: string,\n  format: 'pdf' | 'docx' = 'pdf'\n): Promise\u003Cvoid> {\n  const inputStream = fs.createReadStream(templatePath);\n  const inputAsset = await pdfServices.upload({\n    readStream: inputStream,\n    mimeType: MimeType.DOCX,\n  });\n\n  const params = new DocumentMergeParams({\n    jsonDataForMerge: data,\n    outputFormat: format === 'pdf' ? OutputFormat.PDF : OutputFormat.DOCX,\n  });\n\n  const job = new DocumentMergeJob({ inputAsset, params });\n  const pollingURL = await pdfServices.submit({ job });\n  const result = await pdfServices.getJobResult({\n    pollingURL,\n    resultType: DocumentMergeResult,\n  });\n\n  const resultAsset = result.result!.asset;\n  const streamAsset = await pdfServices.getContent({ asset: resultAsset });\n  const output = fs.createWriteStream(outputPath);\n  streamAsset.readStream.pipe(output);\n\n  console.log(`Document generated: ${outputPath}`);\n}\n\n\u002F\u002F Usage: Invoice generation\n\u002F\u002F await generateDocument('.\u002Ftemplates\u002Finvoice.docx', {\n\u002F\u002F   company: 'Acme Corp',\n\u002F\u002F   invoiceNumber: 'INV-2026-001',\n\u002F\u002F   items: [\n\u002F\u002F     { description: 'API Integration', quantity: 1, price: 5000 },\n\u002F\u002F     { description: 'Support Plan', quantity: 12, price: 200 },\n\u002F\u002F   ],\n\u002F\u002F   total: '$7,400.00',\n\u002F\u002F }, '.\u002Foutput\u002Finvoice.pdf');\n```\n\n### Step 4: PDF to Markdown (LLM-Friendly)\n\n```typescript\n\u002F\u002F PDF Extract API supports structured output for LLM ingestion\nexport async function pdfToMarkdown(pdfPath: string): Promise\u003Cstring> {\n  const { text } = await extractPdfContent(pdfPath, { tables: false });\n\n  \u002F\u002F The structuredData.json includes element paths indicating heading levels\n  \u002F\u002F For full Markdown fidelity, parse element Paths:\n  \u002F\u002F   \u002FH1 -> # heading, \u002FH2 -> ## heading, \u002FL\u002FLI -> bullet\n  return text;\n}\n```\n\n## Output\n\n- PDF files created from HTML, DOCX, or other formats\n- Structured JSON with text, tables, and figures extracted from PDFs\n- Dynamic documents generated from Word templates with JSON data\n- Markdown text extracted from PDFs for LLM consumption\n\n## Error Handling\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `DISQUALIFIED` | Encrypted or DRM-protected PDF | Remove encryption before processing |\n| `BAD_PDF` | Corrupted PDF file | Validate PDF with `pdfinfo` before upload |\n| `TIMEOUT` | Large PDF (100+ pages) | Split into smaller PDFs first |\n| `QUOTA_EXCEEDED` | Free tier limit (500 tx\u002Fmonth) | Upgrade plan or wait for monthly reset |\n| `UNSUPPORTED_MEDIA_TYPE` | Wrong MimeType for input | Match MimeType to actual file format |\n\n## Resources\n\n- [PDF Services API How-Tos](https:\u002F\u002Fdeveloper.adobe.com\u002Fdocument-services\u002Fdocs\u002Foverview\u002Fpdf-services-api\u002Fhowtos\u002F)\n- [Document Generation API](https:\u002F\u002Fdeveloper.adobe.com\u002Fdocument-services\u002Fdocs\u002Foverview\u002Fdocument-generation-api\u002F)\n- [PDF Extract API](https:\u002F\u002Fdeveloper.adobe.com\u002Fdocument-services\u002Fdocs\u002Foverview\u002Fpdf-extract-api\u002F)\n- [PDF Services Node SDK Samples](https:\u002F\u002Fgithub.com\u002Fadobe\u002Fpdfservices-node-sdk-samples)\n\n## Next Steps\n\nFor common errors, see `adobe-common-errors`.\n\n","# Adobe Core Workflow B — PDF Services\n\n## Overview\n\nDocument automation using Adobe PDF Services API: create PDFs from HTML\u002FDOCX, extract structured text and tables with Sensei AI, generate documents from Word templates with JSON data, and convert PDFs to LLM-friendly Markdown.\n\n## Prerequisites\n\n- Completed `adobe-install-auth` with PDF Services credentials\n- `npm install @adobe\u002Fpdfservices-node-sdk` (v4.x+)\n- 500 free document transactions\u002Fmonth on the free tier\n\n## Instructions\n\n### Step 1: Create PDF from HTML\n\n```typescript\n\u002F\u002F src\u002Fworkflows\u002Fpdf-create.ts\nimport {\n  ServicePrincipalCredentials,\n  PDFServices,\n  MimeType,\n  CreatePDFJob,\n  CreatePDFResult,\n} from '@adobe\u002Fpdfservices-node-sdk';\nimport * as fs from 'fs';\n\nconst credentials = new ServicePrincipalCredentials({\n  clientId: process.env.ADOBE_CLIENT_ID!,\n  clientSecret: process.env.ADOBE_CLIENT_SECRET!,\n});\nconst pdfServices = new PDFServices({ credentials });\n\nexport async function htmlToPdf(htmlPath: string, outputPath: string): Promise\u003Cvoid> {\n  const inputStream = fs.createReadStream(htmlPath);\n  const inputAsset = await pdfServices.upload({\n    readStream: inputStream,\n    mimeType: MimeType.HTML,\n  });\n\n  const job = new CreatePDFJob({ inputAsset });\n  const pollingURL = await pdfServices.submit({ job });\n  const result = await pdfServices.getJobResult({\n    pollingURL,\n    resultType: CreatePDFResult,\n  });\n\n  const resultAsset = result.result!.asset;\n  const streamAsset = await pdfServices.getContent({ asset: resultAsset });\n  const output = fs.createWriteStream(outputPath);\n  streamAsset.readStream.pipe(output);\n\n  await new Promise((resolve, reject) => {\n    output.on('finish', resolve);\n    output.on('error', reject);\n  });\n\n  console.log(`PDF created: ${outputPath}`);\n}\n```\n\n### Step 2: Extract Text and Tables from PDF (Sensei AI)\n\n```typescript\n\u002F\u002F src\u002Fworkflows\u002Fpdf-extract.ts\nimport {\n  PDFServices,\n  MimeType,\n  ExtractPDFParams,\n  ExtractElementType,\n  ExtractPDFJob,\n  ExtractPDFResult,\n  ExtractRenditionsElementType,\n} from '@adobe\u002Fpdfservices-node-sdk';\nimport * as fs from 'fs';\nimport AdmZip from 'adm-zip';\n\nexport async function extractPdfContent(\n  pdfPath: string,\n  options?: { tables?: boolean; figures?: boolean }\n): Promise\u003C{ text: string; tables: any[]; }> {\n  const inputStream = fs.createReadStream(pdfPath);\n  const inputAsset = await pdfServices.upload({\n    readStream: inputStream,\n    mimeType: MimeType.PDF,\n  });\n\n  const elements = [ExtractElementType.TEXT];\n  if (options?.tables !== false) elements.push(ExtractElementType.TABLES);\n\n  const params = new ExtractPDFParams({\n    elementsToExtract: elements,\n    ...(options?.figures && {\n      elementsToExtractRenditions: [ExtractRenditionsElementType.FIGURES],\n    }),\n  });\n\n  const job = new ExtractPDFJob({ inputAsset, params });\n  const pollingURL = await pdfServices.submit({ job });\n  const result = await pdfServices.getJobResult({\n    pollingURL,\n    resultType: ExtractPDFResult,\n  });\n\n  \u002F\u002F Download and parse the result ZIP\n  const resultAsset = result.result!.resource;\n  const streamAsset = await pdfServices.getContent({ asset: resultAsset });\n  const chunks: Buffer[] = [];\n  for await (const chunk of streamAsset.readStream) {\n    chunks.push(Buffer.from(chunk));\n  }\n\n  const zip = new AdmZip(Buffer.concat(chunks));\n  const structuredData = JSON.parse(\n    zip.readAsText('structuredData.json')\n  );\n\n  \u002F\u002F Parse text elements\n  const textElements = structuredData.elements\n    .filter((el: any) => el.Text)\n    .map((el: any) => el.Text);\n\n  \u002F\u002F Parse table elements\n  const tableElements = structuredData.elements\n    .filter((el: any) => el.Path?.includes('\u002FTable'));\n\n  return { text: textElements.join('\\n'), tables: tableElements };\n}\n```\n\n### Step 3: Document Generation from Word Template\n\n```typescript\n\u002F\u002F src\u002Fworkflows\u002Fpdf-docgen.ts\nimport {\n  PDFServices,\n  MimeType,\n  DocumentMergeJob,\n  DocumentMergeParams,\n  DocumentMergeResult,\n  OutputFormat,\n} from '@adobe\u002Fpdfservices-node-sdk';\nimport * as fs from 'fs';\n\nexport async function generateDocument(\n  templatePath: string,   \u002F\u002F .docx Word template with {{tags}}\n  data: Record\u003Cstring, any>,\n  outputPath: string,\n  format: 'pdf' | 'docx' = 'pdf'\n): Promise\u003Cvoid> {\n  const inputStream = fs.createReadStream(templatePath);\n  const inputAsset = await pdfServices.upload({\n    readStream: inputStream,\n    mimeType: MimeType.DOCX,\n  });\n\n  const params = new DocumentMergeParams({\n    jsonDataForMerge: data,\n    outputFormat: format === 'pdf' ? OutputFormat.PDF : OutputFormat.DOCX,\n  });\n\n  const job = new DocumentMergeJob({ inputAsset, params });\n  const pollingURL = await pdfServices.submit({ job });\n  const result = await pdfServices.getJobResult({\n    pollingURL,\n    resultType: DocumentMergeResult,\n  });\n\n  const resultAsset = result.result!.asset;\n  const streamAsset = await pdfServices.getContent({ asset: resultAsset });\n  const output = fs.createWriteStream(outputPath);\n  streamAsset.readStream.pipe(output);\n\n  console.log(`Document generated: ${outputPath}`);\n}\n\n\u002F\u002F Usage: Invoice generation\n\u002F\u002F await generateDocument('.\u002Ftemplates\u002Finvoice.docx', {\n\u002F\u002F   company: 'Acme Corp',\n\u002F\u002F   invoiceNumber: 'INV-2026-001',\n\u002F\u002F   items: [\n\u002F\u002F     { description: 'API Integration', quantity: 1, price: 5000 },\n\u002F\u002F     { description: 'Support Plan', quantity: 12, price: 200 },\n\u002F\u002F   ],\n\u002F\u002F   total: '$7,400.00',\n\u002F\u002F }, '.\u002Foutput\u002Finvoice.pdf');\n```\n\n### Step 4: PDF to Markdown (LLM-Friendly)\n\n```typescript\n\u002F\u002F PDF Extract API supports structured output for LLM ingestion\nexport async function pdfToMarkdown(pdfPath: string): Promise\u003Cstring> {\n  const { text } = await extractPdfContent(pdfPath, { tables: false });\n\n  \u002F\u002F The structuredData.json includes element paths indicating heading levels\n  \u002F\u002F For full Markdown fidelity, parse element Paths:\n  \u002F\u002F   \u002FH1 -> # heading, \u002FH2 -> ## heading, \u002FL\u002FLI -> bullet\n  return text;\n}\n```\n\n## Output\n\n- PDF files created from HTML, DOCX, or other formats\n- Structured JSON with text, tables, and figures extracted from PDFs\n- Dynamic documents generated from Word templates with JSON data\n- Markdown text extracted from PDFs for LLM consumption\n\n## Error Handling\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `DISQUALIFIED` | Encrypted or DRM-protected PDF | Remove encryption before processing |\n| `BAD_PDF` | Corrupted PDF file | Validate PDF with `pdfinfo` before upload |\n| `TIMEOUT` | Large PDF (100+ pages) | Split into smaller PDFs first |\n| `QUOTA_EXCEEDED` | Free tier limit (500 tx\u002Fmonth) | Upgrade plan or wait for monthly reset |\n| `UNSUPPORTED_MEDIA_TYPE` | Wrong MimeType for input | Match MimeType to actual file format |\n\n## Resources\n\n- [PDF Services API How-Tos](https:\u002F\u002Fdeveloper.adobe.com\u002Fdocument-services\u002Fdocs\u002Foverview\u002Fpdf-services-api\u002Fhowtos\u002F)\n- [Document Generation API](https:\u002F\u002Fdeveloper.adobe.com\u002Fdocument-services\u002Fdocs\u002Foverview\u002Fdocument-generation-api\u002F)\n- [PDF Extract API](https:\u002F\u002Fdeveloper.adobe.com\u002Fdocument-services\u002Fdocs\u002Foverview\u002Fpdf-extract-api\u002F)\n- [PDF Services Node SDK Samples](https:\u002F\u002Fgithub.com\u002Fadobe\u002Fpdfservices-node-sdk-samples)\n\n## Next Steps\n\nFor common errors, see `adobe-common-errors`.\n\n",{"name":5,"tags":52,"author":54,"license":15,"version":55,"description":56,"allowed-tools":57,"compatible-with":58},[53,45,28],"saas","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Execute Adobe PDF Services workflow: create PDFs from HTML\u002FDOCX, extract text\u002Ftables,\ndocument generation from templates, and PDF-to-Markdown conversion.\nUse when building document automation, extracting content from PDFs,\nor generating dynamic reports.\nTrigger with phrases like \"adobe pdf\", \"pdf services\", \"extract pdf\",\n\"create pdf\", \"document generation\", \"pdf to markdown\".\n","Read, Write, Edit, Bash(npm:*), Grep","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fadobe-core-workflow-b",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":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill adobe-core-workflow-b",{"tool":74,"command":75},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill adobe-core-workflow-b",{"tool":77,"command":78},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill adobe-core-workflow-b","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fadobe-core-workflow-b\u002FSKILL.md",true,[],[83,93,103,112,118,125],{"skillNo":84,"name":85,"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":86,"categories":87,"keywords":89,"publishedAt":47},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[88],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[90,91,92],"model","model hierarchy","model hierarchy skill",{"skillNo":94,"name":95,"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":96,"categories":97,"keywords":99,"publishedAt":47},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[98],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[100,101,102],"MCP","zoom","zoom mcp",{"skillNo":104,"name":105,"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":106,"categories":107,"keywords":108,"publishedAt":47},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[109,110,111,101],"sdk","zoom apps sdk","apps",{"skillNo":113,"name":114,"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":115,"categories":116,"keywords":117,"publishedAt":47},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[114],{"skillNo":119,"name":120,"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":121,"categories":122,"keywords":124,"publishedAt":47},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[123],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[120],{"skillNo":126,"name":127,"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":128,"categories":129,"keywords":130,"publishedAt":47},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[127]]