[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RN102SK213FX384KSCX3M":3,"skill-same:01M71RN102SK213FX384KSCX3M":47},{"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":22,"linkOnly":23,"markdownContent":24,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":12,"repositoryHtmlUrl":30,"repositoryHomepageUrl":6,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":32,"install":33,"resources":46},"01M71RN102SK213FX384KSCX3M","azure-storage-blob-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-storage-blob-py\u002FSKILL.md",[],[17,18,19,20,21],"storage","azure storage","azure","azure storage blob py","blob","2026-11-10 13:02:02",false,"---\nname: azure-storage-blob-py\ndescription: \"|\"\n  Azure Blob Storage SDK for Python. Use for uploading, downloading, listing blobs, managing containers, and blob lifecycle.\n  Triggers: \"blob storage\", \"BlobServiceClient\", \"ContainerClient\", \"BlobClient\", \"upload blob\", \"download blob\".\npackage: azure-storage-blob\nrisk: unknown\nsource: community\n---\n\n# Azure Blob Storage SDK for Python\n\nClient library for Azure Blob Storage — object storage for unstructured data.\n\n## Installation\n\n```bash\npip install azure-storage-blob azure-identity\n```\n\n## Environment Variables\n\n```bash\nAZURE_STORAGE_ACCOUNT_NAME=\u003Cyour-storage-account>\n# Or use full URL\nAZURE_STORAGE_ACCOUNT_URL=https:\u002F\u002F\u003Caccount>.blob.core.windows.net\n```\n\n## Authentication\n\n```python\nfrom azure.identity import DefaultAzureCredential\nfrom azure.storage.blob import BlobServiceClient\n\ncredential = DefaultAzureCredential()\naccount_url = \"https:\u002F\u002F\u003Caccount>.blob.core.windows.net\"\n\nblob_service_client = BlobServiceClient(account_url, credential=credential)\n```\n\n## Client Hierarchy\n\n| Client | Purpose | Get From |\n|--------|---------|----------|\n| `BlobServiceClient` | Account-level operations | Direct instantiation |\n| `ContainerClient` | Container operations | `blob_service_client.get_container_client()` |\n| `BlobClient` | Single blob operations | `container_client.get_blob_client()` |\n\n## Core Workflow\n\n### Create Container\n\n```python\ncontainer_client = blob_service_client.get_container_client(\"mycontainer\")\ncontainer_client.create_container()\n```\n\n### Upload Blob\n\n```python\n# From file path\nblob_client = blob_service_client.get_blob_client(\n    container=\"mycontainer\",\n    blob=\"sample.txt\"\n)\n\nwith open(\".\u002Flocal-file.txt\", \"rb\") as data:\n    blob_client.upload_blob(data, overwrite=True)\n\n# From bytes\u002Fstring\nblob_client.upload_blob(b\"Hello, World!\", overwrite=True)\n\n# From stream\nimport io\nstream = io.BytesIO(b\"Stream content\")\nblob_client.upload_blob(stream, overwrite=True)\n```\n\n### Download Blob\n\n```python\nblob_client = blob_service_client.get_blob_client(\n    container=\"mycontainer\",\n    blob=\"sample.txt\"\n)\n\n# To file\nwith open(\".\u002Fdownloaded.txt\", \"wb\") as file:\n    download_stream = blob_client.download_blob()\n    file.write(download_stream.readall())\n\n# To memory\ndownload_stream = blob_client.download_blob()\ncontent = download_stream.readall()  # bytes\n\n# Read into existing buffer\nstream = io.BytesIO()\nnum_bytes = blob_client.download_blob().readinto(stream)\n```\n\n### List Blobs\n\n```python\ncontainer_client = blob_service_client.get_container_client(\"mycontainer\")\n\n# List all blobs\nfor blob in container_client.list_blobs():\n    print(f\"{blob.name} - {blob.size} bytes\")\n\n# List with prefix (folder-like)\nfor blob in container_client.list_blobs(name_starts_with=\"logs\u002F\"):\n    print(blob.name)\n\n# Walk blob hierarchy (virtual directories)\nfor item in container_client.walk_blobs(delimiter=\"\u002F\"):\n    if item.get(\"prefix\"):\n        print(f\"Directory: {item['prefix']}\")\n    else:\n        print(f\"Blob: {item.name}\")\n```\n\n### Delete Blob\n\n```python\nblob_client.delete_blob()\n\n# Delete with snapshots\nblob_client.delete_blob(delete_snapshots=\"include\")\n```\n\n## Performance Tuning\n\n```python\n# Configure chunk sizes for large uploads\u002Fdownloads\nblob_client = BlobClient(\n    account_url=account_url,\n    container_name=\"mycontainer\",\n    blob_name=\"large-file.zip\",\n    credential=credential,\n    max_block_size=4 * 1024 * 1024,  # 4 MiB blocks\n    max_single_put_size=64 * 1024 * 1024  # 64 MiB single upload limit\n)\n\n# Parallel upload\nblob_client.upload_blob(data, max_concurrency=4)\n\n# Parallel download\ndownload_stream = blob_client.download_blob(max_concurrency=4)\n```\n\n## SAS Tokens\n\n```python\nfrom datetime import datetime, timedelta, timezone\nfrom azure.storage.blob import generate_blob_sas, BlobSasPermissions\n\nsas_token = generate_blob_sas(\n    account_name=\"\u003Caccount>\",\n    container_name=\"mycontainer\",\n    blob_name=\"sample.txt\",\n    account_key=\"\u003Caccount-key>\",  # Or use user delegation key\n    permission=BlobSasPermissions(read=True),\n    expiry=datetime.now(timezone.utc) + timedelta(hours=1)\n)\n\n# Use SAS token\nblob_url = f\"https:\u002F\u002F\u003Caccount>.blob.core.windows.net\u002Fmycontainer\u002Fsample.txt?{sas_token}\"\n```\n\n## Blob Properties and Metadata\n\n```python\n# Get properties\nproperties = blob_client.get_blob_properties()\nprint(f\"Size: {properties.size}\")\nprint(f\"Content-Type: {properties.content_settings.content_type}\")\nprint(f\"Last modified: {properties.last_modified}\")\n\n# Set metadata\nblob_client.set_blob_metadata(metadata={\"category\": \"logs\", \"year\": \"2024\"})\n\n# Set content type\nfrom azure.storage.blob import ContentSettings\nblob_client.set_http_headers(\n    content_settings=ContentSettings(content_type=\"application\u002Fjson\")\n)\n```\n\n## Async Client\n\n```python\nfrom azure.identity.aio import DefaultAzureCredential\nfrom azure.storage.blob.aio import BlobServiceClient\n\nasync def upload_async():\n    credential = DefaultAzureCredential()\n    \n    async with BlobServiceClient(account_url, credential=credential) as client:\n        blob_client = client.get_blob_client(\"mycontainer\", \"sample.txt\")\n        \n        with open(\".\u002Ffile.txt\", \"rb\") as data:\n            await blob_client.upload_blob(data, overwrite=True)\n\n# Download async\nasync def download_async():\n    async with BlobServiceClient(account_url, credential=credential) as client:\n        blob_client = client.get_blob_client(\"mycontainer\", \"sample.txt\")\n        \n        stream = await blob_client.download_blob()\n        data = await stream.readall()\n```\n\n## Best Practices\n\n1. **Use DefaultAzureCredential** instead of connection strings\n2. **Use context managers** for async clients\n3. **Set `overwrite=True`** explicitly when re-uploading\n4. **Use `max_concurrency`** for large file transfers\n5. **Prefer `readinto()`** over `readall()` for memory efficiency\n6. **Use `walk_blobs()`** for hierarchical listing\n7. **Set appropriate content types** for web-served blobs\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure Blob Storage SDK for Python\n\nClient library for Azure Blob Storage — object storage for unstructured data.\n\n## Installation\n\n```bash\npip install azure-storage-blob azure-identity\n```\n\n## Environment Variables\n\n```bash\nAZURE_STORAGE_ACCOUNT_NAME=\u003Cyour-storage-account>\n# Or use full URL\nAZURE_STORAGE_ACCOUNT_URL=https:\u002F\u002F\u003Caccount>.blob.core.windows.net\n```\n\n## Authentication\n\n```python\nfrom azure.identity import DefaultAzureCredential\nfrom azure.storage.blob import BlobServiceClient\n\ncredential = DefaultAzureCredential()\naccount_url = \"https:\u002F\u002F\u003Caccount>.blob.core.windows.net\"\n\nblob_service_client = BlobServiceClient(account_url, credential=credential)\n```\n\n## Client Hierarchy\n\n| Client | Purpose | Get From |\n|--------|---------|----------|\n| `BlobServiceClient` | Account-level operations | Direct instantiation |\n| `ContainerClient` | Container operations | `blob_service_client.get_container_client()` |\n| `BlobClient` | Single blob operations | `container_client.get_blob_client()` |\n\n## Core Workflow\n\n### Create Container\n\n```python\ncontainer_client = blob_service_client.get_container_client(\"mycontainer\")\ncontainer_client.create_container()\n```\n\n### Upload Blob\n\n```python\n# From file path\nblob_client = blob_service_client.get_blob_client(\n    container=\"mycontainer\",\n    blob=\"sample.txt\"\n)\n\nwith open(\".\u002Flocal-file.txt\", \"rb\") as data:\n    blob_client.upload_blob(data, overwrite=True)\n\n# From bytes\u002Fstring\nblob_client.upload_blob(b\"Hello, World!\", overwrite=True)\n\n# From stream\nimport io\nstream = io.BytesIO(b\"Stream content\")\nblob_client.upload_blob(stream, overwrite=True)\n```\n\n### Download Blob\n\n```python\nblob_client = blob_service_client.get_blob_client(\n    container=\"mycontainer\",\n    blob=\"sample.txt\"\n)\n\n# To file\nwith open(\".\u002Fdownloaded.txt\", \"wb\") as file:\n    download_stream = blob_client.download_blob()\n    file.write(download_stream.readall())\n\n# To memory\ndownload_stream = blob_client.download_blob()\ncontent = download_stream.readall()  # bytes\n\n# Read into existing buffer\nstream = io.BytesIO()\nnum_bytes = blob_client.download_blob().readinto(stream)\n```\n\n### List Blobs\n\n```python\ncontainer_client = blob_service_client.get_container_client(\"mycontainer\")\n\n# List all blobs\nfor blob in container_client.list_blobs():\n    print(f\"{blob.name} - {blob.size} bytes\")\n\n# List with prefix (folder-like)\nfor blob in container_client.list_blobs(name_starts_with=\"logs\u002F\"):\n    print(blob.name)\n\n# Walk blob hierarchy (virtual directories)\nfor item in container_client.walk_blobs(delimiter=\"\u002F\"):\n    if item.get(\"prefix\"):\n        print(f\"Directory: {item['prefix']}\")\n    else:\n        print(f\"Blob: {item.name}\")\n```\n\n### Delete Blob\n\n```python\nblob_client.delete_blob()\n\n# Delete with snapshots\nblob_client.delete_blob(delete_snapshots=\"include\")\n```\n\n## Performance Tuning\n\n```python\n# Configure chunk sizes for large uploads\u002Fdownloads\nblob_client = BlobClient(\n    account_url=account_url,\n    container_name=\"mycontainer\",\n    blob_name=\"large-file.zip\",\n    credential=credential,\n    max_block_size=4 * 1024 * 1024,  # 4 MiB blocks\n    max_single_put_size=64 * 1024 * 1024  # 64 MiB single upload limit\n)\n\n# Parallel upload\nblob_client.upload_blob(data, max_concurrency=4)\n\n# Parallel download\ndownload_stream = blob_client.download_blob(max_concurrency=4)\n```\n\n## SAS Tokens\n\n```python\nfrom datetime import datetime, timedelta, timezone\nfrom azure.storage.blob import generate_blob_sas, BlobSasPermissions\n\nsas_token = generate_blob_sas(\n    account_name=\"\u003Caccount>\",\n    container_name=\"mycontainer\",\n    blob_name=\"sample.txt\",\n    account_key=\"\u003Caccount-key>\",  # Or use user delegation key\n    permission=BlobSasPermissions(read=True),\n    expiry=datetime.now(timezone.utc) + timedelta(hours=1)\n)\n\n# Use SAS token\nblob_url = f\"https:\u002F\u002F\u003Caccount>.blob.core.windows.net\u002Fmycontainer\u002Fsample.txt?{sas_token}\"\n```\n\n## Blob Properties and Metadata\n\n```python\n# Get properties\nproperties = blob_client.get_blob_properties()\nprint(f\"Size: {properties.size}\")\nprint(f\"Content-Type: {properties.content_settings.content_type}\")\nprint(f\"Last modified: {properties.last_modified}\")\n\n# Set metadata\nblob_client.set_blob_metadata(metadata={\"category\": \"logs\", \"year\": \"2024\"})\n\n# Set content type\nfrom azure.storage.blob import ContentSettings\nblob_client.set_http_headers(\n    content_settings=ContentSettings(content_type=\"application\u002Fjson\")\n)\n```\n\n## Async Client\n\n```python\nfrom azure.identity.aio import DefaultAzureCredential\nfrom azure.storage.blob.aio import BlobServiceClient\n\nasync def upload_async():\n    credential = DefaultAzureCredential()\n    \n    async with BlobServiceClient(account_url, credential=credential) as client:\n        blob_client = client.get_blob_client(\"mycontainer\", \"sample.txt\")\n        \n        with open(\".\u002Ffile.txt\", \"rb\") as data:\n            await blob_client.upload_blob(data, overwrite=True)\n\n# Download async\nasync def download_async():\n    async with BlobServiceClient(account_url, credential=credential) as client:\n        blob_client = client.get_blob_client(\"mycontainer\", \"sample.txt\")\n        \n        stream = await blob_client.download_blob()\n        data = await stream.readall()\n```\n\n## Best Practices\n\n1. **Use DefaultAzureCredential** instead of connection strings\n2. **Use context managers** for async clients\n3. **Set `overwrite=True`** explicitly when re-uploading\n4. **Use `max_concurrency`** for large file transfers\n5. **Prefer `readinto()`** over `readall()` for memory efficiency\n6. **Use `walk_blobs()`** for hierarchical listing\n7. **Set appropriate content types** for web-served blobs\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-storage-blob-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":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add javiertarazon\u002Fide-agente-free-jt7- --skill azure-storage-blob-py",{"tool":39,"command":40},"bunx","bunx skills add javiertarazon\u002Fide-agente-free-jt7- --skill azure-storage-blob-py",{"tool":42,"command":43},"pnpm","pnpm dlx skills add javiertarazon\u002Fide-agente-free-jt7- --skill azure-storage-blob-py","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fazure-storage-blob-py\u002FSKILL.md",true,[],[48,80,107,127,142,164],{"skillNo":49,"name":50,"nameZh":6,"description":51,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":59,"publishedAt":22},"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",[54],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79],"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":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":89,"publishedAt":22},"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",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000023","Skill与智能体开发",[90,91,92,63,93,94,95,96,97,69,98,99,100,101,102,103,104,105,77,106],"zoom automation","zoom","automation","creation","for","search","schemas","MCP","first","via","meeting","search tools","tracking","webinars","composio","recordings","Tools",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":114,"publishedAt":22},"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",[113],{"categoryNo":87,"categoryName":88,"taxonomyType":57,"taxonomyTypeDesc":58},[115,116,92,117,118,119,63,120,121,94,122,95,96,123,97,69,124,125,126,73],"crm automation","zoho crm automation","crm","zoho crm","zoho","leads","manage leads","manage","records","convert","tasks","contacts",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":134,"publishedAt":22},"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",[133],{"categoryNo":87,"categoryName":88,"taxonomyType":57,"taxonomyTypeDesc":58},[135,92,136,63,94,95,96,97,137,69,125,138,139,98,99,140,101,104,106,141],"zendesk automation","zendesk","organizations","replies","users","tickets","automate",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":22},"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",[],[149,150,151,152,153,154,155,156,157,92,158,69,159,160,161,162,163,141],"zapier make patterns","zapier","patterns","make","No-Code","complexity","writing","spawner","business","workflow","code","integromat","apache","processes","but",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":173,"publishedAt":22},"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",[170],{"categoryNo":171,"categoryName":172,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000016","图像与多媒体",[174,175,176,177,63,178,179,180,181,182,183,184,159,185,186,187,188,189,190,191],"summarizer","youtube","youtube summarizer","Video","content-analysis","frameworks","copilot","2025","github-copilot","extract transcripts","analysis","codex","cli","summaries","github","generate","summarization","2026"]