AutomationFlowsAI & RAG › Rewrite Content in 5 Tones Using Gpt-4o-mini, Google Drive and Slack

Rewrite Content in 5 Tones Using Gpt-4o-mini, Google Drive and Slack

ByIncrementors @incrementors on n8n.io

Paste any text into a simple form — an email, social caption, blog paragraph, or proposal — and submit. GPT-4o-mini rewrites it simultaneously in five distinct tones: Professional, Casual, Persuasive, Concise, and Empathetic. All five versions are saved as a single document in…

Event trigger★★★★☆ complexityAI-powered16 nodesForm TriggerAgentOpenAI ChatOutput Parser StructuredGoogle DriveSlack
AI & RAG Trigger: Event Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #14989 — we link there as the canonical source.

This workflow follows the Agent → Form Trigger 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 →

Download .json
{
  "nodes": [
    {
      "id": "69cf16ba-2e5f-4b87-b74b-ca02aa3291b0",
      "name": "Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -768,
        1152
      ],
      "parameters": {
        "color": 4,
        "width": 540,
        "height": 928,
        "content": "## AI Content Tone Rewriter \u2014 GPT-4o-mini + Google Drive + Slack\n\nFor content teams, copywriters, and agencies who write the same message repeatedly in different styles for different audiences. Submit any text via the form \u2014 email, blog paragraph, social caption, proposal, or product description. GPT-4o-mini rewrites it in five distinct tones simultaneously: Professional, Casual, Persuasive, Concise, and Empathetic. All five versions are assembled into one Google Doc saved to your Drive folder. Slack gets an instant preview of the Concise version so your team can act immediately.\n\n## How it works\n- **1. Form \u2014 Content Tone Rewriter** collects the original text, content type, project name, and target audience\n- **2. Set \u2014 Config Values** stores Drive folder ID, Slack channel, company name, and maps all form fields\n- **3. AI Agent \u2014 Tone Rewriter** uses GPT-4o-mini to rewrite the text in all five tones at once\n- **6. Code \u2014 Assemble Document Content** builds the full doc text with all five versions and the Slack preview message\n- **7. Code \u2014 Convert to Binary** encodes the doc as a binary file for Drive upload\n- **8. Google Drive \u2014 Upload Tone Doc** saves the complete five-version document to your Drive folder\n- **9. Slack \u2014 Send Concise Preview** posts the Concise version as a quick team preview\n\n## Set up steps\n1. In **2. Set \u2014 Config Values** \u2014 replace YOUR_GOOGLE_DRIVE_FOLDER_ID, YOUR-SLACK-CHANNEL, and YOUR COMPANY NAME\n2. In **4. OpenAI \u2014 GPT-4o-mini Model** \u2014 connect your OpenAI credential\n3. In **8. Google Drive \u2014 Upload Tone Doc** \u2014 connect your Google Drive OAuth2 credential\n4. In **9. Slack \u2014 Send Concise Preview** \u2014 connect your Slack OAuth2 credential and invite the bot to your channel\n5. Activate the workflow and copy the Form URL from node 1"
      },
      "typeVersion": 1
    },
    {
      "id": "e3634b5d-9471-4194-b5cb-9b5ec9088cb9",
      "name": "Section \u2014 Form Input and Config",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        1488
      ],
      "parameters": {
        "color": 5,
        "width": 484,
        "height": 372,
        "content": "## Form Input and Config\nForm collects the original text, content type, project name, and target audience. Config stores Drive folder ID, Slack channel, company name, and builds the document title and run timestamp."
      },
      "typeVersion": 1
    },
    {
      "id": "1ad16e2c-da50-4d31-bfe8-579bd63a9aa3",
      "name": "Section \u2014 AI Tone Rewriting",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        1360
      ],
      "parameters": {
        "color": 6,
        "width": 404,
        "height": 708,
        "content": "## AI Tone Rewriting\nGPT-4o-mini rewrites the original text in five tones simultaneously. Structured Output Parser enforces that all five versions are always returned: Professional, Casual, Persuasive, Concise, and Empathetic."
      },
      "typeVersion": 1
    },
    {
      "id": "5cbf8f25-5ed3-4545-b992-5746af3c371c",
      "name": "Section \u2014 Document Assembly",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        944,
        1488
      ],
      "parameters": {
        "color": 6,
        "width": 512,
        "height": 340,
        "content": "## Document Assembly\nBuilds the full Google Doc content \u2014 original text plus all five tone versions with clear section headers. Also prepares the Slack preview message showing the Concise version."
      },
      "typeVersion": 1
    },
    {
      "id": "89439513-c85e-48af-bb4b-935aa7f1886d",
      "name": "Section \u2014 Google Drive Upload",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1456,
        912
      ],
      "parameters": {
        "color": 4,
        "width": 544,
        "height": 516,
        "content": "## Google Drive Upload\nConverts the assembled text to binary format, then uploads it as a document to the configured Drive folder. File is named with project name and date."
      },
      "typeVersion": 1
    },
    {
      "id": "70bd4f4a-1b32-48f2-90e2-1785e8f137f0",
      "name": "Section \u2014 Slack Preview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1568,
        1680
      ],
      "parameters": {
        "color": 4,
        "width": 496,
        "height": 452,
        "content": "## Slack Preview\nPosts the Concise tone version to your Slack channel as an instant team preview. Full five-version document is always in Google Drive."
      },
      "typeVersion": 1
    },
    {
      "id": "015c335a-671c-40e8-9787-4e639f69f50f",
      "name": "Note \u2014 Edit Config Before Activating",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        2128
      ],
      "parameters": {
        "color": 3,
        "width": 1100,
        "height": 140,
        "content": "## \u26a0\ufe0f Edit This Node Before Activating\nReplace three values: YOUR_GOOGLE_DRIVE_FOLDER_ID (from Drive folder URL after /folders/), YOUR-SLACK-CHANNEL (include the # symbol), and YOUR COMPANY NAME."
      },
      "typeVersion": 1
    },
    {
      "id": "305b29ab-3006-4db0-a69e-2bffd2034e20",
      "name": "1. Form \u2014 Content Tone Rewriter",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -96,
        1632
      ],
      "parameters": {
        "options": {},
        "formTitle": "AI Content Tone Rewriter",
        "formFields": {
          "values": [
            {
              "fieldType": "textarea",
              "fieldLabel": "Your Original Text",
              "placeholder": "Paste your email, blog paragraph, social caption, proposal, or any text here...",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Content Type",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Email"
                  },
                  {
                    "option": "Social Media Caption"
                  },
                  {
                    "option": "Blog Paragraph"
                  },
                  {
                    "option": "Client Proposal"
                  },
                  {
                    "option": "Product Description"
                  },
                  {
                    "option": "Other"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldLabel": "Your Name or Project Name",
              "placeholder": "e.g. Rahul \u2014 Incrementors Proposal",
              "requiredField": true
            },
            {
              "fieldLabel": "Target Audience",
              "placeholder": "e.g. C-suite executives, young professionals, general public"
            }
          ]
        },
        "formDescription": "Paste your text below. AI will rewrite it in 5 different tones and save all versions to Google Drive."
      },
      "typeVersion": 2.2
    },
    {
      "id": "37dbca0a-5824-4840-9abe-99019cb3b779",
      "name": "2. Set \u2014 Config Values",
      "type": "n8n-nodes-base.set",
      "position": [
        176,
        1632
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "cfg-001",
              "name": "folderId",
              "type": "string",
              "value": "YOUR_GOOGLE_DRIVE_FOLDER_ID"
            },
            {
              "id": "cfg-002",
              "name": "slackChannel",
              "type": "string",
              "value": "#YOUR-SLACK-CHANNEL"
            },
            {
              "id": "cfg-003",
              "name": "companyName",
              "type": "string",
              "value": "YOUR COMPANY NAME"
            },
            {
              "id": "cfg-004",
              "name": "originalText",
              "type": "string",
              "value": "={{ $json['Your Original Text'] }}"
            },
            {
              "id": "cfg-005",
              "name": "contentType",
              "type": "string",
              "value": "={{ $json['Content Type'] }}"
            },
            {
              "id": "cfg-006",
              "name": "projectName",
              "type": "string",
              "value": "={{ $json['Your Name or Project Name'] }}"
            },
            {
              "id": "cfg-007",
              "name": "targetAudience",
              "type": "string",
              "value": "={{ $json['Target Audience'] || 'General audience' }}"
            },
            {
              "id": "cfg-008",
              "name": "docTitle",
              "type": "string",
              "value": "=Tone Rewrites \u2014 {{ $json['Your Name or Project Name'] }} \u2014 {{ $now.toFormat('dd MMM yyyy') }}"
            },
            {
              "id": "cfg-009",
              "name": "runDate",
              "type": "string",
              "value": "={{ $now.toFormat('dd MMM yyyy HH:mm') }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8c4be493-29c8-4256-8625-376c1a5d6016",
      "name": "3. AI Agent \u2014 Tone Rewriter",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        480,
        1632
      ],
      "parameters": {
        "text": "=You are a professional content writer and tone specialist working for {{ $json.companyName }}.\n\nYou will rewrite the following text in exactly 5 different tones.\n\nORIGINAL TEXT:\n{{ $json.originalText }}\n\nCONTENT TYPE: {{ $json.contentType }}\nTARGET AUDIENCE: {{ $json.targetAudience }}\n\nRewrite the text in ALL 5 tones below. Keep the core message and meaning identical in all versions. Only the tone and style should change.\n\nReturn ONLY a valid JSON object with exactly these 5 keys. No extra text before or after. No markdown. No backticks.\n\nprofessional \u2014 Formal, polished, authoritative. Suitable for corporate communication, executive emails, or formal proposals. Use complete sentences and precise language.\n\ncasual \u2014 Warm, conversational, approachable. Like talking to a friend or colleague. Use contractions, simpler words, light energy.\n\npersuasive \u2014 Compelling, action-oriented, benefit-focused. Use power words. Make the reader want to act. Clear call to action if appropriate.\n\nconcise \u2014 Strip everything to the bare minimum. Every word earns its place. Under 60 words if possible. No filler, no padding.\n\nempathetic \u2014 Warm, understanding, human. Acknowledge the reader's perspective. Show you care about their situation or needs. Gentle and supportive tone.\n\nRULES:\n- Each version must be a complete, usable piece of writing.\n- Do not add labels like Professional: or Tone 1: inside the values.\n- Plain text only in each value. No markdown symbols.\n- Keep each version between 40 and 120 words (except concise which can be shorter).",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "a9252238-23ef-4320-bfad-f6436005413e",
      "name": "4. OpenAI \u2014 GPT-4o-mini Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        448,
        1840
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {
          "maxTokens": 1500,
          "temperature": 0.7
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "35a52f40-4a0e-4621-8301-a76eb1e0493b",
      "name": "5. Parser \u2014 Structured Tone Output",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        624,
        1840
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"professional\": {\n      \"type\": \"string\",\n      \"description\": \"Professional tone rewrite \u2014 formal and polished\"\n    },\n    \"casual\": {\n      \"type\": \"string\",\n      \"description\": \"Casual tone rewrite \u2014 warm and conversational\"\n    },\n    \"persuasive\": {\n      \"type\": \"string\",\n      \"description\": \"Persuasive tone rewrite \u2014 compelling and action-oriented\"\n    },\n    \"concise\": {\n      \"type\": \"string\",\n      \"description\": \"Concise tone rewrite \u2014 stripped to minimum words\"\n    },\n    \"empathetic\": {\n      \"type\": \"string\",\n      \"description\": \"Empathetic tone rewrite \u2014 warm and understanding\"\n    }\n  },\n  \"required\": [\"professional\", \"casual\", \"persuasive\", \"concise\", \"empathetic\"]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "5fb0eb3a-b7dd-4dc4-a6f8-b8ee89241eab",
      "name": "6. Code \u2014 Assemble Document Content",
      "type": "n8n-nodes-base.code",
      "position": [
        1200,
        1632
      ],
      "parameters": {
        "jsCode": "// Combine AI output with form config data\nconst aiOutput = $input.first().json.output;\nconst config = $('2. Set \u2014 Config Values').item.json;\n\nconst professional = aiOutput.professional || 'Could not generate professional version.';\nconst casual = aiOutput.casual || 'Could not generate casual version.';\nconst persuasive = aiOutput.persuasive || 'Could not generate persuasive version.';\nconst concise = aiOutput.concise || 'Could not generate concise version.';\nconst empathetic = aiOutput.empathetic || 'Could not generate empathetic version.';\n\n// Build the full Google Doc content\nconst docContent = `AI TONE REWRITER RESULTS\n\nProject: ${config.projectName}\nContent Type: ${config.contentType}\nTarget Audience: ${config.targetAudience}\nGenerated: ${config.runDate}\nPowered by: ${config.companyName} + GPT-4o-mini\n\n${'='.repeat(60)}\n\nORIGINAL TEXT:\n\n${config.originalText}\n\n${'='.repeat(60)}\n\nVERSION 1 \u2014 PROFESSIONAL\n\n${professional}\n\n${'='.repeat(60)}\n\nVERSION 2 \u2014 CASUAL AND FRIENDLY\n\n${casual}\n\n${'='.repeat(60)}\n\nVERSION 3 \u2014 PERSUASIVE\n\n${persuasive}\n\n${'='.repeat(60)}\n\nVERSION 4 \u2014 CONCISE\n\n${concise}\n\n${'='.repeat(60)}\n\nVERSION 5 \u2014 EMPATHETIC\n\n${empathetic}\n\n${'='.repeat(60)}\n\nAll 5 versions generated automatically by n8n + GPT-4o-mini`;\n\n// Build Slack preview (show concise version as quick preview)\nconst slackPreview = `*New Tone Rewrite Ready*\n\n*Project:* ${config.projectName}\n*Content Type:* ${config.contentType}\n*Generated:* ${config.runDate}\n\n*Quick Preview \u2014 Concise Version:*\n${concise}\n\n_5 versions saved to Google Drive_`;\n\nreturn [{\n  json: {\n    docContent,\n    docTitle: config.docTitle,\n    folderId: config.folderId,\n    slackChannel: config.slackChannel,\n    slackPreview,\n    professional,\n    casual,\n    persuasive,\n    concise,\n    empathetic,\n    projectName: config.projectName\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "cabb840d-69df-45a0-a184-5ef541ca5db1",
      "name": "7. Code \u2014 Convert to Binary",
      "type": "n8n-nodes-base.code",
      "position": [
        1664,
        1040
      ],
      "parameters": {
        "jsCode": "// Convert doc content text to binary for Google Drive upload\nconst item = $input.first().json;\n\n// Convert text content to base64 encoded binary\nconst textContent = item.docContent || '';\nconst base64Content = Buffer.from(textContent, 'utf-8').toString('base64');\n\nreturn [{\n  json: {\n    docTitle: item.docTitle,\n    folderId: item.folderId,\n    slackChannel: item.slackChannel,\n    slackPreview: item.slackPreview,\n    projectName: item.projectName\n  },\n  binary: {\n    data: {\n      data: base64Content,\n      mimeType: 'text/plain',\n      fileName: item.docTitle + '.txt',\n      fileExtension: 'txt'\n    }\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "424398b7-bffa-4f29-bf24-ed616480571a",
      "name": "8. Google Drive \u2014 Upload Tone Doc",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1664,
        1232
      ],
      "parameters": {
        "name": "={{ $json.docTitle }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.folderId }}"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "9ba3d03d-b821-4a70-a6ba-56f240797647",
      "name": "9. Slack \u2014 Send Concise Preview",
      "type": "n8n-nodes-base.slack",
      "position": [
        1648,
        1872
      ],
      "parameters": {
        "text": "={{ $json.slackPreview }}",
        "otherOptions": {
          "mrkdwn": true
        },
        "authentication": "oAuth2"
      },
      "typeVersion": 2.2
    }
  ],
  "connections": {
    "2. Set \u2014 Config Values": {
      "main": [
        [
          {
            "node": "3. AI Agent \u2014 Tone Rewriter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3. AI Agent \u2014 Tone Rewriter": {
      "main": [
        [
          {
            "node": "6. Code \u2014 Assemble Document Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7. Code \u2014 Convert to Binary": {
      "main": [
        [
          {
            "node": "8. Google Drive \u2014 Upload Tone Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4. OpenAI \u2014 GPT-4o-mini Model": {
      "ai_languageModel": [
        [
          {
            "node": "3. AI Agent \u2014 Tone Rewriter",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "1. Form \u2014 Content Tone Rewriter": {
      "main": [
        [
          {
            "node": "2. Set \u2014 Config Values",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5. Parser \u2014 Structured Tone Output": {
      "ai_outputParser": [
        [
          {
            "node": "3. AI Agent \u2014 Tone Rewriter",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "6. Code \u2014 Assemble Document Content": {
      "main": [
        [
          {
            "node": "7. Code \u2014 Convert to Binary",
            "type": "main",
            "index": 0
          },
          {
            "node": "9. Slack \u2014 Send Concise Preview",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Paste any text into a simple form — an email, social caption, blog paragraph, or proposal — and submit. GPT-4o-mini rewrites it simultaneously in five distinct tones: Professional, Casual, Persuasive, Concise, and Empathetic. All five versions are saved as a single document in…

Source: https://n8n.io/workflows/14989/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

[](https://www.youtube.com/watch?v=MD1krFvVKdU) Automatically extract, evaluate, and shortlist multiple resumes against a selected job description using GPT-4. This smart, scalable n8n workflow helps

Form Trigger, Output Parser Structured, OpenAI Chat +6
AI & RAG

A smart and reliable resume screening pipeline for modern HR teams. This workflow combines Google Drive (JD & CV storage), OpenAI (GPT-4-based evaluation), Google Sheets (position mapping + result log

Form Trigger, Output Parser Structured, OpenAI Chat +6
AI & RAG

Onboarding Workflow. Uses gmail, formTrigger, stickyNote, slack. Event-driven trigger; 19 nodes.

Gmail, Form Trigger, Slack +5
AI & RAG

Automate the complete client onboarding process for AI automation services using n8n, Asana, Slack, Google Drive, and Gmail. This workflow ensures a consistent, professional, and scalable onboarding e

Gmail, Form Trigger, Slack +5
AI & RAG

Description This automation streamlines client onboarding by instantly processing a submitted form, extracting key details from an uploaded proposal, and using GPT-4 to generate a full onboarding task

Form Trigger, Google Drive, ClickUp +5