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

Get a volume and add it to your bookshelf
View
💻 Schedule workflow activity time
View
Splitout Code Create Scheduled
View
Colombian Invoices Processing
View
Post RSS feed items from yesterday to Slack
View
Webhook Filemaker Create Webhook
View
N8N Financial Tracker Telegram Invoices to Notion with AI Summaries & Reports
View
Telegram Stickynote Create Triggered
View
Generate Image Workflow
View
Splitout Code Create Webhook
View