This workflow corresponds to n8n.io template #7502 — we link there as the canonical source.
This workflow follows the Agent → OpenAI Chat recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "nSlsWDi56czfBf3u",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Beginner\u2019s Tutorial: Manage Google Cloud Storage Buckets and Objects with n8n",
"tags": [
{
"id": "NacOgNreMya1Dsve",
"name": "google cloud",
"createdAt": "2025-08-17T07:30:47.533Z",
"updatedAt": "2025-08-17T07:30:47.533Z"
}
],
"nodes": [
{
"id": "45a84f10-bd83-4896-8419-1e7ef93377c5",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
448,
248
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "9ba48335-7513-4c59-a727-c2bdb45241aa",
"name": "Generate an image",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
752,
24
],
"parameters": {
"prompt": "={{ $json.output }}",
"options": {},
"resource": "image"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "bb4afa1e-8c09-402c-bc36-ba6f4f973a48",
"name": "Prompt Generation Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
352,
24
],
"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": "127f18fb-aba1-4524-9ffe-874571d0e1cc",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-320,
-124
],
"parameters": {},
"typeVersion": 1
},
{
"id": "b985d495-9156-4b5b-9042-163c13095bd0",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
-96,
-124
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "af3e6c69-fbfe-49f4-9c29-3a68a821c5a6",
"name": "project_id",
"type": "string",
"value": "n8n-project-467007"
},
{
"id": "1a693ae0-2ba0-4b1b-a00a-4399a8d3ab57",
"name": "location",
"type": "string",
"value": "asia-southeast1"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "771db667-e53d-44da-9493-62aac39fbf6c",
"name": "Get a list of Buckets for a given project",
"type": "n8n-nodes-base.googleCloudStorage",
"position": [
128,
-272
],
"parameters": {
"projectId": "={{ $json.project_id }}",
"requestOptions": {}
},
"credentials": {
"googleCloudStorageOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "cc89fc60-4a79-45f9-af40-99425e9eb1e9",
"name": "Create a new Bucket",
"type": "n8n-nodes-base.googleCloudStorage",
"position": [
128,
24
],
"parameters": {
"createAcl": {},
"operation": "create",
"projectId": "={{ $json.project_id }}",
"bucketName": "=bucket{{ $workflow.id.toLowerCase() }}{{ $now.format('hhmm') }}",
"createBody": {
"dataLocations": "=[ {{ $json.location }}]"
},
"requestOptions": {}
},
"credentials": {
"googleCloudStorageOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b23df0ef-1fa9-41b4-97dd-9493f58ca7af",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
440,
-272
],
"parameters": {},
"typeVersion": 1
},
{
"id": "bbda235c-aecb-4d0b-9174-eb5046017402",
"name": "Create an object",
"type": "n8n-nodes-base.googleCloudStorage",
"position": [
976,
24
],
"parameters": {
"resource": "object",
"operation": "create",
"bucketName": "={{ $('Create a new Bucket').item.json.name }}",
"createData": {},
"objectName": "=object_{{ $now.format('yyyyMMdd') }}.{{ $json.fileExtension }}",
"createQuery": {},
"requestOptions": {},
"encryptionHeaders": {}
},
"credentials": {
"googleCloudStorageOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "4c62f2ea-3891-46fd-bd3c-f3b9cabe2566",
"name": "Delete an object from a bucket",
"type": "n8n-nodes-base.googleCloudStorage",
"position": [
1200,
24
],
"parameters": {
"resource": "object",
"operation": "delete",
"bucketName": "={{ $json.bucket }}",
"objectName": "={{ $json.name }}",
"getParameters": {},
"requestOptions": {}
},
"credentials": {
"googleCloudStorageOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0f7d43ea-ca03-4fb5-a13c-ce238a16158d",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1680,
-640
],
"parameters": {
"width": 1200,
"height": 1280,
"content": "# Beginner\u2019s Tutorial: Manage Google Cloud Storage Buckets and Objects with n8n\n\n## **Who\u2019s it for**\n- Beginners who want to learn how to automate Google Cloud Storage (GCS) operations with n8n. \n- Developers who want to combine **AI image generation** with **cloud storage management**. \n- Anyone looking for a simple introduction to working with **Buckets** and **Objects** in GCS. \n\n## **How it works / What it does**\nThis workflow demonstrates end-to-end usage of **Google Cloud Storage** with AI integration: \n\n1. **Trigger:** Start manually by clicking *Execute Workflow*. \n2. **Edit Fields:** Provide input values (e.g., bucket name or image description). \n3. **List Buckets:** Retrieve all existing buckets in the project (branch: view only). \n4. **Create Bucket:** If needed, create a new bucket to store objects. \n5. **Prompt Generation Agent:** Use an AI model to generate a creative text prompt. \n6. **Generate Image:** Convert the AI-generated prompt into an image. \n7. **Upload Object:** Store the generated image as an object in the selected bucket. \n8. **Delete Object:** Clean up by removing the uploaded object if required. \n\nThis shows the full lifecycle: *Bucket \u2192 Object (Create/Upload/Delete)* combined with AI image generation. \n\n## **How to set up**\n1. **Trigger the workflow:** Use the *When clicking Execute workflow* node to start manually. \n2. **Provide inputs:** In *Edit Fields*, specify details such as bucket name or description text for the image. \n3. **List buckets:** Use the *List Buckets* node to see what exists. \n4. **Create a bucket:** Use *Create Bucket* if you want a new storage bucket. \n5. **Generate prompt & image:** \n - The *Prompt Generation Agent* uses an OpenAI Chat Model to create an image prompt. \n - The *Generate an Image* node turns this prompt into an actual image. \n6. **Upload to bucket:** Use *Create Object* to upload the generated image into your GCS bucket. \n7. **Delete object (optional):** Use *Delete Object* to remove the file from the bucket as a cleanup step. \n\n## **Requirements**\n- An active **Google Cloud account** with **Cloud Storage API enabled**. \n- A **Service Account Key (JSON)** credential added in n8n for GCS. \n- An **OpenAI API Key** configured in n8n for the prompt and image generation nodes. \n- Basic familiarity with running workflows in n8n. \n \n## **How to customize the workflow**\n- **Different object types:** Instead of images, upload PDFs, logs, or text files. \n- **Automatic cleanup:** Skip the delete step if you want objects to persist. \n- **Schedule trigger:** Replace manual execution with a weekly or daily schedule. \n- **Dynamic prompts:** Accept user input from a form or webhook to generate images. \n- **Multi-bucket management:** Extend the logic to manage multiple buckets across projects. \n- **Notifications:** Add a Slack/Email step after upload to notify your team with the object URL. \n\n\u2705 By the end of this tutorial, you\u2019ll understand how to: \n- Work with **Buckets** (list, create). \n- Work with **Objects** (upload, delete). \n- Integrate **AI image generation** with Google Cloud Storage. "
},
"typeVersion": 1
},
{
"id": "583e8c1e-2656-4826-a44f-3473e2ce63df",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
-304
],
"parameters": {
"width": 352,
"height": 112,
"content": "### 1. Start the Workflow\nBegin by manually executing the workflow. This helps you test and understand each step before automating it with a schedule."
},
"typeVersion": 1
},
{
"id": "93a9d84f-15ee-4abc-88b2-2ded850d044d",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-176,
48
],
"parameters": {
"height": 128,
"content": "### 2. Provide Input Fields\nFill in the required fields such as the bucket name and image description. These inputs will guide how the workflow runs."
},
"typeVersion": 1
},
{
"id": "54648e02-71b1-4cb9-93c1-0911a8752a27",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
96,
-512
],
"parameters": {
"height": 192,
"content": "### 3. List all the current Google Cloud Storage buckets \nList all the current Google Cloud Storage buckets in your project. This lets you see what\u2019s already available before creating new ones.\n\n"
},
"typeVersion": 1
},
{
"id": "2102a37c-3c07-4629-b31e-24b1d093973d",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
240
],
"parameters": {
"height": 128,
"content": "### 4. Create a New Bucket\nIf the bucket you want does not exist, the workflow can create a new bucket for you automatically."
},
"typeVersion": 1
},
{
"id": "401fb591-bb05-484c-8b50-48ad51f68e60",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
352,
-144
],
"parameters": {
"width": 496,
"content": "\n### 5. Generate an AI Prompt\n- Use the AI agent to turn your simple input into a more descriptive or creative prompt. This will be used for image generation.\n- Send the AI-generated prompt to the image generation node and produce an image file."
},
"typeVersion": 1
},
{
"id": "8129411b-27a2-4d11-ab54-e73a7af4042c",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
912,
240
],
"parameters": {
"height": 144,
"content": "### 7. Upload the Image to a Bucket\nTake the generated image and upload it as an object inside your chosen Google Cloud Storage bucket."
},
"typeVersion": 1
},
{
"id": "a6246de7-0736-4040-af21-18b337e3e524",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1184,
-176
],
"parameters": {
"content": "### 8. Delete the Object (Optional)\nIf you no longer need the file, the workflow can also remove the object from the bucket to keep storage clean."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "3f6f80f3-c6fd-4640-b5c2-2f3c89eec940",
"connections": {
"Edit Fields": {
"main": [
[
{
"node": "Get a list of Buckets for a given project",
"type": "main",
"index": 0
},
{
"node": "Create a new Bucket",
"type": "main",
"index": 0
}
]
]
},
"Create an object": {
"main": [
[
{
"node": "Delete an object from a bucket",
"type": "main",
"index": 0
}
]
]
},
"Generate an image": {
"main": [
[
{
"node": "Create an object",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Prompt Generation Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create a new Bucket": {
"main": [
[
{
"node": "Prompt Generation Agent",
"type": "main",
"index": 0
}
]
]
},
"Prompt Generation Agent": {
"main": [
[
{
"node": "Generate an image",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Get a list of Buckets for a given project": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleCloudStorageOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
[](https://www.youtube.com/watch?v=2iJfmQgVL6E) Beginners who want to learn how to automate Google Cloud Storage (GCS) operations with n8n. Developers who want to combine AI image generation with cloud storage management. Anyone looking for a simple introduction to working with…
Source: https://n8n.io/workflows/7502/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.
BoomerBobBot.TP. Uses agent, telegramTrigger, telegram, memoryBufferWindow. Event-driven trigger; 95 nodes.
Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.
The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”
Personal Assistant. Uses memoryBufferWindow, agent, agentTool, httpRequestTool. Event-driven trigger; 77 nodes.