Workflow: Splitout Code Create

Workflow Details

Download Workflow
{
    "meta": {
        "instanceId": "ce110ceecbd52a55e2f86f58f176c40bfe61a2a2c6b384a681009bc6b9ef0dd4",
        "templateCredsSetupCompleted": true
    },
    "nodes": [
        {
            "id": "dd049dd7-3f85-4c36-a4ec-d5df856fed14",
            "name": "Notion Trigger",
            "type": "n8n-nodes-base.notionTrigger",
            "position": [
                -100,
                360
            ],
            "parameters": {
                "event": "pagedUpdatedInDatabase",
                "pollTimes": {
                    "item": [
                        {
                            "mode": "everyMinute"
                        }
                    ]
                },
                "databaseId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "f50f830b-cadd-4d9c-9a38-bb22e284193e",
                    "cachedResultUrl": "https:\/\/www.notion.so\/f50f830bcadd4d9c9a38bb22e284193e",
                    "cachedResultName": "Journal"
                }
            },
            "credentials": {
                "notionApi": {
                    "id": "C26NOhx95lnHIdzV",
                    "name": "Notion account"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "4bedb493-7a17-4d3f-8b00-93d7134e74ca",
            "name": "Notion",
            "type": "n8n-nodes-base.notion",
            "position": [
                320,
                220
            ],
            "parameters": {
                "blockId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $json.id }}"
                },
                "resource": "block",
                "operation": "getAll",
                "returnAll": true
            },
            "credentials": {
                "notionApi": {
                    "id": "C26NOhx95lnHIdzV",
                    "name": "Notion account"
                }
            },
            "typeVersion": 2.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "8994422e-8b71-4638-be36-d105557a20d8",
            "name": "Notion Node Blocks to Md",
            "type": "n8n-nodes-base.code",
            "position": [
                760,
                220
            ],
            "parameters": {
                "jsCode": "function notionToMarkdown(blocks) {\n  return blocks\n    .map(block => {\n      if (!block.json.content) return \"\"; \/\/ Skip empty content\n      \n      switch (block.json.type) {\n        case \"heading_1\":\n          return `# ${block.json.content}`;\n        case \"heading_2\":\n          return `## ${block.json.content}`;\n        case \"heading_3\":\n          return `### ${block.json.content}`;\n        case \"bulleted_list_item\":\n          return `- ${block.json.content}`;\n        case \"to_do\":\n          return `- [ ] ${block.json.content}`;\n        case \"paragraph\":\n          return `${block.json.content}`;\n        default:\n          return \"\"; \/\/ Ignore unsupported types\n      }\n    })\n    .filter(line => line.trim() !== \"\") \/\/ Remove empty lines\n    .join(\"\\n\\n\"); \/\/ Ensure proper spacing\n}\nconsole.log($input.all())\nreturn [ {\"md\": notionToMarkdown($input.all())} ]"
            },
            "typeVersion": 2
        },
        {
            "id": "4321475e-3eac-4aea-bcd6-11d764af0f02",
            "name": "Split Out",
            "type": "n8n-nodes-base.splitOut",
            "position": [
                560,
                540
            ],
            "parameters": {
                "options": [],
                "fieldToSplitOut": "results"
            },
            "typeVersion": 1
        },
        {
            "id": "b0f9b62c-009e-4d00-9d5d-5e1ea3f1314b",
            "name": "Full Notion Blocks to Md",
            "type": "n8n-nodes-base.code",
            "position": [
                760,
                540
            ],
            "parameters": {
                "jsCode": "function jsonToMarkdown(blocks) {\n    let markdown = \"\";\n\n    function parseRichText(richTextArray) {\n        return richTextArray.map(text => {\n            let content = text.text.content;\n            if (text.annotations.bold) content = `**${content}**`;\n            if (text.annotations.italic) content = `*${content}*`;\n            if (text.annotations.strikethrough) content = `~~${content}~~`;\n            if (text.annotations.underline) content = `_${content}_`;\n            if (text.annotations.code) content = `\\`${content}\\``;\n            if (text.text.link) content = `[${content}](${text.text.link.url})`;\n            return content;\n        }).join(\"\");\n    }\n\n    blocks.forEach(block => {\n        switch (block.json.type) {\n            case \"heading_1\":\n                markdown += `\\n# ${parseRichText(block.json.heading_1.rich_text)}\\n`;\n                break;\n            case \"heading_2\":\n                markdown += `\\n## ${parseRichText(block.json.heading_2.rich_text)}\\n`;\n                break;\n            case \"heading_3\":\n                markdown += `\\n### ${parseRichText(block.json.heading_3.rich_text)}\\n`;\n                break;\n            case \"paragraph\":\n                markdown += `\\n${parseRichText(block.json.paragraph.rich_text)}\\n`;\n                break;\n            case \"bulleted_list_item\":\n                markdown += `- ${parseRichText(block.json.bulleted_list_item.rich_text)}\\n`;\n                break;\n            case \"numbered_list_item\":\n                markdown += `1. ${parseRichText(block.json.numbered_list_item.rich_text)}\\n`;\n                break;\n            case \"to_do\":\n                let checked = block.json.to_do.checked ? \"[x]\" : \"[ ]\";\n                markdown += `- ${checked} ${parseRichText(block.json.to_do.rich_text)}\\n`;\n                break;\n            case \"quote\":\n                markdown += `\\n> ${parseRichText(block.json.quote.rich_text)}\\n`;\n                break;\n            case \"code\":\n                markdown += `\\n\\\n\\`${block.code.language}\\`\\n\\\n${parseRichText(block.json.code.rich_text)}\\n\\\n\\n`;\n                break;\n            case \"unsupported\":\n                break;\n        }\n    });\n\n    return markdown.trim();\n}\n\nreturn [ { \"md\": jsonToMarkdown($input.all()) }];\n\n"
            },
            "typeVersion": 2
        },
        {
            "id": "b3224aea-ca82-4e11-9e7f-df062f20512d",
            "name": "Md to Notion Blocks v3",
            "type": "n8n-nodes-base.code",
            "position": [
                1100,
                340
            ],
            "parameters": {
                "mode": "runOnceForEachItem",
                "jsCode": "function markdownToNotionBlocks(markdown) {\n    const lines = markdown.split('\\n');\n    const blocks = [];\n    let currentList = null;\n    \n    function parseRichText(text) {\n        const richText = [];\n        const regex = \/(\\*\\*|__)(.*?)\\1|(_|\\*)(.*?)\\3|(`)(.*?)\\5|(\\[)(.*?)\\]\\((.*?)\\)\/g;\n        let lastIndex = 0;\n        \n        text.replace(regex, (match, bold1, boldText, italic1, italicText, code1, codeText, link1, linkText, linkUrl, index) => {\n            if (index > lastIndex) {\n                richText.push({ text: { content: text.slice(lastIndex, index) } });\n            }\n            \n            if (boldText) {\n                richText.push({ text: { content: boldText }, annotations: { bold: true } });\n            } else if (italicText) {\n                richText.push({ text: { content: italicText }, annotations: { italic: true } });\n            } else if (codeText) {\n                richText.push({ text: { content: codeText }, annotations: { code: true } });\n            } else if (linkText) {\n                richText.push({ text: { content: linkText, link: { url: linkUrl } } });\n            }\n            \n            lastIndex = index + match.length;\n        });\n        \n        if (lastIndex < text.length) {\n            richText.push({ text: { content: text.slice(lastIndex) } });\n        }\n        \n        return richText.length > 0 ? richText : [{ text: { content: text } }];\n    }\n    \n    for (const line of lines) {\n        if (line.startsWith('# ')) {\n            blocks.push({ type: 'heading_1', heading_1: { rich_text: parseRichText(line.slice(2)) } });\n        } else if (line.startsWith('## ')) {\n            blocks.push({ type: 'heading_2', heading_2: { rich_text: parseRichText(line.slice(3)) } });\n        } else if (line.startsWith('### ')) {\n            blocks.push({ type: 'heading_3', heading_3: { rich_text: parseRichText(line.slice(4)) } });\n        } else if (line.startsWith('- ')) {\n            if (!currentList) {\n                currentList = { type: 'bulleted_list_item', bulleted_list_item: { rich_text: parseRichText(line.slice(2)) } };\n                blocks.push(currentList);\n            } else {\n                blocks.push({ type: 'bulleted_list_item', bulleted_list_item: { rich_text: parseRichText(line.slice(2)) } });\n            }\n        } else if (line.startsWith('> ')) {\n            blocks.push({ type: 'quote', quote: { rich_text: parseRichText(line.slice(2)) } });\n        } else if (line.startsWith('```')) {\n            const codeLines = [];\n            while (lines.length && !lines[0].startsWith('```')) {\n                codeLines.push(lines.shift());\n            }\n            blocks.push({ type: 'code', code: { rich_text: [{ text: { content: codeLines.join('\\n') } }] } });\n        } else if (line.trim()) {\n            blocks.push({ type: 'paragraph', paragraph: { rich_text: parseRichText(line) } });\n        }\n    }\n    \n    return blocks;\n}\n\n\nreturn { \"blocks\" : markdownToNotionBlocks($json.md)};"
            },
            "typeVersion": 2
        },
        {
            "id": "1af23a39-132a-45c5-8e71-090d0c4cf7df",
            "name": "Add blocks as Children",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                1340,
                340
            ],
            "parameters": {
                "url": "=https:\/\/api.notion.com\/v1\/blocks\/{{ $('Notion Trigger').first().json.id }}\/children",
                "method": "PATCH",
                "options": [],
                "jsonBody": "={\n  \"children\": {{ $json.blocks.toJsonString() }}\n} ",
                "sendBody": true,
                "specifyBody": "json",
                "authentication": "predefinedCredentialType",
                "nodeCredentialType": "notionApi"
            },
            "credentials": {
                "notionApi": {
                    "id": "C26NOhx95lnHIdzV",
                    "name": "Notion account"
                }
            },
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "89883f62-11f6-49ff-bbcf-f9e45399e73e",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                280,
                100
            ],
            "parameters": {
                "width": 640,
                "height": 300,
                "content": "## Either use the official Notion getAll: Blocks node\nThis removes formatting like bold and links. "
            },
            "typeVersion": 1
        },
        {
            "id": "c3c10d91-1380-4525-a1d7-0fc9c8218f2b",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                280,
                440
            ],
            "parameters": {
                "width": 640,
                "height": 260,
                "content": "## ... or get block rich text data\nwith custom HTTP request."
            },
            "typeVersion": 1
        },
        {
            "id": "7be73933-e515-4273-adeb-59832313bbf3",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -180,
                220
            ],
            "parameters": {
                "width": 340,
                "height": 340,
                "content": "## Configure a notion connection."
            },
            "typeVersion": 1
        },
        {
            "id": "55e20cdd-d567-4f67-96bf-15db71a92060",
            "name": "Sticky Note3",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1040,
                200
            ],
            "parameters": {
                "height": 320,
                "content": "## This will triple the content by way of demo."
            },
            "typeVersion": 1
        },
        {
            "id": "bc62cd3b-cc4b-4e4d-b617-e4012494a03b",
            "name": "Get Child blocks",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                340,
                540
            ],
            "parameters": {
                "url": "=https:\/\/api.notion.com\/v1\/blocks\/{{ $json.id }}\/children",
                "options": [],
                "authentication": "predefinedCredentialType",
                "nodeCredentialType": "notionApi"
            },
            "credentials": {
                "notionApi": {
                    "id": "C26NOhx95lnHIdzV",
                    "name": "Notion account"
                }
            },
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        }
    ],
    "pinData": [],
    "connections": {
        "Notion": {
            "main": [
                [
                    {
                        "node": "Notion Node Blocks to Md",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Split Out": {
            "main": [
                [
                    {
                        "node": "Full Notion Blocks to Md",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Notion Trigger": {
            "main": [
                [
                    {
                        "node": "Notion",
                        "type": "main",
                        "index": 0
                    },
                    {
                        "node": "Get Child blocks",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get Child blocks": {
            "main": [
                [
                    {
                        "node": "Split Out",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Md to Notion Blocks v3": {
            "main": [
                [
                    {
                        "node": "Add blocks as Children",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Full Notion Blocks to Md": {
            "main": [
                [
                    {
                        "node": "Md to Notion Blocks v3",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Notion Node Blocks to Md": {
            "main": [
                [
                    {
                        "node": "Md to Notion Blocks v3",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Manual Awssns Automate Triggered
View
Get information about a company with UpLead
View
HTTP Extractfromfile Process Webhook
View
Create Custom Presentations per Lead
View
🤓 Conversion Rate Optimizer
View
Add new incoming emails to a Google Sheets spreadsheet as a new row.
View
ICP Company Scoring
View
Extract text from PDF and image using Vertex AI (Gemini) into CSV
View
General 3D Presentation
View
Mattermost Pagerduty Automate Webhook
View