{
  "id": "8fuVkZJz7WDCfzBf",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Video Analysis Agent",
  "tags": [],
  "nodes": [
    {
      "id": "7c913788-7b16-4275-9d9e-192d4a0a4fa4",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        992,
        448
      ],
      "parameters": {
        "model": "deepseek/deepseek-r1-distill-llama-70b",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e4006991-464c-4d50-bbe9-03de8d2fea3a",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        1440,
        240
      ],
      "parameters": {},
      "typeVersion": 3.1
    },
    {
      "id": "3e1437d6-4d15-4977-8274-88a4fa99cf7d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        144,
        48
      ],
      "parameters": {
        "color": 5,
        "width": 524,
        "height": 580,
        "content": "### Transcribing\nThe workflow starts by accepting a YouTube link or uploaded video.  \nIt then sends the video to the transcription API to convert the audio into text.  \nThis transcript becomes the input for the AI analysis.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "dacfd15e-41cb-4306-853e-881724b09608",
      "name": "Transcription using Supadata.ai",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        512,
        240
      ],
      "parameters": {
        "url": "=https://api.supadata.ai/v1/youtube/transcript?url={{ $json.youtube_url }}/TLEz9eiSc5s?v=dQw4w9WgXcQ&text=true",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {}
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-api-key",
              "value": "<API Key>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "980b720d-2188-4745-917e-872548d176dc",
      "name": "Analyser",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        736,
        240
      ],
      "parameters": {
        "text": "=You are an expert video analyst AI. Your task is to analyze the provided video content or transcript: {{ $json.text }}{{ $json.content }} and generate a professional, structured, and detailed report. Do not use any markdown symbols, special characters, bullet points, or formatting styles like asterisks, hashes, or hyphens. The report should be clean, plain text, and clearly organized using labeled sections.\n\nThe report must include the following sections:\n\nExecutive Summary\nProvide a brief and concise overview of the video's main message or purpose. Summarize the core idea conveyed.\n\nKey Topics and Themes\nList and describe the main subjects or themes addressed in the video. Explain the context and relevance of each.\n\nImportant Insights\nHighlight critical points, facts, statistics, or conclusions drawn in the video. Mention any notable arguments, findings, or perspectives.\n\nContent Structure\nDescribe how the video is organized. Note the structure such as introduction, main segments, transitions, and conclusion. Include any recurring formats or styles used.\n\nTechnical Quality\nEvaluate the overall production quality of the video. Include observations on visual clarity, audio quality, background music, camera work, editing, pacing, and visual aids used.\n\nRecommendations\nProvide suggestions for improvement or actionable takeaways. Include guidance for content creators to enhance impact or for viewers to maximize value from the content.\n\nIf the video content or transcript is missing or unavailable, clearly indicate that an analysis cannot be performed due to lack of information.\n\nMaintain a professional, neutral, and objective tone throughout the report. Ensure the content is easy to read and informative for all audiences.\n\n",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 1.8
    },
    {
      "id": "fa8fecd6-400a-4ea6-b442-1fab38831b6e",
      "name": "File Name Detector",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        1072,
        240
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "options": {
          "systemPromptTemplate": "You are an expert extraction algorithm.\nOnly extract relevant information from the text.\nIf you do not know the value of an attribute asked to extract, you may omit the attribute's value."
        },
        "attributes": {
          "attributes": [
            {
              "name": "Title",
              "required": true,
              "description": "Document Title"
            }
          ]
        }
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "c12b64f7-2fb1-41db-b67f-61be8d3bc26e",
      "name": "Creating New File",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1888,
        240
      ],
      "parameters": {
        "title": "={{ $json.Title[0] }}",
        "folderId": "191GOMY_IVzDJtDeHc5j65MOUWpC623LD"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "42992016-bdab-482a-8812-c6e9eb30b090",
      "name": "Updating Content in File",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        2112,
        240
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $('Analyser').item.json.output }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $json.id }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "6fdbc4de-e634-46e9-8035-27cd022554d8",
      "name": "Upload File or YouTube Link",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        288,
        240
      ],
      "parameters": {
        "options": {},
        "formTitle": "Video Link",
        "formFields": {
          "values": [
            {
              "fieldLabel": "youtube_url",
              "placeholder": "Enter YouTube URL (optional)"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b944f1cf-fee2-49ae-82e9-67e0aa511a57",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1664,
        240
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "renameField": true,
              "outputFieldName": "Title",
              "fieldToAggregate": "output.Title"
            },
            {
              "renameField": true,
              "outputFieldName": "Summary",
              "fieldToAggregate": "output"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b6a8ba7b-b6a3-4e5f-bd53-e97d7aef7d45",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        48
      ],
      "parameters": {
        "color": 5,
        "width": 716,
        "height": 580,
        "content": "### Analyzing\nThe transcript is passed to an AI agent that acts as a video analyst.  \nIt reads the full transcript, extracts insights, and generates a structured analysis report along with key metadata like the title.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "54ecec92-8033-4e93-8c85-7ddc0c7730eb",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1424,
        48
      ],
      "parameters": {
        "color": 5,
        "width": 924,
        "height": 580,
        "content": "### Storing\nFinally, the workflow creates a Google Docs file using the extracted title.  \nThe generated analysis report is inserted into the document, allowing easy sharing, documentation, and future reference.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "440cdb11-7a50-40b0-9e0b-0fc91314848a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        48
      ],
      "parameters": {
        "width": 492,
        "height": 788,
        "content": "A compact n8n workflow that accepts a YouTube link or uploaded video, pulls a transcript via Supadata.ai, runs a language-model-based video analysis agent to produce a structured report, extracts a title/metadata, then creates and updates a Google Doc with the analysis. It's designed to automate transcription \u2192 analysis \u2192 document creation for fast, repeatable video reviews.\n\n---\n# How it works\n\n1. **Trigger \u2014 Upload File or YouTube Link**  \n2. **Transcription \u2014 Transcription using Supadata.ai**  \n3. **Analysis \u2014 Analyser**  \n4. **Metadata extraction \u2014 File Name Detector**  \n5. **Aggregation & Merge**  \n6. **Document Creation**  \n\n# Quick Setup Guide\n\ud83d\udc49 [Demo & Setup Video](https://drive.google.com/file/d/1g0rY7bbZrsFLnZjDfhXURR5WViywnYNw/view?usp=sharing)\n\ud83d\udc49 [Course](https://www.udemy.com/course/n8n-automation-mastery-build-ai-powered-enterprise-ready/?referralCode=2EAE71591D3BEB80F2CC)\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "205ddaf8-8d55-4256-92f2-87c971f2aa63",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyser": {
      "main": [
        [
          {
            "node": "File Name Detector",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Creating New File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Creating New File": {
      "main": [
        [
          {
            "node": "Updating Content in File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "File Name Detector": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Analyser",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "File Name Detector",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Upload File or YouTube Link": {
      "main": [
        [
          {
            "node": "Transcription using Supadata.ai",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcription using Supadata.ai": {
      "main": [
        [
          {
            "node": "Analyser",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}