I automated Instagram carousel creation with n8n: one Telegram message in, 6 finished slides out

Hey n8n community,

Wanted to share a workflow I built that saves around 2 hours of content work per week. It’s a fully automated Instagram carousel pipeline triggered by a single Telegram message.

Here’s the full flow:

  1. A Telegram message arrives with the carousel topic
  2. A GPT-4o node generates 6 slide sections as a JSON array, punchy, under 20 words each
  3. An HTTP Request node sends that JSON to a local Puppeteer service
  4. Puppeteer renders 6 PNG slides at 1080x1350px using a custom-branded HTML template
  5. Slides upload to Google Drive — auto-creates a dated folder per post
  6. Telegram sends all 6 image previews back
  7. Then posted after review to Instagram.

Total time from trigger to finished slides: under 1 minutes. Cost per post: ~$0.02.

A few things I learned that might save you time:

Puppeteer’s browser.close() hangs indefinitely. Solved it with Promise.race() and a SIGKILL fallback after 10 seconds.

Loading multiple @font-face weight files caused random multi-minute hangs. Switching to a single variable font file fixed it completely.

In n8n HTTP Request nodes, missing body fields silently pass as undefined rather than throwing an error. Always forward every required field explicitly.

I packaged the workflow JSON as a free template. Drop a comment or DM if you want it.

The agency I built this for: zennolabs.com - happy to answer questions on any part of the build.

the puppeteer.close() hanging is a solid catch. the promise.race() + sigkill fallback is something people usually have to debug themselves, so shipping that in the template saves a ton of headache. the variable font optimization is clever too – that’s a pattern more people should know about

1 Like