This workflow corresponds to n8n.io template #7666 — we link there as the canonical source.
This workflow follows the Agent → Gmail 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": "alHsXe0YAu9A3KBX",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Guest Post Automation",
"tags": [
{
"id": "YATfMg1YuHUabPZ1",
"name": "Publicado",
"createdAt": "2025-08-20T19:02:14.993Z",
"updatedAt": "2025-08-20T19:02:23.890Z"
},
{
"id": "ucccuBhEgmPfgzUw",
"name": "UpWork Proporsal",
"createdAt": "2025-08-20T19:01:50.621Z",
"updatedAt": "2025-08-20T19:01:50.621Z"
}
],
"nodes": [
{
"id": "68a9526a-163e-438f-a957-7e828315fce9",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
752,
-224
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {
"temperature": 0.7,
"presencePenalty": 0
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "984ca7ac-7bf6-4c75-a3a0-5d72cea27bd6",
"name": "Start Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-352,
-336
],
"parameters": {},
"typeVersion": 1
},
{
"id": "45d96bcb-8343-46e4-bf31-71cf00d7bcff",
"name": "Read Config Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
-128,
-336
],
"parameters": {
"options": {
"dataLocationOnSheet": {
"values": {
"rangeDefinition": "specifyRange"
}
}
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit#gid=0",
"cachedResultName": "Config"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit?usp=drivesdk",
"cachedResultName": "Guest Post Automation"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7,
"alwaysOutputData": true
},
{
"id": "5586500f-e6b1-4080-8b3c-acd768666222",
"name": "Check if Status is Start",
"type": "n8n-nodes-base.if",
"position": [
96,
-336
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "90df972e-5b50-4bd0-992f-659f66420168",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.ESTADO }}",
"rightValue": "Start"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "d3acad1d-b721-4745-9f85-fd83fd9270d5",
"name": "Read Guest Post Input",
"type": "n8n-nodes-base.googleSheets",
"position": [
320,
-624
],
"parameters": {
"options": {
"dataLocationOnSheet": {
"values": {
"rangeDefinition": "specifyRange"
}
}
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 688443584,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit#gid=688443584",
"cachedResultName": "Inputs"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit?usp=drivesdk",
"cachedResultName": "Guest Post Automation"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7,
"alwaysOutputData": false
},
{
"id": "89411d00-5a17-443a-82c8-2667a6782819",
"name": "Read Writting Rules",
"type": "n8n-nodes-base.googleSheets",
"position": [
320,
-432
],
"parameters": {
"options": {
"dataLocationOnSheet": {
"values": {
"rangeDefinition": "specifyRange"
}
}
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1915076691,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit#gid=1915076691",
"cachedResultName": "Rules"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit?usp=drivesdk",
"cachedResultName": "Guest Post Automation"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "715c3f06-7238-49a6-ac33-a62d2f919b14",
"name": "Read Portfolio Requirements",
"type": "n8n-nodes-base.googleSheets",
"position": [
320,
-240
],
"parameters": {
"options": {
"dataLocationOnSheet": {
"values": {
"rangeDefinition": "specifyRange"
}
}
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 472870513,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit#gid=472870513",
"cachedResultName": "Portfolio"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit?usp=drivesdk",
"cachedResultName": "Guest Post Automation"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "d5a4244e-a8ec-4062-96a9-29aa4eb4f0b6",
"name": "Merge All Inputs",
"type": "n8n-nodes-base.merge",
"position": [
544,
-448
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition",
"numberInputs": 3
},
"typeVersion": 3.2
},
{
"id": "35ceb1ee-2b8f-42f4-9b41-c4d31165e7a5",
"name": "Generate post with AI (German)",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
752,
-448
],
"parameters": {
"text": "=Schreibe einen professionellen Gastbeitrag auf Deutsch f\u00fcr den Monat {{ $json[\"Month\"] }} \u00fcber das Thema \"{{ $json[\"Theme\"] }}\". \nDer Text soll ungef\u00e4hr {{ $json[\"How much words\"] }} W\u00f6rter lang sein. \nVermeide das Wort \"{{ $json[\"Words cant use\"] }}\". \nStrukturiere den Text logisch mit Einleitung, Hauptteil und Schluss. \nDer Beitrag soll sich f\u00fcr Outreach und Foren eignen.\n",
"options": {
"systemMessage": "Du bist ein erfahrener SEO-Content-Stratege und Texter. Du schreibst klare, strukturierte und hochwertige Inhalte auf Deutsch f\u00fcr Outreach-Kampagnen.\n"
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "91f40b8c-6121-4525-8bd9-ec91b4d3473c",
"name": "Save Generated Content to Outreach",
"type": "n8n-nodes-base.googleSheets",
"position": [
1104,
-448
],
"parameters": {
"columns": {
"value": {
"Month": "={{ $('Merge All Inputs').item.json.Month }}",
"Theme": "={{ $('Merge All Inputs').item.json.Theme }}",
"Content": "={{ $json.output }}"
},
"schema": [
{
"id": "Month",
"type": "string",
"display": true,
"required": false,
"displayName": "Month",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Theme",
"type": "string",
"display": true,
"required": false,
"displayName": "Theme",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Content",
"type": "string",
"display": true,
"required": false,
"displayName": "Content",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1128967644,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit#gid=1128967644",
"cachedResultName": "Outreach"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit?usp=drivesdk",
"cachedResultName": "Guest Post Automation"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "8490dcef-5467-4c1b-9310-8eaaadb7c542",
"name": "Mark Config Row as Finished",
"type": "n8n-nodes-base.googleSheets",
"position": [
1312,
-448
],
"parameters": {
"columns": {
"value": {
"ESTADO": "Finished",
"row_number": 2
},
"schema": [
{
"id": "ESTADO",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ESTADO",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit#gid=0",
"cachedResultName": "Config"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RT9otz1mopBLNY-jgp74xZ586ppcgUMJodOBo5ivFW0/edit?usp=drivesdk",
"cachedResultName": "Guest Post Automation"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "369f25ff-116b-4743-b15d-0fb1815fbede",
"name": "Notify When No Action is Taken",
"type": "n8n-nodes-base.gmail",
"position": [
96,
-48
],
"parameters": {
"sendTo": "user@example.com",
"message": "Hey change the sheets Config status.",
"options": {},
"subject": "Config not activated, workflow stoped",
"operation": "sendAndWait"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "99372085-e6d6-4dec-bbae-7e34ef589845",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-672,
-864
],
"parameters": {
"width": 288,
"height": 352,
"content": "## \ud83e\udde0 Overview\nThis workflow automates the generation of guest post content using OpenAI, based on inputs from a Google Sheet. It is designed to streamline outreach content production.\n\n- Input: Google Sheet with topics, month, and writing parameters\n- Output: AI-generated article in German, saved back to a Google Sheet\n- Includes: Status checks, notifications, merge logic, and content generation\n"
},
"typeVersion": 1
},
{
"id": "185e18a8-f9bc-4f50-ac83-8ee77934db16",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-512
],
"parameters": {
"color": 4,
"width": 384,
"height": 144,
"content": "## 1. Manual Trigger & Config\nThis part of the workflow starts manually and reads the configuration sheet containing all scheduled content rows.\n\nOnly rows with STATUS = \"Start\" are processed.\n"
},
"typeVersion": 1
},
{
"id": "d61118df-18be-467f-a3f6-2edceb330584",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
464,
-688
],
"parameters": {
"color": 2,
"width": 352,
"height": 192,
"content": "## 2. Merge Guest Post Data\nThis node merges:\n- Guest post topic input\n- Writing rules\n- Portfolio requirements\n...into a single object to be passed to the OpenAI Agent.\n"
},
"typeVersion": 1
},
{
"id": "567f30b3-9a2f-451a-bfaa-4336bf369880",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
-64
],
"parameters": {
"color": 3,
"content": "## 3. Generate Content with AI\nThe AI Agent uses the merged input to generate a guest post in German.\n\nModel: OpenAI GPT-4 (configurable)\nMemory: Optional\n"
},
"typeVersion": 1
},
{
"id": "8545fc83-4906-495d-8265-fc245583ad0a",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1104,
-576
],
"parameters": {
"color": 5,
"width": 384,
"height": 112,
"content": "## 4. Save Results\n- Append generated content to the Outreach Sheet\n- Mark the original row in Config sheet as \"Finished\"\n"
},
"typeVersion": 1
},
{
"id": "7c3a0856-b060-48f6-ad39-377d04f5c95b",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-464,
-96
],
"parameters": {
"color": 7,
"width": 272,
"content": "## Optional: Email Notification\nIf the status is not \"Start\", the workflow sends a Gmail notification to let you know that no action was taken.\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "f6b6d867-0d2c-42e8-9705-2e1e29d382c6",
"connections": {
"Merge All Inputs": {
"main": [
[
{
"node": "Generate post with AI (German)",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Generate post with AI (German)",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Read Config Sheet": {
"main": [
[
{
"node": "Check if Status is Start",
"type": "main",
"index": 0
}
]
]
},
"Read Writting Rules": {
"main": [
[
{
"node": "Merge All Inputs",
"type": "main",
"index": 1
}
]
]
},
"Start Manual Trigger": {
"main": [
[
{
"node": "Read Config Sheet",
"type": "main",
"index": 0
}
]
]
},
"Read Guest Post Input": {
"main": [
[
{
"node": "Merge All Inputs",
"type": "main",
"index": 0
}
]
]
},
"Check if Status is Start": {
"main": [
[
{
"node": "Read Guest Post Input",
"type": "main",
"index": 0
},
{
"node": "Read Writting Rules",
"type": "main",
"index": 0
},
{
"node": "Read Portfolio Requirements",
"type": "main",
"index": 0
}
],
[
{
"node": "Notify When No Action is Taken",
"type": "main",
"index": 0
}
]
]
},
"Read Portfolio Requirements": {
"main": [
[
{
"node": "Merge All Inputs",
"type": "main",
"index": 2
}
]
]
},
"Generate post with AI (German)": {
"main": [
[
{
"node": "Save Generated Content to Outreach",
"type": "main",
"index": 0
}
]
]
},
"Notify When No Action is Taken": {
"main": [
[
{
"node": "Read Config Sheet",
"type": "main",
"index": 0
}
]
]
},
"Save Generated Content to Outreach": {
"main": [
[
{
"node": "Mark Config Row as Finished",
"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.
gmailOAuth2googleSheetsOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
✨ About this Template
Source: https://n8n.io/workflows/7666/ — 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.
This workflow is designed for Scrum Masters and Agile Coaches who prepare and coordinate Sprint Planning sessions, using Google Calendar, Google Sheets, and OpenAI.
This workflow is designed for Scrum Masters, Agile Coaches, and Product Owners who want to automate backlog refinement preparation using Google Sheets, Gmail, and OpenAI. It’s ideal for teams seeking
Automated Book Generation System. Uses googleSheetsTrigger, gmail, lmChatOpenAi, outputParserStructured. Event-driven trigger; 43 nodes.
This n8n workflow template automates your lead generation and follow-up process using AI. It captures leads through a form, enriches them with company data, classifies them into different categories,
Want to skip the manual work and instantly generate SWOT analyses for your business plans, investor decks, or strategy docs? 🚀 This workflow lets you automate the entire SWOT (Strengths, Weaknesses, O