Create AI newsletters with GPT-4o, human approval workflow, and SendGrid
Generate AI newsletters from form inputs and send via SendGrid
Streamline your email marketing process with this AI-powered "Human-in-the-Loop" workflow. It allows you to generate high-quality, targeted newsletters from a simple form input, review them via email, and automatically distribute them to your subscribers upon approval.
## Who is this for?
Digital marketers, content creators, community managers, and small business owners who want to maintain consistent communication with their audience but need to reduce the time spent on drafting and formatting emails.
## What does this workflow do?
- Input Collection: Starts with a user-friendly n8n Form where you input the newsletter topic, target audience, and sender details.
- Data Logging: Automatically saves the form responses to a Google Sheet for your records.
- AI Generation: Uses OpenAI (GPT-4o) to draft a catchy subject line and valuable body content formatted in Markdown based on your inputs.
- Approval Process: Sends a "Review Request" email to your inbox (via Gmail). This email contains a preview of the newsletter and a special link to approve it.
- Execution Wait: The workflow pauses and waits for you to click the approval link.
- Distribution: Once approved, it converts the Markdown to HTML and sends the final newsletter to your subscriber list using SendGrid.
## Requirements
- OpenAI API Key: To utilize GPT-4o for content generation.
- Google Cloud Account: Required for the Google Sheets (logging) and Gmail (approval notifications) nodes.
- SendGrid Account: Required for sending the final newsletter to your subscribers.
- n8n version: Ensure you are using a version that supports the LangChain nodes.
## How to set up
- Configure Credentials: Set up your credentials for OpenAI, Google (Sheets & Gmail), and SendGrid within n8n.
- Subscriber List: Open the Workflow Configuration node (Set node). Replace the placeholder with your comma-separated list of subscriber emails.
- Google Sheets: Create a Google Sheet with columns for
topic,target,sender, andadmin_email. Update the Store Form Responses node with your Document ID and Sheet Name. - Sender Verification: In the SendGrid node, ensure the "From Email" matches a verified sender identity in your SendGrid account.
- Test: Click "Test Workflow," fill out the Form Trigger URL, and check your email for the approval draft. Click the link in the email to finish the process.
## How to customize
- Change the AI Model: You can swap the OpenAI model node for Anthropic (Claude) or a local LLM if preferred.
- Adjust the Prompt: Edit the system message in the Generate Newsletter Content agent node to change the tone or structure of the newsletter.
- Swap Email Providers: If you don't use SendGrid or Gmail, simply replace these nodes with the email service of your choice (e.g., Mailchimp, Outlook, AWS SES).
Create AI Newsletters with GPT-4o, Human Approval, and SendGrid
This n8n workflow automates the creation and distribution of newsletters using AI, incorporating a crucial human approval step to ensure quality and relevance before sending. It leverages a Google Sheet for content input, an AI agent for generation, Gmail for human review, and SendGrid for email delivery.
What it does
This workflow streamlines your newsletter creation process through the following steps:
- Triggers on Form Submission: The workflow starts when a new entry is submitted via an n8n form. This form likely contains the initial prompt or topic for the newsletter.
- Retrieves Newsletter Ideas: It fetches newsletter ideas from a specified Google Sheet, providing content for the AI agent.
- Generates Newsletter Content with AI: An AI Agent (powered by OpenAI's GPT-4o via LangChain) takes the ideas from the Google Sheet and generates the newsletter content. It uses a Structured Output Parser to ensure the output is in a usable format.
- Formats Content for Review: The generated content is converted into a Markdown format, making it easy to read and review.
- Sends for Human Approval: The formatted newsletter content is sent via Gmail to a designated email address for human approval.
- Waits for Approval: The workflow pauses, waiting for a human to review the content and provide approval or rejection.
- Sends Approved Newsletter: If the content is approved, the workflow proceeds to send the newsletter using SendGrid.
Prerequisites/Requirements
To use this workflow, you will need:
- n8n Instance: A running instance of n8n.
- Google Sheets Account: Configured credentials for Google Sheets to read newsletter ideas.
- OpenAI API Key: An API key for OpenAI (specifically for GPT-4o) to power the AI Agent.
- Gmail Account: Configured credentials for Gmail to send approval emails.
- SendGrid Account: Configured credentials for SendGrid to send the final newsletters.
Setup/Usage
- Import the Workflow: Download the provided JSON and import it into your n8n instance.
- Configure Credentials:
- Set up your Google Sheets credentials.
- Set up your OpenAI credentials for the "OpenAI Chat Model" node.
- Set up your Gmail credentials.
- Set up your SendGrid credentials.
- Configure Nodes:
- Google Sheets: Specify the spreadsheet and sheet name where your newsletter ideas are located.
- n8n Form Trigger: Configure the form fields that will initiate the workflow (e.g., newsletter topic, target audience).
- AI Agent: Review and adjust the prompt for the AI Agent to guide newsletter generation.
- Gmail: Update the "To" email address to the recipient(s) responsible for human approval.
- SendGrid: Configure the sender email, recipient list, and any other email-specific settings for your newsletters.
- Activate the Workflow: Once configured, activate the workflow.
- Trigger the Workflow: Submit the n8n form to start the newsletter generation and approval process.
Related Templates
Track competitor SEO keywords with Decodo + GPT-4.1-mini + Google Sheets
This workflow automates competitor keyword research using OpenAI LLM and Decodo for intelligent web scraping. Who this is for SEO specialists, content strategists, and growth marketers who want to automate keyword research and competitive intelligence. Marketing analysts managing multiple clients or websites who need consistent SEO tracking without manual data pulls. Agencies or automation engineers using Google Sheets as an SEO data dashboard for keyword monitoring and reporting. What problem this workflow solves Tracking competitor keywords manually is slow and inconsistent. Most SEO tools provide limited API access or lack contextual keyword analysis. This workflow solves that by: Automatically scraping any competitor’s webpage with Decodo. Using OpenAI GPT-4.1-mini to interpret keyword intent, density, and semantic focus. Storing structured keyword insights directly in Google Sheets for ongoing tracking and trend analysis. What this workflow does Trigger — Manually start the workflow or schedule it to run periodically. Input Setup — Define the website URL and target country (e.g., https://dev.to, france). Data Scraping (Decodo) — Fetch competitor web content and metadata. Keyword Analysis (OpenAI GPT-4.1-mini) Extract primary and secondary keywords. Identify focus topics and semantic entities. Generate a keyword density summary and SEO strength score. Recommend optimization and internal linking opportunities. Data Structuring — Clean and convert GPT output into JSON format. Data Storage (Google Sheets) — Append structured keyword data to a Google Sheet for long-term tracking. Setup Prerequisites If you are new to Decode, please signup on this link visit.decodo.com n8n account with workflow editor access Decodo API credentials OpenAI API key Google Sheets account connected via OAuth2 Make sure to install the Decodo Community node. Create a Google Sheet Add columns for: primarykeywords, seostrengthscore, keyworddensity_summary, etc. Share with your n8n Google account. Connect Credentials Add credentials for: Decodo API credentials - You need to register, login and obtain the Basic Authentication Token via Decodo Dashboard OpenAI API (for GPT-4o-mini) Google Sheets OAuth2 Configure Input Fields Edit the “Set Input Fields” node to set your target site and region. Run the Workflow Click Execute Workflow in n8n. View structured results in your connected Google Sheet. How to customize this workflow Track Multiple Competitors → Use a Google Sheet or CSV list of URLs; loop through them using the Split In Batches node. Add Language Detection → Add a Gemini or GPT node before keyword analysis to detect content language and adjust prompts. Enhance the SEO Report → Expand the GPT prompt to include backlink insights, metadata optimization, or readability checks. Integrate Visualization → Connect your Google Sheet to Looker Studio for SEO performance dashboards. Schedule Auto-Runs → Use the Cron Node to run weekly or monthly for competitor keyword refreshes. Summary This workflow automates competitor keyword research using: Decodo for intelligent web scraping OpenAI GPT-4.1-mini for keyword and SEO analysis Google Sheets for live tracking and reporting It’s a complete AI-powered SEO intelligence pipeline ideal for teams that want actionable insights on keyword gaps, optimization opportunities, and content focus trends, without relying on expensive SEO SaaS tools.
Automated YouTube video uploads with 12h interval scheduling in JST
This workflow automates a batch upload of multiple videos to YouTube, spacing each upload 12 hours apart in Japan Standard Time (UTC+9) and automatically adding them to a playlist. ⚙️ Workflow Logic Manual Trigger — Starts the workflow manually. List Video Files — Uses a shell command to find all .mp4 files under the specified directory (/opt/downloads/单词卡/A1-A2). Sort and Generate Items — Sorts videos by day number (dayXX) extracted from filenames and assigns a sequential order value. Calculate Publish Schedule (+12h Interval) — Computes the next rounded JST hour plus a configurable buffer (default 30 min). Staggers each video’s scheduled time by order × 12 hours. Converts JST back to UTC for YouTube’s publishAt field. Split in Batches (1 per video) — Iterates over each video item. Read Video File — Loads the corresponding video from disk. Upload to YouTube (Scheduled) — Uploads the video privately with the computed publishAtUtc. Add to Playlist — Adds the newly uploaded video to the target playlist. 🕒 Highlights Timezone-safe: Pure UTC ↔ JST conversion avoids double-offset errors. Sequential scheduling: Ensures each upload is 12 hours apart to prevent clustering. Customizable: Change SPANHOURS, BUFFERMIN, or directory paths easily. Retry-ready: Each upload and playlist step has retry logic to handle transient errors. 💡 Typical Use Cases Multi-part educational video series (e.g., A1–A2 English learning). Regular content release cadence without manual scheduling. Automated YouTube publishing pipelines for pre-produced content. --- Author: Zane Category: Automation / YouTube / Scheduler Timezone: JST (UTC+09:00)
Create personalized email outreach with AI, Telegram bot & website scraping
Demo Personalized Email This n8n workflow is built for AI and automation agencies to promote their workflows through an interactive demo that prospects can try themselves. The featured system is a deep personalized email demo. --- 🔄 How It Works Prospect Interaction A prospect starts the demo via Telegram. The Telegram bot (created with BotFather) connects directly to your n8n instance. Demo Guidance The RAG agent and instructor guide the user step-by-step through the demo. Instructions and responses are dynamically generated based on user input. Workflow Execution When the user triggers an action (e.g., testing the email demo), n8n runs the workflow. The workflow collects website data using Crawl4AI or standard HTTP requests. Email Demo The system personalizes and sends a demo email through SparkPost, showing the automation’s capability. Logging and Control Each user interaction is logged in your database using their name and id. The workflow checks limits to prevent misuse or spam. Error Handling If a low-CPU scraping method fails, the workflow automatically escalates to a higher-CPU method. ⚙️ Requirements Before setting up, make sure you have the following: n8n — Automation platform to run the workflow Docker — Required to run Crawl4AI Crawl4AI — For intelligent website crawling Telegram Account — To create your Telegram bot via BotFather SparkPost Account — To send personalized demo emails A database (e.g., PostgreSQL, MySQL, or SQLite) — To store log data such as user name and ID 🚀 Features Telegram interface using the BotFather API Instructor and RAG agent to guide prospects through the demo Flow generation limits per user ID to prevent abuse Low-cost yet powerful web scraping, escalating from low- to high-CPU flows if earlier ones fail --- 💡 Development Ideas Replace the RAG logic with your own query-answering and guidance method Remove the flow limit if you’re confident the demo can’t be misused Swap the personalized email demo with any other workflow you want to showcase --- 🧠 Technical Notes Telegram bot created with BotFather Website crawl process: Extract sub-links via /sitemap.xml, sitemap_index.xml, or standard HTTP requests Fall back to Crawl4AI if normal requests fail Fetch sub-link content via HTTPS or Crawl4AI as backup SparkPost used for sending demo emails --- ⚙️ Setup Instructions Create a Telegram Bot Use BotFather on Telegram to create your bot and get the API token. This token will be used to connect your n8n workflow to Telegram. Create a Log Data Table In your database, create a table to store user logs. The table must include at least the following columns: name — to store the user’s name or Telegram username. id — to store the user’s unique identifier. Install Crawl4AI with Docker Follow the installation guide from the official repository: 👉 https://github.com/unclecode/crawl4ai Crawl4AI will handle website crawling and content extraction in your workflow. --- 📦 Notes This setup is optimized for low cost, easy scalability, and real-time interaction with prospects. You can customize each component — Telegram bot behavior, RAG logic, scraping strategy, and email workflow — to fit your agency’s demo needs. 👉 You can try the live demo here: @emaildemobot ---