Social media posting automation
Scheduled Facebook and Instagram posts generated from your catalogue, with safety checks.
We built a tool that turns one product link into a complete Facebook and Instagram traffic campaign: it reads the product and its offers, checks them against written rules, draws the ad picture and video, writes the texts, sets the audience and creates the campaign through the Meta Marketing API, paused, for a person to approve.
Offer checks, the generated creative, budget and dates, audience and a final preview, in the real tool running in trial mode.
The real local tool in trial mode, with one real product snapshot. Nothing was published; tracking codes redacted. Synthetic English voice (Microsoft Edge TTS), English subtitles in the picture.
You paste a product address from Raftul copiilor or Cumpără cu AI. The tool reads the product, every shop’s offer and the observed price history straight from the site’s database, read-only. It picks the offer worth advertising, scores it against the owner’s guidelines for a profitable product ad, and opens a single confirm page with everything Meta would receive: picture, video, texts, budget, dates, audience and link.
Nothing reaches Meta until Create campaign is pressed. A trial mode shows exactly what would be sent and sends nothing. After launch, the tool keeps checking that the advertised offer is still true, at the advertised price, and says so when it is not.







The confirm page opens with a plain question: is this product worth promoting? Each rule from the owner’s written guidelines that the data can answer gets a tick or a warning: a price between 20 and 250 lei (under about 150 lei an ad rarely pays for itself from the commission), a fall of at least 40% against the shop’s previous price and against what we observed, the child’s age, a usable photo, words Meta restricts, a promotion ending at least 10 days away, and any campaign already run for the same product.
Warnings inform, they do not block: the person decides. What may not be advertised at all, such as a shop whose affiliate programme declines Facebook ads, is refused before the page opens. A live run also requires the child’s age from the shop’s page and a ticked “I checked the shop’s page”: stock, sizes and the promotion’s end.

Every ad picture is drawn by code at 1080×1350, Meta’s tallest feed shape, from the shop’s own product photo and the offer as it reads at that moment. The crossed-out price is always the shop’s own previous price from its feed, never one we estimated, and the picture says whose it is. The percentage is rounded down. With no previous price from the shop, the ad shows the price alone.
Every text carries “Affiliate link: we earn a commission if you buy” and “Price and stock can change at any time.” Meta’s creative enhancements and multi-advertiser ads are switched off, so the price is never cropped and the claim never rewritten; Audience Network and Messenger placements are left out to avoid accidental clicks.






A product can also get a video ad: motion graphics over the shop’s photos, rendered frame by frame with Pillow and encoded with FFmpeg. A storyboard, written by a person or an AI agent from what the shop’s page says, lists scenes such as advent doors opening on a photo, a product card with a sticker, callouts pointing at what is in the box, and a calendar leaf counting days.
The last scene is never written in the storyboard: the price, the shop’s previous price and “Order at <shop>” are taken from the offer a campaign would use right now. A video that quotes another price or shop than the current offer is refused on the confirm page. The same storyboard renders at 1080×1920 for Reels, Stories and TikTok, with the text kept out of the areas those apps cover with captions and buttons.
Rendered by the ad tool (Pillow frames, FFmpeg) from a storyboard and the shop’s product photos, then used for campaign rfa7. Music-box “Jingle Bells” (1857, public domain) generated in code. No generative-AI footage, no voice.
Rendered by the same code with one switch (--vertical). Not an ad: nothing is sent to Meta. Public-domain tune generated in code.
For children’s products the audience starts from the age the shop states, such as “3-5”, “6+” or “0-12 months”. The owner’s working hypothesis, labelled as one on the page: mothers who shop online had their child at 25 to 40, so for a child of X years the ad targets women aged 25+X to 40+X. Meta’s parent groups are chosen by months, not rounded years, so for a 0-6 month toy the tool asks only for parents of babies.
Parents and interests are requested as separate blocks, so the tool never asks for people by an interest alone. Cities each have their own radius (Bucharest 40 km, others 20 km) and Advantage+ audience is off, so age, gender and cities are sent as limits. Meta still treats parent groups and interests as a suggestion: for landing-page-view and link-click optimisation it may widen detailed targeting, so they guide delivery rather than close it. The confirm page says so in one sentence, and the live ad sets’ settings have not been checked against this.

Meta once restricted the owner’s Page posting. Whatever the cause, the tool keeps its own footprint small and stops when Meta objects. No setting can guarantee an account is never restricted; these are the controls in place:

Every campaign leaves a record kept in git: the picture and video that ran, the texts, budget, dates, audience, placements and Meta’s ids, with changes made later in Ads Manager kept beside the creation snapshot. A new campaign for a product advertised in the last 14 days needs an explicit “create anyway”, and an earlier campaign can be used as a starting point for budget, duration and audience.
An offer check reads only our own site and looks for the exact offer the ad advertises: another shop selling the same product cheaper does not make the ad right. It can run every two hours as a user timer and sends a desktop notification only when something changed. It never pauses a campaign itself: a person does, in Ads Manager.
| Finding | Meaning |
|---|---|
| OK | The offer is on our page at the ad’s price. |
| Price higher / lower | The price differs from the ad’s, compared to the bani. |
| Unavailable | Our page no longer shows that offer: stock, not seen for 3 days, dead link or shop switched off. |
| Previous price changed | The shop’s previous price, which the ad quotes, is no longer the shop’s. |
| Stale data | No import confirmed the offer in 36 hours. |
| Shop no longer accepts | The shop’s programme no longer allows Facebook ads. |

Paid ads are one half. The same products also reach people through automatic Facebook and Instagram posts made from the night’s real price drops.
This is an internal tool for our own affiliate sites, used for a handful of small test campaigns. We publish no spend, click or sales figures, and we do not claim it makes ads profitable: it makes them faster to build, consistent and honest. Meta decides approvals and delivery; no tool can guarantee an ad account is never restricted.
Yes. The Meta Marketing API can create campaigns, ad sets, creatives and ads, upload images and videos, and set targeting. This tool does all of that in one run, after a person has reviewed everything on a confirm page.
Catalogue ads let Meta choose products and assemble the creative. This tool is the opposite: a person chooses one product, the claim is checked against your own data, and Meta’s automatic enhancements are switched off, so the price and the wording stay exactly as approved.
No setting can promise that; Meta decides. What software can do is behave like a careful person: few, bounded requests, campaigns created paused, respect for Meta’s usage headers, and a full stop on any block until a human looks.
Only where the merchant’s affiliate programme accepts Facebook ads as a traffic source, and with clear disclosure. The tool records each programme’s answer and refuses shops that decline or have not been checked.
The ad texts and pictures are filled from verified data by templates, so they never state a price the data does not support. A video storyboard can be drafted by an AI agent from the shop’s own description, and a person approves it before rendering.
Yes. We adapt the product source, the rules, the templates and the campaign settings to your business. Start with a short message describing what you advertise and where your product data lives.
Scheduled Facebook and Instagram posts generated from your catalogue, with safety checks.
Scheduled feed imports, matching and valid affiliate links across several networks.
Controlled AI jobs that classify and enrich data, with validation and a hard budget.
Vertical videos and images from real screens, programmed motion and AI voices.
Web applications and internal tools, from discovery to a maintained first release.
Price history, charts and drop detection from authorised data, with alert hooks.
Tell us what you sell and where your product data lives. We reply personally and say honestly whether automation will pay off.