{
  "name": "Automate video uploads to thumbnails with FFmpeg and Google Drive",
  "nodes": [
    {
      "id": "0f0dc32f-cadc-4001-9ded-4049186ed556",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -570,
        -180
      ],
      "parameters": {
        "width": 1600,
        "height": 340,
        "content": "## Video Upload → Auto-Thumbnail → Google Drive\n\n### **What it does (high level)**\nAccepts a video via HTTP upload, validates it’s a real video file, extracts a thumbnail at the 5-second mark using FF"
      }
    },
    {
      "id": "9e6b7fcd-2c7a-4762-8dd7-efa102ad9599",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        180
      ],
      "parameters": {
        "width": 1580,
        "height": 660,
        "content": "# **Node Breakdown & Descriptions:**\n\n### \\* The workflow starts with a **Webhook** node named **“Accept Video Upload”**, which activates on an HTTP **POST** to `/mediaUpload`. It expects `multipart/f"
      }
    },
    {
      "id": "eb68ca4d-93d6-4535-a009-be7a129e18f3",
      "name": "Accept Video Upload (Webhook)",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -480,
        0
      ]
    },
    {
      "id": "22cf7a78-1f4b-4dac-83b6-718476d74c11",
      "name": "Validate Upload is Video (IF)",
      "type": "n8n-nodes-base.if",
      "position": [
        -260,
        0
      ]
    },
    {
      "id": "9bc950c0-4ffd-4c86-9345-7aa2bb682625",
      "name": "Persist Upload to /tmp (Write Binary File)",
      "type": "n8n-nodes-base.writeBinaryFile",
      "position": [
        -40,
        0
      ]
    },
    {
      "id": "b8ecc2ac-ddca-42cb-a735-ec3e79e02f1c",
      "name": "Extract Thumbnail with FFmpeg (Auto-Install) (Execute Command)",
      "type": "n8n-nodes-base.executeCommand",
      "position": [
        180,
        0
      ]
    },
    {
      "id": "736a61c2-bfeb-4821-8ca2-a0e54ddfb04d",
      "name": "Load Thumbnail from Disk (Read Binary File)",
      "type": "n8n-nodes-base.readBinaryFile",
      "position": [
        400,
        0
      ]
    },
    {
      "id": "8b2760d0-22f8-4291-9663-71f01e3c397b",
      "name": "Upload Thumbnail to Drive (Google Drive)",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        620,
        0
      ]
    },
    {
      "id": "418127d5-2902-472c-b4dc-5f9628c7c6b7",
      "name": "Return API Response (Respond to Webhook)",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        840,
        0
      ]
    }
  ],
  "connections": {
    "Accept Video Upload (Webhook)": {
      "main": [
        [
          {
            "node": "Validate Upload is Video (IF)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Upload is Video (IF)": {
      "main": [
        [
          {
            "node": "Persist Upload to /tmp (Write Binary File)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Thumbnail to Drive (Google Drive)": {
      "main": [
        [
          {
            "node": "Return API Response (Respond to Webhook)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Persist Upload to /tmp (Write Binary File)": {
      "main": [
        [
          {
            "node": "Extract Thumbnail with FFmpeg (Auto-Install) (Execute Command)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load Thumbnail from Disk (Read Binary File)": {
      "main": [
        [
          {
            "node": "Upload Thumbnail to Drive (Google Drive)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Thumbnail with FFmpeg (Auto-Install) (Execute Command)": {
      "main": [
        [
          {
            "node": "Load Thumbnail from Disk (Read Binary File)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}