{
  "name": "Transcribe YouTube videos & create GEO summaries with Whisper and GPT-4o-mini in Notion",
  "nodes": [
    {
      "id": "c0e9b7f9-0ab3-4275-9fbe-266e602052f8",
      "name": "Sticky Note - Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1936,
        -720
      ],
      "parameters": {
        "width": 420,
        "height": 528,
        "content": "## 🎥 YouTube → GEO Summary Automation\n\n### How it works\nThis workflow extracts audio from YouTube videos, transcribes the content using OpenAI Whisper, and generates structured GEO summaries (Goal-Exe"
      }
    },
    {
      "id": "8002b504-7541-4197-a29b-4f060e30f7f9",
      "name": "Sticky Note - Fetch",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1936,
        -176
      ],
      "parameters": {
        "width": 712,
        "height": 380,
        "content": "## 📥 Video Fetch & Metadata\nRetrieves video details from YouTube API and prepares metadata like title, description, thumbnail, and publish date for downstream processing."
      }
    },
    {
      "id": "bac21e13-bdb7-4334-961b-50f065cfae3e",
      "name": "Sticky Note - Audio",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1200,
        -176
      ],
      "parameters": {
        "width": 880,
        "height": 560,
        "content": "## 🎧 Audio Download & Transcription\nDownloads audio from YouTube using RapidAPI, converts it to text via OpenAI Whisper, and filters out empty transcripts before merging with metadata."
      }
    },
    {
      "id": "8e850fb3-c485-4efa-9333-4eb5f600e237",
      "name": "Sticky Note - AI",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        -192
      ],
      "parameters": {
        "width": 676,
        "height": 608,
        "content": "## 🤖 AI Analysis & GEO Extraction\nUses GPT-4o-mini with structured output parsing to analyze the transcript and generate Goal, Execution, Outcome, and Keywords in JSON format."
      }
    },
    {
      "id": "b11022ae-7f4b-4319-b60b-662a18f455bc",
      "name": "Sticky Note - Storage",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        -192
      ],
      "parameters": {
        "width": 472,
        "height": 428,
        "content": "## 💾 Data Storage\nParses the AI-generated JSON and creates a new page in Notion with formatted GEO content and video metadata."
      }
    },
    {
      "id": "d571f5f8-5546-4036-ba2e-19bda81d5e75",
      "name": "Sticky Note - Security",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        256
      ],
      "parameters": {
        "width": 320,
        "height": 180,
        "content": "## 🔐 Credentials & Security\n**Required credentials:**\n- YouTube OAuth2\n- OpenAI API key\n- Notion API integration\n- RapidAPI key (replace placeholder)\n\n⚠️ Remove all personal tokens before sharing this"
      }
    },
    {
      "id": "126d7e25-da79-47d6-a9f0-9511f462c22b",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1808,
        32
      ]
    },
    {
      "id": "5a992308-5d1d-4ee6-a0c8-44c2b9fea494",
      "name": "Set - Prepare Video Metadata",
      "type": "n8n-nodes-base.set",
      "position": [
        -1360,
        32
      ]
    },
    {
      "id": "56c1c33b-2b75-4367-98a3-6ed6c751a4f1",
      "name": "HTTP - Download Audio File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -912,
        96
      ]
    },
    {
      "id": "8a4192d9-e1e2-4171-ab9c-4eb241e1f716",
      "name": "IF - Skip if No Transcript",
      "type": "n8n-nodes-base.if",
      "position": [
        -464,
        96
      ]
    },
    {
      "id": "dde57237-e117-4e8c-a427-acddade93e03",
      "name": "Merge - Attach Metadata + Transcript",
      "type": "n8n-nodes-base.merge",
      "position": [
        -240,
        32
      ]
    },
    {
      "id": "30b4d2a5-0eb8-4223-acb6-e0dd2954ff44",
      "name": "Function - Parse GEO JSON",
      "type": "n8n-nodes-base.code",
      "position": [
        464,
        32
      ]
    },
    {
      "id": "9a92e535-79e3-44fd-b307-0426d7fb13ea",
      "name": "Notion - Create GEO Summary Page",
      "type": "n8n-nodes-base.notion",
      "position": [
        688,
        32
      ]
    },
    {
      "id": "b01bfd5d-aab7-4b32-9708-8656bd11ca22",
      "name": "HTTP - Get YouTube Audio",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1136,
        96
      ]
    },
    {
      "id": "49b97a02-564b-42ff-94fc-9c1614956689",
      "name": "YouTube - Fetch Video Details",
      "type": "n8n-nodes-base.youTube",
      "position": [
        -1584,
        32
      ]
    },
    {
      "id": "71f6a34a-3c35-48f9-aaf7-0760e75893dc",
      "name": "OpenAI - Transcribe Audio (Whisper)",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -688,
        96
      ]
    },
    {
      "id": "2915c932-68ee-4f84-a23c-6dda7c213449",
      "name": "OpenAI Chat Model - GPT-4o-mini",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -16,
        256
      ]
    },
    {
      "id": "827a05fc-f985-4e58-baf6-6e1d438736ae",
      "name": "Memory - Conversation Buffer",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        128,
        256
      ]
    },
    {
      "id": "2bd27d1a-f1d3-4ac7-8525-ebf4857380c6",
      "name": "Output Parser - Structured JSON",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        256,
        256
      ]
    },
    {
      "id": "7f8a6b79-7c25-417a-8861-d8c6f6112003",
      "name": "AI Agent - GEO Analyzer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        48,
        32
      ]
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "YouTube - Fetch Video Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent - GEO Analyzer": {
      "main": [
        [
          {
            "node": "Function - Parse GEO JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP - Get YouTube Audio": {
      "main": [
        [
          {
            "node": "HTTP - Download Audio File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Function - Parse GEO JSON": {
      "main": [
        [
          {
            "node": "Notion - Create GEO Summary Page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP - Download Audio File": {
      "main": [
        [
          {
            "node": "OpenAI - Transcribe Audio (Whisper)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF - Skip if No Transcript": {
      "main": [
        [
          {
            "node": "Merge - Attach Metadata + Transcript",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Memory - Conversation Buffer": {
      "ai_memory": [
        [
          {
            "node": "AI Agent - GEO Analyzer",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Set - Prepare Video Metadata": {
      "main": [
        [
          {
            "node": "Merge - Attach Metadata + Transcript",
            "type": "main",
            "index": 0
          },
          {
            "node": "HTTP - Get YouTube Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "YouTube - Fetch Video Details": {
      "main": [
        [
          {
            "node": "Set - Prepare Video Metadata",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model - GPT-4o-mini": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent - GEO Analyzer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Output Parser - Structured JSON": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent - GEO Analyzer",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI - Transcribe Audio (Whisper)": {
      "main": [
        [
          {
            "node": "IF - Skip if No Transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge - Attach Metadata + Transcript": {
      "main": [
        [
          {
            "node": "AI Agent - GEO Analyzer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}