{
  "name": "Obsidian notes read aloud using AI: available as a podcast feed",
  "nodes": [
    {
      "id": "a44b5cb3-6c9f-4227-a45f-a21765ea120c",
      "name": "OpenAI1",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -660,
        -180
      ]
    },
    {
      "id": "9ca589b6-f1c7-44a9-8ff7-4abb979a71c3",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1200,
        -400
      ],
      "parameters": {
        "width": 440,
        "height": 540,
        "content": "## Send Notes to Webhook\n**Setup:**\n- Install [Post Webhook Plugin](https://github.com/Masterb1234/obsidian-post-webhook/) in Obsidian\n- Enter n8n Webhook URL and name in plugin settings\n\n**Usage:**\n-"
      }
    },
    {
      "id": "3ea132e5-8c67-4140-a9b2-607ea256e90f",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1200,
        240
      ],
      "parameters": {
        "width": 440,
        "height": 440,
        "content": "## Generic Podcast Feed Module\nA reusable module for any 'X-to-Podcast' workflow. Generates standard RSS feed from:\n- Source data (Google Sheets)\n- Podcast metadata\n\nCompatible with all major podcast "
      }
    },
    {
      "id": "92d6a6df-0e4e-423b-8447-dce10d5373ae",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        -400
      ],
      "parameters": {
        "width": 440,
        "height": 540,
        "content": "## Create Audio and Write Description\nOpenAI TTS converts notes to audio while the messaging model generates concise descriptions for podcast apps."
      }
    },
    {
      "id": "b950b0ab-e27e-473d-9891-d5551a44ed17",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        -400
      ],
      "parameters": {
        "width": 380,
        "height": 540,
        "content": "## Append Row to Google Sheets\nSaves essential podcast parameters (<title>, <link>, <description>, <duration>) to Google Sheets for Feed generation."
      }
    },
    {
      "id": "02fda37f-77a5-47f5-81bc-b59486704386",
      "name": "Webhook GET Note",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1040,
        -120
      ]
    },
    {
      "id": "845d04ea-d221-4034-b5e1-75061e5f351c",
      "name": "Webhook GET Podcast Feed",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1040,
        460
      ]
    },
    {
      "id": "ce6d766c-89e6-4d62-9d48-d6715a28592f",
      "name": "Upload Audio to Cloudinary",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -220,
        -120
      ]
    },
    {
      "id": "1f86c18d-8197-4671-9c41-726a02108c4e",
      "name": "OpenAI",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -660,
        -20
      ]
    },
    {
      "id": "0942959c-2231-4055-b196-4483c210a39d",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        320,
        -40
      ]
    },
    {
      "id": "ee7ba6a7-f8dd-4863-bf5c-6ec8eb2329ea",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        460,
        -180
      ]
    },
    {
      "id": "f403d045-08e9-400e-9988-c8f55a5aa609",
      "name": "Give Audio Unique Name",
      "type": "n8n-nodes-base.set",
      "position": [
        -460,
        -180
      ]
    },
    {
      "id": "2dbff0f5-f359-43b7-b0de-4b9d657c69c0",
      "name": "Send Audio to Obsidian",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        80,
        -180
      ]
    },
    {
      "id": "ede7c038-b210-4b29-8557-7530ea4cf63e",
      "name": "Rename Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        620,
        -180
      ]
    },
    {
      "id": "10a35ef9-ab86-4010-9fcc-3cd765384e93",
      "name": "Append Item to Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        940,
        -180
      ]
    },
    {
      "id": "62dd3faf-22db-40f9-892c-2cf9368a9496",
      "name": "Get Items from Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -660,
        460
      ]
    },
    {
      "id": "7b465ed0-d2cc-4862-b0e6-4bd6215f3945",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        320
      ],
      "parameters": {
        "width": 440,
        "height": 360,
        "content": "## Podcast Feed Configuration\n- Static: Configure podcast metadata in 'Edit Fields'\n- Dynamic: Episodes automatically pulled from Google Sheets"
      }
    },
    {
      "id": "1608ce65-bf1f-4dce-b4c7-b85b72ecb8c7",
      "name": "Write RSS Feed",
      "type": "n8n-nodes-base.code",
      "position": [
        -120,
        460
      ]
    },
    {
      "id": "c8c7fbfc-c408-438e-af7e-5c384cfce4a5",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        320
      ],
      "parameters": {
        "width": 340,
        "height": 360,
        "content": "## Write Podcast Feed\nGenerates RSS feed XML from collected data."
      }
    },
    {
      "id": "b5962e24-49eb-423a-ab8c-cb04daf5e1a0",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        -400
      ],
      "parameters": {
        "width": 460,
        "height": 540,
        "content": "## Audio to Cloudinary and Obsidian\nCloudinary stores audio files and provides duration metadata for podcast feed.\n\nSetup:\n- Create Custom Auth credentials\n- Set CLOUDINARY_ENV to your environment"
      }
    },
    {
      "id": "e0f18eda-13fc-4771-8ce0-11574a4469ad",
      "name": "Return Podcast Feed to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        200,
        460
      ]
    },
    {
      "id": "d3afe3f0-79e4-48c1-a0d6-356b462156c7",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        260,
        -400
      ],
      "parameters": {
        "width": 500,
        "height": 540,
        "content": "## Prepare Relevant Data\nConsolidates and formats data for Google Sheets storage."
      }
    },
    {
      "id": "f77ff10c-e4e3-4761-b4db-4c42d5831f5c",
      "name": "Manually Enter Other Data for Podcast Feed",
      "type": "n8n-nodes-base.set",
      "position": [
        -460,
        460
      ]
    }
  ],
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "OpenAI1": {
      "main": [
        [
          {
            "node": "Give Audio Unique Name",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Rename Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rename Fields": {
      "main": [
        [
          {
            "node": "Append Item to Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write RSS Feed": {
      "main": [
        [
          {
            "node": "Return Podcast Feed to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook GET Note": {
      "main": [
        [
          {
            "node": "OpenAI1",
            "type": "main",
            "index": 0
          },
          {
            "node": "OpenAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Give Audio Unique Name": {
      "main": [
        [
          {
            "node": "Upload Audio to Cloudinary",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send Audio to Obsidian",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook GET Podcast Feed": {
      "main": [
        [
          {
            "node": "Get Items from Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Audio to Cloudinary": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Item to Google Sheet": {
      "main": [
        []
      ]
    },
    "Get Items from Google Sheets": {
      "main": [
        [
          {
            "node": "Manually Enter Other Data for Podcast Feed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manually Enter Other Data for Podcast Feed": {
      "main": [
        [
          {
            "node": "Write RSS Feed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}