AutomationFlowsAI & RAG › Generate a Buyer Persona Pain Point Report Using Olostep, Gemini and Google Docs

Generate a Buyer Persona Pain Point Report Using Olostep, Gemini and Google Docs

ByYasser Sami @yassersami on n8n.io

Understand your customers before you build for them. This workflow, Market Segmentation: Buyer Persona Pain Point Report, automates the grueling process of primary market research. By scraping real-world discussions from LinkedIn, tech forums, and review sites, it uses AI to…

Event trigger★★★★☆ complexityAI-powered29 nodesForm TriggerGoogle GeminiN8N Nodes OlostepGoogle SheetsHTTP RequestGoogle Drive
AI & RAG Trigger: Event Nodes: 29 Complexity: ★★★★☆ AI nodes: yes Added:
Generate a Buyer Persona Pain Point Report Using Olostep, Gemini and Google Docs — n8n workflow card showing Form Trigger, Google Gemini, N8N Nodes Olostep integration

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

This workflow follows the Form Trigger → Google Drive 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": "GPxT5LpzheHypWm2",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Market Segmentation: Buyer Persona Pain Point Report",
  "tags": [
    {
      "id": "xRJNyiRIpAsEzL8y",
      "name": "Olostep",
      "createdAt": "2026-01-31T11:17:46.807Z",
      "updatedAt": "2026-01-31T11:17:46.807Z"
    }
  ],
  "nodes": [
    {
      "id": "4ad7b33e-07a8-4022-988a-31a5d2bff93b",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        0,
        -88
      ],
      "parameters": {
        "options": {},
        "formTitle": "Market segmentation",
        "formFields": {
          "values": [
            {
              "fieldLabel": "persona",
              "requiredField": true
            },
            {
              "fieldLabel": "category",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "d4f1976f-31ae-43b7-884f-4c47a2393873",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        448,
        -88
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "result.discussion_snippets"
      },
      "typeVersion": 1
    },
    {
      "id": "9f48c40f-3a8f-47b5-8437-00a022c82a79",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        672,
        112
      ],
      "parameters": {
        "options": {
          "mergeLists": false
        },
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "snippet_text"
            },
            {
              "fieldToAggregate": "source_url"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "99131f05-406e-4f27-b982-a51a9ac1102d",
      "name": "Snippet analyst",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        1120,
        112
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemini-2.5-flash",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "model",
              "content": "You are a helpful, intelligent, discussions analyst."
            },
            {
              "content": "=Analyze the entire corpus of provided discussion snippets. Your output must be a concise analysis using the following format:\n\nI. Core Persona Pain Points\n\nList the three most frequent and critical problems mentioned by the persona.\n\nPain Point 1: [Problem summary] (Keywords: [Specific jargon used by the persona])\n\nPain Point 2: [Problem summary] (Keywords: [Specific jargon used by the persona])\n\nPain Point 3: [Problem summary] (Keywords: [Specific jargon used by the persona])\n\nII. Messaging Insights\n\nProvide a single paragraph (3-4 sentences) summarizing the overall tone, key fears, and primary language/vocabulary the persona uses when discussing solutions in this domain.\n\nDo not include any introduction, conclusion, or extraneous text.\n\nYour output should be formatted as Markdown."
            },
            {
              "content": "=Discussion snippets: {{ $json.all_snippets }}"
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "cb3af2e5-5dae-4d44-9cdf-2996f6792e48",
      "name": "all snippets",
      "type": "n8n-nodes-base.set",
      "position": [
        896,
        112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e38c5ee3-c205-48ad-93d7-8dfc7233f165",
              "name": "all_snippets",
              "type": "string",
              "value": "={{ $json.snippet_text.join('\\n\\n') }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "6dd0c827-86fd-4162-a0f7-a7ef7a798ee2",
      "name": "Pain points analyst",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        1472,
        112
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemini-2.5-flash",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "model",
              "content": "You are a helpful, intelligent, assistant."
            },
            {
              "content": "=Based only on the 'Core Persona Pain Points' and 'Messaging Insights' provided in the input:\n\nI. The Critical Unmet Need\n\nIdentify the single biggest gap or unaddressed weakness in current solutions implied by the three pain points. State this gap concisely in one sentence.\n\nII. Preliminary Feature Ideas\n\nGenerate five distinct, preliminary feature ideas specifically designed to solve the Critical Unmet Need identified above. Structure your output as a simple list where each idea includes:\n\nFeature Name: (Catchy/clear name)\n\nDescription: (A single sentence explaining how it solves the unmet need)\n\nMessaging Hook: (A brief, compelling phrase using the persona's language from the 'Messaging Insights' section)\n\nCRITICAL: Do not repeat the pain points or the messaging insights in your output. Focus solely on the Unmet Need and the corresponding solutions. Do not include any introduction, conclusion, or extraneous text."
            },
            {
              "content": "=Core Persona Pain Points and Messaging Insights:\n\n{{ $json.content.parts.last().text }}"
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "d93e9c47-1b5b-4cb1-af43-addd3c04c676",
      "name": "Report editor",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        1824,
        112
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemini-2.5-flash",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "model",
              "content": "You are the final editor for a strategic Product Discovery Report."
            },
            {
              "content": "=Your goal is to combine the provided competitive analysis and feature ideation into a single, clean Markdown document suitable for a Google Docs Writer node.\n\nCRITICAL INSTRUCTIONS:\n\nEnsure all sections below are included.\n\nUse clear, bold Markdown headings (e.g., ##).\n\nDo not include any introduction, conclusion, or extraneous commentary.\n\n1. Persona Profile & Context\n\nInsert the full content of the 'Messaging Insights' section from the Pain Points input.\n\n2. Core Persona Pain Points Analysis\n\nInsert the full content of the 'Core Persona Pain Points' section from the Pain Points input.\n\n3. Strategic Opportunity: The Unmet Need\n\nInsert the full content of the 'Critical Unmet Need' section from the Feature Ideation input.\n\n4. Preliminary Feature Roadmap\n\nInsert the full content of the 'Preliminary Feature Ideas' section from the Feature Ideation input. Reformat the ideas into a two-column table with the headings 'Feature' and 'Description & Hook'.\n\n5. Source Documentation\n\nBelow this line, list all original source URLs used for the initial web research. Use a simple bulleted list.\n\nFinal Output: Ensure the entire document is clean Markdown ready for the final Google Docs conversion."
            },
            {
              "content": "=Core Persona Pain Points and Messaging Insights: \n\n{{ $('Snippet analyst').item.json.content.parts.last().text }}\n\nUnmet Need and Preliminary Feature Ideas: \n\n{{ $('Pain points analyst').item.json.content.parts.last().text }}\n\n\nPersona: {{ $('On form submission').item.json.persona }}\n\nCategory: {{ $('On form submission').item.json.category }}\n\nSource URLs: {{ $('Aggregate').item.json.source_url }}"
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "5903984d-e037-439a-9bf2-8b3fe3bd2e3d",
      "name": "get discussions",
      "type": "n8n-nodes-olostep.olostepScrape",
      "position": [
        224,
        -88
      ],
      "parameters": {
        "task": "=Search LinkedIn discussion groups, specialized tech forums, and relevant review sites for questions/discussions posted by {{ $json.persona }} about the {{ $json.category }}. Get at least 5 discussions.",
        "resource": "answer",
        "json_schema": "={\"discussion_snippets\": [ { \"source_url\": \"string\", \"snippet_text\": \"the full text of the post\", \"post_title\": \"string\", \"author_type\": \"string\" } ]}"
      },
      "credentials": {
        "olostepScrapeApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "6770de68-b42d-4042-81c4-660da40eab65",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        672,
        -184
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "ec84a57a-09fd-42e2-9c79-0a6c91f9bdd5",
      "name": "Append row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueRegularOutput",
      "position": [
        896,
        -256
      ],
      "parameters": {
        "columns": {
          "value": {
            "postURL": "={{ $json.source_url }}",
            "postTitle": "={{ $json.post_title }}",
            "authorType": "={{ $json.author_type }}",
            "postSnippet": "={{ $json.snippet_text }}"
          },
          "schema": [
            {
              "id": "postTitle",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "postTitle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "postSnippet",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "postSnippet",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "authorType",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "authorType",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "postURL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "postURL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RQOmexxYDmRDSEmPJYpu-T8OmQxqLvH8-ZWnDQhOq64/edit#gid=0",
          "cachedResultName": "snippets"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1RQOmexxYDmRDSEmPJYpu-T8OmQxqLvH8-ZWnDQhOq64",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RQOmexxYDmRDSEmPJYpu-T8OmQxqLvH8-ZWnDQhOq64/edit?usp=drivesdk",
          "cachedResultName": "Persona Snippets"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.7
    },
    {
      "id": "195a673c-d02d-4a6e-8a66-f5571ab5f28e",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        1184,
        -184
      ],
      "parameters": {
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "25cd117e-878f-4ce8-a995-340186922dbb",
      "name": "Markdown",
      "type": "n8n-nodes-base.markdown",
      "position": [
        2176,
        112
      ],
      "parameters": {
        "mode": "markdownToHtml",
        "options": {
          "tables": true,
          "simplifiedAutoLink": true,
          "completeHTMLDocument": true
        },
        "markdown": "={{ $json.content.parts.last().text }}"
      },
      "typeVersion": 1
    },
    {
      "id": "67134c0c-0985-49cb-8141-d5b9c89421a2",
      "name": "Transfer HTML to Doc",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2848,
        112
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/drive/v3/files/{{ $json.id }}/copy?fields=id,name,mimeType,webViewLink",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"name\":     \"Buyer Persona pain points for {{ $('On form submission').item.json.persona }}\",\n  \"mimeType\": \"application/vnd.google-apps.document\"\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googleDriveOAuth2Api"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8b6e697a-1ec0-45c1-911d-4b11eac99a48",
      "name": "Generate HTML Binary File",
      "type": "n8n-nodes-base.code",
      "position": [
        2400,
        112
      ],
      "parameters": {
        "jsCode": "// Loop over alle items\nreturn $input.all().map(item => {\n  const html = $input.first().json.data;            // jouw HTML-string\n  // Zet \u2018m om naar een Buffer\n  item.binary = {\n    htmlFile: {\n      data: Buffer.from(html, 'utf8').toString('base64'),\n      mimeType: 'text/html',\n      fileName: 'output.html'\n    }\n  };\n  // Je hebt verder geen JSON nodig, dus ruim op:\n  return { json: {}, binary: item.binary };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "492d8627-0d22-4be5-aa57-4b061401b153",
      "name": "Share link & email",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        3296,
        112
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Transfer HTML to Doc').item.json.id }}"
        },
        "options": {
          "emailMessage": "=Hey,\n\nYour \"{{ $('Transfer HTML to Doc').item.json.name }}\" report is ready, find it at this link."
        },
        "operation": "share",
        "permissionsUi": {
          "permissionsValues": {
            "role": "reader",
            "type": "user",
            "emailAddress": "user@example.com"
          }
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "daed5bc2-f04f-49e8-92df-e5a53c47a0c7",
      "name": "Delete html file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        3072,
        112
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Upload html file').item.json.id }}"
        },
        "options": {},
        "operation": "deleteFile"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "cdde0eef-b142-4ec2-9955-8d6cc0beab1a",
      "name": "Upload html file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2624,
        112
      ],
      "parameters": {
        "name": "working isa",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultUrl": "https://drive.google.com/drive",
          "cachedResultName": "/ (Root folder)"
        },
        "inputDataFieldName": "htmlFile"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "981c7fca-5c40-478e-a1ff-a6f32a63b6be",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -864,
        -448
      ],
      "parameters": {
        "width": 704,
        "height": 928,
        "content": "## Market Segmentation: Buyer Persona Pain Point Report\n\nUnderstand your customers before you build for them. This workflow, **Market Segmentation: Buyer Persona Pain Point Report**, automates the grueling process of primary market research. By scraping real-world discussions from LinkedIn, tech forums, and review sites, it uses AI to identify exactly what keeps your target persona up at night. \n\nInstead of guessing, you get a strategic document detailing core pain points, the vocabulary your customers actually use, and a preliminary feature roadmap designed to solve their unmet needs.\n\n---\n\n### Who\u2019s it for?\n*   **Product Managers:** Validate new feature ideas against real-world user frustrations.\n*   **Founders & Entrepreneurs:** Conduct rapid market discovery for a new niche or pivot.\n*   **Marketing Strategists:** Extract the exact \"jargon\" and \"fear-based\" language needed for high-converting ad copy and landing pages.\n*   **Sales Teams:** Prepare for discovery calls with a deep understanding of the prospect's industry-specific hurdles.\n\n### How it works / What it does\n1.  **Trigger:** Enter a target **Persona** and a **Product Category** via an n8n Form.\n2.  **Research:** **Olostep** searches the web for relevant LinkedIn threads, specialized forums, and tech discussions.\n3.  **Data Logging:** Every raw discussion snippet is automatically logged into a **Google Sheet** for your long-term records.\n4.  **Analysis Phase:**\n    *   **Snippet Analyst:** Gemini extracts critical pain points and specific industry jargon.\n    *   **Pain Points Analyst:** Identifies the \"Critical Unmet Need\" and brainstorms 5 feature ideas with specific messaging hooks.\n5.  **Final Reporting:** A **Report Editor** node compiles everything into a professional Markdown document, converts it to a Google Doc, and emails the sharing link to you.\n\n### How to set up\n1.  **Credentials:** You will need API keys for **Google Gemini**, **Olostep**, **Google Sheets**, and **Google Drive**.\n2.  **Google Sheet:** Create a sheet with columns for `postTitle`, `postSnippet`, `postURL`, and `authorType`, then select it in the \"Append row in sheet\" node.\n3.  **Form Trigger:** Activate the workflow and use the provided URL to start your research.\n4.  **Email Recipient:** Update the \"Share link & email\" node with your email address to receive the final report notifications.\n\n### How to customize the workflow\n*   **Deepen Research:** Increase the number of discussions in the \"get discussions\" node if you need a wider sample size for broader markets.\n*   **Adjust Ideation:** Modify the \"Pain points analyst\" prompt to focus on specific business outcomes, such as \"reducing churn\" or \"increasing upsells.\"\n*   **Database Integration:** Swap Google Sheets for Airtable or a SQL database if you want to build a more permanent \"Customer Intelligence\" vault."
      },
      "typeVersion": 1
    },
    {
      "id": "c670cd87-924e-424e-b771-c72d6bb3ce55",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        -184
      ],
      "parameters": {
        "color": 7,
        "width": 192,
        "height": 256,
        "content": "## Input form\nEnter your persona and category"
      },
      "typeVersion": 1
    },
    {
      "id": "653b3c7f-13a2-496c-a311-001c8ad5bc82",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        168,
        -184
      ],
      "parameters": {
        "color": 7,
        "width": 208,
        "height": 256,
        "content": "## Olostep API\nSearches for discussions"
      },
      "typeVersion": 1
    },
    {
      "id": "60250186-e016-498d-898e-366ba81898b9",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        32
      ],
      "parameters": {
        "color": 7,
        "width": 592,
        "height": 240,
        "content": "## Formatting\nformats the data and prepares it for the next steps"
      },
      "typeVersion": 1
    },
    {
      "id": "24d09f56-9a20-4e00-a6d7-e790344777bf",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        32
      ],
      "parameters": {
        "color": 7,
        "width": 336,
        "height": 240,
        "content": "## Snippet analyst\nAnalyzes the discussion snippets"
      },
      "typeVersion": 1
    },
    {
      "id": "1d1bb5f3-a68a-4fc8-a3ec-c762446f9730",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1408,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 336,
        "height": 272,
        "content": "## Pain points analyst\nIdentifies the \"Critical Unmet Need\" and brainstorms 5 feature ideas with specific messaging hooks."
      },
      "typeVersion": 1
    },
    {
      "id": "a8460418-6893-4b9d-a033-05ec8badaadb",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1776,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 256,
        "content": "## Report editor\ncompiles everything into a professional Markdown document"
      },
      "typeVersion": 1
    },
    {
      "id": "f5891fcc-2cf9-4b4c-a6b8-473d8b7b76a1",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        -296
      ],
      "parameters": {
        "color": 7,
        "width": 640,
        "height": 272,
        "content": "## Google sheets\nAppends all snippets into a google sheet"
      },
      "typeVersion": 1
    },
    {
      "id": "a9bf8648-3f26-45d6-948b-45dfb65c2c8a",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2800,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 256,
        "content": "## Upload The File\nConverts the HTML file to google doc format and re-upload the file. And then deletes the old HTML file."
      },
      "typeVersion": 1
    },
    {
      "id": "3bad5f1b-7871-4552-9a46-7a14b634d180",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2544,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 256,
        "height": 256,
        "content": "## Upload The File\nUploads the HTML file"
      },
      "typeVersion": 1
    },
    {
      "id": "345a5a85-e83e-47d4-83c1-473cfb83de04",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3216,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 256,
        "height": 256,
        "content": "## Share & Notify\nShares the doc and sends an email with the link."
      },
      "typeVersion": 1
    },
    {
      "id": "fa15768b-621b-4535-89f7-e3b8cbb434e1",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2144,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 368,
        "height": 256,
        "content": "## Markdown to HTML\nConverts Markdown content into HTML and creates an HTML binary file."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "88b41617-fae5-4c93-bf05-34f9df970cbd",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Markdown": {
      "main": [
        [
          {
            "node": "Generate HTML Binary File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "all snippets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          },
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "all snippets": {
      "main": [
        [
          {
            "node": "Snippet analyst",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Report editor": {
      "main": [
        [
          {
            "node": "Markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Snippet analyst": {
      "main": [
        [
          {
            "node": "Pain points analyst",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get discussions": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Delete html file": {
      "main": [
        [
          {
            "node": "Share link & email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload html file": {
      "main": [
        [
          {
            "node": "Transfer HTML to Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "get discussions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append row in sheet": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pain points analyst": {
      "main": [
        [
          {
            "node": "Report editor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transfer HTML to Doc": {
      "main": [
        [
          {
            "node": "Delete html file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate HTML Binary File": {
      "main": [
        [
          {
            "node": "Upload html file",
            "type": "main",
            "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

Understand your customers before you build for them. This workflow, Market Segmentation: Buyer Persona Pain Point Report, automates the grueling process of primary market research. By scraping real-world discussions from LinkedIn, tech forums, and review sites, it uses AI to…

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

Stop spending hours manually repurposing long-form content. The Content Atomizer.json workflow takes a single article URL and automatically "atomizes" it into high-authority LinkedIn posts, Twitter (X

Form Trigger, Google Gemini, N8N Nodes Olostep +2
AI & RAG

This n8n template automatically generates high-quality sales battle cards for any prospect company using real-time research and AI. It analyzes company news, website content, and your product’s value

N8N Nodes Olostep, Google Gemini, Form Trigger +2
AI & RAG

Establish yourself as a thought leader by answering the questions that everyone else is ignoring. The Content Authority Roadmap workflow automates deep-dive research into Reddit, Quora, and niche foru

Form Trigger, N8N Nodes Olostep, Google Gemini +2
AI & RAG

Stop guessing what to build next. The Competitive Roadmap & Trend Arbitrage workflow acts as your automated R&D department. It compares your current product capabilities against real-time market data,

Form Trigger, N8N Nodes Olostep, Google Gemini +2
AI & RAG

Monitor a Google Drive folder, process each image based on the prompt defined in and save the new image to the specified output Google Drive folder. Maintain a processing log in Google Sheets.

Google Drive Trigger, Google Drive, HTTP Request +2