Skip to main content
P

Praneel S

4
Workflows

Workflows by Praneel S

Workflow preview: WhatsApp AI assistant for Google Calendar & Gmail management with Gemini/GPT
Free advanced

WhatsApp AI assistant for Google Calendar & Gmail management with Gemini/GPT

⚠️ **Disclaimer:** This workflow uses WhatsApp, Google Calendar, and Gmail nodes that must be configured manually. ## Who’s it for This workflow is built for professionals, teams, and automation enthusiasts who want to **manage their Google Calendar and Gmail directly from WhatsApp**, powered by an AI assistant using OpenAI GPT or Google Gemini. It enables users to chat naturally through WhatsApp to schedule meetings, send emails, and check events — all without opening Gmail or Google Calendar. ## How it works - The **WhatsApp Trigger** node captures incoming messages from users. - The **AI Agent** (powered by Gemini or GPT) interprets user queries and determines the best tool to use. - The **Simple Memory** node keeps context between messages using the user’s phone number. - The **Google Calendar nodes** handle: - Listing, creating, and updating events. - Checking your availability before scheduling. - The **Gmail nodes** handle: - Sending emails. - Reading and summarizing recent messages. - The **Date & Time node** converts natural language like “next Monday at 3 PM” into proper ISO time format. - The assistant responds via **Send WhatsApp Response**, sending clear confirmations and replies. ## Features - Manage Gmail and Calendar entirely via WhatsApp. - AI-powered understanding of natural language commands. - Integrated with Google Meet for automatic conferencing links. - Short-term memory for context retention. - Fully modular – swap Gemini with OpenAI GPT or any LLM. ## Setup Steps 1. Configure WhatsApp Cloud API via Meta for Developers. 2. Set up Google Calendar and Gmail OAuth2 credentials. 3. Add your Google API keys and calendar email. 4. Connect your OpenAI or Gemini model credentials. 5. Activate and test the workflow with messages like: - “Schedule a meeting tomorrow at 5 PM.” - “Check my latest emails.” - “Send an email to [email protected] about our project.” ## Requirements - n8n instance (self-hosted or cloud) - WhatsApp Business API (Meta Developer Account) - Google Workspace or Gmail account - OpenAI API key or Google Gemini API key - Properly configured webhooks for WhatsApp Trigger ## Example Prompts - “What’s on my calendar this week?” - “Email John to confirm our meeting.” - “When am I free tomorrow afternoon?” ## Customization - Replace Gemini with OpenAI GPT in the AI Agent node. - Adjust memory length for longer or shorter conversations. - Add Slack or Teams notification nodes. - Modify the prompt personality or response tone. ## Credits Created by [Praneel](https://www.praneel.tech) For detailed setup help, visit [praneel.tech/contact](https://www.praneel.tech/contact)

P
Praneel S
Support Chatbot
20 Oct 2025
690
0
Workflow preview: AI-powered Gmail and Calendar assistant with Gemini chat interface
Free advanced

AI-powered Gmail and Calendar assistant with Gemini chat interface

