[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M717WCC2DTDXHS28NPXHJ2JS":3,"skill-same:01M717WCC2DTDXHS28NPXHJ2JS":59},{"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":18,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":14,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M717WCC2DTDXHS28NPXHJ2JS","azure-ai-translation-ts",null,"Text and document translation with REST-style clients.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fazure-ai-translation-ts\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"azure ai","azure","azure ai translation ts","translation","ai translation","REST","text","document","community","style","clients","with","unknown","2026","2026-11-10 10:12:30",false,"---\nname: azure-ai-translation-ts\ndescription: \"Text and document translation with REST-style clients.\"\nrisk: unknown\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Azure Translation SDKs for TypeScript\n\nText and document translation with REST-style clients.\n\n## Installation\n\n```bash\n# Text translation\nnpm install @azure-rest\u002Fai-translation-text @azure\u002Fidentity\n\n# Document translation\nnpm install @azure-rest\u002Fai-translation-document @azure\u002Fidentity\n```\n\n## Environment Variables\n\n```bash\nTRANSLATOR_ENDPOINT=https:\u002F\u002Fapi.cognitive.microsofttranslator.com\nTRANSLATOR_SUBSCRIPTION_KEY=\u003Cyour-api-key>\nTRANSLATOR_REGION=\u003Cyour-region>  # e.g., westus, eastus\n```\n\n## Text Translation Client\n\n### Authentication\n\n```typescript\nimport TextTranslationClient, { TranslatorCredential } from \"@azure-rest\u002Fai-translation-text\";\n\n\u002F\u002F API Key + Region\nconst credential: TranslatorCredential = {\n  key: process.env.TRANSLATOR_SUBSCRIPTION_KEY!,\n  region: process.env.TRANSLATOR_REGION!,\n};\nconst client = TextTranslationClient(process.env.TRANSLATOR_ENDPOINT!, credential);\n\n\u002F\u002F Or just credential (uses global endpoint)\nconst client2 = TextTranslationClient(credential);\n```\n\n### Translate Text\n\n```typescript\nimport TextTranslationClient, { isUnexpected } from \"@azure-rest\u002Fai-translation-text\";\n\nconst response = await client.path(\"\u002Ftranslate\").post({\n  body: {\n    inputs: [\n      {\n        text: \"Hello, how are you?\",\n        language: \"en\",  \u002F\u002F source (optional, auto-detect)\n        targets: [\n          { language: \"es\" },\n          { language: \"fr\" },\n        ],\n      },\n    ],\n  },\n});\n\nif (isUnexpected(response)) {\n  throw response.body.error;\n}\n\nfor (const result of response.body.value) {\n  for (const translation of result.translations) {\n    console.log(`${translation.language}: ${translation.text}`);\n  }\n}\n```\n\n### Translate with Options\n\n```typescript\nconst response = await client.path(\"\u002Ftranslate\").post({\n  body: {\n    inputs: [\n      {\n        text: \"Hello world\",\n        language: \"en\",\n        textType: \"Plain\",  \u002F\u002F or \"Html\"\n        targets: [\n          {\n            language: \"de\",\n            profanityAction: \"NoAction\",  \u002F\u002F \"Marked\" | \"Deleted\"\n            tone: \"formal\",  \u002F\u002F LLM-specific\n          },\n        ],\n      },\n    ],\n  },\n});\n```\n\n### Get Supported Languages\n\n```typescript\nconst response = await client.path(\"\u002Flanguages\").get();\n\nif (isUnexpected(response)) {\n  throw response.body.error;\n}\n\n\u002F\u002F Translation languages\nfor (const [code, lang] of Object.entries(response.body.translation || {})) {\n  console.log(`${code}: ${lang.name} (${lang.nativeName})`);\n}\n```\n\n### Transliterate\n\n```typescript\nconst response = await client.path(\"\u002Ftransliterate\").post({\n  body: { inputs: [{ text: \"这是个测试\" }] },\n  queryParameters: {\n    language: \"zh-Hans\",\n    fromScript: \"Hans\",\n    toScript: \"Latn\",\n  },\n});\n\nif (!isUnexpected(response)) {\n  for (const t of response.body.value) {\n    console.log(`${t.script}: ${t.text}`);  \u002F\u002F Latn: zhè shì gè cè shì\n  }\n}\n```\n\n### Detect Language\n\n```typescript\nconst response = await client.path(\"\u002Fdetect\").post({\n  body: { inputs: [{ text: \"Bonjour le monde\" }] },\n});\n\nif (!isUnexpected(response)) {\n  for (const result of response.body.value) {\n    console.log(`Language: ${result.language}, Score: ${result.score}`);\n  }\n}\n```\n\n## Document Translation Client\n\n### Authentication\n\n```typescript\nimport DocumentTranslationClient from \"@azure-rest\u002Fai-translation-document\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\nconst endpoint = \"https:\u002F\u002F\u003Ctranslator>.cognitiveservices.azure.com\";\n\n\u002F\u002F TokenCredential\nconst client = DocumentTranslationClient(endpoint, new DefaultAzureCredential());\n\n\u002F\u002F API Key\nconst client2 = DocumentTranslationClient(endpoint, { key: \"\u003Capi-key>\" });\n```\n\n### Single Document Translation\n\n```typescript\nimport DocumentTranslationClient from \"@azure-rest\u002Fai-translation-document\";\nimport { writeFile } from \"node:fs\u002Fpromises\";\n\nconst response = await client.path(\"\u002Fdocument:translate\").post({\n  queryParameters: {\n    targetLanguage: \"es\",\n    sourceLanguage: \"en\",  \u002F\u002F optional\n  },\n  contentType: \"multipart\u002Fform-data\",\n  body: [\n    {\n      name: \"document\",\n      body: \"Hello, this is a test document.\",\n      filename: \"test.txt\",\n      contentType: \"text\u002Fplain\",\n    },\n  ],\n}).asNodeStream();\n\nif (response.status === \"200\") {\n  await writeFile(\"translated.txt\", response.body);\n}\n```\n\n### Batch Document Translation\n\n```typescript\nimport { ContainerSASPermissions, BlobServiceClient } from \"@azure\u002Fstorage-blob\";\n\n\u002F\u002F Generate SAS URLs for source and target containers\nconst sourceSas = await sourceContainer.generateSasUrl({\n  permissions: ContainerSASPermissions.parse(\"rl\"),\n  expiresOn: new Date(Date.now() + 24 * 60 * 60 * 1000),\n});\n\nconst targetSas = await targetContainer.generateSasUrl({\n  permissions: ContainerSASPermissions.parse(\"rwl\"),\n  expiresOn: new Date(Date.now() + 24 * 60 * 60 * 1000),\n});\n\n\u002F\u002F Start batch translation\nconst response = await client.path(\"\u002Fdocument\u002Fbatches\").post({\n  body: {\n    inputs: [\n      {\n        source: { sourceUrl: sourceSas },\n        targets: [\n          { targetUrl: targetSas, language: \"fr\" },\n        ],\n      },\n    ],\n  },\n});\n\n\u002F\u002F Get operation ID from header\nconst operationId = new URL(response.headers[\"operation-location\"])\n  .pathname.split(\"\u002F\").pop();\n```\n\n### Get Translation Status\n\n```typescript\nimport { isUnexpected, paginate } from \"@azure-rest\u002Fai-translation-document\";\n\nconst statusResponse = await client.path(\"\u002Fdocument\u002Fbatches\u002F{id}\", operationId).get();\n\nif (!isUnexpected(statusResponse)) {\n  const status = statusResponse.body;\n  console.log(`Status: ${status.status}`);\n  console.log(`Total: ${status.summary.total}`);\n  console.log(`Success: ${status.summary.success}`);\n}\n\n\u002F\u002F List documents with pagination\nconst docsResponse = await client.path(\"\u002Fdocument\u002Fbatches\u002F{id}\u002Fdocuments\", operationId).get();\nconst documents = paginate(client, docsResponse);\n\nfor await (const doc of documents) {\n  console.log(`${doc.id}: ${doc.status}`);\n}\n```\n\n### Get Supported Formats\n\n```typescript\nconst response = await client.path(\"\u002Fdocument\u002Fformats\").get();\n\nif (!isUnexpected(response)) {\n  for (const format of response.body.value) {\n    console.log(`${format.format}: ${format.fileExtensions.join(\", \")}`);\n  }\n}\n```\n\n## Key Types\n\n```typescript\n\u002F\u002F Text Translation\nimport type {\n  TranslatorCredential,\n  TranslatorTokenCredential,\n} from \"@azure-rest\u002Fai-translation-text\";\n\n\u002F\u002F Document Translation\nimport type {\n  DocumentTranslateParameters,\n  StartTranslationDetails,\n  TranslationStatus,\n} from \"@azure-rest\u002Fai-translation-document\";\n```\n\n## Best Practices\n\n1. **Auto-detect source** - Omit `language` parameter to auto-detect\n2. **Batch requests** - Translate multiple texts in one call for efficiency\n3. **Use SAS tokens** - For document translation, use time-limited SAS URLs\n4. **Handle errors** - Always check `isUnexpected(response)` before accessing body\n5. **Regional endpoints** - Use regional endpoints for lower latency\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure Translation SDKs for TypeScript\n\nText and document translation with REST-style clients.\n\n## Installation\n\n```bash\n# Text translation\nnpm install @azure-rest\u002Fai-translation-text @azure\u002Fidentity\n\n# Document translation\nnpm install @azure-rest\u002Fai-translation-document @azure\u002Fidentity\n```\n\n## Environment Variables\n\n```bash\nTRANSLATOR_ENDPOINT=https:\u002F\u002Fapi.cognitive.microsofttranslator.com\nTRANSLATOR_SUBSCRIPTION_KEY=\u003Cyour-api-key>\nTRANSLATOR_REGION=\u003Cyour-region>  # e.g., westus, eastus\n```\n\n## Text Translation Client\n\n### Authentication\n\n```typescript\nimport TextTranslationClient, { TranslatorCredential } from \"@azure-rest\u002Fai-translation-text\";\n\n\u002F\u002F API Key + Region\nconst credential: TranslatorCredential = {\n  key: process.env.TRANSLATOR_SUBSCRIPTION_KEY!,\n  region: process.env.TRANSLATOR_REGION!,\n};\nconst client = TextTranslationClient(process.env.TRANSLATOR_ENDPOINT!, credential);\n\n\u002F\u002F Or just credential (uses global endpoint)\nconst client2 = TextTranslationClient(credential);\n```\n\n### Translate Text\n\n```typescript\nimport TextTranslationClient, { isUnexpected } from \"@azure-rest\u002Fai-translation-text\";\n\nconst response = await client.path(\"\u002Ftranslate\").post({\n  body: {\n    inputs: [\n      {\n        text: \"Hello, how are you?\",\n        language: \"en\",  \u002F\u002F source (optional, auto-detect)\n        targets: [\n          { language: \"es\" },\n          { language: \"fr\" },\n        ],\n      },\n    ],\n  },\n});\n\nif (isUnexpected(response)) {\n  throw response.body.error;\n}\n\nfor (const result of response.body.value) {\n  for (const translation of result.translations) {\n    console.log(`${translation.language}: ${translation.text}`);\n  }\n}\n```\n\n### Translate with Options\n\n```typescript\nconst response = await client.path(\"\u002Ftranslate\").post({\n  body: {\n    inputs: [\n      {\n        text: \"Hello world\",\n        language: \"en\",\n        textType: \"Plain\",  \u002F\u002F or \"Html\"\n        targets: [\n          {\n            language: \"de\",\n            profanityAction: \"NoAction\",  \u002F\u002F \"Marked\" | \"Deleted\"\n            tone: \"formal\",  \u002F\u002F LLM-specific\n          },\n        ],\n      },\n    ],\n  },\n});\n```\n\n### Get Supported Languages\n\n```typescript\nconst response = await client.path(\"\u002Flanguages\").get();\n\nif (isUnexpected(response)) {\n  throw response.body.error;\n}\n\n\u002F\u002F Translation languages\nfor (const [code, lang] of Object.entries(response.body.translation || {})) {\n  console.log(`${code}: ${lang.name} (${lang.nativeName})`);\n}\n```\n\n### Transliterate\n\n```typescript\nconst response = await client.path(\"\u002Ftransliterate\").post({\n  body: { inputs: [{ text: \"这是个测试\" }] },\n  queryParameters: {\n    language: \"zh-Hans\",\n    fromScript: \"Hans\",\n    toScript: \"Latn\",\n  },\n});\n\nif (!isUnexpected(response)) {\n  for (const t of response.body.value) {\n    console.log(`${t.script}: ${t.text}`);  \u002F\u002F Latn: zhè shì gè cè shì\n  }\n}\n```\n\n### Detect Language\n\n```typescript\nconst response = await client.path(\"\u002Fdetect\").post({\n  body: { inputs: [{ text: \"Bonjour le monde\" }] },\n});\n\nif (!isUnexpected(response)) {\n  for (const result of response.body.value) {\n    console.log(`Language: ${result.language}, Score: ${result.score}`);\n  }\n}\n```\n\n## Document Translation Client\n\n### Authentication\n\n```typescript\nimport DocumentTranslationClient from \"@azure-rest\u002Fai-translation-document\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\nconst endpoint = \"https:\u002F\u002F\u003Ctranslator>.cognitiveservices.azure.com\";\n\n\u002F\u002F TokenCredential\nconst client = DocumentTranslationClient(endpoint, new DefaultAzureCredential());\n\n\u002F\u002F API Key\nconst client2 = DocumentTranslationClient(endpoint, { key: \"\u003Capi-key>\" });\n```\n\n### Single Document Translation\n\n```typescript\nimport DocumentTranslationClient from \"@azure-rest\u002Fai-translation-document\";\nimport { writeFile } from \"node:fs\u002Fpromises\";\n\nconst response = await client.path(\"\u002Fdocument:translate\").post({\n  queryParameters: {\n    targetLanguage: \"es\",\n    sourceLanguage: \"en\",  \u002F\u002F optional\n  },\n  contentType: \"multipart\u002Fform-data\",\n  body: [\n    {\n      name: \"document\",\n      body: \"Hello, this is a test document.\",\n      filename: \"test.txt\",\n      contentType: \"text\u002Fplain\",\n    },\n  ],\n}).asNodeStream();\n\nif (response.status === \"200\") {\n  await writeFile(\"translated.txt\", response.body);\n}\n```\n\n### Batch Document Translation\n\n```typescript\nimport { ContainerSASPermissions, BlobServiceClient } from \"@azure\u002Fstorage-blob\";\n\n\u002F\u002F Generate SAS URLs for source and target containers\nconst sourceSas = await sourceContainer.generateSasUrl({\n  permissions: ContainerSASPermissions.parse(\"rl\"),\n  expiresOn: new Date(Date.now() + 24 * 60 * 60 * 1000),\n});\n\nconst targetSas = await targetContainer.generateSasUrl({\n  permissions: ContainerSASPermissions.parse(\"rwl\"),\n  expiresOn: new Date(Date.now() + 24 * 60 * 60 * 1000),\n});\n\n\u002F\u002F Start batch translation\nconst response = await client.path(\"\u002Fdocument\u002Fbatches\").post({\n  body: {\n    inputs: [\n      {\n        source: { sourceUrl: sourceSas },\n        targets: [\n          { targetUrl: targetSas, language: \"fr\" },\n        ],\n      },\n    ],\n  },\n});\n\n\u002F\u002F Get operation ID from header\nconst operationId = new URL(response.headers[\"operation-location\"])\n  .pathname.split(\"\u002F\").pop();\n```\n\n### Get Translation Status\n\n```typescript\nimport { isUnexpected, paginate } from \"@azure-rest\u002Fai-translation-document\";\n\nconst statusResponse = await client.path(\"\u002Fdocument\u002Fbatches\u002F{id}\", operationId).get();\n\nif (!isUnexpected(statusResponse)) {\n  const status = statusResponse.body;\n  console.log(`Status: ${status.status}`);\n  console.log(`Total: ${status.summary.total}`);\n  console.log(`Success: ${status.summary.success}`);\n}\n\n\u002F\u002F List documents with pagination\nconst docsResponse = await client.path(\"\u002Fdocument\u002Fbatches\u002F{id}\u002Fdocuments\", operationId).get();\nconst documents = paginate(client, docsResponse);\n\nfor await (const doc of documents) {\n  console.log(`${doc.id}: ${doc.status}`);\n}\n```\n\n### Get Supported Formats\n\n```typescript\nconst response = await client.path(\"\u002Fdocument\u002Fformats\").get();\n\nif (!isUnexpected(response)) {\n  for (const format of response.body.value) {\n    console.log(`${format.format}: ${format.fileExtensions.join(\", \")}`);\n  }\n}\n```\n\n## Key Types\n\n```typescript\n\u002F\u002F Text Translation\nimport type {\n  TranslatorCredential,\n  TranslatorTokenCredential,\n} from \"@azure-rest\u002Fai-translation-text\";\n\n\u002F\u002F Document Translation\nimport type {\n  DocumentTranslateParameters,\n  StartTranslationDetails,\n  TranslationStatus,\n} from \"@azure-rest\u002Fai-translation-document\";\n```\n\n## Best Practices\n\n1. **Auto-detect source** - Omit `language` parameter to auto-detect\n2. **Batch requests** - Translate multiple texts in one call for efficiency\n3. **Use SAS tokens** - For document translation, use time-limited SAS URLs\n4. **Handle errors** - Always check `isUnexpected(response)` before accessing body\n5. **Regional endpoints** - Use regional endpoints for lower latency\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":31,"source":27,"date_added":38,"description":7},"2026-02-27","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fglobal\u002Fazure-ai-translation-ts","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill azure-ai-translation-ts",{"tool":51,"command":52},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill azure-ai-translation-ts",{"tool":54,"command":55},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill azure-ai-translation-ts","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fazure-ai-translation-ts\u002FSKILL.md",true,[],[60,83,109,119,132,151],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":71,"publishedAt":33},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[66],{"categoryNo":67,"categoryName":68,"taxonomyType":69,"taxonomyTypeDesc":70},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[72,73,74,75,76,77,78,79,80,81,82,30],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch",{"skillNo":84,"name":85,"nameZh":6,"description":86,"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":89,"publishedAt":33},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[90,91,92,93,94,95,74,96,97,98,99,100,101,102,103,104,105,106,107,108],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across","api",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":33},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[116,117,90,101,102,103,104,94,74,106,118,107,108,100,98,97,96,105,95,93],"trend radar","radar","pulse",{"skillNo":120,"name":121,"nameZh":6,"description":122,"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":125,"publishedAt":33},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[126,127,128,129,130,131],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":143,"publishedAt":33},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[138],{"categoryNo":139,"categoryName":140,"taxonomyType":141,"taxonomyTypeDesc":142},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[134,80,144,145,146,30,101,147,148,149,92,150,105],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":33},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[153,158,159,160,105,161,148,162,163,164,165,166],"status","play","go","latest","github","discover","control","cmd","volume"]