with one click
meta-ads
// Meta Ads management and reporting — daily checks, campaign performance, creative fatigue, bleeders, winners. Wraps social-cli for Facebook/Instagram ads. The '5 Daily Questions' that replace Ads Manager.
// Meta Ads management and reporting — daily checks, campaign performance, creative fatigue, bleeders, winners. Wraps social-cli for Facebook/Instagram ads. The '5 Daily Questions' that replace Ads Manager.
Meta Pixel + Conversions API (CAPI) setup, audit, testing, and EMQ optimization. Covers browser pixel installation, server-side CAPI implementation, deduplication, advanced matching, and Event Match Quality scoring across all major platforms.
Push ad copy and images to Meta via Graph API — no Ads Manager required. Uploads images, builds asset_feed_spec creatives, and creates or refreshes ads in existing ad sets. Downstream of ad-copy-generator.
Generate high-converting Meta ad copy matched to specific image creatives. Analyzes visuals, writes copy that reinforces the image, cross-references account performance data, and outputs asset_feed_spec-ready variants.
Track creative performance over time and detect fatigue before it kills ROAS. Monitors CTR decay, frequency creep, and CPC inflation at the ad level.
Analyze spend efficiency across campaigns and adsets. Recommends budget shifts from underperformers to winners.
| name | meta-ads |
| description | Meta Ads management and reporting — daily checks, campaign performance, creative fatigue, bleeders, winners. Wraps social-cli for Facebook/Instagram ads. The '5 Daily Questions' that replace Ads Manager. |
| metadata | {"openclaw":{"emoji":"📣","user-invocable":true,"requires":{"tools":["social"],"env":[]}}} |
Stop clicking through Ads Manager. This skill wraps social-cli to give you the five things that actually matter about your Meta campaigns — in plain text, every day.
The thesis: 90% of ad management is pattern recognition. Spend trending up or down. CTR declining (creative fatigue). CPA spiking (audience exhaustion). Winners emerging. Losers bleeding.
This skill spots the patterns. You make the calls.
Read workspace/brand/ per the _vibe-system protocol
Follow all output formatting rules from the _vibe-system output format
Reads: stack.md, creative-kit.md, audience.md, learnings.md (all optional)
| File | What it provides | How it shapes output |
|---|---|---|
workspace/brand/stack.md | Stored ad account ID, target CPA/ROAS | Auto-fills account, benchmarks performance against targets |
workspace/brand/creative-kit.md | Brand creative guidelines, assets | Context for creative recommendations |
workspace/brand/audience.md | Target audience profiles | Interprets audience performance data |
workspace/brand/learnings.md | Past performance patterns | Spots recurring issues — "this happened last month too" |
| File | What it contains |
|---|---|
workspace/brand/stack.md | Stores ad account ID on first use |
workspace/brand/learnings.md | Appends performance findings, fatigue patterns, winning creative traits |
npm install -g @vishalgojha/social-cli
social auth login
# Opens browser → approve → done
Or with app credentials:
social auth set-app --app-id YOUR_APP_ID --app-secret YOUR_APP_SECRET
social auth login --scopes ads_read,ads_management,read_insights
social marketing accounts # Lists your ad accounts
social marketing set-default-account act_123456
Or set env: export META_AD_ACCOUNT=act_123456
The core of the system. Five questions that replace 20 minutes of Ads Manager clicking:
Tell me: "Daily ads check"
Or: "Run the 5 questions on my ads"
Or: "How are my Meta ads doing?"
Script: scripts/meta-ads.sh daily-check
Account-level summary with campaign breakdown.
Tell me: "Meta ads overview for last 30 days"
Script: scripts/meta-ads.sh overview --preset last_30d
List campaigns, optionally filtered by status.
Tell me: "Show me active campaigns"
Script: scripts/meta-ads.sh campaigns --status ACTIVE
Ad-level performance ranked by results.
Tell me: "What are my best performing ads?"
Script: scripts/meta-ads.sh top-creatives --preset last_7d
Ads with high spend but poor performance — candidates for pause. Flags ads with CTR < 1% or frequency > 3.5.
Tell me: "Any ads bleeding money?"
Or: "Find underperforming ads"
Script: scripts/meta-ads.sh bleeders --preset last_7d
Top performing ads by CTR and efficiency. These are your scale candidates.
Tell me: "Which ads should I scale?"
Or: "Show me the winners"
Script: scripts/meta-ads.sh winners --preset last_7d
Daily breakdown to spot creative fatigue — CTR declining day-over-day, frequency climbing, CPC rising.
Tell me: "Any creative fatigue?"
Or: "Check for ad fatigue"
Script: scripts/meta-ads.sh fatigue-check
Full control. Specify level, fields, breakdowns.
Tell me: "Show me ad performance broken down by age and gender"
Script: scripts/meta-ads.sh custom --level ad --fields "ad_name,spend,ctr,cpc" --breakdowns "age,gender"
today — Today onlyyesterday — Yesterday onlylast_7d — Last 7 days (default for most reports)last_30d — Last 30 dayslast_90d — Last 90 daysBeyond reporting, social-cli can take action. These are wrapped here for the "AI ad manager" workflow but require explicit approval.
social marketing pause ad AD_ID
social marketing resume ad AD_ID
social marketing set-budget adset ADSET_ID --daily-budget 5000 # in cents
Safety: All mutating actions are high-risk in social-cli and require confirmation. The skill should ALWAYS present findings and recommendations first, then ask for explicit approval before taking action.
This is the system from the newsletter. Here's how it works in practice:
Morning (automated via cron):
You (2 minutes over coffee):
The AI (on approval):
When the user asks about Meta ads, Facebook ads, Instagram ads, or campaign performance:
workspace/brand/stack.md for stored ad account IDMETA_AD_ACCOUNT env varsocial marketing accounts to list available accountsworkspace/brand/learnings.mdWhen running daily-check, frame the output around these questions:
/ga4-report — See what Meta traffic actually does on your site. Pair with ads data to find true ROAS./gsc-report — Cross-reference paid vs organic. Are you paying for traffic you'd get free?/creative — Generate new ad creatives when fatigue hits. Feed winning patterns into new concepts./direct-response-copy — Write ad copy based on what's actually converting.