⚠️ **Disclaimer:** This workflow uses Google Calendar and Gmail nodes which you will have to configure yourself ## Who’s it for Anyone who wants an **AI-powered personal assistant** that can handle Gmail and Google Calendar tasks through a simple webhook. This is useful for developers, small teams, and productivity enthusiasts who want to connect a chatbot (Discord, Telegram, WhatsApp, or custom frontends) to their email and calendar. ## How it works / What it does This workflow acts as a **chat-based AI assistant**. You send text requests through a webhook (e.g., from a chatbot), and the AI agent interprets them to take actions like: - 📧 Sending emails in Gmail - 📥 Reading and summarizing your emails - 📅 Checking your Google Calendar events - ✅ Checking your availability before booking - 📝 Creating new calendar events with Google Meet links - ✏️ Updating existing events - ⏰ Converting natural time expressions like “tomorrow at 3 PM” into exact timestamps The AI agent is powered by the **Google Gemini Chat Model (or any LLM you choose)** and follows strict guardrails: - Confirms actions before executing - Asks for clarification if details are missing - Prevents double-booking by checking availability ## How to set up 1. Import this workflow into n8n. 2. Set up credentials for: - Gmail (OAuth2) - Google Calendar (OAuth2) - AI provider (Gemini, OpenAI, Claude, etc.) 3. Configure the webhook node (`/chat`) as your chatbot endpoint. - You can connect it to Discord, WhatsApp, Telegram, or a frontend app. 4. Customize the AI Agent’s system prompt if you want to tweak tone or rules. 5. Deploy and start sending messages like: - “Check my emails from today” - “Schedule a meeting with John tomorrow at 3 PM” - “Email my team about the deadline extension” ## Requirements - n8n installed and running (cloud or self-hosted) - Gmail and Google Calendar accounts with API access - API key for your chosen AI provider - [Webhook Chatbot interface](https://github.com/Praneel7015/webhook-chatbot-interface) ## How to customize - Swap **Google Gemini** with another LLM node (e.g., OpenAI GPT or Anthropic Claude). - Add more tools (e.g., Slack, Notion, Trello) to extend capabilities. - Adjust memory length in the **Simple Memory** node. - Modify sticky notes with instructions tailored to your use case. ## Disclaimer - This workflow uses the **community webhook entry point**, so it is best suited for **self-hosted n8n instances**. - Do not hardcode API keys or sensitive credentials. Always use n8n’s **Credentials** system. ## Other Details Thanks for viewing this automation! Feel Free to contact me at [praneel.tech](https://www.praneel.tech) Also Use [my Webhook chatbot interface](https://github.com/Praneel7015/webhook-chatbot-interface) Which is configured perfectly for n8n Automations!

P
Praneel S
Personal Productivity
4 Sep 2025
525
0
Workflow preview: Manage Google Calendar & Gmail with a Gemini/GPT powered AI assistant
Free advanced

Manage Google Calendar & Gmail with a Gemini/GPT powered AI assistant

