{
  "name": "AI Agent - Search & Summarize",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "ai-agent",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "webhook-trigger",
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "jsCode": "const query = $input.first().json.body.query || $input.first().json.query || 'latest AI news';\nconst action = $input.first().json.body.action || $input.first().json.action || 'search_and_summarize';\n\nreturn [{ json: { query, action } }];"
      },
      "id": "parse-input",
      "name": "Parse Input",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        220,
        0
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": false
          },
          "conditions": [
            {
              "leftValue": "={{ $json.action }}",
              "rightValue": "search_and_summarize",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            }
          ]
        }
      },
      "id": "route-action",
      "name": "Route Action",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        440,
        0
      ]
    },
    {
      "parameters": {
        "url": "=https://www.google.com/search?q={{ encodeURIComponent($json.query) }}&num=5",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        }
      },
      "id": "web-search",
      "name": "Web Search",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        660,
        -100
      ],
      "notes": "Replace with SerpAPI or Brave Search API for production use"
    },
    {
      "parameters": {
        "jsCode": "const query = $('Parse Input').first().json.query;\nconst searchResults = $input.first().json.body || 'No search results available';\n\nconst prompt = `You are a helpful AI research assistant. Based on the following search results for the query \"${query}\", provide:\n\n1. A concise summary (3-5 sentences)\n2. Key findings (bullet points)\n3. Recommended next steps or related topics to explore\n\nSearch Results:\n${typeof searchResults === 'string' ? searchResults.substring(0, 3000) : JSON.stringify(searchResults).substring(0, 3000)}\n\nProvide a well-structured response.`;\n\nreturn [{ json: { prompt, query } }];"
      },
      "id": "build-agent-prompt",
      "name": "Build Agent Prompt",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        880,
        -100
      ]
    },
    {
      "parameters": {
        "resource": "chat",
        "model": "gpt-4",
        "messages": {
          "values": [
            {
              "content": "={{ $json.prompt }}"
            }
          ]
        },
        "options": {
          "maxTokens": 1500,
          "temperature": 0.4
        }
      },
      "id": "ai-agent-respond",
      "name": "AI Agent Respond",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1,
      "position": [
        1100,
        -100
      ],
      "notes": "Replace with local LLM HTTP Request node for offline use"
    },
    {
      "parameters": {
        "jsCode": "const aiResponse = $input.first().json.message?.content || $input.first().json.text || 'No response generated';\nconst query = $('Parse Input').first().json.query;\n\nreturn [{\n  json: {\n    status: 'success',\n    query: query,\n    response: aiResponse,\n    timestamp: new Date().toISOString(),\n    agent: 'n8n-ai-agent-v1'\n  }\n}];"
      },
      "id": "format-response",
      "name": "Format Response",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1320,
        -100
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "id": "send-response",
      "name": "Send Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        1540,
        -100
      ]
    },
    {
      "parameters": {
        "jsCode": "const query = $('Parse Input').first().json.query;\nreturn [{\n  json: {\n    status: 'success',\n    query: query,\n    response: `Direct answer for: ${query}. This path handles non-search queries like calculations, definitions, or simple Q&A.`,\n    timestamp: new Date().toISOString(),\n    agent: 'n8n-ai-agent-v1'\n  }\n}];"
      },
      "id": "direct-answer",
      "name": "Direct Answer",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        660,
        100
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "id": "send-direct-response",
      "name": "Send Direct Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        880,
        100
      ]
    }
  ],
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Parse Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Input": {
      "main": [
        [
          {
            "node": "Route Action",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route Action": {
      "main": [
        [
          {
            "node": "Web Search",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Direct Answer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Web Search": {
      "main": [
        [
          {
            "node": "Build Agent Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Agent Prompt": {
      "main": [
        [
          {
            "node": "AI Agent Respond",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent Respond": {
      "main": [
        [
          {
            "node": "Format Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Response": {
      "main": [
        [
          {
            "node": "Send Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Direct Answer": {
      "main": [
        [
          {
            "node": "Send Direct Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "tags": [
    {
      "name": "ai-agent"
    },
    {
      "name": "automation"
    },
    {
      "name": "webhook"
    }
  ]
}