{
  "name": "Generate educational social media carousels with GPT-4.1, Templated.io & Google Drive",
  "nodes": [
    {
      "id": "2c977dd4-39c0-446a-847e-66b9a5345fb1",
      "name": "Create folder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        768,
        0
      ]
    },
    {
      "id": "8b2d5d2f-4600-44c1-bc4b-31b5c2f15993",
      "name": "Form",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        0,
        0
      ]
    },
    {
      "id": "385ca355-299a-40b5-920f-c97f4a8a1df0",
      "name": "Generate Content",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        208,
        0
      ]
    },
    {
      "id": "f5f97dfc-0b86-4928-abc1-06773b3ca033",
      "name": "Format content",
      "type": "n8n-nodes-base.code",
      "position": [
        560,
        0
      ]
    },
    {
      "id": "3c412606-72f9-46b5-bdfb-a5f2275f4db8",
      "name": "Get cover image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        976,
        0
      ]
    },
    {
      "id": "e82e9d3b-46cf-4211-9116-6157783f3624",
      "name": "Get first result",
      "type": "n8n-nodes-base.code",
      "position": [
        1184,
        0
      ]
    },
    {
      "id": "eaf33708-4828-4da5-9012-7f8166aac8af",
      "name": "Create Renders",
      "type": "n8n-nodes-templated.templated",
      "position": [
        1392,
        0
      ]
    },
    {
      "id": "bd135694-6bc2-4680-ad14-6549f6ff5479",
      "name": "Download renders",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1600,
        0
      ]
    },
    {
      "id": "ccadfa31-4092-40d6-b78b-87fc21430f59",
      "name": "Upload renders to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1808,
        0
      ]
    },
    {
      "id": "436d9625-1780-4305-8c1d-9ff4192c52aa",
      "name": "Save in DB",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2016,
        0
      ]
    },
    {
      "id": "6c0f9f50-4576-445b-9bd9-9776ec455261",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        -112
      ],
      "parameters": {
        "width": 336,
        "height": 368,
        "content": "## Generate and save Carousels for social media\n\nUsing:\n- Form\n- OpenAI\n- Pixabay\n- Templated.io\n- Google Drive\n- Google Sheets"
      }
    },
    {
      "id": "a3b16e07-7a3f-479e-bb72-06878a6871e4",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -96,
        -192
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": "## Form Node\nThe Form node collects a single “Prompt” (with basic auth) to kick off a new carousel request."
      }
    },
    {
      "id": "ca6a020f-ca7c-4272-b6d6-f032be45b67f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        192
      ],
      "parameters": {
        "width": null,
        "height": 176,
        "content": "## OpenAI\n(OpenAI GPT-4.1) uses your system prompt + the form’s Prompt to produce JSON with titles/subtitles, topic, description, and visual_suggestion."
      }
    },
    {
      "id": "f3c4ed17-db3e-48f8-bc57-871bae8c272f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        -224
      ],
      "parameters": {
        "width": null,
        "height": 176,
        "content": "## Format Content\nFormat content parses the OpenAI raw message JSON and returns a clean object under the expected keys (e.g., title-1, subtitle-1, topic, visual_suggestion, description)."
      }
    },
    {
      "id": "7bc4072c-4463-44bb-98ca-cacd84f3f7e6",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        208
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": "## Create Folder\nCreate folder (Google Drive) creates a subfolder inside RRSS named with title-1 to store this carousel’s assets."
      }
    },
    {
      "id": "59daa80a-62a7-4239-8259-b0a1addbd565",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        208
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": "## Get first result\nGet first result extracts the first Pixabay hit and exposes its fields (e.g., largeImageURL) for downstream use."
      }
    },
    {
      "id": "08ccabf0-d1cf-49d5-8a1c-997e23bf0180",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        912,
        -224
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": "## Get Cover Image\nGet cover image (HTTP Request → Pixabay) searches for a photo using the parsed visual_suggestion as the keyword query."
      }
    },
    {
      "id": "1e111dbc-1673-4fa6-a145-2970c964dbc3",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1312,
        -224
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": "## Create Renders\nCreate Renders (Templated.io) renders the design by injecting all slide titles/subtitles/topic and sets the image layer (img-1) to the Pixabay largeImageURL."
      }
    },
    {
      "id": "639c4818-2334-489b-9a23-cb7c550f9619",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1552,
        208
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": "## Download Renders\nDownload renders (HTTP Request) downloads the rendered image(s) from the URL returned by Templated.io."
      }
    },
    {
      "id": "d0c6d4c8-ff53-49ed-8b19-2bd018931030",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1728,
        -240
      ],
      "parameters": {
        "width": null,
        "height": 192,
        "content": "## Upload renders to GD\nUpload renders to Google Drive uploads the downloaded binary file to the newly created Drive folder with the name {{page}}.png."
      }
    },
    {
      "id": "de7f3716-81df-4c97-89f8-ad79204847c1",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1968,
        208
      ],
      "parameters": {
        "width": null,
        "height": null,
        "content": "## Save in DB\nSave in DB (Google Sheets) appends a new row logging timestamp, title, topic, Drive folder link, description, and a default Status = Created."
      }
    }
  ],
  "connections": {
    "Form": {
      "main": [
        [
          {
            "node": "Generate Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create folder": {
      "main": [
        [
          {
            "node": "Get cover image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Renders": {
      "main": [
        [
          {
            "node": "Download renders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format content": {
      "main": [
        [
          {
            "node": "Create folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get cover image": {
      "main": [
        [
          {
            "node": "Get first result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download renders": {
      "main": [
        [
          {
            "node": "Upload renders to Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Content": {
      "main": [
        [
          {
            "node": "Format content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get first result": {
      "main": [
        [
          {
            "node": "Create Renders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload renders to Google Drive": {
      "main": [
        [
          {
            "node": "Save in DB",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}