Social media only works as a growth channel if someone shows up every day to write captions, pick hashtags, and hit publish — and most businesses don't have the time for that. This is the problem a social media marketing client came to Automations Limited's founder, Mustafa Haider, with: a steady stream of images to post, and no consistent way to get them onto Instagram and Facebook without someone manually writing copy for each one.
The Problem
The client had content to post — product photos, promotional images, day-to-day updates — but turning that content into finished posts was entirely manual. Every image needed a caption, relevant hashtags, and a person to actually publish it to the right platform at the right time. That process was slow, inconsistent, and dependent on whoever was available that day to do it. It also created a quieter risk: without any system tracking what had already been posted, similar or duplicate content could go out repeatedly, which cheapens a feed and makes an account look unmanaged.
The client needed the manual work removed without losing quality or consistency — captions still needed to sound right, hashtags still needed to be relevant, and the account still needed to look like it was being run by someone paying attention. Any fix also had to hold up over time. A one-off script that generates a caption is easy to build; a system that keeps producing usable, non-repetitive content post after post, week after week, is a different problem entirely.
The Approach
Mustafa designed and built the system entirely inside n8n, using it as the orchestration layer connecting three pieces: OpenAI for content generation, Supabase as the data backbone, and the Meta Graph API for publishing. The goal was a workflow that could take a raw image as input and produce a fully published, on-brand post with no manual step in between — while still checking its own work before anything went live.
That last part mattered as much as the generation itself. It would have been straightforward to build a workflow that just generates a caption and posts it immediately. Building one that also remembers what it has already posted, and holds back anything too similar, is what makes the system trustworthy enough to run without someone watching over it.
How It Works
1. Image analysis. When a new image enters the workflow, it's first analyzed so the system understands what's actually in the photo — the subject, setting, and relevant details that a caption needs to reference accurately.
2. AI caption and hashtag generation. That analysis is passed to OpenAI, which generates a caption and a set of relevant hashtags based on the image content. This is the step that replaces the manual writing work — instead of someone drafting copy for every post, the AI produces it directly from what's in the image.
3. Duplicate-check logic. Before anything is scheduled, the generated content is checked against previously posted content stored in Supabase. If a new post is too similar to something already published, it gets flagged instead of going live automatically. This step exists specifically to prevent the account from repeating itself — a real risk once content generation is automated and no longer passing through a person's memory of "didn't we already post something like this?"
4. Direct posting via the Graph API. Once content clears the duplicate check, the workflow posts it directly to Instagram and Facebook using Meta's Graph API — no manual copy-pasting into a scheduler, no separate publishing step.
5. Supabase as the data backbone. Every image, generated caption, hashtag set, and posting record is stored in Supabase. This is what makes the duplicate check possible in the first place, and it gives the client a persistent record of what's been posted, when, and with what content — something the manual process never had.
All five steps run as a single connected workflow in n8n, so a new image goes from raw file to published post with no manual handoff in between. Nobody needs to open Instagram, write a caption, or remember what went out last week — the workflow already knows.
Tools & Stack Used
- n8n — workflow orchestration and automation logic
- OpenAI API — image-aware caption and hashtag generation
- Supabase — data storage, duplicate detection, and posting history
- Meta Graph API — direct publishing to Instagram and Facebook
Outcome
The automation reduced manual posting time by 90%. Work that previously required someone to review each image, write a caption, choose hashtags, and manually publish it is now handled by the workflow end to end. Beyond the time saved, the duplicate-check step meant the client's content delivery stayed consistent and engaging — the account kept posting on schedule without repeating itself or drifting in quality.
Lessons Learned
The duplicate-detection step turned out to matter more than it looked like on paper. It's easy to build a workflow that generates content quickly; it's harder to build one that generates content responsibly at scale. Without a check against what's already been posted, automating caption and hashtag generation just makes it faster to make the same mistake — an account that looks repetitive — rather than solving the underlying problem. Pairing AI generation with a structured backend like Supabase, instead of running the workflow off ad-hoc scripts or in-memory state, is what made that check possible in the first place, and it's the difference between an automation that works once and one that holds up over months of continuous posting.
If your team is still writing captions and hitting publish by hand, this same pattern — AI-generated content, duplicate protection, and direct publishing — can be built around your own accounts. Book a free automation audit and we'll map out what that would look like for your business.