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 →
{
"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.
clickUpOAuth2ApifirefliesApigooglePalmApislackOAuth2Api
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
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?
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
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
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
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.