⭐️Link to the workflow https://needle.app/workflow-templates/generate-study-notes-in-notion
Drop a topic in a Google Sheet. Get fully researched, beautifully formatted notes in Notion. Automatically.
Ever sat down to study a new topic and spent more time finding good resources than actually learning? You open ten tabs, skim through articles, copy paste bits into a doc, and somehow your "notes" end up being a mess of half written bullet points. Yeah, same.
That's exactly why this workflow exists. It takes a topic you want to learn, researches it across the internet, writes detailed and well structured notes (with examples and analogies), and saves everything as a clean Notion page. All you have to do is type a topic into a Google Sheet. That's it.
┌─────────────────┐
│ Google Sheet │ ◄── You add topics here
│ (Input Source) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Filter Engine │ ◄── Skips topics already marked "Done"
│ (Code Node) │
└────────┬────────┘
│
▼
┌─────────────────────────────────────────┐
│ AI Research Agent │
│ ┌───────────┐ ┌──────────────────┐ │
│ │ Internet │───►│ Note Generation │ │
│ │ Search │ │ (GPT-4.1) │ │
│ └───────────┘ └──────────────────┘ │
│ Runs in parallel for each topic │
└────────┬────────────────────────────────┘
│
▼
┌─────────────────┐
│ Notion API │ ◄── Creates a page per topic
│ (MCP Connector) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Google Sheet │ ◄── Marks topic as "Done"
│ (Status Update) │
└─────────────────┘
Manual Trigger
│
▼
Read Google Sheet ──► Filter New Topics ──► Research & Write Notes (AI Agent)
│
▼
Mark as Done ◄── Clean Data ◄── Save to Notion
| Step | Node Type | Run Mode | What It Does |
|---|---|---|---|
| 1 | Manual Trigger | — | Starts the workflow |
| 2 | Google Sheets (Read) | Input | Reads all rows from the sheet |
| 3 | Code | Input | Filters out rows where Status = "Done" |
| 4 | AI Agent + Internet Search | Item (parallel) | Researches each topic and writes notes |
| 5 | AI Agent + Notion Tool | Item (parallel) | Creates a Notion page per topic |
| 6 | Code | Item | Extracts topic name and Notion URL |
| 7 | Google Sheets (Upsert) | Item | Marks topic as "Done" in the sheet |
| Component | Technology |
|---|---|
| Workflow Engine | Needle Workflows |
| AI Model | GPT 4.1 |
| Research Tool | Internet Search (built into Needle) |
| Note Storage | Notion (via MCP Connector) |
| Input/Tracking | Google Sheets (via Pipedream Connector) |
| Processing | Parallel item mode execution |
- Google Account with access to Google Sheets
- Notion Account connected via the Notion MCP connector in Needle
- A Google Sheet with the following structure:
| Column A | Column B | Column C |
|---|---|---|
| Topic | Concepts to cover in that topic | Status |
| React Hooks | useState, useEffect, custom hooks with examples | (leave blank) |
| Docker Basics | containers, images, volumes, docker compose | (leave blank) |
| REST APIs | HTTP methods, status codes, authentication, CRUD | (leave blank) |
Leave the Status column empty for new topics. The workflow fills it in with "Done" after processing.
Kicks off the workflow whenever you're ready. Just hit "Test" or run it manually. You could also swap this out for a scheduled trigger if you want it to run daily or weekly on its own.
Pulls all the rows from your sheet, including the topic name, the concepts you want covered, and the current status. This is your master list of everything you want to learn.
A code node that looks at the Status column and filters out any row already marked "Done." Only fresh topics move forward. You can keep adding new rows to the same sheet and rerun the workflow without worrying about duplicates.
return input.rows.filter(row => !row.Status || row.Status.trim() === '');This is where the magic happens. For each topic, an AI agent:
- Searches the internet to find detailed articles, tutorials, and examples
- Writes comprehensive notes covering all the concepts you listed
Think of it like having a tutor who reads everything online and hands you a perfectly organized summary with real world analogies, code examples (if relevant), and clear explanations.
Key details:
| Property | Value |
|---|---|
| Model | GPT 4.1 |
| Temperature | 0.7 (creative but accurate) |
| Run Mode | Item (parallel processing) |
| Tools | Internet Search |
| Output | Structured JSON (title, content, originalTopic) |
Takes the notes generated in the previous step and creates a brand new Notion page for each topic. The page title matches your topic, and the full content is saved right there in Notion, formatted and ready to read. No more copying and pasting between apps.
A small utility step that extracts the topic name and Notion URL so the next step knows exactly which row to update in your sheet.
Goes back to your Google Sheet, finds the row for the topic that was just processed, and updates the Status column to "Done." This closes the loop so the topic won't be picked up again on future runs.
For every topic in your Google Sheet, you get:
- ✅ A fully written Notion page with detailed notes, examples, and explanations
- ✅ Your Google Sheet updated with Status = "Done" for processed topics
- ✅ Parallel processing so multiple topics are handled at the same time
-
Be specific with concepts. Instead of just writing "React," try something like "React hooks, useEffect lifecycle, custom hooks with examples." The more detail you give, the better your notes will be.
-
Keep adding rows anytime. The workflow only picks up rows where the Status column is empty, so your sheet is a living document.
-
Automate it fully. Swap the Manual Trigger for a Scheduled Trigger (e.g., every morning at 8 AM) and you'll have fresh notes waiting for you without lifting a finger.
-
Notes stay current. The AI uses live internet search, so your notes include up to date information and resources.
- Clone this workflow from the Needle Templates Directory
- Connect your Google Sheets connector (Pipedream)
- Connect your Notion connector (MCP)
- Point the Read node to your Google Sheet
- Hit Test and watch the magic happen ✨
Input (Google Sheet):
| Topic | Concepts to cover | Status |
|---|---|---|
| Python Decorators | function decorators, class decorators, real world use cases, @property |
Output (Notion Page): A fully formatted page titled "Python Decorators" with sections covering each concept, code snippets, analogies like "think of decorators as gift wrapping for your functions," and links to further reading.
Updated Google Sheet:
| Topic | Concepts to cover | Status |
|---|---|---|
| Python Decorators | function decorators, class decorators, real world use cases, @property | Done |
Esha Agarwal — built this because writing notes from scratch was taking forever and the results were never consistent. Now it's just: add topic → run → learn from clean notes.
Built with ❤️ on Needle Workflows