AutomationFlowsData & Sheets › Convert Markdown to Formatted Notion Pages with Mark2notion

Convert Markdown to Formatted Notion Pages with Mark2notion

ByMax @elitemaks on n8n.io

Transform markdown text into beautifully formatted Notion pages using the Mark2Notion API. This workflow handles all the complexity of Notion's block structure, including tables, nested lists, code blocks, and special formatting.

Event trigger★★★☆☆ complexity8 nodesNotionHTTP Request
Data & Sheets Trigger: Event Nodes: 8 Complexity: ★★★☆☆ Added:

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

This workflow follows the HTTP Request → Notion 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": "QGikyQ1WgZENu9e5",
  "name": "Mark2Notion Append",
  "tags": [],
  "nodes": [
    {
      "id": "0571b66a-e756-45f2-958b-899ee08dfab2",
      "name": "When you click 'Execute Workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        608,
        352
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "278285e1-183a-4a63-a2f9-10e0be2f4a9f",
      "name": "Create a page",
      "type": "n8n-nodes-base.notion",
      "position": [
        1232,
        352
      ],
      "parameters": {
        "title": "Mark2Notion Test Page",
        "pageId": {
          "__rl": true,
          "mode": "id"
        },
        "options": {}
      },
      "typeVersion": 2.2
    },
    {
      "id": "fce17ffd-0f61-4da6-9f40-2a455217897b",
      "name": "Set Markdown",
      "type": "n8n-nodes-base.set",
      "position": [
        864,
        352
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "{\n  \"markdown\": \"# Header 1\\n\\n## Header 2\\n\\nThis is a short paragraph to demonstrate basic Markdown formatting.\\n\\n- Item 1\\n  - Subitem 1.1\\n    - Subitem 1.1.1\\n- Item 2\\n  - Subitem 2.1\\n- Item 3\\n\\n| Column 1 | Column 2 | Column 3 |\\n|----------|----------|----------|\\n| Row 1    | Data A   | Data B   |\\n| Row 2    | Data C   | Data D   |\\n| Row 3    | Data E   | Data F   |\"\n}\n"
      },
      "typeVersion": 3.4
    },
    {
      "id": "143556c0-7d79-4f85-82eb-bbc7b346079c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 512,
        "height": 800,
        "content": "Transform Markdown text into beautifully formatted Notion pages using the Mark2Notion API. This workflow handles all the complexity of Notion's block structure, including tables, nested lists, code blocks, and special formatting.\n\n## What this template does\nThis workflow takes any Markdown-formatted text and automatically converts it into properly structured Notion blocks, then appends it to your specified Notion page. It handles all of Notion's API limitations automatically, including:\n- Chunking content over 100 blocks\n- Splitting text over 2000 characters\n- Rate limiting and retry logic\n- Complex table structures\n- Nested lists, including 3+ levels of nesting\n\n## Use Cases\n- **AI Content Publishing**: Send ChatGPT, Claude, or other LLM outputs directly to your Notion documentation\n- **Form to Documentation**: Convert form submissions into formatted project pages\n- **GitHub to Notion**: Sync issues, PRs, or README files to your team wiki\n- **Meeting Notes Automation**: Transform transcripts into structured meeting notes\n- **Report Generation**: Create beautiful reports from data sources\n\n## How to use this template\n1. **Get your Mark2Notion API key** at https://mark2notion.com (free tier includes 100 requests/month)\n2. **Create a Notion integration** at https://notion.so/my-integrations and copy the token\n3. **Add the integration to your Notion parent page**\n4. **Copy your page ID** from the Notion page URL\n5. **Configure the HTTP Request node** with your credentials\n6. **Test with sample Markdown** to see the result"
      },
      "typeVersion": 1
    },
    {
      "id": "ef5c6201-88e7-471a-8f98-101f95d8e981",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        128
      ],
      "parameters": {
        "color": 7,
        "width": 304,
        "height": 400,
        "content": "## Insert any Markdown output node here\n\nUse any node that outputs Markdown, like an LLM reply or GitHub issues"
      },
      "typeVersion": 1
    },
    {
      "id": "a90361dc-615b-4866-bbc7-4d5750cb2840",
      "name": "HTTP Request - Mark2Notion Append",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1600,
        352
      ],
      "parameters": {
        "url": "https://api.mark2notion.com/api/append",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "markdown",
              "value": "={{ $('Set Markdown').item.json.markdown }}"
            },
            {
              "name": "notionToken"
            },
            {
              "name": "pageId",
              "value": "={{ $json.id }}"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "39157620-b1c5-43ec-92cd-f1259eb57b34",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1488,
        128
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 400,
        "content": "## Set Mark2Notion and Notion credentials\n\n1. Set Mark2Notion API key as Header Auth\n2. Use `x-api-key` as the auth header name\n3. Set `notionToken` as a body parameter"
      },
      "typeVersion": 1
    },
    {
      "id": "34b59cec-a312-47f5-8059-d9bf6b2ad858",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        64
      ],
      "parameters": {
        "color": 7,
        "width": 304,
        "height": 464,
        "content": "## Set Notion Credentials\n\n1. Create a Notion credential with the token from your Notion integration\n2. Get the parent page ID \u2014 a new page will be created as a subpage\n3. You can get the page ID from the URL: https://www.notion.so/Your-Page-Title-[PAGE_ID_HERE]\n4. Set the page ID as the Parent Page (By ID) parameter\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5904ca6b-a787-4228-8e16-985cef7be1cb",
  "connections": {
    "Set Markdown": {
      "main": [
        [
          {
            "node": "Create a page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a page": {
      "main": [
        [
          {
            "node": "HTTP Request - Mark2Notion Append",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When you click 'Execute Workflow'": {
      "main": [
        [
          {
            "node": "Set Markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

Transform markdown text into beautifully formatted Notion pages using the Mark2Notion API. This workflow handles all the complexity of Notion's block structure, including tables, nested lists, code blocks, and special formatting.

Source: https://n8n.io/workflows/8331/ — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

WorkFlow 01.02. Uses notion, httpRequest, executeWorkflowTrigger. Event-driven trigger; 27 nodes.

Notion, HTTP Request, Execute Workflow Trigger
Data & Sheets

WorkFlow 05.01. Uses executeWorkflowTrigger, notion, httpRequest. Event-driven trigger; 26 nodes.

Execute Workflow Trigger, Notion, HTTP Request
Data & Sheets

WorkFlow 05.02. Uses httpRequest, notion, executeWorkflowTrigger. Event-driven trigger; 26 nodes.

HTTP Request, Notion, Execute Workflow Trigger
Data & Sheets

WorkFlow 05.03. Uses notion, httpRequest, executeWorkflowTrigger. Event-driven trigger; 26 nodes.

Notion, HTTP Request, Execute Workflow Trigger
Data & Sheets

WorkFlow 05.04. Uses notion, httpRequest, executeWorkflowTrigger. Event-driven trigger; 26 nodes.

Notion, HTTP Request, Execute Workflow Trigger