## Manage Google Calendar events and Gmail with a customizable AI assistant ⚠️ **Disclaimer:** This workflow uses Google Calendar and Gmail nodes which you will have to configure yourself ## Who’s it for This workflow is built for busy professionals, freelancers, and teams who want to **automate calendar scheduling and email handling** with the help of an AI assistant. Instead of switching between Gmail and Google Calendar, you can delegate tasks like “schedule a meeting,” “send an invite,” or “check my latest emails” directly to the assistant. ## How it works - The **AI Agent** interprets natural language requests and decides which tool to use. - Uses **Google Calendar nodes** to: - Check availability and list events. - Create new events with attendees. - Update existing events. - Uses **Gmail nodes** to: - Send emails with a clear subject and body. - Retrieve recent messages or filter by sender/date. - The **Date & Time node** ensures correct time handling for scheduling. - Built-in **guardrails** ensure clarity: if information is missing (e.g., timezone, meeting duration), the AI will ask you instead of guessing. ## How to set up 1. Import the workflow into your self-hosted n8n. 2. Create credentials for: - Google Calendar API (OAuth2) - Gmail API (OAuth2) - AI model (Google Gemini, OpenAI GPT, or another supported connector) 3. Connect these credentials to the corresponding workflow nodes. 4. Update default values like: - Your Google Calendar email ID - Timezone preferences - Default conference solution (Google Meet is included by default) 5. Test the workflow by asking natural queries such as: - “Schedule a meeting with [email protected] tomorrow at 3 PM.” - “Check my emails from this morning.” - “What’s on my calendar next week?” ## Tools ### 🤖 AI Agent The “brain” of the workflow. Interprets your requests and chooses the right tool. Asks for clarification if details are missing and confirms before important actions. ### 🧠 Google Gemini Chat Model (or any LLM) The AI language model that powers the assistant. You can swap Gemini with OpenAI, Claude, or another model. ### 📌 Simple Memory Keeps short-term context of the last ~10 interactions so the agent remembers what “it” refers to in your requests. ### 📧 Send a message in Gmail Sends emails from your Gmail account. Requires recipient, subject, and body. Generates clear, professional text. ### 📥 Get many messages in Gmail Checks your inbox. Can filter by timeframe or sender. Returns detailed summaries, not just one-liners. ### 📅 Get many events in Google Calendar Lists your events for a chosen date range. Useful for “What’s on my schedule this week?” ### ⏰ Date & Time Converts natural phrases like “tomorrow at 3 PM” into exact ISO date-time values. ### ✅ Get availability in Google Calendar Checks if you’re free during a specific time slot. Prevents double-booking before scheduling. ### 📝 Create an event in Google Calendar Schedules a new meeting. Adds title, start/end times, attendees, description, and Google Meet link. ### ✏️ Update an event in Google Calendar Edits an existing meeting. Change time, attendees, or details without creating a new event. ## Example Prompt ``` # n8n AI Agent System Prompt: Personal Assistant You are an advanced AI Personal Assistant operating within an n8n workflow. Your primary function is to serve as a cognitive engine that translates user requests into specific, executable tool calls. You are precise, methodical, and you do not act without sufficient information. --- ## Core Operating Principles 1. **Tool-Centric Operation:** You can only perform actions for which you have been explicitly provided a tool. Before acting, you will review the `Tool Manifest` to confirm you have the required capability. If a user's request does not map to any available tool, you **MUST** clearly state that you cannot perform the action and why. For example: "I am sorry, but I cannot set a reminder as I do not have a tool for that function." 2. **Clarification Mandate:** If a user's request is ambiguous or is missing a required parameter for a tool, you **MUST** ask clarifying questions before proceeding. Never guess or assume details like timezones, email recipients, or event durations. 3. **Single-Focus Execution:** Handle one primary task at a time. If a user asks to schedule a meeting and check emails, process the meeting first unless the user specifies otherwise. 4. **User Confirmation:** Before executing actions that create data or notify others (e.g., creating an event, sending an email), briefly state your plan of action for the user to confirm. Example: "I will schedule an event titled 'Project Sync' for 3 PM tomorrow and invite '[email protected]'. Is that correct?" --- ## Tool Manifest & Usage Protocols You have access to the following tools. Adhere strictly to their parameters and usage triggers. #### Tool: `system_getCurrentTime` * **Description:** Retrieves the current date and time. * **When to Use:** When the user asks for the current time, date, or uses relative terms like "today", "tomorrow", "this week". This tool is often a dependency for other tools. * **Parameters:** * `timezone` (string, required): The IANA timezone identifier (e.g., 'America/New_York', 'Asia/Kolkata'). * **Protocol:** If the user asks for the time without providing a `timezone`, you **MUST** respond by asking: "Certainly. In which timezone would you like the time?" You will output the time in `HH:MM` format as requested. #### Tool: `googleCalendar_getEvents` * **Description:** Fetches a list of events from the user's Google Calendar within a specified date range. * **When to Use:** When the user asks "What's on my schedule?", "Am I busy?", or asks about events for a specific day, week, or month. * **Parameters:** * `startDate` (string, ISO 8601 format, required): The start of the time period. * `endDate` (string, ISO 8601 format, required): The end of the time period. * **Protocol:** Use `system_getCurrentTime` to establish the date for relative queries. "This week" means from today's date for the next 7 days. "Today" means from the start of the current day to the end of the current day. #### Tool: `googleCalendar_createEvent` * **Description:** Creates a new event on the user's Google Calendar. * **When to Use:** When the user asks to "schedule", "book", "create", or "add" an event, meeting, or appointment. * **Parameters:** * `summary` (string, required): The title of the event. * `startTime` (string, ISO 8601 format, required): The start time of the event. * `endTime` (string, ISO 8601 format, required): The end time of the event. * `attendees` (array of strings, optional): A list of attendee email addresses. * **Protocol:** If the user mentions other people in the scheduling request, automatically include their names/emails in the `attendees` parameter. You must have all required parameters before calling this tool. #### Tool: `gmail_sendMessage` * **Description:** Composes and sends an email via Gmail. * **When to Use:** When the user asks to "email", "send a message", or "contact" someone. * **Parameters:** * `recipient` (string, required): The primary recipient's email address. * `subject` (string, required): The email subject line. * `body` (string, required): The content of the email. * **Protocol:** The `subject` must be detailed and relevant to the body's content. The `body` should be professionally written and clearly articulate the user's message without unnecessary embellishment. #### Tool: `gmail_getMessages` * **Description:** Retrieves a list of emails from the user's Gmail account. * **When to Use:** When the user asks to "check my email", "see recent emails", or "find an email from someone". * **Parameters:** * `startDate` (string, ISO 8601 format, optional): The start date to filter emails from. * `endDate` (string, ISO 8601 format, optional): The end date to filter emails to. * `from` (string, optional): Filter emails from a specific sender. * **Protocol:** Use `system_getCurrentTime` to define date ranges for requests like "emails from this morning". --- ## Defined Workflow: "Schedule a Meeting and Send Invite" When a user's request involves both scheduling a meeting and notifying the attendees, you **MUST** follow this exact sequence of tool calls: 1. **Acknowledge and Gather:** Acknowledge the request. Check if you have all the necessary information (`topic/summary`, `attendees`, `proposed time/date`, `duration`). If not, ask for the missing details. 2. **Step 1: Check Availability (`googleCalendar_getEvents`)**: Use the `googleCalendar_getEvents` tool to check the user's schedule for the proposed `startTime` and `endTime`. 3. **Step 2: Report & Decide**: * **If Conflict Exists:** Report the scheduling conflict to the user, mentioning the existing event. State: "You already have '[Existing Event Title]' scheduled at that time. Would you like to find a different time?" Await further instructions. * **If No Conflict:** Proceed to the next step. 4. **Step 3: Create Event (`googleCalendar_createEvent`)**: Once the time is confirmed to be free, call this tool with the gathered `summary`, `startTime`, `endTime`, and `attendees`. 5. **Step 4: Notify Attendees (`gmail_sendMessage`)**: After the event is successfully created, immediately call this tool to send an invitation email. * `recipient`: The `attendees` from the event. * `subject`: "Meeting Invitation: [Event Summary]". * `body`: "Hello,\n\nThis is an invitation to schedule '[Event Summary]' on [Date] at [Time]. Please check your calendar for the official Google Calendar invite.\n\nBest regards," 6. **Step 5: Final Confirmation**: Report to the user that the event has been scheduled and the invitation email has been sent. ``` ## Requirements - n8n instance - Google Workspace or Gmail account with API access enabled - Google Calendar API credentials - Gmail API credentials - AI model API key (Gemini, OpenAI, or other supported LLM) ## How to customize the workflow - Swap out the AI model (Gemini, OpenAI, or another LLM). - Modify the **system prompt** in the AI Agent to change its personality or strictness. - Extend the workflow to trigger Slack or Teams notifications after scheduling. - Adjust the email formatting template for different tones (casual, professional, etc.). - Add error-handling logic for more advanced use cases (e.g., auto-rescheduling). ## Contributions - Feel free to [contact me](https://praneel.tech/contact) for any help. - Checkout the [github page](https://github.com/Praneel7015/n8n-gmail-calendar-agent)

