N
n8n Store
Workflow Market
Transform Meeting Transcripts into LinkedIn Content with AI and Google Docs

Transform Meeting Transcripts into LinkedIn Content with AI and Google Docs

by annabuiplayground0 views

Description

Categories

🤖 AI & Machine Learning

Nodes Used

n8n-nodes-base.setn8n-nodes-base.waitn8n-nodes-base.gmailn8n-nodes-base.gmailn8n-nodes-base.filtern8n-nodes-base.switchn8n-nodes-base.googleDocsn8n-nodes-base.googleDocsn8n-nodes-base.googleDocsn8n-nodes-base.googleDocs
PriceGratuit
Views0
Last Updated11/28/2025
workflow.json
{
  "meta": {
    "instanceId": "8d70623c0c9f4448eda9626cd8185192c28447e191325b0c0d94d3f40d23be3a"
  },
  "nodes": [
    {
      "id": "37dbced7-5c49-487d-885f-afce5afebb98",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -120,
        100
      ],
      "parameters": {
        "sessionIdType": "customKey",
        "contextWindowLength": 0
      },
      "typeVersion": 1.3
    },
    {
      "id": "7aebc8ad-7178-4782-b291-65762958b3aa",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        0,
        100
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"post_title\": \"Example post title here\",\n  \"post_content\": \"Example post content here\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "80c294e0-deb6-4b0c-8e66-77413e7459a8",
      "name": "Filter Unwanted Event Type",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1120,
        180
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "d9d8402c-e07b-4c00-9661-da52a85a1d44",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{ $('New Event Started').item.json.summary }}",
              "rightValue": "key words"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "9ab435eb-a2c6-4b0b-89f9-c4cec9bf75aa",
      "name": "Wait till Even End",
      "type": "n8n-nodes-base.wait",
      "position": [
        -900,
        180
      ],
      "webhookId": "a345f6cd-6269-4797-bede-9b34ab2d0738",
      "parameters": {
        "resume": "specificTime",
        "dateTime": "={{ $('Filter Unwanted Event Type').item.json.end.dateTime }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "6be8ad26-9ec6-4c94-928f-ccc1f25a80d3",
      "name": "Need Transcript to be Provided",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -680,
        180
      ],
      "webhookId": "05fd902b-a7f2-49aa-9906-2870c3708a77",
      "parameters": {
        "message": "Hi there!\n\nYour meeting has just ended, and I'm ready to help you create an engaging LinkedIn post from your discussion.\n\nWhat I need from you:\nPlease reply to this email with your meeting transcript (copy and paste the text directly into your reply).\n\nWhat happens next:\nOnce I receive your transcript, I'll automatically:\n\n👉 Analyze the key discussion points\n👉 Extract valuable insights and takeaways\n👉 Create a professional LinkedIn post\n👉 Format it for maximum engagement\n\nHow to get your transcript:\n\n👉 Zoom: Go to your Zoom account → Recordings → Find your meeting → Download transcript\n👉 Teams: Check your meeting chat or recording folder for the transcript file\n👉 Google Meet: If recorded, check your Google Drive for the transcript\n👉 Other platforms: Look for \"Transcript\" or \"Recording\" options in your meeting platform\n\nSimply copy the transcript text and paste it as a reply to this email - no need to format it perfectly, I'll handle that!\n\nLooking forward to creating your LinkedIn content! 🚀\n\nThis is an automated message from your n8n workflow. Simply reply with your transcript to continue.",
        "options": {},
        "subject": "=Action Required: Meeting Transcript for LinkedIn Post Creation -  {{ $('Filter Unwanted Event Type').first().json.summary }}",
        "operation": "sendAndWait",
        "formFields": {
          "values": [
            {
              "fieldType": "textarea",
              "fieldLabel": "Meeting Transcript",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Post Type",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Personal LinkedIn Post"
                  },
                  {
                    "option": "Company LinkedIn Post"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Tone of Voice",
              "multiselect": true,
              "fieldOptions": {
                "values": [
                  {
                    "option": "Professional & Formal"
                  },
                  {
                    "option": "Conversational & Friendly"
                  },
                  {
                    "option": "Thought Leadership"
                  },
                  {
                    "option": "Inspirational & Motivational"
                  },
                  {
                    "option": "Educational & Informative"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldLabel": "Additional Instructions (Optional)",
              "placeholder": "Any specific points to highlight, hashtags to include, or special instructions?"
            }
          ]
        },
        "responseType": "customForm"
      },
      "typeVersion": 2.1
    },
    {
      "id": "dc8a00d3-1440-437c-8c28-81cfcf084a69",
      "name": "Personal LinkedIn Generator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -200,
        -120
      ],
      "parameters": {
        "text": "=You are X , a LinkedIn content creator assistant.\n\nLINKEDIN INSTRUCTIONS TO FOLLOW:\nUse the comprehensive LinkedIn guidelines stored in memory - reference X's voice, style, content approach, and brand elements.\n\nPOST LENGTH REQUIREMENTS:\n- LinkedIn posts should be 1,300-3,000 characters for optimal engagement\n- Aim for 150-300 words\n- Keep it concise but engaging\n\nUSER INPUT:\n- Meeting Transcript: {{ $json.data['Meeting Transcript'] }}\n- Post Type: {{ $json.data['Post Type'] }}\n- Tone: {{ $json.data['Tone of Voice'] }}\n- Additional Instructions: {{ $json.data['Additional Instructions (Optional)'] }}\n\nCRITICAL INSTRUCTIONS:\n1. You MUST use the actual meeting transcript provided above\n2. Extract key insights, learnings, or takeaways from the meeting content\n3. Follow X's voice and style guidelines from memory\n4. Match the requested tone and post type\n5. Do NOT create fictional content or made-up scenarios\n6. Base everything on the real meeting transcript provided\n\nOUTPUT FORMAT REQUIREMENT:\nYou MUST respond with a valid JSON object in exactly this format:\n{\n  \"post_title\": \"Your engaging post title here\",\n  \"post_content\": \"Your complete LinkedIn post content here\"\n}\n\nDo not include any text before or after the JSON object. Only return the JSON.",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.8
    },
    {
      "id": "28fefb5e-535f-4b31-a8db-6ddb72426a4c",
      "name": "Simple Memory1",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -120,
        600
      ],
      "parameters": {
        "sessionIdType": "customKey",
        "contextWindowLength": 0
      },
      "typeVersion": 1.3
    },
    {
      "id": "eeec7020-e915-445d-a200-4fcdb48d96a9",
      "name": "Company LinkedIn Generator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -200,
        400
      ],
      "parameters": {
        "text": "=You are X, a LinkedIn content creator assistant.\n\nLINKEDIN INSTRUCTIONS TO FOLLOW:\nUse the comprehensive LinkedIn guidelines stored in memory - reference X's voice, style, content approach, and brand elements.\n\nPOST LENGTH REQUIREMENTS:\n- LinkedIn posts should be 1,300-3,000 characters for optimal engagement\n- Aim for 150-300 words\n- Keep it concise but engaging\n\nUSER INPUT:\n- Meeting Transcript: {{ $json.data['Meeting Transcript'] }}\n- Post Type: {{ $json.data['Post Type'] }}\n- Tone: {{ $json.data['Tone of Voice'] }}\n- Additional Instructions: {{ $json.data['Additional Instructions (Optional)'] }}\n\nCRITICAL INSTRUCTIONS:\n1. You MUST use the actual meeting transcript provided above\n2. Extract key insights, learnings, or takeaways from the meeting content\n3. Follow X's voice and style guidelines from memory\n4. Match the requested tone and post type\n5. Do NOT create fictional content or made-up scenarios\n6. Base everything on the real meeting transcript provided",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.8
    },
    {
      "id": "83588d19-2dac-406b-8dcc-bbb90d591019",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        0,
        600
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "ef1dad46-9c8c-420f-83b8-93183f8ec826",
      "name": "Set Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        200,
        180
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1aea8c78-d466-436d-823e-1dfc7f2abd26",
              "name": "post_title",
              "type": "string",
              "value": "={{ $json.output.post_title }}"
            },
            {
              "id": "67d6fd85-c8e6-49da-a1b6-b08bab636cf3",
              "name": "post_content",
              "type": "string",
              "value": "={{ $json.output.post_content }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "dbee090f-abb4-44c3-8f43-3ef20a54984f",
      "name": "Create New Folder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        380,
        180
      ],
      "parameters": {
        "name": "= ",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultName": "/ (Root folder)"
        },
        "resource": "folder"
      },
      "typeVersion": 3
    },
    {
      "id": "ff8a6003-331a-4beb-bfce-1c02b76f968c",
      "name": "Create Transcript Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1000,
        180
      ],
      "parameters": {
        "title": "=Coaching's Transcript",
        "folderId": "={{ $('Create New Folder').item.json.id }}"
      },
      "credentials": {},
      "typeVersion": 2
    },
    {
      "id": "ba1be42f-bf33-4710-bef8-3f10bc4203f7",
      "name": "Create Content Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        560,
        180
      ],
      "parameters": {
        "title": "={{ $('Set Fields').item.json.post_title }}",
        "folderId": "={{ $('Create New Folder').item.json.id }}"
      },
      "credentials": {},
      "typeVersion": 2
    },
    {
      "id": "9317dba4-f4b4-4eb8-b53c-b5fd0722e228",
      "name": "Update Transcript Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1220,
        180
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $('Need Transcript to be Provided').item.json.data['Meeting Transcript'] }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $('Create Transcript Doc').item.json.id }}"
      },
      "credentials": {},
      "typeVersion": 2
    },
    {
      "id": "d9dfdcfa-04ca-4c87-b776-ee3e7e50b083",
      "name": "Update Content Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        780,
        180
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $('Set Fields').item.json.post_content }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $('Create Content Doc').item.json.id }}"
      },
      "credentials": {},
      "typeVersion": 2
    },
    {
      "id": "e933deff-e6ef-4f55-b4bc-158c68112076",
      "name": "Matching Post Type",
      "type": "n8n-nodes-base.switch",
      "position": [
        -460,
        180
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "6a8abc6f-32f6-4a2d-ba5d-9da35108daa0",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data['Post Type'] }}",
                    "rightValue": "Personal LinkedIn Post"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "74a97164-a6a6-43b9-9034-70116675fd4b",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data['Post Type'] }}",
                    "rightValue": "Company LinkedIn Post"
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "49f4b32f-b0dd-42cc-a307-01218f435068",
      "name": "Content Results",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1440,
        180
      ],
      "webhookId": "82651aa5-c89e-4551-b0dc-e1c64ba11cf7",
      "parameters": {
        "message": "=Hi there, your content is ready for review ✅ \n\nYou can check the draft here: https://docs.google.com/document/d/{{ $('Create Content Doc').item.json.id }}\n\nYou can check the original transcript here: https://docs.google.com/document/d/{{ $('Create Transcript Doc').item.json.id }}\n\nLooking forward to the next one! 🚀",
        "options": {},
        "subject": "=",
        "emailType": "text"
      },
      "typeVersion": 2.1
    },
    {
      "id": "f96a5cd7-0f9c-49ef-ba4e-4ce671582e18",
      "name": "New Event Started",
      "type": "n8n-nodes-base.googleCalendarTrigger",
      "position": [
        -1340,
        180
      ],
      "parameters": {
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "eventStarted",
        "calendarId": {
          "__rl": true,
          "mode": "id",
          "value": ""
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1c429619-c7fe-4d85-a735-1311b2666369",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2160,
        -100
      ],
      "parameters": {
        "width": 640,
        "height": 900,
        "content": "## 🎯 Universal Meeting Transcript to LinkedIn Content\n\n### Automatically transform your meeting insights into engaging LinkedIn content with AI\n\nPerfect for coaches, consultants, sales professionals, and content creators who want to share valuable insights from their meetings without the manual effort of content creation.\n\n### How it works\n* Calendar trigger detects when your coaching/meeting ends\n* Waits for meeting completion, then sends you a form via email\n* You provide the meeting transcript and specify post preferences\n* AI analyzes the transcript using your personal brand guidelines\n* Generates professional LinkedIn content based on real insights\n* Creates organized Google Docs with both transcript and final post\n* Sends you links to review and publish your content\n\n### How to use\n* Connect your Google Calendar and Gmail accounts\n* Update the calendar filter to match your meeting types\n* Customize the AI prompts with your brand voice and style\n* Replace email addresses with your own\n* Test with a sample meeting transcript\n\n### Requirements\n* Google Calendar (for meeting detection)\n* Gmail (for form delivery and notifications)\n* Google Drive & Docs (for content storage)\n* LangChain AI nodes (for content generation)\n\n### Good to know\n* AI processing may incur costs based on your LangChain provider\n* Works with any meeting platform - just copy/paste transcripts\n* Can be adapted to use webhooks from recording tools like Fireflies.ai\n* Memory nodes store your brand guidelines for consistent output\n\nHappy Content Creating!"
      },
      "typeVersion": 1
    },
    {
      "id": "2ffd241f-a7bc-4b7f-aaba-d2211e98a97c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1380,
        -160
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 300,
        "content": "## 1. Meeting Detection & Filtering\n[Read more about the Google Calendar Trigger node](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googlecalendartrigger/)\n\nMonitors your calendar for meeting events and filters for specific types (like coaching sessions). Only processes meetings containing your specified keywords to avoid triggering on personal appointments."
      },
      "typeVersion": 1
    },
    {
      "id": "339baeed-8a3b-4929-966d-054e344e7c1e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1000,
        400
      ],
      "parameters": {
        "color": 7,
        "width": 300,
        "height": 300,
        "content": "## 2. Smart Wait for Meeting End\n[Read more about the Wait node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/)\n\nAutomatically waits until your meeting officially ends before requesting the transcript. This ensures you're not interrupted during your session and gives you time to export transcripts from your meeting platform."
      },
      "typeVersion": 1
    },
    {
      "id": "2410f124-8d17-473c-8dd8-c0795070aad0",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -760,
        -160
      ],
      "parameters": {
        "color": 7,
        "width": 300,
        "height": 300,
        "content": "## 3. Interactive Transcript Collection\n[Read more about the Gmail node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/)\n\nSends you a user-friendly form to collect your meeting transcript along with preferences for tone, post type, and any special instructions. Works with transcripts from any platform - Zoom, Teams, Meet, etc."
      },
      "typeVersion": 1
    },
    {
      "id": "2ddaf06a-deea-44f9-97a8-a0f45defd63e",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -200,
        -540
      ],
      "parameters": {
        "color": 7,
        "width": 300,
        "height": 300,
        "content": "## 4. AI-Powered Content Creation\n[Read more about the AI Agent node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/)\n\nUses advanced AI to analyze your transcript and create LinkedIn content that matches your brand voice. Separate agents handle personal vs company posts, ensuring the right tone and messaging for each audience."
      },
      "typeVersion": 1
    },
    {
      "id": "1be64335-c2d8-4834-8276-6100c020c1d2",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        400
      ],
      "parameters": {
        "color": 7,
        "width": 300,
        "height": 300,
        "content": "## 5. Organized Content Storage\n[Read more about the Google Docs node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledocs/)\n\nCreates a dedicated folder structure with two documents: your original transcript for reference and your polished LinkedIn post ready to copy and publish. Everything stays organized and accessible."
      },
      "typeVersion": 1
    },
    {
      "id": "260191c9-877d-465c-98a6-ccbd938e6ed5",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -220
      ],
      "parameters": {
        "color": 3,
        "width": 460,
        "height": 280,
        "content": "### ⚠️ Credentials & Setup Required!\nThis workflow requires multiple OAuth2 credentials and AI configuration.\n\n1. Google Calendar OAuth2 credentials\n2. Gmail OAuth2 credentials  \n3. Google Drive OAuth2 credentials\n4. AI provider credentials (OpenAI, Anthropic, etc.)\n5. Configure memory nodes with your brand guidelines\n6. Update prompt to suit your need\n6. Test with sample data before going live"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "Set Fields": {
      "main": [
        [
          {
            "node": "Create New Folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "Personal LinkedIn Generator",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory1": {
      "ai_memory": [
        [
          {
            "node": "Company LinkedIn Generator",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Create New Folder": {
      "main": [
        [
          {
            "node": "Create Content Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New Event Started": {
      "main": [
        [
          {
            "node": "Filter Unwanted Event Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Content Doc": {
      "main": [
        [
          {
            "node": "Update Content Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Matching Post Type": {
      "main": [
        [
          {
            "node": "Personal LinkedIn Generator",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Company LinkedIn Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Content Doc": {
      "main": [
        [
          {
            "node": "Create Transcript Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait till Even End": {
      "main": [
        [
          {
            "node": "Need Transcript to be Provided",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Transcript Doc": {
      "main": [
        [
          {
            "node": "Update Transcript Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Transcript Doc": {
      "main": [
        [
          {
            "node": "Content Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Personal LinkedIn Generator",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "Company LinkedIn Generator",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Company LinkedIn Generator": {
      "main": [
        [
          {
            "node": "Set Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Unwanted Event Type": {
      "main": [
        [
          {
            "node": "Wait till Even End",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Personal LinkedIn Generator": {
      "main": [
        [
          {
            "node": "Set Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Need Transcript to be Provided": {
      "main": [
        [
          {
            "node": "Matching Post Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

相关工作流