{
  "name": "Generate multi-variation FX concept clips with Seedance AI, Google Drive, Notion and Slack",
  "nodes": [
    {
      "id": "df3f58e6-94c5-4487-ada2-f6793d8f551e",
      "name": "Webhook: FX Brief Input",
      "type": "n8n-nodes-base.webhook",
      "position": [
        704,
        736
      ]
    },
    {
      "id": "cc52ded5-7db3-439c-a5ae-b55a2b305046",
      "name": "Validate & Extract FX Brief",
      "type": "n8n-nodes-base.code",
      "position": [
        944,
        736
      ]
    },
    {
      "id": "d3ce9ef8-1deb-4b6a-9321-4854fc917d11",
      "name": "Fan-Out: 4 FX Variations",
      "type": "n8n-nodes-base.code",
      "position": [
        1184,
        736
      ]
    },
    {
      "id": "5b9b50a6-6d9d-43cf-829a-9c0c622ffa29",
      "name": "Build FX Request Body",
      "type": "n8n-nodes-base.code",
      "position": [
        1424,
        736
      ]
    },
    {
      "id": "526e7f8e-ee47-4513-8b73-4b180a0d473f",
      "name": "Seedance: Generate FX Clip",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1664,
        736
      ]
    },
    {
      "id": "651e5bd0-148f-49dc-aa95-d34b871ddd01",
      "name": "Merge FX Job ID + Metadata",
      "type": "n8n-nodes-base.code",
      "position": [
        1904,
        736
      ]
    },
    {
      "id": "7ed4a3e7-0b0b-4bf4-8c0a-cea3e520648d",
      "name": "Poll: Check FX Job Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2144,
        736
      ]
    },
    {
      "id": "fdfdeb3c-788d-43bb-96fc-669bc9e4ccb3",
      "name": "Wait 20s",
      "type": "n8n-nodes-base.wait",
      "position": [
        2736,
        976
      ]
    },
    {
      "id": "d6385580-2067-4307-880d-09070dd2e84b",
      "name": "FX Render Complete?",
      "type": "n8n-nodes-base.if",
      "position": [
        2384,
        736
      ]
    },
    {
      "id": "68def3f2-c9c0-4555-821d-8747f92aa260",
      "name": "Build FX Asset Metadata",
      "type": "n8n-nodes-base.code",
      "position": [
        2640,
        720
      ]
    },
    {
      "id": "98b4afc4-d628-45e6-8e97-e07e1a038bc0",
      "name": "Download FX Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3104,
        720
      ]
    },
    {
      "id": "0dfa6038-3cea-488f-97a4-92ee2ef8c7c6",
      "name": "Google Drive: Upload FX Clip",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        3376,
        720
      ]
    },
    {
      "id": "2a3412bc-b9ab-49f1-a319-f1acd93993e5",
      "name": "Notion: Save FX Asset Record",
      "type": "n8n-nodes-base.notion",
      "position": [
        3232,
        496
      ]
    },
    {
      "id": "57ec581f-1d7b-42b1-9ad2-ac58ba3ad876",
      "name": "Aggregate All FX Variations",
      "type": "n8n-nodes-base.code",
      "position": [
        3648,
        496
      ]
    },
    {
      "id": "1b11118c-a91b-42b2-86e6-e14b4802809f",
      "name": "Slack: Notify FX Team",
      "type": "n8n-nodes-base.slack",
      "position": [
        3888,
        496
      ]
    },
    {
      "id": "c1a11620-5ef9-472a-8b4b-5eff17484ad5",
      "name": "On Workflow Error",
      "type": "n8n-nodes-base.errorTrigger",
      "position": [
        720,
        1184
      ]
    },
    {
      "id": "475ee660-25a5-4562-a678-96f25ea0bd0c",
      "name": "Slack: Error Alert",
      "type": "n8n-nodes-base.slack",
      "position": [
        976,
        1184
      ]
    },
    {
      "id": "82742c1d-8b14-4a51-adaf-5eb0c7553597",
      "name": "Sticky: Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        -16
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    },
    {
      "id": "5aa697d1-591e-4c26-9a56-2fed17b205ea",
      "name": "Sticky: Trigger & Validation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        448
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    },
    {
      "id": "adeae621-baff-421f-b9e0-b99080339424",
      "name": "Sticky: Prompt Fan-Out & Generation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        464
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    },
    {
      "id": "01a63c05-a0a1-468e-bd3a-90f1be082abf",
      "name": "Sticky: Polling & Render Wait",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1872,
        352
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    },
    {
      "id": "4e630637-64f6-4bf0-a5ba-fc8da2641ca9",
      "name": "Sticky: Asset Storage & Logging",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2880,
        288
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    },
    {
      "id": "65dc529a-6430-4d43-974f-3c33cd1ffb1a",
      "name": "Sticky: Review Notification",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3584,
        288
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    },
    {
      "id": "2a4c4b5f-29d3-4a7d-91f6-0cbf1266e7bc",
      "name": "Sticky: Credentials & Security",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3952,
        832
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    },
    {
      "id": "48a06b26-af0a-4f0c-998f-04fe08b0384e",
      "name": "Section: Error Handler",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        1040
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": ""
      }
    }
  ],
  "connections": {
    "Wait 20s": {
      "main": [
        [
          {
            "node": "Poll: Check FX Job Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download FX Video": {
      "main": [
        [
          {
            "node": "Google Drive: Upload FX Clip",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On Workflow Error": {
      "main": [
        [
          {
            "node": "Slack: Error Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FX Render Complete?": {
      "main": [
        [
          {
            "node": "Build FX Asset Metadata",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 20s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build FX Request Body": {
      "main": [
        [
          {
            "node": "Seedance: Generate FX Clip",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build FX Asset Metadata": {
      "main": [
        [
          {
            "node": "Notion: Save FX Asset Record",
            "type": "main",
            "index": 0
          },
          {
            "node": "Download FX Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook: FX Brief Input": {
      "main": [
        [
          {
            "node": "Validate & Extract FX Brief",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fan-Out: 4 FX Variations": {
      "main": [
        [
          {
            "node": "Build FX Request Body",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Poll: Check FX Job Status": {
      "main": [
        [
          {
            "node": "FX Render Complete?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge FX Job ID + Metadata": {
      "main": [
        [
          {
            "node": "Poll: Check FX Job Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Seedance: Generate FX Clip": {
      "main": [
        [
          {
            "node": "Merge FX Job ID + Metadata",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate All FX Variations": {
      "main": [
        [
          {
            "node": "Slack: Notify FX Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate & Extract FX Brief": {
      "main": [
        [
          {
            "node": "Fan-Out: 4 FX Variations",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive: Upload FX Clip": {
      "main": [
        [
          {
            "node": "Aggregate All FX Variations",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notion: Save FX Asset Record": {
      "main": [
        [
          {
            "node": "Aggregate All FX Variations",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}