{
  "nodes": [
    {
      "id": "608b8d6d-3abc-4a53-aa81-5b6b13d9a874",
      "name": "Get Analysis",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        736,
        304
      ],
      "parameters": {
        "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"contents\": [\n    {\n      \"role\": \"user\",\n      \"parts\": [\n        {\n          \"fileData\": {\n            \"fileUri\": \"{{ $json.file.uri }}\",\n            \"mimeType\": \"{{ $json.file.mimeType }}\"\n          }\n        },\n        {\n          \"text\": \"Describe what's going on in the video in great detail. Describe the entire video.\"\n        }\n      ]\n    }\n  ]\n}\n",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "cfeadae7-65d6-4b79-823e-8db5024fac25",
      "name": "Upload File ",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        960,
        64
      ],
      "parameters": {
        "url": "https://generativelanguage.googleapis.com/upload/v1beta/files",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "binaryData",
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Goog-Upload-Command",
              "value": "start, upload, finalize"
            },
            {
              "name": "X-Goog-Upload-Header-Content-Length",
              "value": "={{ $binary.Video.fileSize }}"
            },
            {
              "name": "X-Goog-Upload-Header-Content-Type",
              "value": "={{ $binary.Video.fileType }}/{{ $binary.Video.fileExtension }}"
            },
            {
              "name": "Content-Type",
              "value": "={{ $binary.Video.fileType }}/{{ $binary.Video.fileExtension }}"
            }
          ]
        },
        "inputDataFieldName": "Video"
      },
      "typeVersion": 4.2
    },
    {
      "id": "89df5f59-2806-42dd-aa6e-7d5e1d6a0f07",
      "name": "5 seconds",
      "type": "n8n-nodes-base.wait",
      "position": [
        976,
        304
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "5150add7-edf5-49ca-92f9-385efcf8184b",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        720,
        64
      ],
      "parameters": {
        "options": {},
        "formTitle": "Insert Video",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "Video",
              "multipleFiles": false,
              "requiredField": true
            }
          ]
        },
        "formDescription": "Drop in a video for analysis."
      },
      "typeVersion": 2.2
    },
    {
      "id": "2e6a1e17-a406-485f-b5d6-2f1bbee090af",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        672,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 220,
        "height": 220,
        "content": "## Form Trigger\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b8fc011e-f9da-4729-a88e-b1dcd4745a0b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        912,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 220,
        "height": 220,
        "content": "## Upload File\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ccba1069-f0fd-48e5-ab15-467142b72d02",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        240
      ],
      "parameters": {
        "color": 5,
        "width": 220,
        "height": 220,
        "content": "## Get Analysis\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "526c98ac-9783-4abd-aa31-ee9a14fe32a4",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        1200,
        64
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "4996040a-b998-4eef-8a5a-3c4c316ed546",
      "name": "Video Analysis",
      "type": "n8n-nodes-base.set",
      "position": [
        1200,
        304
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "268682ab-62a0-4e6f-aea0-652b30325f70",
              "name": "Video Analysis",
              "type": "string",
              "value": "={{ $json.candidates[0].content.parts[0].text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8d6f60d5-6063-41e3-b0b8-b5cc0076b313",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        240
      ],
      "parameters": {
        "color": 5,
        "width": 220,
        "height": 220,
        "content": "## Result\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "15f412e3-5958-4d8d-abab-7c7da62382fd",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "disabled": true,
      "position": [
        736,
        608
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "0cb0b756-1657-4c32-b9e0-63580319fe0a",
      "name": "YouTube Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        960,
        608
      ],
      "parameters": {
        "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"contents\": [\n    {\n      \"parts\": [\n        {\n          \"text\": \"Please summarize the video in 3 sentences.\"\n        },\n        {\n          \"file_data\": {\n            \"file_uri\": \"https://youtu.be/gwCQF--cARA?si=uCbaUnoRlEjHO50a\"\n          }\n        }\n      ]\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "ffa376e6-4c1b-400e-8ead-98e7e5a6f8d2",
      "name": "Get Results",
      "type": "n8n-nodes-base.set",
      "position": [
        1168,
        608
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2103b25e-fbee-4d71-9224-280f1c2383da",
              "name": "text",
              "type": "string",
              "value": "={{ $json.candidates[0].content.parts[0].text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b838e099-4651-4561-92e1-36b856a50f06",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        672,
        528
      ],
      "parameters": {
        "color": 2,
        "width": 688,
        "height": 260,
        "content": "# YouTube Vision\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7ae7e8a0-69ee-48a1-81a4-ef53af8805cb",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 640,
        "height": 800,
        "content": "# \ud83d\udee0\ufe0f Setup Guide  \n*Author: [Lee Wei]*\n\n### \u2705 Step 1: Get Your Free API Key  \nGo to [**Google**](https://ai.google.dev/) and sign up to get your **free API key**.\n\nCreate your query authorization credential using that API key in the **HTTP Request** nodes that require a Google credential.\n\n\n### \ud83c\udfac Step 2: Drop in a Video  \nYou\u2019re basically all set! Now you can:\n- Upload a video using the **Form Trigger**, **OR**\n- Drop in a **YouTube URL** to have it analyzed.\n---\n\nThat\u2019s it \u2014 your video analysis agent is ready to go.\n"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Get Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5 seconds": {
      "main": [
        [
          {
            "node": "Get Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Analysis": {
      "main": [
        [
          {
            "node": "Video Analysis",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5 seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload File ": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "YouTube Video": {
      "main": [
        [
          {
            "node": "Get Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Upload File ",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "YouTube Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}