[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RCW5977QSQDZXH34TM1RG":3,"skill-same:01M71RCW5977QSQDZXH34TM1RG":45},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":14,"categories":15,"keywords":16,"publishedAt":20,"linkOnly":21,"markdownContent":22,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":12,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M71RCW5977QSQDZXH34TM1RG","azure-ai-contentsafety-py",null,"javiertarazon\u002Fide-agente-free-jt7-","javiertarazon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F153141207?v=4","01M71R52TB3S9HXKH6WSNT8A7V","01M71R52VG5KS2DKDDH4GDQ30A",0,"MIT","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fazure-ai-contentsafety-py\u002FSKILL.md",[],[17,18,19],"azure ai","azure","azure ai contentsafety py","2026-11-10 13:02:02",false,"---\nname: azure-ai-contentsafety-py\ndescription: \"|\"\n  Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\n  Triggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\npackage: azure-ai-contentsafety\nrisk: unknown\nsource: community\n---\n\n# Azure AI Content Safety SDK for Python\n\nDetect harmful user-generated and AI-generated content in applications.\n\n## Installation\n\n```bash\npip install azure-ai-contentsafety\n```\n\n## Environment Variables\n\n```bash\nCONTENT_SAFETY_ENDPOINT=https:\u002F\u002F\u003Cresource>.cognitiveservices.azure.com\nCONTENT_SAFETY_KEY=\u003Cyour-api-key>\n```\n\n## Authentication\n\n### API Key\n\n```python\nfrom azure.ai.contentsafety import ContentSafetyClient\nfrom azure.core.credentials import AzureKeyCredential\nimport os\n\nclient = ContentSafetyClient(\n    endpoint=os.environ[\"CONTENT_SAFETY_ENDPOINT\"],\n    credential=AzureKeyCredential(os.environ[\"CONTENT_SAFETY_KEY\"])\n)\n```\n\n### Entra ID\n\n```python\nfrom azure.ai.contentsafety import ContentSafetyClient\nfrom azure.identity import DefaultAzureCredential\n\nclient = ContentSafetyClient(\n    endpoint=os.environ[\"CONTENT_SAFETY_ENDPOINT\"],\n    credential=DefaultAzureCredential()\n)\n```\n\n## Analyze Text\n\n```python\nfrom azure.ai.contentsafety import ContentSafetyClient\nfrom azure.ai.contentsafety.models import AnalyzeTextOptions, TextCategory\nfrom azure.core.credentials import AzureKeyCredential\n\nclient = ContentSafetyClient(endpoint, AzureKeyCredential(key))\n\nrequest = AnalyzeTextOptions(text=\"Your text content to analyze\")\nresponse = client.analyze_text(request)\n\n# Check each category\nfor category in [TextCategory.HATE, TextCategory.SELF_HARM, \n                 TextCategory.SEXUAL, TextCategory.VIOLENCE]:\n    result = next((r for r in response.categories_analysis \n                   if r.category == category), None)\n    if result:\n        print(f\"{category}: severity {result.severity}\")\n```\n\n## Analyze Image\n\n```python\nfrom azure.ai.contentsafety import ContentSafetyClient\nfrom azure.ai.contentsafety.models import AnalyzeImageOptions, ImageData\nfrom azure.core.credentials import AzureKeyCredential\nimport base64\n\nclient = ContentSafetyClient(endpoint, AzureKeyCredential(key))\n\n# From file\nwith open(\"image.jpg\", \"rb\") as f:\n    image_data = base64.b64encode(f.read()).decode(\"utf-8\")\n\nrequest = AnalyzeImageOptions(\n    image=ImageData(content=image_data)\n)\n\nresponse = client.analyze_image(request)\n\nfor result in response.categories_analysis:\n    print(f\"{result.category}: severity {result.severity}\")\n```\n\n### Image from URL\n\n```python\nfrom azure.ai.contentsafety.models import AnalyzeImageOptions, ImageData\n\nrequest = AnalyzeImageOptions(\n    image=ImageData(blob_url=\"https:\u002F\u002Fexample.com\u002Fimage.jpg\")\n)\n\nresponse = client.analyze_image(request)\n```\n\n## Text Blocklist Management\n\n### Create Blocklist\n\n```python\nfrom azure.ai.contentsafety import BlocklistClient\nfrom azure.ai.contentsafety.models import TextBlocklist\nfrom azure.core.credentials import AzureKeyCredential\n\nblocklist_client = BlocklistClient(endpoint, AzureKeyCredential(key))\n\nblocklist = TextBlocklist(\n    blocklist_name=\"my-blocklist\",\n    description=\"Custom terms to block\"\n)\n\nresult = blocklist_client.create_or_update_text_blocklist(\n    blocklist_name=\"my-blocklist\",\n    options=blocklist\n)\n```\n\n### Add Block Items\n\n```python\nfrom azure.ai.contentsafety.models import AddOrUpdateTextBlocklistItemsOptions, TextBlocklistItem\n\nitems = AddOrUpdateTextBlocklistItemsOptions(\n    blocklist_items=[\n        TextBlocklistItem(text=\"blocked-term-1\"),\n        TextBlocklistItem(text=\"blocked-term-2\")\n    ]\n)\n\nresult = blocklist_client.add_or_update_blocklist_items(\n    blocklist_name=\"my-blocklist\",\n    options=items\n)\n```\n\n### Analyze with Blocklist\n\n```python\nfrom azure.ai.contentsafety.models import AnalyzeTextOptions\n\nrequest = AnalyzeTextOptions(\n    text=\"Text containing blocked-term-1\",\n    blocklist_names=[\"my-blocklist\"],\n    halt_on_blocklist_hit=True\n)\n\nresponse = client.analyze_text(request)\n\nif response.blocklists_match:\n    for match in response.blocklists_match:\n        print(f\"Blocked: {match.blocklist_item_text}\")\n```\n\n## Severity Levels\n\nText analysis returns 4 severity levels (0, 2, 4, 6) by default. For 8 levels (0-7):\n\n```python\nfrom azure.ai.contentsafety.models import AnalyzeTextOptions, AnalyzeTextOutputType\n\nrequest = AnalyzeTextOptions(\n    text=\"Your text\",\n    output_type=AnalyzeTextOutputType.EIGHT_SEVERITY_LEVELS\n)\n```\n\n## Harm Categories\n\n| Category | Description |\n|----------|-------------|\n| `Hate` | Attacks based on identity (race, religion, gender, etc.) |\n| `Sexual` | Sexual content, relationships, anatomy |\n| `Violence` | Physical harm, weapons, injury |\n| `SelfHarm` | Self-injury, suicide, eating disorders |\n\n## Severity Scale\n\n| Level | Text Range | Image Range | Meaning |\n|-------|------------|-------------|---------|\n| 0 | Safe | Safe | No harmful content |\n| 2 | Low | Low | Mild references |\n| 4 | Medium | Medium | Moderate content |\n| 6 | High | High | Severe content |\n\n## Client Types\n\n| Client | Purpose |\n|--------|---------|\n| `ContentSafetyClient` | Analyze text and images |\n| `BlocklistClient` | Manage custom blocklists |\n\n## Best Practices\n\n1. **Use blocklists** for domain-specific terms\n2. **Set severity thresholds** appropriate for your use case\n3. **Handle multiple categories** — content can be harmful in multiple ways\n4. **Use halt_on_blocklist_hit** for immediate rejection\n5. **Log analysis results** for audit and improvement\n6. **Consider 8-severity mode** for finer-grained control\n7. **Pre-moderate AI outputs** before showing to users\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure AI Content Safety SDK for Python\n\nDetect harmful user-generated and AI-generated content in applications.\n\n## Installation\n\n```bash\npip install azure-ai-contentsafety\n```\n\n## Environment Variables\n\n```bash\nCONTENT_SAFETY_ENDPOINT=https:\u002F\u002F\u003Cresource>.cognitiveservices.azure.com\nCONTENT_SAFETY_KEY=\u003Cyour-api-key>\n```\n\n## Authentication\n\n### API Key\n\n```python\nfrom azure.ai.contentsafety import ContentSafetyClient\nfrom azure.core.credentials import AzureKeyCredential\nimport os\n\nclient = ContentSafetyClient(\n    endpoint=os.environ[\"CONTENT_SAFETY_ENDPOINT\"],\n    credential=AzureKeyCredential(os.environ[\"CONTENT_SAFETY_KEY\"])\n)\n```\n\n### Entra ID\n\n```python\nfrom azure.ai.contentsafety import ContentSafetyClient\nfrom azure.identity import DefaultAzureCredential\n\nclient = ContentSafetyClient(\n    endpoint=os.environ[\"CONTENT_SAFETY_ENDPOINT\"],\n    credential=DefaultAzureCredential()\n)\n```\n\n## Analyze Text\n\n```python\nfrom azure.ai.contentsafety import ContentSafetyClient\nfrom azure.ai.contentsafety.models import AnalyzeTextOptions, TextCategory\nfrom azure.core.credentials import AzureKeyCredential\n\nclient = ContentSafetyClient(endpoint, AzureKeyCredential(key))\n\nrequest = AnalyzeTextOptions(text=\"Your text content to analyze\")\nresponse = client.analyze_text(request)\n\n# Check each category\nfor category in [TextCategory.HATE, TextCategory.SELF_HARM, \n                 TextCategory.SEXUAL, TextCategory.VIOLENCE]:\n    result = next((r for r in response.categories_analysis \n                   if r.category == category), None)\n    if result:\n        print(f\"{category}: severity {result.severity}\")\n```\n\n## Analyze Image\n\n```python\nfrom azure.ai.contentsafety import ContentSafetyClient\nfrom azure.ai.contentsafety.models import AnalyzeImageOptions, ImageData\nfrom azure.core.credentials import AzureKeyCredential\nimport base64\n\nclient = ContentSafetyClient(endpoint, AzureKeyCredential(key))\n\n# From file\nwith open(\"image.jpg\", \"rb\") as f:\n    image_data = base64.b64encode(f.read()).decode(\"utf-8\")\n\nrequest = AnalyzeImageOptions(\n    image=ImageData(content=image_data)\n)\n\nresponse = client.analyze_image(request)\n\nfor result in response.categories_analysis:\n    print(f\"{result.category}: severity {result.severity}\")\n```\n\n### Image from URL\n\n```python\nfrom azure.ai.contentsafety.models import AnalyzeImageOptions, ImageData\n\nrequest = AnalyzeImageOptions(\n    image=ImageData(blob_url=\"https:\u002F\u002Fexample.com\u002Fimage.jpg\")\n)\n\nresponse = client.analyze_image(request)\n```\n\n## Text Blocklist Management\n\n### Create Blocklist\n\n```python\nfrom azure.ai.contentsafety import BlocklistClient\nfrom azure.ai.contentsafety.models import TextBlocklist\nfrom azure.core.credentials import AzureKeyCredential\n\nblocklist_client = BlocklistClient(endpoint, AzureKeyCredential(key))\n\nblocklist = TextBlocklist(\n    blocklist_name=\"my-blocklist\",\n    description=\"Custom terms to block\"\n)\n\nresult = blocklist_client.create_or_update_text_blocklist(\n    blocklist_name=\"my-blocklist\",\n    options=blocklist\n)\n```\n\n### Add Block Items\n\n```python\nfrom azure.ai.contentsafety.models import AddOrUpdateTextBlocklistItemsOptions, TextBlocklistItem\n\nitems = AddOrUpdateTextBlocklistItemsOptions(\n    blocklist_items=[\n        TextBlocklistItem(text=\"blocked-term-1\"),\n        TextBlocklistItem(text=\"blocked-term-2\")\n    ]\n)\n\nresult = blocklist_client.add_or_update_blocklist_items(\n    blocklist_name=\"my-blocklist\",\n    options=items\n)\n```\n\n### Analyze with Blocklist\n\n```python\nfrom azure.ai.contentsafety.models import AnalyzeTextOptions\n\nrequest = AnalyzeTextOptions(\n    text=\"Text containing blocked-term-1\",\n    blocklist_names=[\"my-blocklist\"],\n    halt_on_blocklist_hit=True\n)\n\nresponse = client.analyze_text(request)\n\nif response.blocklists_match:\n    for match in response.blocklists_match:\n        print(f\"Blocked: {match.blocklist_item_text}\")\n```\n\n## Severity Levels\n\nText analysis returns 4 severity levels (0, 2, 4, 6) by default. For 8 levels (0-7):\n\n```python\nfrom azure.ai.contentsafety.models import AnalyzeTextOptions, AnalyzeTextOutputType\n\nrequest = AnalyzeTextOptions(\n    text=\"Your text\",\n    output_type=AnalyzeTextOutputType.EIGHT_SEVERITY_LEVELS\n)\n```\n\n## Harm Categories\n\n| Category | Description |\n|----------|-------------|\n| `Hate` | Attacks based on identity (race, religion, gender, etc.) |\n| `Sexual` | Sexual content, relationships, anatomy |\n| `Violence` | Physical harm, weapons, injury |\n| `SelfHarm` | Self-injury, suicide, eating disorders |\n\n## Severity Scale\n\n| Level | Text Range | Image Range | Meaning |\n|-------|------------|-------------|---------|\n| 0 | Safe | Safe | No harmful content |\n| 2 | Low | Low | Mild references |\n| 4 | Medium | Medium | Moderate content |\n| 6 | High | High | Severe content |\n\n## Client Types\n\n| Client | Purpose |\n|--------|---------|\n| `ContentSafetyClient` | Analyze text and images |\n| `BlocklistClient` | Manage custom blocklists |\n\n## Best Practices\n\n1. **Use blocklists** for domain-specific terms\n2. **Set severity thresholds** appropriate for your use case\n3. **Handle multiple categories** — content can be harmful in multiple ways\n4. **Use halt_on_blocklist_hit** for immediate rejection\n5. **Log analysis results** for audit and improvement\n6. **Consider 8-severity mode** for finer-grained control\n7. **Pre-moderate AI outputs** before showing to users\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{},"release\u002Fv4.2.11-panel-pro","a92ea02bcf7e2b3dbaf46d49696c29a3cb490d4f",".github\u002Fskills\u002Fazure-ai-contentsafety-py","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-","https:\u002F\u002Fgithub.com\u002Fjaviertarazon","2026-07-12 07:10:45",{"source":7,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add javiertarazon\u002Fide-agente-free-jt7- --skill azure-ai-contentsafety-py",{"tool":37,"command":38},"bunx","bunx skills add javiertarazon\u002Fide-agente-free-jt7- --skill azure-ai-contentsafety-py",{"tool":40,"command":41},"pnpm","pnpm dlx skills add javiertarazon\u002Fide-agente-free-jt7- --skill azure-ai-contentsafety-py","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fazure-ai-contentsafety-py\u002FSKILL.md",true,[],[46,78,105,125,140,162],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":57,"publishedAt":20},"01M71TQ7Q6Z10VWF3C2H5X1KW9","zustand-store-ts","Create Zustand stores with TypeScript, subscribeWithSelector middleware, and proper state\u002Faction separation. Use when building React state management, creating global stores, or implementing reacti...","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzustand-store-ts\u002FSKILL.md",[52],{"categoryNo":53,"categoryName":54,"taxonomyType":55,"taxonomyTypeDesc":56},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77],"zustand","store","zustand store ts","community","middleware","implementing","use","react state management","when","unknown","react","with","state","create","state management","typescript","action","management","separation","global",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":87,"publishedAt":20},"01M71TQ5EAR40G6W0MV5ZDVEZT","zoom-automation","Automate Zoom meeting creation, management, recordings, webinars, and participant tracking via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzoom-automation\u002FSKILL.md",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":55,"taxonomyTypeDesc":56},"01JBSEEDCAT000000000000023","Skill与智能体开发",[88,89,90,61,91,92,93,94,95,67,96,97,98,99,100,101,102,103,75,104],"zoom automation","zoom","automation","creation","for","search","schemas","MCP","first","via","meeting","search tools","tracking","webinars","composio","recordings","Tools",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":112,"publishedAt":20},"01M71TQ29B1EYBCEAP1ZBGXQ1A","zoho-crm-automation","Automate Zoho CRM tasks via Rube MCP (Composio): create\u002Fupdate records, search contacts, manage leads, and convert leads. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzoho-crm-automation\u002FSKILL.md",[111],{"categoryNo":85,"categoryName":86,"taxonomyType":55,"taxonomyTypeDesc":56},[113,114,90,115,116,117,61,118,119,92,120,93,94,121,95,67,122,123,124,71],"crm automation","zoho crm automation","crm","zoho crm","zoho","leads","manage leads","manage","records","convert","tasks","contacts",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":20},"01M71TPZPMN60DH0XV58KVHY23","zendesk-automation","Automate Zendesk tasks via Rube MCP (Composio): tickets, users, organizations, replies. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzendesk-automation\u002FSKILL.md",[131],{"categoryNo":85,"categoryName":86,"taxonomyType":55,"taxonomyTypeDesc":56},[133,90,134,61,92,93,94,95,135,67,123,136,137,96,97,138,99,102,104,139],"zendesk automation","zendesk","organizations","replies","users","tickets","automate",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":20},"01M71TPXDWKHKG4N6TVEPXWD0N","zapier-make-patterns","No-code automation democratizes workflow building. Zapier and Make (formerly Integromat) let non-developers automate business processes without writing code. But no-code doesn't mean no-complexity ...","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzapier-make-patterns\u002FSKILL.md",[],[147,148,149,150,151,152,153,154,155,90,156,67,157,158,159,160,161,139],"zapier make patterns","zapier","patterns","make","No-Code","complexity","writing","spawner","business","workflow","code","integromat","apache","processes","but",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":171,"publishedAt":20},"01M71TPT5T10WXNKW9G7ZXZ27W","youtube-summarizer","Extract transcripts from YouTube videos and generate comprehensive, detailed summaries using intelligent analysis frameworks","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fyoutube-summarizer\u002FSKILL.md",[168],{"categoryNo":169,"categoryName":170,"taxonomyType":55,"taxonomyTypeDesc":56},"01JBSEEDCAT000000000000016","图像与多媒体",[172,173,174,175,61,176,177,178,179,180,181,182,157,183,184,185,186,187,188,189],"summarizer","youtube","youtube summarizer","Video","content-analysis","frameworks","copilot","2025","github-copilot","extract transcripts","analysis","codex","cli","summaries","github","generate","summarization","2026"]