{
  "name": "Convert PDF articles to audio podcasts with Google TTS & Cloudflare R2",
  "nodes": [
    {
      "id": "8616c449-1148-438e-b1a0-57dcc9b6caed",
      "name": "⚙️ Workflow Config",
      "type": "n8n-nodes-base.set",
      "position": [
        32,
        480
      ]
    },
    {
      "id": "0cb6f54b-34b7-449c-b42c-1a8eb341001a",
      "name": "Upload PDF for Podcast",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        80,
        128
      ]
    },
    {
      "id": "4f7236ac-852d-4c6f-9393-1fd6ed1c5610",
      "name": "Extract PDF Text",
      "type": "n8n-nodes-base.readPDF",
      "position": [
        336,
        128
      ]
    },
    {
      "id": "b533785e-e3bb-4bc6-b3a4-ab1f452ae330",
      "name": "Clean & Process Text",
      "type": "n8n-nodes-base.code",
      "position": [
        544,
        128
      ]
    },
    {
      "id": "aac02256-376d-421d-897b-06bdfd1b9494",
      "name": "Detect Sections & Split",
      "type": "n8n-nodes-base.code",
      "position": [
        736,
        128
      ]
    },
    {
      "id": "3a32b49b-bcac-4a61-b405-2f5d412a1191",
      "name": "Check TTS Usage Limit",
      "type": "n8n-nodes-base.code",
      "position": [
        944,
        128
      ]
    },
    {
      "id": "ce537777-d89c-445b-b1ed-199beac096ce",
      "name": "Google TTS API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1136,
        128
      ]
    },
    {
      "id": "7948efd4-3d73-4496-95fa-12d25ff97fe0",
      "name": "Convert Audio to Binary",
      "type": "n8n-nodes-base.code",
      "position": [
        1344,
        128
      ]
    },
    {
      "id": "9b9c9e38-5b5a-491f-b3b7-5d0d39c73ad5",
      "name": "Stitch All Mp3 Together",
      "type": "n8n-nodes-base.code",
      "position": [
        32,
        336
      ]
    },
    {
      "id": "72ae9ece-7ea5-48f8-969c-79f70376ff1b",
      "name": "Upload MP3 to R2",
      "type": "n8n-nodes-cloudflare-r2-storage.cloudflareR2Storage",
      "position": [
        432,
        384
      ]
    },
    {
      "id": "9789ab0b-b679-4314-a814-5407a42fb7d1",
      "name": "Build RSS XML",
      "type": "n8n-nodes-base.code",
      "position": [
        624,
        384
      ]
    },
    {
      "id": "dd7a9af8-5031-48a7-a9b8-9658941792d8",
      "name": "Upload RSS to R2",
      "type": "n8n-nodes-cloudflare-r2-storage.cloudflareR2Storage",
      "position": [
        832,
        384
      ]
    },
    {
      "id": "b600862c-f392-49da-b9dd-4fe550c76615",
      "name": "Update Monthly Usage",
      "type": "n8n-nodes-base.code",
      "position": [
        1040,
        384
      ]
    },
    {
      "id": "f532fce3-46d4-42b3-8ae4-645805f90cd1",
      "name": "Aggregate for Email",
      "type": "n8n-nodes-base.code",
      "position": [
        1248,
        384
      ]
    },
    {
      "id": "67f70d82-cc76-471f-8cbd-986f24e3e84b",
      "name": "Send Email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1456,
        384
      ]
    },
    {
      "id": "9c67b04e-d782-49dd-b577-f6abf22ad944",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        256,
        384
      ]
    },
    {
      "id": "ad592fb6-b1b5-4af6-a572-7e2994512bea",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        -80
      ],
      "parameters": {
        "width": 520,
        "height": 880,
        "content": "# Convert PDF Articles to Podcast\n\n**Transform any PDF into an audio podcast automatically!**\n\nThis workflow extracts text from PDFs, converts it to natural-sounding speech using Google Cloud Text-to-"
      }
    }
  ],
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Upload MP3 to R2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build RSS XML": {
      "main": [
        [
          {
            "node": "Upload RSS to R2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google TTS API": {
      "main": [
        [
          {
            "node": "Convert Audio to Binary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract PDF Text": {
      "main": [
        [
          {
            "node": "Clean & Process Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload MP3 to R2": {
      "main": [
        [
          {
            "node": "Build RSS XML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload RSS to R2": {
      "main": [
        [
          {
            "node": "Update Monthly Usage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate for Email": {
      "main": [
        [
          {
            "node": "Send Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean & Process Text": {
      "main": [
        [
          {
            "node": "Detect Sections & Split",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Monthly Usage": {
      "main": [
        [
          {
            "node": "Aggregate for Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check TTS Usage Limit": {
      "main": [
        [
          {
            "node": "Google TTS API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload PDF for Podcast": {
      "main": [
        [
          {
            "node": "Extract PDF Text",
            "type": "main",
            "index": 0
          },
          {
            "node": "⚙️ Workflow Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "⚙️ Workflow Config": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Convert Audio to Binary": {
      "main": [
        [
          {
            "node": "Stitch All Mp3 Together",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Detect Sections & Split": {
      "main": [
        [
          {
            "node": "Check TTS Usage Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Stitch All Mp3 Together": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}