{"id":"6986eb5a-a282-4376-aecc-b7df15879a38","shortId":"FaezpZ","kind":"skill","title":"azure-ai-contentsafety-py","tagline":"Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.","description":"# 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://<resource>.cognitiveservices.azure.com\nCONTENT_SAFETY_KEY=<your-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://example.com/image.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\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["azure","contentsafety","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-azure-ai-contentsafety-py","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-ai-contentsafety-py","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34964 github stars · SKILL.md body (5,760 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-25T00:50:30.671Z","embedding":null,"createdAt":"2026-04-18T21:31:51.790Z","updatedAt":"2026-04-25T00:50:30.671Z","lastSeenAt":"2026-04-25T00:50:30.671Z","tsv":"'-7':405 '-8':211 '/image.jpg':250 '0':395,404,460 '1':322,358,496 '2':328,396,466,504 '3':513 '4':392,397,471,524 '5':533 '6':398,476,541 '7':551 '8':402,543 'action':573 'add':304 'addorupdatetextblocklistitemsopt':311,314 'ai':3,7,28,41,52,555 'ai-gener':40 'analysi':162,227,390,535 'analyz':111,139,174,342,486 'analyzeimageopt':184,213,240,243 'analyzetextopt':121,133,349,351,410,413 'analyzetextoutputtyp':411 'analyzetextoutputtype.eight':419 'anatomi':439 'api':65 'applic':45,567 'appropri':508 'ask':611 'attack':427 'audit':538 'authent':64 'azur':2,6,27,51 'azure-ai-contentsafeti':50 'azure-ai-contentsafety-pi':1 'azure.ai.contentsafety':69,95,115,178,262 'azure.ai.contentsafety.models':119,182,238,266,309,347,408 'azure.core.credentials':73,124,187,270 'azure.identity':99 'azurekeycredenti':75,86,126,130,189,195,272,277 'base':428 'base64':191 'base64.b64encode':207 'bash':47,56 'best':494 'blob':246 'block':290,305,320,326,356,383 'blocked-term':319,325,355 'blocklist':256,259,273,279,281,285,296,297,301,303,315,333,335,339,344,359,363,366,493,498,528 'blocklist_client.add':330 'blocklist_client.create':292 'blocklistcli':264,275,490 'boundari':619 'case':512 'categori':146,148,165,171,423,424,516 'check':144 'clarif':613 'classif':26 'clear':586 'client':78,102,127,192,274,481,483 'client.analyze':141,220,252,370 'cognitiveservices.azure.com':60 'consid':542 'contain':354 'content':8,17,29,43,57,61,82,88,106,137,216,437,465,475,480,517 'contentsafeti':4,53 'contentsafetycli':71,79,97,103,117,128,180,193,485 'control':550 'creat':258 'credenti':85,109 'criteria':622 'custom':287,492 'data':206,218 'decod':209 'default':400 'defaultazurecredenti':101,110 'describ':574,590 'descript':286,425 'detect':15,34 'disord':451 'domain':501 'domain-specif':500 'eat':450 'endpoint':59,80,84,104,108,129,194,276 'entra':91 'environ':54,602 'environment-specif':601 'etc':434 'example.com':249 'example.com/image.jpg':248 'execut':569 'expert':607 'f':170,204,229,382 'f.read':208 'file':198 'finer':548 'finer-grain':547 'gender':433 'generat':38,42 'grain':549 'halt':364,526 'handl':514 'harm':16,35,152,422,442,464,520 'hate':426 'high':477,478 'hit':367,529 'id':92 'ident':430 'imag':21,175,205,214,217,221,233,244,253,457,489 'image.jpg':201 'imagedata':185,215,241,245 'immedi':531 'import':70,74,76,96,100,116,120,125,179,183,188,190,239,263,267,271,310,348,409 'improv':540 'injuri':444,448 'input':616 'instal':46,49 'item':306,313,316,334,341,385 'key':63,66,90,131,196,278 'level':388,394,403,421,454 'limit':578 'log':534 'low':467,468 'manag':257,491 'match':375,377,380,587 'match.blocklist':384 'mean':459 'medium':472,473 'mild':469 'miss':624 'mode':545 'moder':474,554 'multi':24 'multi-sever':23 'multipl':515,522 'my-blocklist':283,299,337,361 'name':282,298,336,360 'next':156 'none':166 'open':200 'option':302,340 'os':77 'os.environ':81,87,105 'output':417,556,596 'overview':577 'permiss':617 'physic':441 'pip':48 'practic':495 'pre':553 'pre-moder':552 'print':169,228,381 'purpos':484 'py':5 'python':12,33,67,93,113,176,236,260,307,345,406 'r':157,159 'r.category':164 'race':431 'rang':456,458 'rb':202 'refer':470 'reject':532 'relationship':438 'religion':432 'request':132,143,212,222,242,254,350,372,412 'requir':615 'respons':140,219,251,369 'response.blocklists':374,379 'response.categories':161,226 'result':155,168,224,291,329,536 'result.category':230 'result.severity':173,232 'return':391 'review':608 'safe':461,462 'safeti':9,30,58,62,83,89,107,618 'scale':453 'scope':589 'sdk':10,31 'self':447 'self-injuri':446 'selfharm':445 'set':505 'sever':25,172,231,387,393,420,452,479,506,544 'sexual':435,436 'show':558 'skill':565,581 'skill-azure-ai-contentsafety-py' 'source-sickn33' 'specif':502,603 'stop':609 'substitut':599 'success':621 'suicid':449 'task':585 'term':288,321,327,357,503 'test':605 'text':19,112,134,136,142,255,295,318,324,352,353,371,386,389,414,416,455,487 'textblocklist':268,280 'textblocklistitem':312,317,323 'textcategori':122 'textcategory.hate':150 'textcategory.self':151 'textcategory.sexual':153 'textcategory.violence':154 'threshold':507 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':594 'true':368 'type':418,482 'updat':294,332 'url':235,247 'use':13,497,511,525,563,579 'user':37,560 'user-gener':36 'utf':210 'valid':604 'variabl':55 'violenc':440 'way':523 'weapon':443 'workflow':571","prices":[{"id":"1c081b49-b269-4d0e-8a91-3472064d7e4a","listingId":"6986eb5a-a282-4376-aecc-b7df15879a38","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:31:51.790Z"}],"sources":[{"listingId":"6986eb5a-a282-4376-aecc-b7df15879a38","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-ai-contentsafety-py","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-ai-contentsafety-py","isPrimary":false,"firstSeenAt":"2026-04-18T21:31:51.790Z","lastSeenAt":"2026-04-25T00:50:30.671Z"}],"details":{"listingId":"6986eb5a-a282-4376-aecc-b7df15879a38","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-ai-contentsafety-py","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34964,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"327a6b5176aaa5ef0b18865da93f82451a6215ee","skill_md_path":"skills/azure-ai-contentsafety-py/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-ai-contentsafety-py"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-ai-contentsafety-py","description":"Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-ai-contentsafety-py"},"updatedAt":"2026-04-25T00:50:30.671Z"}}