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 →
{
"name": "CMS Content Upload Automation",
"nodes": [
{
"parameters": {
"documentId": {
"__rl": true,
"value": "YOUR_SHEET_ID",
"mode": "url"
},
"sheetName": {
"__rl": true,
"value": "YOUR_SHEET_ID",
"mode": "list",
"cachedResultName": "N8N"
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
-336,
-80
],
"name": "Google Sheets2",
"alwaysOutputData": true,
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "delete",
"documentId": {
"__rl": true,
"value": "YOUR_SHEET_ID",
"mode": "url"
},
"sheetName": {
"__rl": true,
"value": "YOUR_SHEET_ID",
"mode": "list",
"cachedResultName": "Sheet32"
},
"startIndex": "={{ $('Get Payload').item.json.row_number }}"
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
784,
-80
],
"name": "Google Sheets3",
"alwaysOutputData": false,
"executeOnce": true,
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {
"reset": false
}
},
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1008,
-16
],
"name": "Loop Over Items",
"executeOnce": true,
"onError": "continueRegularOutput"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "seconds",
"secondsInterval": 3
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-784,
-16
],
"name": "Schedule Trigger"
},
{
"parameters": {
"method": "POST",
"url": "https://your-strapi-instance.com/content-manager/collection-types/api::your-collection.your-collection",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={{ $('Token').item.json.Token }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
560,
-80
],
"name": "Publish",
"executeOnce": true,
"alwaysOutputData": true
},
{
"parameters": {
"method": "POST",
"url": "https://your-strapi-instance.com/content-manager/collection-types/api::your-collection.your-collection",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={{ $('Token').item.json.Token }}"
},
{
"name": "Content-type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"provider\": \"{{ $('Get Payload').item.json.Provider }}\",\n \"country\": \"{{ $('Get Payload').item.json.Country }}\",\n \"service_type\": \"{{ $('Get Payload').item.json.service_type }}\",\n \"summary\": \"{{ $json.summary }}\",\n \"about\": [\n {\n \"type\": \"paragraph\",\n \"children\": [\n {\n \"type\": \"text\",\n \"text\": \"{{ $('Get Payload').item.json.About }}\"\n }\n ]\n }\n ],\n \"countries\": {{ $('Get Payload').item.json.Countries }},\n \"address\": \"{{ $('Get Payload').item.json.address }}\",\n \"phone_number\": \"{{ $('Get Payload').item.json.phone_number }}\",\n \"email\": \"{{ $('Get Payload').item.json.email }}\",\n \"website\": \"{{ $('Get Payload').item.json.website }}\",\n \"twitter_url\": \"{{ $('Get Payload').item.json.Twitter }}\",\n \"facebook_url\": \"{{ $('Get Payload').item.json.facebook_url }}\",\n \"linkedin_url\": \"{{ $('Get Payload').item.json.linkedin_url }}\",\n \"instagram_url\": \"{{ $('Get Payload').item.json.instagram_url }}\"\n}\n",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
336,
-80
],
"name": "Create Draft",
"alwaysOutputData": true,
"retryOnFail": false,
"executeOnce": true
},
{
"parameters": {
"jsCode": "const summary = $input.first().json.About.split('.')[0] + '.';\nreturn {summary}"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
112,
-80
],
"name": "Get Summary",
"executeOnce": true
},
{
"parameters": {
"jsCode": "return [items[0]];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-112,
-80
],
"name": "Get Payload",
"executeOnce": true
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "516d5c26-49f3-413e-b6ec-06112f43a108",
"name": "Token",
"value": "Bearer YOUR_STRAPI_JWT_TOKEN",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-560,
-16
],
"name": "Token"
},
{
"parameters": {
"content": "## Uploading vertical data to strapi \nThe purpose of this automation is to upload vertical data to strapi for publishing. It involves uploading content by creating a draft for it and then publishing it.\n\nIt is scheduled to run when executed.\n\n*Requirements*\n#1. Strapi token\n\n#2. Strapi HTTPS for HTTPS requests",
"height": 352,
"width": 736
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-768,
288
],
"typeVersion": 1,
"name": "Sticky Note"
}
],
"connections": {
"Google Sheets2": {
"main": [
[
{
"node": "Get Payload",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets3": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "Token",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Token",
"type": "main",
"index": 0
}
]
]
},
"Publish": {
"main": [
[
{
"node": "Google Sheets3",
"type": "main",
"index": 0
}
]
]
},
"Create Draft": {
"main": [
[
{
"node": "Publish",
"type": "main",
"index": 0
}
]
]
},
"Get Summary": {
"main": [
[
{
"node": "Create Draft",
"type": "main",
"index": 0
}
]
]
},
"Get Payload": {
"main": [
[
{
"node": "Get Summary",
"type": "main",
"index": 0
}
]
]
},
"Token": {
"main": [
[
{
"node": "Google Sheets2",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"meta": {
"templateCredsSetupCompleted": true
},
"tags": []
}
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.
googleSheetsOAuth2Api
About this workflow
CMS Content Upload Automation. Uses googleSheets, httpRequest. Scheduled trigger; 10 nodes.
Source: https://github.com/ChibugoOhanyiri/AI-automation-portfolio/blob/main/cms-content-upload/workflow.json — original creator credit. Request a take-down →