Updated . Built against the tool’s current screens and checked step by step. How we check this lesson
After a team meeting, somebody types up notes and somebody else is meant to turn them into a to-do list, and often nobody does. In this free lesson you use a practice copy of the n8n editor and build the workflow that does it. It reads meeting notes from a Google Sheet, asks OpenAI to list every action item as JSON with an owner and a due day, splits the list into one item per task, and appends one row per task to an Action Items sheet. You also learn the pattern that makes AI output usable in a spreadsheet: ask for JSON, then split the list apart.
At a glance
| Question | Answer |
|---|---|
| What you build | Build an n8n workflow that reads your meeting notes from a sheet, has AI pull out who agreed to do what by when, and adds one row per task to an Action Items sheet. |
| Tools | n8n |
| Time | About 15 minutes, 50 steps in 5 parts |
| Level | Beginner, no coding needed |
| Cost | Free |
| Ways to learn it | Practice it step by step |
The 5 parts, in short
- Start the workflow: Add the first step, Pick Trigger manually.
- Read the meeting notes: Add the next step, Search for Google Sheets, Pick Google Sheets, Pick Get row(s) in sheet, and 8 more steps.
- Find the action items with AI: Add the AI step, Search for OpenAI, Pick OpenAI, Pick Message a model, and 12 more steps.
- One row per task: Add the next step, Search for Split Out, Pick Split Out, Name the list to split, and 2 more steps.
- Save them to a sheet: Add the last step, Search for Google Sheets again, Pick Google Sheets, Pick Append row in sheet, and 10 more steps.
Start here first: Find and Use n8n Templates (module 1 of n8n Automation Toolkit)
In the course: Part 9 · n8n Automation Toolkit (Module 57 of the full course)
Part of: n8n Jump Start (step 5 of 7). Next up: n8n: Weekly Client Status Emails from a Google Sheet, Written by AI
The five steps
A manual trigger starts the workflow while you test. Get row(s) in sheet reads the meeting notes, one item per meeting. Message a model sends each meeting's notes to OpenAI and asks for the action items as JSON. Split Out turns the list of tasks into one item per task. Append row in sheet adds each task to an Action Items sheet. In our test, two meetings produced seven tasks.
Read the notes
Add Google Sheets and pick Get row(s) in sheet. Choose your Google credential, the Meeting Notes document and its tab, then click Execute step. The output shows one item per meeting with the fields Meeting, Date and Notes, and the whole Notes cell comes through even when it is long. The notes can be pasted in from any notes document or transcript.
Ask the AI for tasks in JSON
Add OpenAI and pick Message a model. Choose a model such as GPT-4.1-MINI and write a prompt that asks for JSON only, in a fixed shape: a list called tasks, each with a task, an owner and a due day. Pull the meeting name and notes into the prompt with double curly braces, then hover over the box and click Expression so n8n fills them in.
Under Options, Add option, Output Format, set Type to JSON Object. n8n then opens the answer for you, so the tasks arrive as a real list at output[0].content[0].text.tasks. In our test the first meeting gave four tasks and the second gave three, and the AI correctly left out a decision to skip a meeting because nobody had to act on it.
One row per task
Each meeting is still one item that holds a list, and a spreadsheet needs one row per task. Add Split Out and type the path to the list, output[0].content[0].text.tasks, in Fields To Split Out. Execute step returns seven items, each with task, owner and due.
Finally add Google Sheets again and pick Append row in sheet. Choose the Action Items sheet, whose row 1 holds the lowercase column names task, owner and due, and set Mapping Column Mode to Map Automatically. n8n matches fields to columns by name, so no field needs mapping by hand. Append adds rows on every run, so run it once per set of notes.
Links
- n8n docs: Split Out node: turn a list inside an item into separate items.
- n8n docs: Google Sheets node: Get Row(s) and Append Row.
- n8n docs: OpenAI node: Message a model and its Output Format option.
- OpenAI API keys: where you create the key the OpenAI step needs.
Try it yourself, free
Reading the steps is a start. Doing them is how it sticks. The interactive module walks you through every click in a practice copy of n8n, checks each step, and never touches your real accounts.
Start “n8n: Turn Meeting Notes into Action Items in a Google Sheet”Step by step: n8n: Turn Meeting Notes into Action Items in a Google Sheet
All 50 steps of the interactive module, in order. In the module you watch each one, then do it yourself in a practice copy that checks your work.
1. Start the workflow
- Add the first step. You opened a new, empty workflow in n8n and named it Meeting notes to action items. Click Add first step...
You opened a new workflow in N eight N, and named it. It is empty.
- Pick Trigger manually. You will click a button to start it, which is perfect while you test. Click Trigger manually. The trigger lands on the canvas with nothing to set. Later you can swap it for a form, a schedule or an email.
You will click a button to start it. That is perfect for testing. It lands on the canvas, with nothing to set.
2. Read the meeting notes
- Add the next step. Click the + on the right of the trigger.
- Search for Google Sheets. Type: Google Sheets. Your meeting notes live in a sheet, one row per meeting, with the columns Meeting, Date and Notes.
Your meeting notes live in a sheet, one row for each meeting.
- Pick Google Sheets. Click Google Sheets.
- Pick Get row(s) in sheet. Click Get row(s) in sheet. This reads the meeting rows.
That reads the meeting rows.
- Open the Credential list. n8n may have picked a credential for you already. Click the Credential box and check it is your own Google account.
N eight N may already have picked a login.
- Pick your Google account. Pick My Google account, the one that owns the spreadsheet.
Pick your Google account. The one that owns the spreadsheet.
- Open the Document list. Click the Document box.
- Pick the notes spreadsheet. Pick Meeting Notes, not the Action Items sheet. You will use that one at the end.
Pick the meeting notes sheet. Not the action items sheet. That one comes at the end.
- Open the Sheet list. Click the Sheet box.
- Pick the tab. Pick Sheet1.
Pick the tab.
- Check it can read the notes. Click Execute step. The OUTPUT shows 2 items, one per meeting, with the fields row_number, Meeting, Date and Notes. The whole Notes cell comes through, even when it is long.
The output shows two items. One for each meeting. The whole notes cell comes through, even when it is long.
- Back to the canvas. Close the node with the X.
Close the node.
3. Find the action items with AI
- Add the AI step. Click the + after Get row(s) in sheet.
- Search for OpenAI. Type: OpenAI
- Pick OpenAI. Click OpenAI, the first result.
The first result.
- Pick Message a model. Click Message a model.
- Open the Credential list. n8n may pre-fill a credential whose key no longer works, and then the model list fails with 401 Authorization failed. Click the Credential box.
N eight N may fill in a login whose key is dead. Then the model list fails.
- Pick your OpenAI account. Pick My OpenAI account, the credential with your working key.
Pick your open A I login. The one with the working key.
- Open the Model list. Click the Model box.
- Pick GPT-4.1-MINI. Click GPT-4.1-MINI. It is quick, cheap and good at pulling facts out of text.
It is quick, cheap, and good at pulling facts out of text.
- Write the prompt. Click the Prompt box and type the prompt. It asks for JSON in a fixed shape: a list called tasks, each with a task, an owner and a due day. The parts in curly braces pull the meeting name and notes from the row. Use Paste the prompt to skip the typing.
It asks for a list of tasks, each with an owner and a due day. The curly braces pull in the meeting name and the notes.
Read these meeting notes and list every action item someone agreed to do. Reply with JSON only, in this shape: {"tasks":[{"task":"...","owner":"...","due":"..."}]}. Use the person's first name for owner. Use the day or date said in the notes for due, or No date if none is given. Meeting: {{ $json.Meeting }}. Notes: {{ $json.Notes }} - Switch the box to Expression. Hover over the Prompt box and click Expression. The braces turn green and the Result line shows the real meeting name and notes. Skip this and the AI gets the braces as plain text.
Hover over the prompt box and click expression. The braces turn green. Skip this, and the A I gets the braces as plain text.
- Add the Output Format option. Scroll down to Options and click Add option. You want n8n to read the answer as data, not as one long block of text.
You want N eight N to read the answer as data, not one long block of text.
- Pick Output Format. Click Output Format.
- Open the Type list. Click the Type box. It is empty and shows a red warning until you pick something.
It shows a red warning until you pick something.
- Pick JSON Object. Click JSON Object. The prompt already says "JSON only", which this setting needs. Now n8n opens the answer for you, so the tasks arrive as a real list.
The prompt already says J S O N only, which this needs. Now N eight N opens the answer for you.
- Run the AI step. Click Execute step. It takes a few seconds. The OUTPUT shows 2 items. Open text and you see a list called tasks: 4 tasks for the first meeting and 3 for the second. The AI runs again each time, so your wording may differ a little from ours.
It takes a few seconds. There are two items. Four tasks for the first meeting, and three for the second. The wording may differ a little each time.
- Back to the canvas. Close the node with the X.
Close the node.
4. One row per task
- Add the next step. Each meeting is still one item that holds a list. Click the + after Message a model.
Each meeting is still one item that holds a list.
- Search for Split Out. Type: Split Out
- Pick Split Out. Click Split Out. It turns a list inside an item into separate items. It has no sub-menu, so the node opens straight away.
It turns a list inside an item into separate items. It opens straight away.
- Name the list to split. Click Fields To Split Out and type: output[0].content[0].text.tasks That is the path to the list. In n8n you can instead drag tasks from the left panel. If you see an error about a field called "o", you clicked Execute before the typing finished: click it again.
In the real editor you can drag tasks in from the left. If you see an error about a field called o, click execute again.
- Split the tasks apart. Click Execute step. The OUTPUT shows 7 items: one per task, each with the fields task, owner and due. Two meetings became seven rows of work.
There are seven items. One for each task, with a task, an owner and a due day. Two meetings became seven rows of work.
- Back to the canvas. Close the node with the X.
Close the node.
5. Save them to a sheet
- Add the last step. Click the + after Split Out.
- Search for Google Sheets again. Type: Google Sheets
- Pick Google Sheets. Click Google Sheets.
- Pick Append row in sheet. Click Append row in sheet. It adds a new row each time. Be careful not to pick Append or update row, which needs a column to match on.
It adds a new row each time. Do not pick append or update row. That one needs a column to match.
- Open the Document list. This time the credential is already your Google account. Click the Document box.
This time your Google account is already filled in.
- Pick the Action Items sheet. Pick Action Items. This is a different spreadsheet from the notes. Its row 1 holds three lowercase column names: task, owner and due.
Pick the action items sheet. This is a different spreadsheet from the notes. Row one holds three column names. Task, owner, and due.
- Open the Sheet list. Click the Sheet box.
- Pick the tab. Pick Sheet1.
Pick the tab.
- Open Mapping Column Mode. n8n loads your column names and starts on Map Each Column Manually. Click Mapping Column Mode.
N eight N loads your column names. It starts on map each column manually.
- Pick Map Automatically. Click Map Automatically. A note says the incoming fields must be named the same as the sheet columns. They are: task, owner and due. That is why the columns are lowercase.
A note says the fields must be named the same as the sheet columns. They are. Task, owner, and due.
- Add the tasks to the sheet. Click Execute step. n8n adds 7 rows to the Action Items sheet. Each run adds rows again, so do not click it twice or you will have duplicates.
N eight N adds seven rows to the sheet. Each run adds rows again. So do not click it twice, or you will get duplicates.
- Back to the canvas. Close the node with the X.
Close the node.
- Open the Action Items sheet. Click the Action Items - Google Sheets tab. Seven tasks, each with an owner and a due day, in the order the meeting discussed them. The "skip the status meeting" decision was correctly left out, because nobody agreed to do anything.
Seven tasks, each with an owner and a due day. The decision to skip a meeting was left out, because nobody agreed to do anything.
- Back to n8n. Click the n8n tab. The workflow works, but it is not published and it starts from a button. To run it after every meeting, you would swap the trigger for a form or a new-row trigger, then Publish. Read the AI tasks before you rely on them.
Go back to the N eight N tab. The workflow works. It is not published, and it starts from a button. Read the tasks the A I found before you rely on them.
Frequently asked questions
- Why use JSON Object output instead of plain text?
- Plain text comes back as one block that you would have to parse. With Output Format set to JSON Object, and a prompt that asks for JSON in a fixed shape, n8n opens the answer for you, so the tasks arrive as a real list you can split into rows.
- What does Split Out do?
- It takes a list inside an item and turns each entry into its own item. Two meetings, each holding a list of tasks, become seven items, one per task, which Google Sheets can store as seven rows.
- Why did Map Automatically work without mapping any columns?
- It matches the incoming field names to the sheet's column names. The fields are task, owner and due, and the sheet columns are task, owner and due. If your columns are named differently, rename them or use Map Each Column Manually.
- Will I get duplicate rows if I run it twice?
- Yes. Append row in sheet adds new rows on every run, and the AI may word a task slightly differently each time. Run it once per set of notes.
- Can the AI miss a task?
- It can, or it can misread who owns something. Skim the Action Items sheet after each meeting, and keep the notes clear about who agreed to do what.
More in n8n Automation Toolkit
Find and Use n8n TemplatesSkip the blank canvas. Find a ready-made workflow in the n8n template gallery, import it into your workspace, connect Google Sheets and Gmail, test it with a real form…
Free · Live ~9 min
Litescrape in n8n: Swap SerpApi for a Cheaper Search APISwitch a weekly n8n competitor-price workflow from SerpApi to Litescrape's Google Shopping API: change the HTTP Request URL, move the key into a Bearer Auth credential…
Free · Live ~7 min
◷n8n: Execute Step, Execute Workflow and PublishLearn the buttons in today's n8n editor: run one node with Execute step, pin test data, run everything with Execute workflow, then Publish and copy the Production URL.
Free · Live ~6 min
IF and Switch in n8n: Route Work by RulesSend each request where it belongs. Use an If node to split big jobs from small ones, then a Switch with named outputs and a fallback to route by service.
Free · Live ~10 min
◷n8n: Talk to Your Google Sheets with ChatGPT, from Zero (Free Credits or API Key, Google, Sheet, Chat)Start from nothing: copy n8n template 7639, use n8n's free credits (or your own OpenAI API key), connect Google, make your own sheet, then ask it questions in plain…
Free · Live ~16 min
All 7 modules in n8n Automation Toolkit
More n8n tutorials
n8n AI Agent Tutorial: Save Social Media Ideas to Google SheetsBuild an AI agent for BrightPath Marketing that generates social media post ideas and saves them to Google Sheets — chat trigger, AI Agent, system prompt, model…
Free · Live ~12 min
Lovable + n8n: Build a Web App with an AI BackendBuild a contact form in Lovable and connect it to an n8n workflow — webhook trigger, AI Agent, Google Sheets, Gmail, and a Respond node that ties it all together.
Free · Live ~15 min
AI Receipt Extractor: Receipts to Google Sheets with n8nDrop a photo of a receipt into an n8n chat. An AI agent reads it, pulls out the date, vendor and amount, picks a category, and adds a row to Google Sheets.
Free · Live ~12 min
n8n AI Email Responder: Draft Gmail Replies AutomaticallyBuild an n8n agent that watches your Gmail, reads each new customer email, and writes a reply as a draft in the same thread, ready for you to check and send.
Free · Live ~12 min
Daily Job Alerts: Email Each Tech Their Jobs from Google Sheets with n8nEvery morning at 7, n8n reads a plumbing company's jobs sheet, skips anything not assigned yet, and emails each job to the tech it's assigned to — customer, address…
Free · Live ~10 min
Gmail AI Triage: Auto-Label Every Email and Draft RepliesBuild an n8n workflow that reads each new email, sorts it as a lead, a client or an invoice with a Text Classifier, adds the matching Gmail label, and drafts a reply to…
Free · Live ~14 min
From the blog
Terms in this lesson
Plain-English definitions, each with an example from a free lesson.
