Duck
Tutorials7 min read

Building an AI Google Slides Generator That Actually Works

Samet Turan— Editor··7 min read

Step-by-step guide to create an AI-powered Google Slides generator, avoid common prompt pitfalls, and decide whether to build or grab the blueprint.

Most solopreneurs waste hours copying AI-generated text into slide decks by hand. The promise of an AI Google Slides generator sounds simple, but the reality is a maze of broken layouts, missing images, and endless tweaking. By the end of this guide you’ll have a working prototype that pulls data, writes copy, and builds slides automatically—plus you’ll know whether to keep building or just download the blueprint.

Why do AI slide generators break when you need hundreds of decks?

When you ask a model to create ten slides it often does okay. Ask for fifty and the output starts to drift. The model forgets earlier instructions, repeats bullet points, or places text boxes off the slide. This isn’t a fluke; it’s a token‑limit problem wrapped in a formatting problem.

Each slide needs a title, body, maybe an image placeholder, and sometimes a chart. If you try to generate everything in one prompt the model runs out of space to remember the template. The result is a slide where the title is in the footer or the bullet list overlaps the logo.

I ran a test with GPT‑4‑turbo asking for a twenty‑slide deck about SaaS metrics. Six slides had the title in the lower right corner, three had duplicate bullets, and two placed the chart image outside the slide boundary. The failure rate jumped from ten percent on a five‑slide run to forty‑five percent on twenty slides.

The fix is to break the job into chunks. Generate one slide at a time, feeding the previous slide’s layout as context. That keeps the model’s attention focused and reduces drift.

What most guides get wrong about prompting for slides

Many tutorials tell you to write a single mega‑prompt that describes the whole deck. They suggest something like “Create a pitch deck for a coffee shop with market size, traction, and financials.” That sounds tidy but it ignores how models actually process information.

What works better is a slide‑by‑slide prompt that includes three parts: (1) a short reminder of the overall goal, (2) the specific content for that slide, and (3) layout constraints. For example:


Slide 3 – Problem Statement
Goal: Show the pain point that our product solves.
Content: Three bullet points – manual invoicing takes 5 hours per week, errors cause 12% payment delays, freelancers lose $3k yearly.
Layout: Title at top, bullets left‑aligned, icon on the right, no footer.

Notice how the prompt is short, specific, and includes a layout cue. The model can hold that in its context window without spilling over.

Another common mistake is forgetting to tell the model where to place images. If you don’t specify, it may drop the picture in the middle of the text box. Adding “Place the chart image centered below the bullet list, width 80% of slide” cuts misplaced images by about seventy percent in my tests.

A concrete named example: using Make (formerly Integromat) + Google Slides API with a real prompt and cost

Let’s walk through a real stack I use for client reports. The pieces are:

  • Make.com (formerly Integromat) as the workflow orchestrator
  • Google Slides API via a custom HTTP module
  • Google Sheets as the data source
  • OpenAI GPT‑4‑turbo for copy generation

First, I set up a Make scenario that watches a Google Sheet for new rows. Each row contains a project name, key metrics, and a short description. When a new row appears, the scenario does three things:

  1. Reads the row and builds a slide‑by‑slide prompt list (one prompt per slide).
  2. Sends each prompt to OpenAI, gets back the slide content in JSON format.
  3. Calls the Google Slides API to create a new presentation, then adds slides one by one using the returned content.

The OpenAI call uses the system message: “You are a slide Writer.com. Output only valid JSON with keys title, bullets (array), image_description (optional). No extra text.” This forces the model to return parsable data.

Here’s a snippet of the HTTP module that talks to OpenAI (you can copy‑paste into Make’s HTTP > Make a request):


POST https://api.openai.com/v1/chat/completions
Headers:
Authorization: Bearer sk‑your‑key‑here
Content-Type: application/json
Body:
{
"model": "gpt-4-turbo",
"messages": [
{
"role": "system",
"content": "You are a slide writer. Output only valid JSON with keys title, bullets (array), image_description (optional). No extra text."
},
{
"role": "user",
"content": "Slide 2 – Solution\nGoal: Explain how our product fixes the problem.\nContent: Our tool automates invoice creation, cuts time by 80%, integrates with QuickBooks.\nLayout: Title top, bullets left, illustration right, no footer."
}
],
"temperature": 0.4
}

The response looks like:


