AutomationFlowsAI & RAG › Fireflies Transcripts to Meeting Summaries & Task Extractor to Slack & Clickup

Fireflies Transcripts to Meeting Summaries & Task Extractor to Slack & Clickup

ByHashir Bin Waseem @hashirxn8n on n8n.io

Webhook Trigger: The workflow starts when Fireflies notifies that a transcription has finished. Transcript Retrieval: The transcript is pulled from Fireflies based on the meeting ID. Pre-processing: The transcript is split into sentences and then aggregated into a raw text…

Webhook trigger★★★★☆ complexityAI-powered15 nodes@Firefliesai/N8N Nodes FirefliesGoogle Gemini ChatClickUpSlackAgent
AI & RAG Trigger: Webhook Nodes: 15 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Google Gemini Chat 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
{
  "id": "iVTZsAycgjyOlvXA",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "3rd meeting summary, tasks",
  "tags": [],
  "nodes": [
    {
      "id": "fef065fe-db8a-4a0b-a44f-10aa28285924",
      "name": "Get a transcript",
      "type": "@firefliesai/n8n-nodes-fireflies.fireflies",
      "position": [
        160,
        0
      ],
      "parameters": {
        "transcriptId": "={{ $json.body.meetingId }}"
      },
      "credentials": {
        "firefliesApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9b985620-7817-4373-8e75-46b8173a9e82",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        384,
        0
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data.sentences"
      },
      "typeVersion": 1
    },
    {
      "id": "0e051340-786e-4456-bb32-c5a07b061bb3",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        576,
        0
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "raw_text"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4de50ee3-ca4d-4db3-bcfd-648cb4485708",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        848,
        176
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-thinking-exp-1219"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7c5fa1fc-b40e-4816-bbe1-82bd7e829230",
      "name": "Create a task",
      "type": "n8n-nodes-base.clickUp",
      "position": [
        1680,
        -112
      ],
      "parameters": {
        "list": "901810841552",
        "name": "={{ $json.title }}",
        "team": "90181586895",
        "space": "90186124564",
        "folderless": true,
        "authentication": "oAuth2",
        "additionalFields": {
          "content": "={{ $json.description }}"
        }
      },
      "credentials": {
        "clickUpOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5670023a-e340-4b7b-bffd-0554b16f6530",
      "name": "Send a message",
      "type": "n8n-nodes-base.slack",
      "position": [
        1680,
        64
      ],
      "parameters": {
        "text": "={{ $json.summary }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C099QR902TU",
          "cachedResultName": "all-core47-n8n-assg"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "2e2a301a-1175-4656-bb28-eab29eb5e9f9",
      "name": "Firefly Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -48,
        0
      ],
      "parameters": {
        "path": "fireflies-n8n-core47-agent",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2.1
    },
    {
      "id": "89652b55-db7a-4f51-a3ad-5334666c3b81",
      "name": "Summary Generator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        832,
        0
      ],
      "parameters": {
        "text": "=Please generate a summary of this meeting transcript in 5-6 lines maximum. the main purpose is that, summary should be sent to team in simple and easy words with a medium length text, not very long, not very short.\n\nAlso Create a list of action items from the meeting and output it named description. Also give under 100 character title of each action item that i will use as name .\n\nHere is the meeting Transcript:\n\n{{ $json.raw_text }}\n\nReturn your answer as JSON with keys",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "4aa09be4-1238-4e40-8c48-94b8d263c845",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -112,
        -208
      ],
      "parameters": {
        "width": 416,
        "height": 448,
        "content": "## Webhook + Transcript Retrieval\n\nWebhook: Trigger when Fireflies finishes a meeting transcription. Receives meetingId.\n\nGet a transcript: Fetches the full transcript from Fireflies using the provided meetingId."
      },
      "typeVersion": 1
    },
    {
      "id": "b4c88cf8-6982-42bb-97fc-cb2aa88b73f8",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        336,
        -208
      ],
      "parameters": {
        "width": 400,
        "height": 448,
        "content": "## Transcript Processing\n\nSplit Out: Splits transcript into individual sentences (data.sentences).\n\nAggregate: Rejoins sentences into one block of raw text for summarization."
      },
      "typeVersion": 1
    },
    {
      "id": "61ddd015-7544-4152-9926-49fcb87aba36",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        -304
      ],
      "parameters": {
        "width": 400,
        "height": 656,
        "content": "## AI Processing\n\nSummary Generator: Sends transcript text to the LLM with instructions to generate:\n\n\u25c9 A summary (5\u20136 lines, simple wording).\n\n\u25c9 A list of action items (each with a short title and description).\n\nGoogle Gemini Chat Model: Connected as the LLM provider to power the AI Agent."
      },
      "typeVersion": 1
    },
    {
      "id": "11b0737f-b6e8-4693-9df2-bba289d9e8e4",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1200,
        -304
      ],
      "parameters": {
        "width": 400,
        "height": 544,
        "content": "## Post-processing AI Output\n\nCleans AI response: Cleans AI response (parses JSON, removes code fences).\n\nExtracts action items: Extracts each action item, ensuring format {title, description} for tasks."
      },
      "typeVersion": 1
    },
    {
      "id": "6dd82eea-0258-4015-9b43-6f268befbe98",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1632,
        -288
      ],
      "parameters": {
        "width": 352,
        "height": 528,
        "content": "## Outputs\nSlack (Send a message): Posts the meeting summary directly to the team channel.\n\nClickUp (Create a task): Creates tasks in ClickUp for each action item generated by AI."
      },
      "typeVersion": 1
    },
    {
      "id": "4e61f900-30b2-4ced-9a81-793ecb920e7e",
      "name": "Cleans AI response",
      "type": "n8n-nodes-base.code",
      "position": [
        1248,
        0
      ],
      "parameters": {
        "jsCode": "return [\n  {\n    json: JSON.parse(\n      $input.first().json.output.replace(/```json|```/g, '')\n    )\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "071da1de-13c4-421d-ac4b-81850456d535",
      "name": "Extracts action items",
      "type": "n8n-nodes-base.code",
      "position": [
        1440,
        -112
      ],
      "parameters": {
        "jsCode": "const items = $input.first().json.action_items || [];\n\nif (!Array.isArray(items) || items.length === 0) {\n  return [];\n}\n\n// Convert each {name, description} into {title, description}\nreturn items.map(ai => ({\n  json: {\n    title: ai.name || \"Untitled\",\n    description: ai.description || \"\"\n  }\n}));\n"
      },
      "typeVersion": 2
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c7cd452b-e5ef-48f7-a9f1-6621a02656c7",
  "connections": {
    "Aggregate": {
      "main": [
        [
          {
            "node": "Summary Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a task": {
      "main": [
        []
      ]
    },
    "Firefly Webhook": {
      "main": [
        [
          {
            "node": "Get a transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get a transcript": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summary Generator": {
      "main": [
        [
          {
            "node": "Cleans AI response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cleans AI response": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          },
          {
            "node": "Extracts action items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extracts action items": {
      "main": [
        [
          {
            "node": "Create a task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Summary Generator",
            "type": "ai_languageModel",
            "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.

Pro

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

About this workflow

Webhook Trigger: The workflow starts when Fireflies notifies that a transcription has finished. Transcript Retrieval: The transcript is pulled from Fireflies based on the meeting ID. Pre-processing: The transcript is split into sentences and then aggregated into a raw text…

Source: https://n8n.io/workflows/8592/ — 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

Know that feeling when a "low priority" ticket turns into a production fire? Or when your on-call rotation starts showing signs of serious burnout from alert overload?

Google Sheets, Agent, Google Gemini Chat +2
AI & RAG

This AI-powered workflow transcribes Zoom/Google Meet recordings, extracts decisions and tasks using AI, then creates tickets in Jira/ClickUp/Linear and assigns them to team members automatically. Tri

HTTP Request, OpenAI, Agent +5
AI & RAG

This workflow converts raw ClickUp task updates—received directly through a webhook—into fully automated release documentation. It validates incoming payloads, fetches and cleans task details, enriche

Google Sheets, ClickUp, Lm Chat Azure Open Ai +4
AI & RAG

When a meeting ends in Fireflies, the transcript is automatically retrieved and sent to OpenAI for analysis. The AI evaluates objection handling, call effectiveness, and extracts key objections raised

HTTP Request, @Firefliesai/N8N Nodes Fireflies, OpenAI Chat +4
AI & RAG

Automatically generate a meeting summary from your meetings through Fireflies.ai, save it to a Dart document, and create a review task with the meeting link attached.

N8N Nodes Dart, @Firefliesai/N8N Nodes Fireflies, Google Gemini Chat +1