$npx -y skills add fdarkaou/genviral-skill --skill meta-adsAutonomous Meta Ads manager AND campaign builder. Two modes: (1) Daily ops - monitor campaigns, auto-pause bleeders, shift budget to winners, generate copy, deliver morning brief. (2) /meta-campaign - 8-stage campaign builder that takes a landing page URL and produces upload-read
| 1 | # Meta Ads Skill |
| 2 | |
| 3 | An [OpenClaw](https://openclaw.ai) skill for autonomous Meta Ads management and campaign building. |
| 4 | |
| 5 | **Companion skill:** [genviral-skill](https://github.com/fdarkaou/genviral-skill) — image generation in Stage 7 uses the [Genviral Studio API](https://genviral.io). |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Two Modes |
| 10 | |
| 11 | ### Mode 1: Daily Ops |
| 12 | Automated monitoring, optimization, copy generation, morning brief. |
| 13 | |
| 14 | ```bash |
| 15 | bash scripts/run_all.sh genviral # full pipeline |
| 16 | bash scripts/run_all.sh --dry-run # no mutations |
| 17 | python3 scripts/health_check.py --product genviral --days 7 |
| 18 | python3 scripts/auto_optimize.py --product genviral --dry-run |
| 19 | python3 scripts/copy_generator.py --product genviral --count 5 |
| 20 | ``` |
| 21 | |
| 22 | ### Mode 2: /meta-campaign — Campaign Builder |
| 23 | |
| 24 | 8-stage workflow: **URL → research → strategy → creatives → upload** |
| 25 | |
| 26 | Images generated via **[Genviral Studio API](https://genviral.io)** (`google/nano-banana-2` by default). |
| 27 | |
| 28 | ```bash |
| 29 | # Full campaign (interactive) |
| 30 | python3 campaign/scripts/orchestrate.py --url https://yourproduct.com --product my-product |
| 31 | |
| 32 | # Generate creatives after strategy approval |
| 33 | python3 campaign/scripts/generate_creatives.py --rundir campaign/runs/my-product-2026-03-02/ --all |
| 34 | |
| 35 | # Single ad set |
| 36 | python3 campaign/scripts/generate_creatives.py \ |
| 37 | --rundir campaign/runs/my-product-2026-03-02/ \ |
| 38 | --ad-set ad-set-01-comparison |
| 39 | |
| 40 | # Use higher quality model |
| 41 | python3 campaign/scripts/generate_creatives.py \ |
| 42 | --rundir campaign/runs/my-product-2026-03-02/ --all --pro |
| 43 | |
| 44 | # Upload to Meta |
| 45 | python3 campaign/scripts/upload_to_meta.py \ |
| 46 | --rundir campaign/runs/my-product-2026-03-02/ --product my-product |
| 47 | ``` |
| 48 | |
| 49 | --- |
| 50 | |
| 51 | ## The 8 Stages |
| 52 | |
| 53 | | # | Stage | Mode | What happens | |
| 54 | |---|-------|------|--------------| |
| 55 | | 1 | LP Analysis | Auto | Scrapes landing page, extracts brand identity | |
| 56 | | 2 | Deep Interview | Human | 5 strategic questions about your product + audience | |
| 57 | | 3 | Customer Roleplay | Opus sub-agent | AI becomes the ideal buyer — writes first-person pain, language, fears | |
| 58 | | 4 | Market Research | Opus sub-agent (parallel) | Forum and community language mining, competitor review patterns | |
| 59 | | 5 | Competitor Analysis | Auto | Meta Ad Library patterns | |
| 60 | | 6 | Campaign Strategy | **Approval gate** | 4-5 scored angles + ad set architecture | |
| 61 | | 7 | Creative Generation | **Approval gate** | Images via Genviral Studio + copy per ad set | |
| 62 | | 8 | Upload | **Approval gate** | Upload to Meta Ads Manager, all ads paused by default | |
| 63 | |
| 64 | --- |
| 65 | |
| 66 | ## Ad Creative Formats (Stage 7) |
| 67 | |
| 68 | 8 formats generated per ad set via Genviral's AI image models: |
| 69 | |
| 70 | | Format | File | Best for | |
| 71 | |--------|------|----------| |
| 72 | | Comparison table | `image-01-comparison.png` | Tool consolidation, pricing angles | |
| 73 | | Apple Notes style | `image-02-apple-notes.png` | Tips, insider knowledge | |
| 74 | | Quote card | `image-03-quotes.png` | Testimonials, social proof | |
| 75 | | Handwriting | `image-04-handwriting.png` | Founder voice, contrarian takes | |
| 76 | | Notification mockup | `image-05-notification.png` | Automation wins, "while you slept" | |
| 77 | | iMessage thread | `image-06-imessage.png` | Conversation hooks | |
| 78 | | Stats wall | `image-07-stats.png` | Credibility, numbers | |
| 79 | | Before/after | `image-08-before-after.png` | Transformation angles | |
| 80 | |
| 81 | --- |
| 82 | |
| 83 | ## Setup |
| 84 | |
| 85 | ### 1. Meta Graph API token |
| 86 | |
| 87 | ```bash |
| 88 | cp config.example.yaml config.yaml |
| 89 | # Edit config.yaml — add your access_token and product details |
| 90 | ``` |
| 91 | |
| 92 | Get a token: `business.facebook.com → Settings → System Users → Generate Token` |
| 93 | Required permissions: `ads_management`, `ads_read`, `pages_manage_ads`, `business_management` |
| 94 | |
| 95 | ### 2. Genviral API key (for image generation) |
| 96 | |
| 97 | ```bash |
| 98 | export GENVIRAL_API_KEY="your_key_here" |
| 99 | ``` |
| 100 | |
| 101 | Get a key at [genviral.io](https://genviral.io). Uses Studio credits. |
| 102 | Models: `google/nano-banana-2` (default, 1 credit) · `google/nano-banana-pro` (2 credits, `--pro` flag) |
| 103 | |
| 104 | ### 3. Install deps |
| 105 | |
| 106 | ```bash |
| 107 | pip3 install pyyaml |
| 108 | ``` |
| 109 | |
| 110 | ### 4. Test |
| 111 | |
| 112 | ```bash |
| 113 | python3 scripts/health_check.py --product my-product |
| 114 | python3 campaign/scripts/lp_analyzer.py --url https://yourproduct.com --output /tmp/test/ |
| 115 | python3 campaign/scripts/generate_creatives.py --rundir /tmp/test/ --ad-set ad-set-01 --dry-run |
| 116 | ``` |
| 117 | |
| 118 | --- |
| 119 | |
| 120 | ## File Structure |
| 121 | |
| 122 | ``` |
| 123 | meta-ads-skill/ |
| 124 | SKILL.md ← This file (OpenClaw skill descriptor) |
| 125 | config.example.yaml ← Template — copy to config.yaml (gitignored) |
| 126 | config.yaml ← YOUR config (gitignored, never commit) |
| 127 | |
| 128 | scripts/ ← Daily ops |
| 129 | meta_api.py ← Meta Graph API wrapper |
| 130 | health_check.py |