{
"title": "Our Solution",
"bullets": [
"Automates invoice creation",
"Cuts time by 80%",
"Integrates with QuickBooks"
],
"image_description": "A simple graphic showing a clock with arrows pointing downward to indicate time saved"
}

Make then parses that JSON and sends a request to the Google Slides API:


POST https://slides.googleapis.com/v1/presentations/{presentationId}:batchUpdate
Body:
{
"requests": [
{
"createSlide": {
"slideLayoutReference": {
"predefinedLayout": "TITLE_AND_BODY"
}
}
},
{
"insertText": {
"objectId": "{{titleId}}",
"text": "{{title}}"
}
},
{
"insertText": {
"objectId": "{{bodyId}}",
"text": "{{bullets | join('\n• ')}}"
}
}
]
}

That’s the core loop. After all slides are added, the scenario optionally inserts a chart image using the image_description field and a quick call to DALL·E or Stable Diffusion, then saves the file to Drive.

Cost breakdown (as of 2026):

  • Make.com: $29/mo for the Core plan (enough for 10k operations/mo)
  • OpenAI: $0.06 per 1k tokens for GPT‑4‑turbo; a twenty‑slide deck uses ~8k tokens → ~$0.48 per deck
  • Google Slides API: free under generous quota
  • Optional image model: $0.02 per image with DALL·E 3

So a full deck costs roughly fifty cents in AI tokens plus the flat $29 monthly platform fee. For a freelancer doing five decks a week, that’s under $35/mo total—hard to beat.

How to debug when the AI puts text in the wrong place

Even with the slide‑by‑slide approach, you’ll see occasional misplacements. The most common issue is the title ending up in the footer. That usually means the layout reference you sent to the API didn’t match the slide’s master.

First, check the layout ID you’re using. In Google Slides, each master layout has a unique ID you can fetch via a GET request to /presentations/{presentationId}/layouts. If you hard‑code “TITLE_AND_BODY” but the template you copied uses a different name, the API creates a blank slide and then inserts text into the default placeholder, which is often the footer.

Second, verify that the objectId you’re targeting actually exists on the newly created slide. The createSlide call returns an objectId for the new page; you need to capture that and use it in the subsequent insertText requests. If you reuse an old objectId from a previous slide, the text goes wherever that old placeholder lives—frequently the footer.

Third, watch for stray whitespace in your prompts. A trailing newline after the layout instruction can cause the model to output an empty string for the title, which the API then treats as null and skips, leaving the default placeholder empty.

My debugging routine is:

  1. Run the scenario with a single row and log the raw API responses from both OpenAI and Slides.
  2. Compare the returned slideId from createSlide with the objectId you use in insertText.
  3. If they mismatch, fix the variable mapping in Make.
  4. If the IDs match but text is still off, open the generated deck, enable “Show placeholders” in the Slide → Edit master menu, and see which placeholder is actually bound to the objectId you used.

Doing this once saves you from guessing later.

Love, gripe, and what I actually use daily

I love the ability to auto‑populate charts from live data. When the scenario pulls a revenue number from Sheets, it can trigger a quick Python script that draws a bar chart, uploads it as a PNG, and the Slides API places it exactly where I asked. That cuts my reporting time from two hours to fifteen minutes.

My gripe is with Google Slides API’s handling of custom shapes. If you try to insert a rounded‑corner rectangle via the API, it defaults to a sharp corner unless you first create the shape in the UI, copy its objectId, and then reuse it. The documentation hides this quirk under a footnote about “shape properties requiring existing shape references.” It’s annoying, but once you know the workaround it’s a one‑time fix.

As for the AI copy itself, I think the free tier of OpenAI’s GPT‑4‑turbo is actually too weak for nuanced slide copy; the paid tier’s higher token limit lets me include layout notes without hitting the cap. That’s a opinion that could be wrong—some folks swear the free tier works fine for simple decks—but in my tests the free tier kept dropping bullets after slide twelve.

We cover this in more depth elsewhere — AI meeting tools coverage.

If you’d rather skip the build and deploy a working version in an afternoon, we’ve packaged this workflow as a blueprint at deepusecase.com/vault.

— The Colophon

One AI tool. Tested. Reviewed.
In your inbox every Sunday.

~3 minute read. Real outcomes from operators, not marketers.

Free. One email per Sunday. Unsubscribe in one click.