{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Meeting Notes Automation",
  "tags": [],
  "nodes": [
    {
      "id": "522e2769-65f2-4e2e-b196-8320df0ce3ea",
      "name": "Sticky Note - Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2368,
        768
      ],
      "parameters": {
        "width": 668,
        "height": 780,
        "content": "## Try It Out!\n### Automatically turn YouTube recordings into structured notes, action items, and Slack summaries.\n\nThis workflow monitors a YouTube channel via RSS for new uploads, transcribes the video, uses AI to extract key topics, action items, and decisions, creates a Notion page, and posts a summary to Slack.\n\n### How it works\n1. **RSS Feed Trigger** polls a YouTube channel for new video uploads\n2. **deAPI Transcribe Video** extracts the transcript using Whisper from the YouTube URL\n3. **Extract From File** converts the transcript binary into text\n4. **AI Agent** analyzes the transcript and produces structured meeting notes\n5. **Notion** creates a meeting notes page in your database\n6. **Slack** posts the summary and action items to a channel\n\n### Requirements\n- [deAPI](https://deapi.ai) account for video transcription\n- Anthropic account for AI Agent\n- Notion workspace with a meeting notes database\n- Slack workspace\n- n8n instance must be on **HTTPS**\n\n### Need Help?\nJoin the [n8n Discord](https://discord.gg/n8n) or ask in the [Forum](https://community.n8n.io/)!\n\nHappy Automating!"
      },
      "typeVersion": 1
    },
    {
      "id": "cc70fbc2-89c2-4840-9559-a4c043d4e6ae",
      "name": "Sticky Note - Example",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1424,
        1584
      ],
      "parameters": {
        "color": 6,
        "width": 360,
        "height": 500,
        "content": "### How to get your YouTube Channel RSS URL\n\n```\nhttps://www.youtube.com/feeds/videos.xml?channel_id=YOUR_CHANNEL_ID\n```\n\nTo find your **Channel ID**:\n1. Go to the YouTube channel page\n2. Click **More** \u2192 **Share channel** \u2192 **Copy channel ID**\n\nOr find it in the channel URL:\n`youtube.com/channel/UCxxxxxx`\n\nNo YouTube API key needed \u2014 RSS feeds are public."
      },
      "typeVersion": 1
    },
    {
      "id": "e39d8b1c-35d2-4499-a603-2c18bd835e4b",
      "name": "Sticky Note - Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        1584
      ],
      "parameters": {
        "color": 7,
        "width": 340,
        "height": 428,
        "content": "## 1. RSS Feed Trigger\n[Read more about RSS Trigger](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.rssfeedread)\n\nPolls a YouTube channel's RSS feed for new video uploads.\n\nSet the **Feed URL** to your channel's RSS URL.\n\nNo file size limits \u2014 deAPI transcribes directly from the YouTube URL."
      },
      "typeVersion": 1
    },
    {
      "id": "655cb3da-db7c-46e0-935f-07f1db7c99af",
      "name": "Sticky Note - Transcribe",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2224,
        1584
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 428,
        "content": "## 2. Transcribe Video\n[deAPI Documentation](https://docs.deapi.ai)\n\nUses **Whisper Large V3** to transcribe the video directly from the YouTube URL.\n\nReturns the transcript as binary data via `result_url`."
      },
      "typeVersion": 1
    },
    {
      "id": "19271b8e-de81-4939-9646-1246ce76340e",
      "name": "Sticky Note - Extract",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2592,
        1584
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 428,
        "content": "## 3. Extract Transcript Text\n[Read more about Extract From File](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile)\n\nConverts the binary transcript from deAPI into a text string.\n\nThe extracted text is passed to the AI Agent for analysis."
      },
      "typeVersion": 1
    },
    {
      "id": "44533198-ffa3-4c3c-b217-d3f7d3766c4b",
      "name": "Sticky Note - AI Agent",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2960,
        1584
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 620,
        "content": "## 4. AI-Powered Note Extraction\n[Read more about AI Agents](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent)\n\nThe AI Agent analyzes the transcript and extracts:\n- **Summary** \u2014 what was discussed\n- **Action items** \u2014 who does what\n- **Decisions** \u2014 what was agreed on\n- **Key topics** \u2014 main themes\n\nThe **Structured Output Parser** ensures consistent JSON output."
      },
      "typeVersion": 1
    },
    {
      "id": "8ed7e0cd-107c-4c9f-8e4b-ced36d366178",
      "name": "Sticky Note - Notion",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3408,
        1584
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 428,
        "content": "## 5. Save to Notion\n[Read more about Notion node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.notion)\n\nCreates a new page in your Notion meeting notes database.\n\nConfigure the **Database ID** and map the output fields to your database properties."
      },
      "typeVersion": 1
    },
    {
      "id": "fbceeaab-7785-45bc-b93d-99f301278002",
      "name": "Sticky Note - Slack",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3776,
        1584
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 428,
        "content": "## 6. Notify via Slack\n[Read more about Slack node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack)\n\nPosts a summary with action items to your team's Slack channel.\n\nSwap for Microsoft Teams, email, or any other notification node."
      },
      "typeVersion": 1
    },
    {
      "id": "3767a073-0ee1-445c-820a-0df00c6e6fb6",
      "name": "YouTube RSS Trigger",
      "type": "n8n-nodes-base.rssFeedReadTrigger",
      "position": [
        1952,
        1840
      ],
      "parameters": {
        "feedUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=YOUR_CHANNEL_ID",
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c693f9d6-9cc0-4817-af5c-a519f194a060",
      "name": "deAPI Transcribe Video",
      "type": "n8n-nodes-deapi.deapi",
      "position": [
        2336,
        1840
      ],
      "parameters": {
        "options": {
          "waitTimeout": 600
        },
        "resource": "video",
        "videoUrl": "={{ $json.link }}",
        "operation": "transcribe"
      },
      "credentials": {
        "deApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a4009b6d-52e2-450f-b232-c455ead5bd81",
      "name": "Extract Transcript Text",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        2704,
        1840
      ],
      "parameters": {
        "options": {},
        "operation": "text"
      },
      "typeVersion": 1
    },
    {
      "id": "7134a35c-334c-4321-9204-1783ef1167e5",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3056,
        1840
      ],
      "parameters": {
        "text": "=Here is a transcript of a meeting recording. Please extract structured meeting notes.\n\nVideo title: {{ $('YouTube RSS Trigger').item.json.title }}\n\nTranscript:\n{{ $json.data }}",
        "options": {
          "systemMessage": "You are an expert meeting note-taker. You will receive a meeting transcript.\n\nYour tasks:\n1. Write a concise title for the meeting based on the discussion topics.\n2. Write a brief summary (3-5 sentences) of what was discussed.\n3. Extract all action items with the responsible person if mentioned (format: \"- @person: task\").\n4. List key decisions that were made.\n5. List the main topics that were covered.\n\nReturn the structured notes in the required JSON format."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "57262a23-66b3-44fb-bf94-4edc8a4ac2ed",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        3232,
        2064
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"title\": \"Weekly Product Sync \u2014 March 5\",\n  \"summary\": \"The team reviewed Q2 roadmap priorities and agreed to focus on the auth redesign first. Timeline for the migration was pushed to next sprint.\",\n  \"action_items\": \"- @alice: Finalize design specs by Friday\\n- @bob: Set up staging environment\\n- @carol: Schedule follow-up with security team\",\n  \"decisions\": \"- Moving forward with Option B for the auth system\\n- Postponing the database migration to next sprint\",\n  \"key_topics\": \"- Q2 roadmap priorities\\n- Auth system redesign\\n- Database migration timeline\\n- Team capacity planning\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "e880f0bb-9432-49fc-8899-e1cd4ef00734",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        3008,
        2064
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-opus-4-6",
          "cachedResultName": "Claude Opus 4.6"
        },
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "5a3af322-60b7-4181-83d0-71ccaf97a62d",
      "name": "Notion",
      "type": "n8n-nodes-base.notion",
      "position": [
        3520,
        1840
      ],
      "parameters": {
        "title": "={{ $json.output.title }}",
        "options": {},
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_NOTION_DATABASE_ID"
        },
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Title|title",
              "title": "={{ $json.output.title }}"
            },
            {
              "key": "Summary|rich_text",
              "textContent": "={{ $json.output.summary }}"
            },
            {
              "key": "Action Items|rich_text",
              "textContent": "={{ $json.output.action_items }}"
            },
            {
              "key": "Decisions|rich_text",
              "textContent": "={{ $json.output.decisions }}"
            },
            {
              "key": "Key Topics|rich_text",
              "textContent": "={{ $json.output.key_topics }}"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "643ce37b-d106-43c7-8650-8af3d33625e5",
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        3888,
        1840
      ],
      "parameters": {
        "text": "=:memo: *{{ $('AI Agent').item.json.output.title }}*\n\n*Summary:*\n{{ $('AI Agent').item.json.output.summary }}\n\n*Action Items:*\n{{ $('AI Agent').item.json.output.action_items }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_SLACK_CHANNEL_ID"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "Notion": {
      "main": [
        [
          {
            "node": "Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Notion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "YouTube RSS Trigger": {
      "main": [
        [
          {
            "node": "deAPI Transcribe Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Anthropic Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "deAPI Transcribe Video": {
      "main": [
        [
          {
            "node": "Extract Transcript Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Transcript Text": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}