Get AI summaries of any video or article — Sign up free
How to generate and post Instagram images from Notion with Make.com thumbnail

How to generate and post Instagram images from Notion with Make.com

Tools on Tech·
5 min read

Based on Tools on Tech's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

Use Notion as the single content database, including publish dates, content type, “image text,” “social text,” and a “published by make” checkbox.

Briefing

A workflow built around Notion and Make.com can turn a single content entry into a ready-to-post Instagram image—complete with branding—and then automatically publish it on a schedule. The core idea is to treat Notion as the “source of truth” for content status and assets, while Make.com handles the automation: pulling due items from a Notion database, generating a square 1080×1080 image via HTML/CSS-to-image rendering, posting it to Instagram, and then marking the item as published back in Notion.

The setup starts with a clear checklist of what the system must do: centralize content planning, eliminate manual steps for recurring posts (like quote-style screenshots), and post at a fixed cadence. The creator targets multiple platforms—YouTube, Twitter, LinkedIn, and Instagram—but explicitly automates Instagram (and reuses the same image for LinkedIn and Twitter). YouTube remains manual because it requires uploading a video and using the resulting URL for downstream posts.

Inside Notion, the content database stores structured fields that Make.com can rely on. Each entry includes a content “type” (e.g., Instagram post vs. tweet vs. LinkedIn post), a publish date, an image text (short headline-like text that fits on the graphic), a longer social text (caption body), and a URL field used to append a link to the caption. A “published by make” checkbox acts as a guardrail: Make.com filters for items whose publish date is on or before “now” and whose “published by make” flag is not set, then processes only those due items. After posting, Make.com updates the checkbox and status so the item turns green and won’t be reprocessed on the next run.

The automation logic in Make.com begins with a Notion connection that fetches up to 10 eligible items, then routes each item based on its type. A fallback route ensures items that don’t match other conditions are handled safely, and a “done” flag prevents repeated processing. For Instagram, the key step is the “magic” layer: converting HTML and CSS into an image using Make’s HTML/CSS-to-image capability. The image generation uses a layered “cake” approach—stacking a background image, a centered title graphic (the “thumbnail”/main image area), an overlay banner, and a text block—so the final output is a single square image sized for Instagram.

The HTML/CSS template is intentionally simple and modifiable. It sets a 1080×1080 canvas, positions each layer with absolute coordinates, and uses CSS drop shadows and typography rules (including uppercase styling and a chosen font family) to keep the design consistent. The text on the graphic comes from Notion’s “image text,” while the caption posted to Instagram comes from Notion’s “social text” (converted to plain text and paired with the URL).

Finally, the workflow posts to Instagram using the generated image URL and caption, then writes back to Notion to mark completion. A practical constraint is that the image must be publicly reachable; the creator suggests hosting the image on a publicly accessible page (e.g., via a hosting service) and verifying it loads in an anonymous browser before relying on it in the automation. A live test demonstrates the loop: an item is set to “ready,” Make.com runs, generates the image, posts it, and updates Notion immediately.

Cornell Notes

The system uses Notion as the content database and Make.com as the automation engine to publish Instagram graphics on a schedule. Make.com pulls items whose publish date is due and whose “published by make” checkbox is not set, routes them by content type, generates a 1080×1080 branded image from HTML/CSS using Notion fields, and posts it to Instagram with a caption derived from “social text.” After posting, Make.com updates Notion so the item is marked complete and won’t be processed again. This matters because it removes repetitive manual design and posting work while keeping planning, status, and results in one place.

How does the workflow decide which Notion items should be posted on a given run?

Make.com connects to a specific Notion database and filters for entries with a publish date on or before “now.” Because Make.com can’t filter reliably on status in this setup, the creator adds a checkbox field (e.g., “published by make”) and filters for items where that checkbox is not checked. The automation then limits the batch size (10 items) and processes only those due, preventing already-posted entries from being reposted.

What fields in Notion are essential for generating an Instagram image and caption?

Each content item includes: (1) a “type” field (Instagram vs. tweet vs. LinkedIn), (2) a publish date, (3) “image text” for short headline-style text that fits on the graphic, (4) “social text” for the longer caption, and (5) a URL field used to append a link to the caption. The workflow also relies on the “published by make” checkbox and a status field so Make.com can mark items as complete after posting.

Why split text into “image text” and “social text”?

The creator notes that placing long text directly onto the image quickly runs into layout problems—text length forces font resizing and becomes painful. “Image text” stays short for the graphic itself, while “social text” becomes the caption under the post. This separation keeps the design stable and avoids unreadable or cramped typography.

How does the image generation work technically?

Make.com uses an HTML/CSS-to-image step (HTML/CSS rendered into a file URL). The template builds a 1080×1080 canvas and layers elements like a background image, a centered main graphic area, an overlay banner, and a text block. CSS positions each layer with absolute coordinates and uses drop shadows and typography settings; the “thumbnail” image and the text are injected from Notion fields (not hardcoded).

What requirement makes hosting and public URLs important?

Instagram posting needs an image URL that’s accessible over the internet. The creator recommends hosting the generated image on a publicly reachable page (e.g., via a hosting service and “share to the web”), then testing the URL in an anonymous browser to confirm it loads. Without public access, Make.com can generate the image but Instagram may fail to fetch it.

How does the automation prevent duplicate posting?

After posting, Make.com updates the same Notion item: it checks the “published by make” box and sets a status like “complete published.” On the next scheduled run, the initial Notion filter excludes items where that checkbox is already checked, so previously processed entries won’t be fetched again.

Review Questions

  1. If Make.com can’t filter on a status field reliably, what alternative field and logic does the workflow use to avoid reposting?
  2. What specific Notion fields feed (a) the graphic text and (b) the Instagram caption?
  3. Why does the workflow require a publicly accessible image URL, and how can you verify it before running the automation?

Key Points

  1. 1

    Use Notion as the single content database, including publish dates, content type, “image text,” “social text,” and a “published by make” checkbox.

  2. 2

    Schedule Make.com to run daily and fetch only items whose publish date is on or before the current time and whose “published by make” flag is not set.

  3. 3

    Route items by content type inside Make.com so Instagram/LinkedIn/Twitter logic stays organized and safe.

  4. 4

    Generate branded 1080×1080 Instagram images by rendering HTML/CSS into a single image using a layered template fed by Notion fields.

  5. 5

    Split short on-image copy (“image text”) from longer caption copy (“social text”) to avoid messy font resizing and unreadable graphics.

  6. 6

    After posting, write back to Notion to mark items complete (check the checkbox and update status) so duplicates don’t slip in.

  7. 7

    Ensure generated images are publicly reachable via an internet-accessible URL and test the URL in an anonymous browser before relying on it.

Highlights

The automation hinges on a “published by make” checkbox in Notion, letting Make.com filter due items without relying on fragile status logic.
Instagram graphics are produced by rendering a simple, layered 1080×1080 HTML/CSS template where Notion fields inject both the main image and the short headline text.
Caption text comes from Notion’s longer “social text,” with the URL appended, while only short copy is placed inside the image itself.
A public image URL is non-negotiable: the generated asset must load in an anonymous browser for Instagram to fetch it successfully.
After posting, Make.com updates Notion so the same entry won’t be reposted on later daily runs.

Topics

  • Notion Automation
  • Make.com Workflows
  • Instagram Image Generation
  • HTML CSS Rendering
  • Content Scheduling