{
  "name": "Riset Berbasis AI dengan Jina AI Deep Search",
  "nodes": [
    {
      "parameters": {
        "content": "## \ud83d\ude80 **Free: Open Deep Research 2.0**\n**Alur kerja riset bertenaga AI** yang sepenuhnya otomatis menggunakan **DeepSearch dari Jina AI** untuk menghasilkan laporan terstruktur dan berbasis fakta\u2014**Butuh kunci API!**",
        "height": 348,
        "width": 740,
        "color": 3
      },
      "id": "5620b6b5-1485-43a8-9acd-3368147bd742",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        192
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "### \ud83e\udde0 **Cara Kerja Alur Kerja Ini**\n\nAlur kerja ini mengotomatiskan **riset mendalam dan pembuatan laporan** menggunakan **API DeepSearch Jina AI**, sehingga **penemuan pengetahuan tingkat lanjut dapat diakses secara gratis**.\n\n1\ufe0f\u20e3 **Masukan Pengguna \u2192 Riset AI**\n- Pengguna **memasukkan kueri riset** melalui obrolan.\n- Alur kerja **mengirimkan kueri** ke **API DeepSearch Jina AI** untuk **analisis mendalam**.\n\n2\ufe0f\u20e3 **Wawasan Bertenaga AI**\n- DeepSearch **mengambil** dan **menganalisis** informasi yang relevan.\n- Responsnya mencakup **wawasan utama, analisis terstruktur, dan sumber**.\n\n3\ufe0f\u20e3 **Pemformatan & Pembersihan Markdown**\n- Respons **melewati Node Kode** yang mengekstrak, membersihkan, dan **memformat** wawasan yang dihasilkan AI menjadi **keluaran Markdown yang dapat dibaca**.\n- URL diformat dengan benar, catatan kaki terstruktur, dan laporan mudah dibaca.\n\n4\ufe0f\u20e3 **Hasil Akhir**\n- Laporan penelitian akhir yang **terstruktur dengan baik** siap digunakan, **sepenuhnya otomatis dan gratis! Need API Key!!!**",
        "height": 456,
        "width": 740
      },
      "id": "dbe1cc91-34b4-4e5b-b404-dd86f47d1ebf",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        560
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://deepsearch.jina.ai/v1/chat/completions",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "jinaAiApi",
        "sendBody": true,
        "specifyBody": "json",
        "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}",
        "options": {}
      },
      "id": "42fd2f04-7d83-44c9-a41b-48860efbcf79",
      "name": "Jina AI DeepSearch Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1424,
        336
      ],
      "typeVersion": 4.2,
      "credentials": {
        "jinaAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "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"
      },
      "id": "218cbfe2-78de-4b00-875a-51761ac9f5c7",
      "name": "Format & Clean AI Response",
      "type": "n8n-nodes-base.code",
      "position": [
        1648,
        336
      ],
      "typeVersion": 2
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "1b7b3bbe-2068-4d3a-a962-134bbb6ee516",
      "name": "User Research Query Input",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        1216,
        336
      ],
      "typeVersion": 1.1
    }
  ],
  "connections": {
    "Format & Clean AI Response": {
      "main": [
        []
      ]
    },
    "Jina AI DeepSearch Request": {
      "main": [
        [
          {
            "node": "Format & Clean AI Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "User Research Query Input": {
      "main": [
        [
          {
            "node": "Jina AI DeepSearch Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "52561937-6e8d-47b6-8124-6105279afbba",
  "meta": {
    "templateId": "3068",
    "templateCredsSetupCompleted": true
  },
  "id": "6mtB4RXbZPamVhvP",
  "tags": []
}