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

Email
View
Get DNS entries
View
Manual Mailjet Automate Triggered
View
Attachments Gmail to drive and google sheets
View
Assign values to variables using the Set node
View
🔍🛠️Generate SEO-Optimized WordPress Content with Perplexity Research
View
Telegram Webhook Automation Webhook
View
New WooCommerce order to Slack
View
HTTP Extractfromfile Process Webhook
View
Build an OpenAI Assistant with Google Drive Integration
View