Vibe Marketing: How I Run Meta Ads with Manus and a GitHub Repo
I built a loop where AI generates ad creatives, tests them on Meta, and tells me what's working. Three iterations in, my cost per result is a third of industry average.
For ten months, one person ran Anthropic’s entire growth marketing operation. Not because of budget constraints. Anthropic could hire any team they wanted. One person with the right AI toolkit was just more effective than a team without one.
Austin Lau, a non-technical marketer who had to Google how to open Terminal, built an AI toolkit that turned two hours of ad creation and iteration into fifteen minutes. Paid search, paid social, email, SEO. All solo. The toolkit handled the volume. He focused on the decisions.
I’m a bootstrapped solopreneur, not Anthropic. I can’t afford the team. But the lesson is the same: build the toolkit and let it handle the volume. So I started building my own version of that loop, using Manus instead of Claude Code because of its direct connection to Meta’s ad platform.
The System
I tried Claude first to generate some ad assets. It worked, but then I found Manus. It connects directly to Meta’s ad platform and to my GitHub repo. That meant the whole loop without me building the integrations.
Here’s how the creative pipeline works. I have HTML templates, one per card type: comparison tables, problem statements, product spotlights, direct challenges. Brand colors, fonts, and copy all live in a single JSON config file called variants.json. When I want a new variant, I don’t touch the template. I add an override entry: take this base card, swap these fields. The config is the single source of truth.
The repo looks like this:
ad-creatives/
├── variants.json ← single source of truth
├── templates/ ← HTML, one per card type
├── render.py ← renders HTML → PNG
└── cards/ ← generated PNGs
Variant experiments in variants.json look like this:
{
"variants": {
"v1-direct": {
"hypothesis": "Direct challenge outperforms question",
"base": "ad-card",
"overrides": { "headline": "Your ads aren't working." }
},
"v2-question": {
"hypothesis": "Questions create curiosity gaps",
"base": "ad-card",
"overrides": { "headline": "What if your ads actually worked?" }
}
}
}
Each variant has a hypothesis. That’s what makes this a test instead of a random shuffle.
A simple script renders each card to a PNG. Every variant, every copy change, every color tweak is a commit. Git log is the creative decision log.
I give Manus the GitHub repo and ask for three variant ad creatives. It has the full context: the website, the existing templates, the brand tokens. If the variants make sense and the PNGs look good, I merge and upload.
The Loop
Every cycle starts with me. I ask Manus what’s working, it pulls the performance data from Meta, and tells me what to kill and what to double down on. Then it generates the next batch of variants based on what’s working.
Three iterations deep. $0.15 cost per result, a third of the industry average. About an hour of hands-on time every couple of days.
Winning categories are starting to emerge. The comparison table cards keep beating the product spotlights. Direct problem framing keeps beating aspirational copy. The signal gets stronger each cycle because Manus feeds the previous round’s results into the next round’s decisions.
Try It Yourself
It’s not polished. Manus sometimes duplicates entire templates instead of using the override pattern, and sometimes the “variants” are just word swaps with no real hypothesis behind them. I end up cleaning up after it. The upload to Meta is still manual.
But before this, my options were to learn marketing from scratch, hire someone I couldn’t yet justify, or hand it to an agency that charges monthly and shows you a dashboard you don’t trust. Now I have a repo, a loop, and an hour every few days.
If you want to try something similar, the pieces are: Manus for the Meta Ads integration, HTML templates for your creative, a render script, and a GitHub repo to version-control the whole thing. Here’s a prompt to kick off the first cycle:
Start with three variants and 48 hours. See what the data says.