Tutoriel pour débutants : Gérer les conteneurs et les blobs des comptes de stockage Azure avec n8n
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 21 nœuds.Utilise principalement des nœuds comme Set, AzureStorage, ManualTrigger, Agent, OpenAi. Générer et stocker des images IA avec DALL-E et Azure Blob Storage
- •Clé API OpenAI
Nœuds utilisés (21)
Catégorie
{
"id": "IGIdimfXbsBQsxOh",
"meta": {
"instanceId": "4a2e6764ba7a6bc9890d9225f4b21d570ce88fc9bd57549c89057fcee58fed0f",
"templateCredsSetupCompleted": true
},
"name": "Beginner’s Tutorial: Manage Azure Storage Account Container & Blob with n8n",
"tags": [
{
"id": "H6NyYd16Iwa0j4cx",
"name": "azure",
"createdAt": "2025-08-20T13:18:12.992Z",
"updatedAt": "2025-08-20T13:18:12.992Z"
}
],
"nodes": [
{
"id": "e85e1121-c0c5-4205-bde6-f1a9de3f0bd7",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
448,
280
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "PPSwAKeLQYgAPobT",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "b9c2618f-3f0e-487a-b8d7-2664b502e069",
"name": "Générer une image",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
752,
56
],
"parameters": {
"prompt": "={{ $json.output }}",
"options": {},
"resource": "image"
},
"credentials": {
"openAiApi": {
"id": "PPSwAKeLQYgAPobT",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "fd4d4869-27e2-4848-a78e-441f8cdcf11e",
"name": "Agent de génération de prompt",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
352,
56
],
"parameters": {
"text": "=You're prompt generator agent, you will create prompt for the open-ai image generation model with a random topic among:\n- Education\n- Science \n- Sport\n- Economy\n- Health\nOutput the prompt only, nothing else",
"options": {},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "2ce43600-134f-410d-b960-f43ab32f1571",
"name": "Au clic sur 'Exécuter le workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-320,
-92
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ca6f581a-0c4c-4259-8c90-95a23c815633",
"name": "Modifier les champs",
"type": "n8n-nodes-base.set",
"position": [
-96,
-92
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "af3e6c69-fbfe-49f4-9c29-3a68a821c5a6",
"name": "container_name",
"type": "string",
"value": "trungtrandemon8n1"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "c28e2f34-43d2-41cd-890f-43d028f2f32f",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1648,
-736
],
"parameters": {
"width": 1056,
"height": 2512,
"content": "# Beginner’s Tutorial: Manage Azure Storage Account Container & Blob with n8n\n[](https://www.youtube.com/watch?v=vh06fpMkalw)\n> This beginner-friendly n8n workflow shows you how to generate AI images using OpenAI, store them in Azure Blob Storage, and manage blob containers, all with zero code.\n\n## 👤 Who’s it for\n\nThis workflow is perfect for:\n- **Beginners learning Azure + OpenAI integration**\n- **No-code developers** experimenting with image generation\n- **Cloud learners** who want hands-on Blob Storage use cases\n- Anyone who wants to automate storing AI-generated content in the cloud\n\n## ⚙️ How it works / What it does\n\n1. 🖱️ Trigger the workflow manually using the `Execute Workflow` node.\n2. ✏️ Use the `Edit Fields` node to input:\n - `containerName` (e.g., `demo-images`)\n - `imageIdea` (e.g., \"a robot holding a coffee cup\")\n3. 📦 Create a new Azure Blob container (`Create container`).\n4. 🤖 Use an OpenAI-powered **Prompt Generation Agent** to craft the perfect image prompt.\n5. 🎨 Generate an image using OpenAI’s DALL·E model.\n6. ☁️ Upload the generated image to Azure Blob Storage (`Create Blob`).\n7. 📂 List blobs in the container (`Get many blobs`).\n8. 🧹 Delete any blob as needed (`Delete Blob`).\n9. (Optional) 🗑️ Remove the entire container (`Delete container`).\n\n## 🔧 How to set up\n\n1. **🧠 Set up OpenAI**\n - Create an OpenAI account and get your API key.\n - In n8n, go to **Credentials → OpenAI** and paste your key.\n\n2. **🪣 Set up Azure Blob Storage**\n - Log in to your Azure Portal.\n - Create a **Storage Account** (e.g., `mystorageaccount`).\n - Go to **Access Keys** tab and copy:\n - **Storage Account Name**\n - **Key1**\n - In n8n, create a new **Azure Blob Storage Credential** using:\n - **Account Name** = your storage account name\n - **Access Key** = key1 value\n\n > 📝 This demo uses **Access Key** authentication. You can also configure Shared Access Signatures (SAS) or OAuth in production setups.\n\n3. **Run the Workflow**\n - Enter your image idea and container name.\n - Click “Execute Workflow” to test it.\n\n## 📋 Requirements\n\n| Requirement | Description |\n|------------------------|--------------------------------------------------|\n| Azure Storage Account | With container-level read/write access |\n| OpenAI API Key | For image and prompt generation |\n| n8n Version | v1.0+ recommended |\n| Image Credits | OpenAI charges tokens for DALL·E image creation |\n\n\n## 🛠️ How to customize the workflow\n\n### 🧠 Adjust Prompt Generation\nUpdate the **Prompt Agent** to include:\n- Specific style (3D, anime, cyberpunk)\n- Brand elements\n- Multiple language options\n\n### 📁 Organize by Date/User\nModify the `containerName` to auto-include:\n- Date (e.g., `images-2025-08-20`)\n- Username or session ID\n\n### 📤 Send Image Output\n- Add Slack, Telegram, or Email nodes to deliver the image\n- Create public links using Azure’s blob permissions\n\n### 🔁 Cleanup Logic\n- Auto-delete blobs after X days\n- Add versioning or backup logic"
},
"typeVersion": 1
},
{
"id": "8247314b-fa19-4b6e-96d5-f2729451236e",
"name": "Note adhésive 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-448,
-304
],
"parameters": {
"width": 352,
"content": "### 1. 🖱️ Trigger the Workflow\n**Node:** `When clicking 'Execute workflow'` \nThis node allows you to manually start the workflow by clicking the “Execute Workflow” button in n8n. Great for testing or interactive usage."
},
"typeVersion": 1
},
{
"id": "09234a75-00ef-4d24-b832-4cbf77a70191",
"name": "Note adhésive 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-176,
80
],
"parameters": {
"height": 256,
"content": "### 2. ✍️ Input Your Fields\n**Node:** `Edit Fields` \nThis is where you define inputs like:\n- `containerName`: Name of the Azure Blob container\n\nThe input used in the following steps to dynamically name resources and build prompts."
},
"typeVersion": 1
},
{
"id": "51421218-ac6a-4254-9460-57fd393cfaeb",
"name": "Note adhésive 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
112,
224
],
"parameters": {
"height": 192,
"content": "### 3. 📦 Create Blob Container\n**Node:** `Create container` \nCreates a new container in your Azure Blob Storage account using the container name you provided. If the container already exists, it will not be duplicated."
},
"typeVersion": 1
},
{
"id": "3275fa4c-e3c8-4cb7-9fbe-5fbc18bc43bc",
"name": "Note adhésive 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
656,
224
],
"parameters": {
"width": 288,
"height": 144,
"content": "### 5. 🎨 Generate the Image\n**Node:** `Generate an image` \nUses the prompt from the previous step to create an AI-generated image (e.g., via DALL·E). The result is a direct image file output."
},
"typeVersion": 1
},
{
"id": "72ad0a7b-b85d-4a78-8e19-b00ea74f055a",
"name": "Note adhésive 5",
"type": "n8n-nodes-base.stickyNote",
"position": [
272,
-96
],
"parameters": {
"width": 432,
"height": 128,
"content": "### 4. 🤖 Generate AI Prompt\n**Node:** `Prompt Generation Agent` \nUses OpenAI’s Chat Model to generate a detailed and creative image prompt based on your `imageIdea`. This helps get better and more accurate AI images.\n"
},
"typeVersion": 1
},
{
"id": "08afa880-39cc-4aa9-a4c6-60cc4988c86c",
"name": "Note adhésive 6",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
-144
],
"parameters": {
"height": 176,
"content": "### 6. ☁️ Upload Image to Azure Blob\n**Node:** `Create Blob` \nUploads the generated image to the Azure Blob container you created. The image is now stored in the cloud and ready to use or share.\n"
},
"typeVersion": 1
},
{
"id": "6f22fd69-6469-4ced-b5b9-adfdc7f4cab0",
"name": "Note adhésive 7",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
-432
],
"parameters": {
"width": 272,
"content": "### 9. 🗑️ (Optional) Delete the Container\n**Node:** `Delete container` \nIf needed, you can delete the entire container to clean up your storage environment. Be careful—this deletes all blobs inside."
},
"typeVersion": 1
},
{
"id": "00315b96-ca0b-4c64-b796-54e0eb0f5acb",
"name": "Créer un conteneur",
"type": "n8n-nodes-base.azureStorage",
"position": [
128,
56
],
"parameters": {
"options": {},
"operation": "create",
"requestOptions": {},
"containerCreate": "={{ $json.container_name }}"
},
"credentials": {
"azureStorageSharedKeyApi": {
"id": "lSgRw5GzgoCfmMdO",
"name": "Azure Storage Shared Key account"
}
},
"typeVersion": 1
},
{
"id": "2cc5dc43-64e0-406a-98b0-2854143d2cc9",
"name": "Obtenir plusieurs conteneurs",
"type": "n8n-nodes-base.azureStorage",
"position": [
128,
-240
],
"parameters": {
"options": {},
"requestOptions": {}
},
"credentials": {
"azureStorageSharedKeyApi": {
"id": "lSgRw5GzgoCfmMdO",
"name": "Azure Storage Shared Key account"
}
},
"typeVersion": 1
},
{
"id": "0cce44bd-54ad-4444-a351-b395af7e7875",
"name": "Supprimer un conteneur",
"type": "n8n-nodes-base.azureStorage",
"position": [
440,
-240
],
"parameters": {
"container": {
"__rl": true,
"mode": "id",
"value": "={{ $json.name }}"
},
"operation": "delete",
"requestOptions": {}
},
"credentials": {
"azureStorageSharedKeyApi": {
"id": "lSgRw5GzgoCfmMdO",
"name": "Azure Storage Shared Key account"
}
},
"typeVersion": 1
},
{
"id": "e7fbd4a2-9988-4f2e-8985-4c0691b9ce27",
"name": "Supprimer un blob",
"type": "n8n-nodes-base.azureStorage",
"position": [
1424,
56
],
"parameters": {
"blob": {
"__rl": true,
"mode": "id",
"value": "={{ $json.name }}"
},
"options": {},
"resource": "blob",
"container": {
"__rl": true,
"mode": "id",
"value": "={{ $('Edit Fields').item.json.container_name }}"
},
"operation": "delete",
"requestOptions": {}
},
"credentials": {
"azureStorageSharedKeyApi": {
"id": "lSgRw5GzgoCfmMdO",
"name": "Azure Storage Shared Key account"
}
},
"typeVersion": 1
},
{
"id": "0b9b0d80-3932-4592-869f-1b88d275c061",
"name": "Créer un blob",
"type": "n8n-nodes-base.azureStorage",
"position": [
976,
56
],
"parameters": {
"options": {},
"resource": "blob",
"container": {
"__rl": true,
"mode": "id",
"value": "={{ $('Edit Fields').item.json.container_name }}"
},
"operation": "create",
"blobCreate": "mydemoblob",
"requestOptions": {}
},
"credentials": {
"azureStorageSharedKeyApi": {
"id": "lSgRw5GzgoCfmMdO",
"name": "Azure Storage Shared Key account"
}
},
"typeVersion": 1
},
{
"id": "9080e615-b339-40e9-a2be-afec373f19e8",
"name": "Obtenir plusieurs blobs",
"type": "n8n-nodes-base.azureStorage",
"position": [
1200,
56
],
"parameters": {
"options": {},
"resource": "blob",
"container": {
"__rl": true,
"mode": "id",
"value": "={{ $('Edit Fields').item.json.container_name }}"
},
"requestOptions": {}
},
"credentials": {
"azureStorageSharedKeyApi": {
"id": "lSgRw5GzgoCfmMdO",
"name": "Azure Storage Shared Key account"
}
},
"typeVersion": 1
},
{
"id": "766a2aad-6a08-4fb2-a24d-f897bdcba105",
"name": "Note adhésive 8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1136,
224
],
"parameters": {
"width": 208,
"content": "### 7. 📂 List All Blobs\n**Node:** `Get many blobs` \nRetrieves all the blobs (files) inside your container so you can review, download, or manage them."
},
"typeVersion": 1
},
{
"id": "d649dd7f-11c5-4191-ae9b-fdae6581c48a",
"name": "Note adhésive 9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
-128
],
"parameters": {
"content": "### 8. 🧹 Delete Specific Blob\n**Node:** `Delete Blob` \nDeletes a specific blob (image) from your container. This step can be made dynamic based on blob name or user choice."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "6883fbaa-7aae-4627-8ac4-b77da1494f46",
"connections": {
"0b9b0d80-3932-4592-869f-1b88d275c061": {
"main": [
[
{
"node": "9080e615-b339-40e9-a2be-afec373f19e8",
"type": "main",
"index": 0
}
]
]
},
"ca6f581a-0c4c-4259-8c90-95a23c815633": {
"main": [
[
{
"node": "00315b96-ca0b-4c64-b796-54e0eb0f5acb",
"type": "main",
"index": 0
},
{
"node": "2cc5dc43-64e0-406a-98b0-2854143d2cc9",
"type": "main",
"index": 0
}
]
]
},
"9080e615-b339-40e9-a2be-afec373f19e8": {
"main": [
[
{
"node": "e7fbd4a2-9988-4f2e-8985-4c0691b9ce27",
"type": "main",
"index": 0
}
]
]
},
"00315b96-ca0b-4c64-b796-54e0eb0f5acb": {
"main": [
[
{
"node": "fd4d4869-27e2-4848-a78e-441f8cdcf11e",
"type": "main",
"index": 0
}
]
]
},
"b9c2618f-3f0e-487a-b8d7-2664b502e069": {
"main": [
[
{
"node": "0b9b0d80-3932-4592-869f-1b88d275c061",
"type": "main",
"index": 0
}
]
]
},
"e85e1121-c0c5-4205-bde6-f1a9de3f0bd7": {
"ai_languageModel": [
[
{
"node": "fd4d4869-27e2-4848-a78e-441f8cdcf11e",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"2cc5dc43-64e0-406a-98b0-2854143d2cc9": {
"main": [
[
{
"node": "0cce44bd-54ad-4444-a351-b395af7e7875",
"type": "main",
"index": 0
}
]
]
},
"fd4d4869-27e2-4848-a78e-441f8cdcf11e": {
"main": [
[
{
"node": "b9c2618f-3f0e-487a-b8d7-2664b502e069",
"type": "main",
"index": 0
}
]
]
},
"2ce43600-134f-410d-b960-f43ab32f1571": {
"main": [
[
{
"node": "ca6f581a-0c4c-4259-8c90-95a23c815633",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Création de contenu, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Trung Tran
@trungtranEmpowering small and medium businesses with smart automation and practical AI, no big tech team required.
Partager ce workflow