How to generate and post Instagram images from Notion with Make.com
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.
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?
What fields in Notion are essential for generating an Instagram image and caption?
Why split text into “image text” and “social text”?
How does the image generation work technically?
What requirement makes hosting and public URLs important?
How does the automation prevent duplicate posting?
Review Questions
- If Make.com can’t filter on a status field reliably, what alternative field and logic does the workflow use to avoid reposting?
- What specific Notion fields feed (a) the graphic text and (b) the Instagram caption?
- Why does the workflow require a publicly accessible image URL, and how can you verify it before running the automation?
Key Points
- 1
Use Notion as the single content database, including publish dates, content type, “image text,” “social text,” and a “published by make” checkbox.
- 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
Route items by content type inside Make.com so Instagram/LinkedIn/Twitter logic stays organized and safe.
- 4
Generate branded 1080×1080 Instagram images by rendering HTML/CSS into a single image using a layered template fed by Notion fields.
- 5
Split short on-image copy (“image text”) from longer caption copy (“social text”) to avoid messy font resizing and unreadable graphics.
- 6
After posting, write back to Notion to mark items complete (check the checkbox and update status) so duplicates don’t slip in.
- 7
Ensure generated images are publicly reachable via an internet-accessible URL and test the URL in an anonymous browser before relying on it.