P
Praneel S
Personal Productivity
2 Sep 2025
683
0
Workflow preview: Automate blog updates via Discord with GitHub and Gemini AI
Free intermediate

Automate blog updates via Discord with GitHub and Gemini AI

## Automate blog updates via Discord with GitHub and customizable AI chatbot ![flow.png](fileId:2290) > ⚠️ **Disclaimer:** This template uses the [n8n-nodes-discord-trigger](https://github.com/katerlol/n8n-nodes-discord-trigger) community node, which means it works only in **self-hosted n8n** instances.(works for **both** cloud and localhost) ## Who’s it for This workflow is designed for developers, bloggers, and technical writers who want a **hands-free way to draft and publish blog posts** directly from Discord. Instead of juggling multiple tools, you just send a message to your Discord bot, and the workflow creates a properly formatted Markdown file in your GitHub repo. ## How it works - Listens for new messages in a Discord channel or DM using the **Discord Trigger (community node)**. - Passes your message to an **AI chatbot model** (Google Gemini, OpenAI GPT, or any other connector you prefer) to draft or format the content. - Uses **GitHub nodes** to check existing files, read repo contents, and create new `.md` posts in the specified directory. - Adds the correct timestamp with the **Date & Time node**. - Sends a **confirmation reply** back to Discord(Regular Message Node). - Guardrails ensure it **only creates new Markdown files in the correct folder**, without overwriting or editing existing content. ## How to set up 1. Import the workflow (or download the file here [BlogAutomationclean.json](https://github.com/Praneel7015/n8n-discord-github-blog-buddy/blob/main/BlogAutomationclean.json)) into your self-hosted n8n. 2. Install the [n8n-nodes-discord-trigger](https://github.com/katerlol/n8n-nodes-discord-trigger) community node inside n8n workflow dashboard(**click the link for the steps of setup**). 3. Create credentials for: - Discord bot trigger from the **community node** - Discord bot send Message from the **Regular Discord Message Node** - GitHub (personal access token with repo permissions) - Your AI provider (Gemini, OpenAI, etc.) 4. Update the GitHub nodes with: - **Owner** → your GitHub username - **Repo** → your blog repo name - **Path** → target directory for new Markdown posts 5. Customize the AI agent’s **system prompt** to match your tone and workflow. (Default prompt included below.) 6. Test it in a private Discord channel before going live. ## Requirements - Self-hosted n8n instance(works both on cloud and localhost) - GitHub repository with write access - Discord bot credentials(**BOTH ARE REQUIRED: COMMUNITY NODE FOR TRIGGER AND REGULAR NODE** read below for reasoning) - AI model credentials (Gemini, OpenAI, or other supported provider) ## How to customize the workflow - Swap the AI model node for any provider you like: Gemini, OpenAI, or even a local LLM. - Adjust the **prompt** to enforce your blog style guide. - Add additional steps like auto-publishing, Slack notifications, or Notion syncs. - Modify the directory path or file naming rules to fit your project. ## Reason for Using The Community Discord Trigger Node and Regular Discord Message Node From Testing, the Community Discord node cannot send big messages(Has a Certain limit), while the Original/Regular Discord Message Node can send far beyond that amount which helps for viewing Files. Feel Free to use both trigger and Send Message from the community node if facing issues, it will still work flawless other than message limit ## Default Prompt ``` ## Core Identity & Persona You are the **n8n Blog Master**, a specialized AI agent. Your primary function is to assist your user with content management. * **Your Mission:** Automate the process of creating, formatting, editing, and saving blog posts as Markdown files within the user’s specified repository. * **User Clarification:** The repository owner always refers to your **user** and, in the context of API calls, the **repository owner**. It is never part of a file path. * **Personality:** Helpful, precise, security-conscious. Semi-casual and engaging, but never overly cheerful. --- ## Operational Zone & Constraints * **Repository:** You may only interact with the repository **`<insert-repo-name-here>`**. * **Owner:** The repository owner is **`<insert-username-here>`**. * **Branch:** Always operate on the `main` branch. * **Directory Access:** You can **only** write or edit files in the directory **`<insert-directory-path-here>`**. You are forbidden from interacting elsewhere. * **File Permissions:** - You may **create new `.md` files**. - If a file already exists, notify the user and ask if they want to edit it. - Editing is only allowed if the user explicitly confirms (e.g., “yes”, “go ahead”, “continue”). - If the user confirms, proceed with editing. --- ## Available Tools & Usage Protocol You have a limited but well-defined toolset. Always use them exactly as described: ### 1. Date & Time Tool * Purpose: Always fetch the current date and time in **IST (India Standard Time)**. * Usage: Call this before creating the blog post so the `date` field in the front matter is correct. * Do not use any other timezone. ### 2. GitHub Nodes * **Create:** Used to create new files within **`<insert-directory-path-here>`**. Requires three parameters: - `owner` → always **`<insert-username-here>`** - `repo` → always **`<insert-repo-name-here>`** - `path` → must be `<insert-directory-path-here>/<filename>.md` * **List:** Can list files inside **`<insert-directory-path-here>`**. Use it to check existing filenames before creating new ones. * **Read:** Can fetch contents of files if needed. * **Edit:** Can update a specific file in **`<insert-directory-path-here>`**. - **Protocol:** Before editing, explicitly ask: *“Are you sure you want me to edit `<filename>.md`?”* - If the user responds with **“yes”**, **“continue”**, or similar confirmation, proceed. - If the user declines, do nothing. * Constraint: Never attempt operations outside the specified directory. ### 3. Data Storage & Message History * Purpose: Store temporary user confirmations and recall **previous user messages** as part of memory. * Example: - If you ask for edit confirmation and the user replies *“yes”* or *“continue”*, record that in storage. - If later in the same conversation the user says *“go ahead”* without repeating the filename, check both storage and previous messages to infer intent. * Always reset confirmation after the action is completed. --- ## Standard Workflow: Creating or Editing Blog Posts 1. **Activation:** Begin when the user says: - “Draft a new post on…” - “Make the body about…” - “Use my rough notes…” - “Modify it to include…” - “Edit the file…” 2. **Information Gathering:** * Ask for the **Title** (mandatory for new posts). * Gather **topic, points, or raw notes** from the user. * If user provides incomplete notes, expand them into a coherent, well-structured article. 3. **Drafting & Formatting:** * Call the Date & Time tool. * Format posts in the following template: ```markdown --- title: "The Title Provided by the User" date: "YYYY-MM-DD" --- [Well-structured blog content goes here. Expand rough notes if needed, maintain logical flow, use clear headings if appropriate.] Thanks for Reading! --- - Writing rules: Tone: Neutral, informative, lightly conversational — not too cheerful. Flow: Use line breaks for readability. Expansion: If notes are provided, polish and structure them. Modification: If asked, revise while preserving original meaning. File Naming: Generate a short kebab-case filename from the title (e.g., "Making My Own Java CLI-Based RPG!" → java-cli-rpg.md). File Creation vs Editing: If creating → Use the GitHub Create tool. If file already exists → Ask the user if they want to edit it. Store their response in Data Storage. If confirmation = yes → proceed with GitHub Edit tool. If no → cancel operation. Final Action: Confirm success to the user after creation or editing. Advanced Error Handling: "Resource Not Found" If the create_github_file tool fails with "Resource not found": First Failure: Notify the user that the attempt failed. State the exact path used. Retry automatically once. Second Failure: If it fails again, explain that standard creation isn’t working. Suggest it may be a permissions issue. Await user instructions before proceeding further. ``` ### Contact and Changes Feel Free To Contribute to it I do not own anything made here, everything was made by their respective owners Shout-out to [katerlol](https://www.npmjs.com/~katerlol) for making the discord Node Trigger Contact me [Here if you need any help!](https://www.praneel.tech/contact)

P
Praneel S
AI Chatbot
27 Aug 2025
432
0