{
  "name": "Send YouTube transcripts to Slack using AssemblyAI",
  "nodes": [
    {
      "id": "c6d7dbd1-2738-420b-b4d1-fe7801fa7372",
      "name": "Check Video Duration",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -192,
        -1696
      ]
    },
    {
      "id": "21b30c06-f013-4c90-8983-67990576d573",
      "name": "Receive Slack command",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -816,
        -1520
      ]
    },
    {
      "id": "13a3fbe3-f572-4b8c-8503-8e6dd6cfc968",
      "name": "Normalize Slack payload",
      "type": "n8n-nodes-base.set",
      "position": [
        -592,
        -1520
      ]
    },
    {
      "id": "48ecd1bb-6b1d-4aff-806c-4c56b8048d40",
      "name": "Wait for transcription processing",
      "type": "n8n-nodes-base.wait",
      "position": [
        656,
        -1520
      ]
    },
    {
      "id": "b04a49e5-b9e0-440d-a1c3-187bfefacae6",
      "name": "Is transcription complete?",
      "type": "n8n-nodes-base.if",
      "position": [
        1248,
        -1520
      ]
    },
    {
      "id": "dbe41b46-438d-4898-9bd1-73ff6942f756",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -2640
      ],
      "parameters": {
        "width": 774,
        "height": 592,
        "content": "## How it works\n\nThis workflow lets users submit a YouTube link from Slack and receive the processed result directly in the same Slack channel.\n\nWhen a user triggers the Slack command, the workflow ex"
      }
    },
    {
      "id": "b3b7f7cd-22db-42dd-b231-f2e4df87907f",
      "name": "Extract YouTube video ID",
      "type": "n8n-nodes-base.code",
      "position": [
        -368,
        -1696
      ]
    },
    {
      "id": "44f54553-b267-40ae-9daf-0c25ac019abb",
      "name": "Parse and validate video duration",
      "type": "n8n-nodes-base.code",
      "position": [
        16,
        -1696
      ]
    },
    {
      "id": "93e43fda-6847-4856-9670-a37c895dea2c",
      "name": "Is video longer than limit?",
      "type": "n8n-nodes-base.if",
      "position": [
        224,
        -1696
      ]
    },
    {
      "id": "e82d0b5b-4ab9-4473-9774-76b912fb85cd",
      "name": "Send duration error to Slack",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        448,
        -1840
      ]
    },
    {
      "id": "79dec261-0783-4c88-9b28-90bae3349381",
      "name": "Convert YouTube video to MP3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        0,
        -1392
      ]
    },
    {
      "id": "c4b7332e-dc11-43bc-b712-831efdf7b421",
      "name": " Create transcription job",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        240,
        -1392
      ]
    },
    {
      "id": "6e16539f-2dfb-4ca3-a20a-b892408de5a5",
      "name": "Submit audio for transcription",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        464,
        -1568
      ]
    },
    {
      "id": "146bb207-4b24-470c-9a74-2f1ad6bf42aa",
      "name": " Check transcription status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        864,
        -1520
      ]
    },
    {
      "id": "d4d851ba-0d13-4f07-b8d2-b6e6f8fdcc14",
      "name": "Extract transcript text",
      "type": "n8n-nodes-base.code",
      "position": [
        1072,
        -1520
      ]
    },
    {
      "id": "9aff81af-fc3e-4d4e-bd9f-bb3a4cb96015",
      "name": "Generate AI summary",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1456,
        -1536
      ]
    },
    {
      "id": "cd448f13-f252-4b9c-83f4-0d2ca9f825d8",
      "name": "Post result to Slack",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1744,
        -1536
      ]
    },
    {
      "id": "05ecbcb1-6917-47f3-b63d-65231f209878",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -816,
        -1664
      ],
      "parameters": {
        "width": null,
        "height": 96,
        "content": "Receives the Slack command and normalizes the incoming payload."
      }
    },
    {
      "id": "acfccd91-a264-4bf1-a2a3-be1cdd44d805",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        -1856
      ],
      "parameters": {
        "width": null,
        "height": 112,
        "content": "Extracts the YouTube video ID and validates video duration before processing."
      }
    },
    {
      "id": "1b4308b6-8bd5-4569-8e58-eb02e5d0accf",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        -1200
      ],
      "parameters": {
        "width": null,
        "height": 96,
        "content": "Converts the video to audio and starts the transcription job."
      }
    },
    {
      "id": "6891f2bb-8fb0-48ae-8817-97f15037e412",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        -1680
      ],
      "parameters": {
        "width": null,
        "height": 112,
        "content": "Waits for transcription completion and retrieves the final transcript."
      }
    },
    {
      "id": "6db11ea7-d303-4f30-b976-9faa2e4e4d16",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1744,
        -1664
      ],
      "parameters": {
        "width": null,
        "height": 96,
        "content": "Formats the result and sends it back to Slack."
      }
    }
  ],
  "connections": {
    "Generate AI summary": {
      "main": [
        [
          {
            "node": "Post result to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Video Duration": {
      "main": [
        [
          {
            "node": "Parse and validate video duration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Slack command": {
      "main": [
        [
          {
            "node": "Normalize Slack payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract transcript text": {
      "main": [
        [
          {
            "node": "Is transcription complete?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize Slack payload": {
      "main": [
        [
          {
            "node": "Extract YouTube video ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract YouTube video ID": {
      "main": [
        [
          {
            "node": "Check Video Duration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    " Create transcription job": {
      "main": [
        [
          {
            "node": "Submit audio for transcription",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is transcription complete?": {
      "main": [
        [
          {
            "node": "Generate AI summary",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait for transcription processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    " Check transcription status": {
      "main": [
        [
          {
            "node": "Extract transcript text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is video longer than limit?": {
      "main": [
        [
          {
            "node": "Send duration error to Slack",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Convert YouTube video to MP3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert YouTube video to MP3": {
      "main": [
        [
          {
            "node": " Create transcription job",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Submit audio for transcription": {
      "main": [
        [
          {
            "node": "Wait for transcription processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse and validate video duration": {
      "main": [
        [
          {
            "node": "Is video longer than limit?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for transcription processing": {
      "main": [
        [
          {
            "node": " Check transcription status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}