AutomationFlowsGeneral › Generate Presentation Decks From Prompts with Encelade

Generate Presentation Decks From Prompts with Encelade

ByAnastasiia @spl1n on n8n.io

This workflow starts a presentation generation job in Encelade from a prompt and outline hints, polls Encelade for completion, and outputs the finished deck link (or stops with an error if generation fails). Starts when you manually execute the workflow in n8n. Sends the topic,…

Event trigger★★★★☆ complexity13 nodesN8N Nodes EnceladeStop And Error
General Trigger: Event Nodes: 13 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #16455 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Encelade \u2014 Generate a deck from a prompt",
  "nodes": [
    {
      "id": "4f801fda-d51a-49dd-9fd7-a54e643bb1b0",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        48
      ],
      "parameters": {
        "width": 480,
        "height": 880,
        "content": "## Encelade \u2014 Generate a deck from a prompt\n\n### How it works\n\nThis workflow manually starts an Encelade deck generation job from a prompt, then polls Encelade until the deck is ready or the generation fails. It waits 20 seconds between status checks, returns the deck link and project PID on success, and stops with an error if Encelade reports a failed generation.\n\n### Setup steps\n\n- Configure the Encelade credentials/API key used by the Encelade nodes.\n- Set the prompt and any deck generation options in the \u201cGenerate Presentation Deck\u201d node.\n- Ensure the \u201cCheck Deck Status\u201d node uses the session ID returned by \u201cGenerate Presentation Deck\u201d.\n- Verify the IF conditions in \u201cIf Deck Ready\u201d and \u201cIf Generation Failed\u201d match the phase values returned by Encelade.\n\n### Customization\n\nAdjust the wait interval, retry behavior, prompt content, and returned fields such as deckLink or projectPid to fit your deck generation process."
      },
      "typeVersion": 1
    },
    {
      "id": "b4bfdf46-244a-48aa-8f5c-97cab56c3944",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 320,
        "content": "## Start deck generation\n\nManual execution begins the workflow and sends the initial prompt to Encelade to create a deck generation job."
      },
      "typeVersion": 1
    },
    {
      "id": "c5f2b86b-ca66-4604-a62d-81de1c08e72b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 320,
        "content": "## Poll generation status\n\nThis central polling cluster waits before checking Encelade for the current status of the deck generation job."
      },
      "typeVersion": 1
    },
    {
      "id": "b787f6da-6f4f-43fb-9df5-d8ee3a95bbaf",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        48
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 432,
        "content": "## Handle ready deck\n\nThis branch evaluates whether the deck is complete and, when ready, formats the successful output with the deck link and project PID."
      },
      "typeVersion": 1
    },
    {
      "id": "3d5dc5e2-7e62-423b-a283-59fa57d2eaa8",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        928,
        512
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 416,
        "content": "## Handle failure or retry\n\nThis lower-right branch checks whether generation failed; failed jobs stop with an error, while unfinished jobs loop back to the wait step for another status check."
      },
      "typeVersion": 1
    },
    {
      "id": "a1111111-1111-4111-8111-111111111111",
      "name": "Manual Execution Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -120,
        320
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b2222222-2222-4222-8222-222222222222",
      "name": "Generate Presentation Deck",
      "type": "n8n-nodes-encelade.encelade",
      "position": [
        100,
        320
      ],
      "parameters": {
        "topic": "Q3 product strategy review",
        "resource": "presentation",
        "operation": "generate",
        "pageCount": "6",
        "outlineHints": [
          "Market landscape and where we win",
          "Our three bets for Q3",
          "Targets, milestones, and resourcing"
        ],
        "additionalFields": {
          "tone": "Confident and concise",
          "theme": "default",
          "audience": "Executive team",
          "themeMode": "light",
          "mediaProvider": "unsplash"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c3333333-3333-4333-8333-333333333333",
      "name": "Wait 20 Seconds",
      "type": "n8n-nodes-base.wait",
      "position": [
        352,
        320
      ],
      "parameters": {
        "unit": "seconds",
        "amount": 20
      },
      "typeVersion": 1.1
    },
    {
      "id": "d4444444-4444-4444-8444-444444444444",
      "name": "Check Deck Status",
      "type": "n8n-nodes-encelade.encelade",
      "position": [
        576,
        320
      ],
      "parameters": {
        "resource": "session",
        "operation": "getStatus",
        "sessionId": "={{ $('Generate Presentation Deck').item.json.sessionId }}"
      },
      "typeVersion": 1
    },
    {
      "id": "e5555555-5555-4555-8555-555555555555",
      "name": "If Deck Ready",
      "type": "n8n-nodes-base.if",
      "position": [
        800,
        320
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cond-done",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.phase }}",
              "rightValue": "done"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "f6666666-6666-4666-8666-666666666666",
      "name": "Set Deck Details",
      "type": "n8n-nodes-base.set",
      "position": [
        1008,
        208
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "as-link",
              "name": "deckLink",
              "type": "string",
              "value": "={{ $json.link }}"
            },
            {
              "id": "as-pid",
              "name": "projectPid",
              "type": "string",
              "value": "={{ $json.projectPid }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a7777777-7777-4777-8777-777777777777",
      "name": "If Generation Failed",
      "type": "n8n-nodes-base.if",
      "position": [
        976,
        688
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cond-failed",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.phase }}",
              "rightValue": "failed"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "a8888888-8888-4888-8888-888888888888",
      "name": "Stop on Generation Failure",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        1200,
        768
      ],
      "parameters": {
        "errorMessage": "={{ 'Encelade generation failed (phase: ' + $json.phase + ', status: ' + ($json.status || 'unknown') + ')' }}"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "If Deck Ready": {
      "main": [
        [
          {
            "node": "Set Deck Details",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "If Generation Failed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 20 Seconds": {
      "main": [
        [
          {
            "node": "Check Deck Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Deck Status": {
      "main": [
        [
          {
            "node": "If Deck Ready",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Generation Failed": {
      "main": [
        [
          {
            "node": "Stop on Generation Failure",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 20 Seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual Execution Trigger": {
      "main": [
        [
          {
            "node": "Generate Presentation Deck",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Presentation Deck": {
      "main": [
        [
          {
            "node": "Wait 20 Seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow starts a presentation generation job in Encelade from a prompt and outline hints, polls Encelade for completion, and outputs the finished deck link (or stops with an error if generation fails). Starts when you manually execute the workflow in n8n. Sends the topic,…

Source: https://n8n.io/workflows/16455/ — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

This template is a hands-on, practical exam designed to help you master n8n Expressions—the key to accessing and manipulating data in your workflows.

Stop And Error
General

This template is a hands-on, practical exam designed to test your understanding of the fundamental JSON data types. It's the perfect way to solidify your knowledge after learning the basics.

Stop And Error
General

Prevent concurrent workflow runs using Redis. Uses executeWorkflowTrigger, manualTrigger, stickyNote, executeWorkflow. Event-driven trigger; 43 nodes.

Execute Workflow Trigger, Redis, Stop And Error
General

This workflow sets a small "lock" value in Redis so that only one copy of a long job can run at the same time. If another trigger fires while the job is still busy, the workflow sees the lock, stops e

Execute Workflow Trigger, Redis, Stop And Error
General

This template facilitates the transfer of a folder, along with all its files and subfolders, within a Nextcloud instance. The Nextcloud user must have access to both the source and destination folders

Execute Workflow Trigger, Next Cloud, Stop And Error