meta-ads

SKILL.md

Meta Ads Skill

An OpenClaw skill for autonomous Meta Ads management and campaign building.

Companion skill: genviral-skill — image generation in Stage 7 uses the Genviral Studio API.


Two Modes

Mode 1: Daily Ops

Automated monitoring, optimization, copy generation, morning brief.

bash scripts/run_all.sh genviral          # full pipeline
bash scripts/run_all.sh --dry-run         # no mutations
python3 scripts/health_check.py --product genviral --days 7
python3 scripts/auto_optimize.py --product genviral --dry-run
python3 scripts/copy_generator.py --product genviral --count 5

Mode 2: /meta-campaign — Campaign Builder

8-stage workflow: URL → research → strategy → creatives → upload

Images generated via Genviral Studio API (google/nano-banana-2 by default).

# Full campaign (interactive)
python3 campaign/scripts/orchestrate.py --url https://yourproduct.com --product my-product

# Generate creatives after strategy approval
python3 campaign/scripts/generate_creatives.py --rundir campaign/runs/my-product-2026-03-02/ --all

# Single ad set
python3 campaign/scripts/generate_creatives.py \
  --rundir campaign/runs/my-product-2026-03-02/ \
  --ad-set ad-set-01-comparison

# Use higher quality model
python3 campaign/scripts/generate_creatives.py \
  --rundir campaign/runs/my-product-2026-03-02/ --all --pro

# Upload to Meta
python3 campaign/scripts/upload_to_meta.py \
  --rundir campaign/runs/my-product-2026-03-02/ --product my-product

The 8 Stages

# Stage Mode What happens
1 LP Analysis Auto Scrapes landing page, extracts brand identity
2 Deep Interview Human 5 strategic questions about your product + audience
3 Customer Roleplay Opus sub-agent AI becomes the ideal buyer — writes first-person pain, language, fears
4 Market Research Opus sub-agent (parallel) Reddit + forum language mining, competitor review patterns
5 Competitor Analysis Auto Meta Ad Library patterns
6 Campaign Strategy Approval gate 4-5 scored angles + ad set architecture
7 Creative Generation Approval gate Images via Genviral Studio + copy per ad set
8 Upload Approval gate Upload to Meta Ads Manager, all ads paused by default

Ad Creative Formats (Stage 7)

8 formats generated per ad set via Genviral's AI image models:

Format File Best for
Comparison table image-01-comparison.png Tool consolidation, pricing angles
Apple Notes style image-02-apple-notes.png Tips, insider knowledge
Quote card image-03-quotes.png Testimonials, social proof
Handwriting image-04-handwriting.png Founder voice, contrarian takes
Notification mockup image-05-notification.png Automation wins, "while you slept"
iMessage thread image-06-imessage.png Conversation hooks
Stats wall image-07-stats.png Credibility, numbers
Before/after image-08-before-after.png Transformation angles

Setup

1. Meta Graph API token

cp config.example.yaml config.yaml
# Edit config.yaml — add your access_token and product details

Get a token: business.facebook.com → Settings → System Users → Generate Token Required permissions: ads_management, ads_read, pages_manage_ads, business_management

2. Genviral API key (for image generation)

export GENVIRAL_API_KEY="your_key_here"

Get a key at genviral.io. Uses Studio credits. Models: google/nano-banana-2 (default, 1 credit) · google/nano-banana-pro (2 credits, --pro flag)

3. Install deps

pip3 install pyyaml

4. Test

python3 scripts/health_check.py --product my-product
python3 campaign/scripts/lp_analyzer.py --url https://yourproduct.com --output /tmp/test/
python3 campaign/scripts/generate_creatives.py --rundir /tmp/test/ --ad-set ad-set-01 --dry-run

File Structure

meta-ads-skill/
  SKILL.md                      ← This file (OpenClaw skill descriptor)
  config.example.yaml           ← Template — copy to config.yaml (gitignored)
  config.yaml                   ← YOUR config (gitignored, never commit)

  scripts/                      ← Daily ops
    meta_api.py                 ← Meta Graph API wrapper
    health_check.py             ← Campaign health (5 key questions)
    auto_optimize.py            ← Auto-pause bleeders, scale winners
    copy_generator.py           ← Generate copy variations from top performers
    ad_uploader.py              ← Upload ads to Meta
    morning_brief.py            ← Compile + send morning brief
    run_all.sh                  ← Full pipeline runner

  campaign/                     ← /meta-campaign builder
    scripts/
      orchestrate.py            ← Main entry point
      lp_analyzer.py            ← Stage 1: LP scraping + brand extraction
      ad_library.py             ← Stage 5: Meta Ad Library research
      generate_creatives.py     ← Stage 7: Image gen via Genviral Studio
      upload_to_meta.py         ← Stage 8: Upload creatives to Meta
    references/
      stage-prompts.md          ← Opus sub-agent prompts (stages 3+4)
      creative-formats.md       ← Image format templates + copy.md template
      genviral-config.md        ← Example product config (customize for yours)

  campaign/runs/                ← YOUR campaign output (gitignored)
  data/                         ← YOUR campaign data/history (gitignored)

Keeping Your Local Copy in Sync

This repo uses a public code / private data split. Your campaign runs and config are gitignored and stay local.

# Pull latest skill updates without touching your data
git pull origin main

# Your campaign/runs/, data/, and config.yaml are safe — they're gitignored

Related

  • genviral-skill — full Genviral Partner API skill (scheduling, analytics, content pipeline, Studio image/video gen)
  • Genviral — the platform powering image generation in Stage 7
  • OpenClaw — the agent runtime this skill is built for
Weekly Installs
1
GitHub Stars
1
First Seen
6 days ago
Installed on
amp1
cline1
openclaw1
opencode1
cursor1
kimi-cli1