Workflow: HTTP Stickynote Automation

Workflow Details

Download Workflow
{
    "id": "GToc9QTzJY1h1w3y",
    "meta": {
        "instanceId": "cba4a4a2eb5d7683330e2944837278938831ed3c042e20da6f5049c07ad14798",
        "templateCredsSetupCompleted": true
    },
    "name": "AI-Powered Research with Jina AI Deep Search",
    "tags": [],
    "nodes": [
        {
            "id": "c76a7993-e7b1-426e-bcb4-9a18d9c72b83",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -820,
                -140
            ],
            "parameters": {
                "color": 6,
                "width": 740,
                "height": 760,
                "content": "\n# **\ud83d\ude80 Developed by Leonard van Hemert**  \n\nThank you for using **FREE: Open Deep Research 2.0**! \ud83c\udf89  \n\nThis workflow was created to **democratize AI-powered research** and make advanced **automated knowledge discovery** available to **everyone**, without **API restrictions** or **cost barriers**.  \n\nIf you find this useful, feel free to **connect with me on LinkedIn** and stay updated on my latest AI & automation projects!  \n\n\ud83d\udd17 **Follow me on LinkedIn**: [Leonard van Hemert](https:\/\/www.linkedin.com\/in\/leonard-van-hemert\/)  \n\nI truly appreciate the support from the **n8n community**, and I can\u2019t wait to see how you use and improve this workflow! \ud83d\ude80  \n\nHappy researching,  \n**Leonard van Hemert** \ud83d\udca1"
            },
            "typeVersion": 1
        },
        {
            "id": "5620b6b5-1485-43a8-9acd-3368147bd742",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -60,
                -140
            ],
            "parameters": {
                "width": 740,
                "height": 300,
                "content": "## \ud83d\ude80 **FREE: Open Deep Research 2.0**  \nFully automated **AI-powered research workflow** using **Jina AI\u2019s DeepSearch** to generate structured, fact-based reports\u2014**no API key required!**  "
            },
            "typeVersion": 1
        },
        {
            "id": "dbe1cc91-34b4-4e5b-b404-dd86f47d1ebf",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -60,
                180
            ],
            "parameters": {
                "width": 740,
                "height": 440,
                "content": "## \ud83e\udde0 **How This Workflow Works**  \n\nThis workflow automates **deep research and report generation** using **Jina AI's DeepSearch API**, making **advanced knowledge discovery accessible for free**.  \n\n1\ufe0f\u20e3 **User Input \u2192 AI Research**  \n- A user **enters a research query** via chat.  \n- The workflow **sends the query** to **Jina AI\u2019s DeepSearch API** for **in-depth analysis**.  \n\n2\ufe0f\u20e3 **AI-Powered Insights**  \n- DeepSearch **retrieves** and **analyzes** relevant information.  \n- The response includes **key insights, structured analysis, and sources**.  \n\n3\ufe0f\u20e3 **Markdown Formatting & Cleanup**  \n- The response **passes through a Code Node** that extracts, cleans, and **formats** the AI-generated insights into **readable Markdown output**.  \n- URLs are properly formatted, footnotes are structured, and the report is easy to read.  \n\n4\ufe0f\u20e3 **Final Output**  \n- The final, **well-structured research report** is ready for use, **fully automated and free of charge!**  "
            },
            "typeVersion": 1
        },
        {
            "id": "42fd2f04-7d83-44c9-a41b-48860efbcf79",
            "name": "Jina AI DeepSearch Request",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                220,
                0
            ],
            "parameters": {
                "url": "https:\/\/deepsearch.jina.ai\/v1\/chat\/completions",
                "method": "POST",
                "options": [],
                "jsonBody": "={\n  \"model\": \"jina-deepsearch-v1\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"You are an advanced AI researcher that provides precise, well-structured, and insightful reports based on deep analysis. Your responses are factual, concise, and highly relevant.\"\n    },\n    {\n      \"role\": \"assistant\",\n      \"content\": \"Hi, how can I help you?\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"Provide a deep and insightful analysis on: \\\"{{ $json.chatInput }}\\\". Ensure the response is well-structured, fact-based, and directly relevant to the topic, with no unnecessary information.\"\n    }\n  ],\n  \"stream\": true,\n  \"reasoning_effort\": \"low\"\n}",
                "sendBody": true,
                "specifyBody": "json"
            },
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "1b7b3bbe-2068-4d3a-a962-134bbb6ee516",
            "name": "User Research Query Input",
            "type": "@n8n\/n8n-nodes-langchain.chatTrigger",
            "position": [
                0,
                0
            ],
            "webhookId": "8a4b05af-cd63-4692-9924-e35aaed5f077",
            "parameters": {
                "options": []
            },
            "typeVersion": 1.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "218cbfe2-78de-4b00-875a-51761ac9f5c7",
            "name": "Format & Clean AI Response",
            "type": "n8n-nodes-base.code",
            "position": [
                440,
                0
            ],
            "parameters": {
                "jsCode": "function extractAndFormatMarkdown(input) {\n    let extractedContent = [];\n\n    \/\/ Extract raw data string from n8n input\n    let rawData = input.first().json.data;\n\n    \/\/ Split into individual JSON strings\n    let jsonStrings = rawData.split(\"\\n\\ndata: \").map(s => s.replace(\/^data: \/, ''));\n\n    let lastContent = \"\";\n    \n    \/\/ Reverse loop to find the last \"content\" field\n    for (let i = jsonStrings.length - 1; i >= 0; i--) {\n        try {\n            let parsedChunk = JSON.parse(jsonStrings[i]);\n\n            if (parsedChunk.choices && parsedChunk.choices.length > 0) {\n                for (let j = parsedChunk.choices.length - 1; j >= 0; j--) {\n                    let choice = parsedChunk.choices[j];\n\n                    if (choice.delta && choice.delta.content) {\n                        lastContent = choice.delta.content.trim();\n                        break;\n                    }\n                }\n            }\n\n            if (lastContent) break; \/\/ Stop once the last content is found\n        } catch (error) {\n            console.error(\"Failed to parse JSON string:\", jsonStrings[i], error);\n        }\n    }\n\n    \/\/ Clean and format Markdown\n    lastContent = lastContent.replace(\/\\[\\^(\\d+)\\]: (.*?)\\n\/g, \"[$1]: $2\\n\");  \/\/ Format footnotes\n    lastContent = lastContent.replace(\/\\[\\^(\\d+)\\]\/g, \"[^$1]\");  \/\/ Inline footnotes\n    lastContent = lastContent.replace(\/(https?:\\\/\\\/[^\\s]+)(?=[^]]*\\])\/g, \"<$1>\");  \/\/ Format links\n\n    \/\/ Return formatted content as an array of objects (n8n expects this format)\n    return [{ text: lastContent.trim() }];\n}\n\n\/\/ Execute function and return formatted output\nreturn extractAndFormatMarkdown($input);\n"
            },
            "typeVersion": 2
        }
    ],
    "active": false,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "e03d69b5-3304-4f28-b99f-970d6fd1225b",
    "connections": {
        "User Research Query Input": {
            "main": [
                [
                    {
                        "node": "Jina AI DeepSearch Request",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Format & Clean AI Response": {
            "main": [
                []
            ]
        },
        "Jina AI DeepSearch Request": {
            "main": [
                [
                    {
                        "node": "Format & Clean AI Response",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

. Add Beehiiv newsletter subscribers from Gumroad sales
View
Restore your workflows from GitHub
View
Manual Openai Automation Triggered
View
Manual N8Ntrainingcustomerdatastore Automate Triggered
View
Forward Filtered Gmail Notifications to Telegram Chat
View
Splitout Filter Automation Webhook
View
Wait Code Send Scheduled
View
Noop GoogleSheets Create Webhook
View
Bannerbear Discord Automation Webhook
View
Splitout Code Create Webhook
View