Meta ads skill

Plan and create Meta (Facebook + Instagram) advertising campaigns end-to-end via the Hyper MCP, defaulting to Advantage+ automation.

by hyperfx-ai·MIT license·GitHub ↗

★ 90 Stars on the repo·Checked

npx degit hyperfx-ai/marketing-skills/skills/meta-ads#main ~/.claude/skills/meta-ads-2

SKILL.md · 10.4 KB · installs the whole folder to ~/.claude/skills/meta-ads-2

Files of Meta ads

Files 1 file
Show the full text130 lines

Meta Ads

Strategic guide for creating and managing Meta advertising campaigns, analyzing performance, and building dashboards from cached data. Default to Advantage+ unless the user explicitly requests manual control.

Out of scope — defer to other skills

Request Send them to
Competitor or public ad research (Meta Ads Library) meta-ads-library
Ad creative generation (images, copy variants) ad-creative-generation
Google Ads campaigns google-ads
Pinterest / TikTok / Amazon paid campaigns pinterest-ads, tiktok-ads, amazon-ads

Requirements

  • Hyper MCP installed and connected. https://app.hyperfx.ai/mcp
  • Meta Business integration connected (Facebook + Instagram, with at least one ad account and one Page) at https://app.hyperfx.ai/apps.
  • Firecrawl integration connected for site research and screenshot grounding (discovery phase).

If search("meta_ads_adaccount_list") does not find meta_ads_adaccount_list, stop and tell the user to enable Hyper MCP and connect Meta Business.

If you suspect a connection issue (missing ad accounts, page publishing failures, or permission errors), call meta_ads_health_check() and report the diagnostics before proceeding.

How to run the tools in this skill

Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:

Surface Find a tool Run it
MCP client (Claude, Cursor, Codex, ChatGPT) search("<what you want to do>"), then describe("<name>") call("<name>", {...})
Hyper CLI hyperai search "<what you want to do>", then hyperai describe <name> hyperai call <name> --json '{...}'

If a tool is not found, its integration is not connected or not enabled for the workspace: stop and tell the user which integration to connect.

Tool names

Use the exact tool name from your connected tool list. Canonical names are meta_ads_* (listed below). On Hyper platform chat, legacy meta_business_* names (e.g. meta_ads_adaccount_list) and the retired plural names (e.g. meta_ads_campaign_create) resolve to the same tools via aliases — if a call fails with "tool not found", search the live catalog for the canonical name.

Group Tools
Discovery meta_ads_adaccount_list, meta_ads_owned_pages_list, meta_ads_pages_search, meta_accounts_list, meta_ads_instagram_accounts_list
Health & sync meta_ads_health_check, meta_ads_health_get
Tracking assets meta_ads_ad_pixels_list, meta_ads_ad_pixels_get, meta_ads_custom_audiences_list, meta_ads_lookalike_audiences_list, meta_ads_targeting_search
Step-by-step creation (preferred) meta_ads_campaign_create, meta_ads_adset_create, meta_ads_ad_create, meta_ads_ad_images_upload, meta_ads_creative_create
Read & preview meta_ads_campaign_get, meta_ads_campaigns_search, meta_ads_adset_list, meta_ads_ad_list, meta_ads_ad_get, meta_ads_ad_previews_get
Insights & dashboards meta_ads_insights_get, data_apps_build, database_query
Launch & edits meta_ads_campaigns_activate, meta_ads_campaign_update, meta_ads_adset_update, meta_ads_ad_update
Automated rules meta_ads_adrule_create, meta_ads_adrule_list, meta_ads_adrule_get, meta_ads_adrule_update, meta_ads_adrule_delete, meta_ads_adrule_history_list
Site research firecrawl_branding_extract, firecrawl_screenshots_create

CLI users: translate tool names with the hyper-cli skill (hyperai search "<tool name>").


Rules that must never be forgotten

BUDGETS IN CENTS: $20.00 = 2000. $5.50 = 550. $100 = 10000. Never pass dollar amounts directly.

ACTIVATE, DON'T UPDATE: Use meta_ads_campaigns_activate(campaign_id) to go live. Never meta_ads_campaign_update(status="ACTIVE") — that silently leaves ad sets and ads PAUSED so nothing serves.

ALWAYS START PAUSED: Create campaigns with status="PAUSED". Never launch live without user review.

BUILD STEP BY STEP: Create campaigns with the individual tools — meta_ads_campaign_create → meta_ads_adset_create → meta_ads_creative_create → meta_ads_ad_create, capturing each id from the previous response. (The old blueprint tools were removed.) The tools validate requests before sending — campaign objective rules, bid-strategy/bid-amount pairing, billing-event/optimization-goal compatibility, budget coherence — but objective-specific ad-set fields (optimization_goal, promoted_object) are YOUR responsibility: match them to the campaign objective using the reference file for the campaign type.

REGULATED ADVERTISERS NEED special_ad_categories: For gambling, financial, housing, employment, credit, or political advertisers, declare the category on meta_ads_campaign_create (e.g. special_ad_categories=["ONLINE_GAMBLING_AND_GAMING"]).

FIXED RUN WINDOWS GO ON THE AD SET: When the user gives a run duration or dates ("run it for 7 days", "through end of month"), set start_time AND end_time (ISO 8601) on meta_ads_adset_create. A daily-budget ad set with no end_time runs continuously until manually paused — the requested window is silently lost.

GROUND COPY IN THE DESTINATION PAGE (RESEARCH FIRST): When the brief centers on a URL ("build a campaign for https://..."), fetch that page FIRST (web_pages_fetch) — before discovery and before writing any copy — and ground ad copy in what the page actually says (product name, value props, offer). Never invent copy for a page you have not read; even when the user supplies exact copy or headlines, fetch the page to verify the destination matches the offer.

EU-TARGETED AD SETS NEED DSA FIELDS: If an ad set targets the EU, set dsa_beneficiary and dsa_payor on meta_ads_adset_create (who benefits from / pays for the ad) — required under the EU Digital Services Act, or delivery is restricted.

UTMs ON EVERY DESTINATION AD (url_tags): Set url_tags (UTM params, e.g. utm_source=meta&utm_medium=paid&utm_campaign=...) on every creative that drives to a destination — downstream measurement (e.g. AppsFlyer + a data warehouse) stitches on these, so an ad without UTMs is effectively unmeasurable. Use the advertiser's canonical template; if you don't have one, ask rather than ship untracked.

See references/constraints.md for the full constraint set.

All reference files live in references/. Read them at references/<file> (e.g. references/discovery.md). They are not in the same directory as this SKILL.md.


Core process

Every task follows this sequence. Do not skip steps.

  1. Identify the goal — creation, analysis, or both?
  2. Check the routing table and read the referenced files before calling any tools
  3. Make a written plan — state campaign type, budget in cents, optimization goal, and sequence of steps; show it before acting
  4. Execute step by step, re-checking references/constraints.md at each creation step
  5. Show ad previews before activation
  6. Activate only when the user approves using meta_ads_campaigns_activate()

Automated / scheduled runs: If there is no user present to interact with (e.g. a scheduled task), skip steps 3 and 6. Do not write a plan and wait for confirmation — proceed directly. Do not activate unless activation was explicitly included in the task instructions.


Routing table

The user wants to… Read these files first
Create a sales / conversion campaign references/discovery.md → references/campaigns/sales.md
Create a leads campaign references/discovery.md → references/campaigns/leads.md
Create a traffic campaign references/discovery.md → references/campaigns/traffic.md
Create an awareness or engagement campaign references/discovery.md → references/campaigns/awareness-engagement.md
Create an app promotion campaign references/discovery.md → references/campaigns/app-promotion.md
Create a campaign (any objective) references/discovery.md → the matching references/campaigns/*.md above, then build step by step
Analyze performance / query insights references/analytics.md
Audit an account / find optimization opportunities references/account-audit.md
Set up automated rules (auto-pause, budget guards, alerts) references/automated-rules.md
Build a Meta dashboard or data app references/analytics.md → references/dashboards.md
Analyze performance, then create a campaign references/analytics.md → references/discovery.md → relevant campaign file
Build a funnel / multiple campaigns at once (TOF/MOF/BOF) references/multi-campaign-funnel.md → references/discovery.md → per-tier campaign files
Objective not yet known references/discovery.md — discovery clarifies the goal

Worked examples

1---
2name: meta-ads
3description: Plan and create Meta (Facebook + Instagram) advertising campaigns end-to-end via the Hyper MCP, defaulting to Advantage+ automation. Use when the user wants to launch Meta ads, Facebook ads, Instagram ads, Advantage+ campaigns, carousel ads, dynamic creative ads, set up Meta conversion tracking, analyze performance, audit a Meta ads account, or build Meta performance dashboards. Also triggers on phrases like meta campaign, facebook campaign, advantage+, or meta account audit.
4requires_toolkits:
5 - meta_ads
6 - meta_business
7icon: meta_ads
8short_description: Plan and create Meta ad campaigns with Advantage+ defaults, audits, and dashboards.
9---
10 
11# Meta Ads
12 
13Strategic guide for creating and managing Meta advertising campaigns, analyzing performance, and building dashboards from cached data. **Default to Advantage+** unless the user explicitly requests manual control.
14 
15## Out of scope — defer to other skills
16 
17| Request | Send them to |
18| --- | --- |
19| Competitor or public ad research (Meta Ads Library) | `meta-ads-library` |
20| Ad creative generation (images, copy variants) | `ad-creative-generation` |
21| Google Ads campaigns | `google-ads` |
22| Pinterest / TikTok / Amazon paid campaigns | `pinterest-ads`, `tiktok-ads`, `amazon-ads` |
23 
24## Requirements
25 
26- **Hyper MCP installed and connected.** [https://app.hyperfx.ai/mcp](https://app.hyperfx.ai/mcp)
27- **Meta Business integration connected** (Facebook + Instagram, with at least one ad account and one Page) at [https://app.hyperfx.ai/apps](https://app.hyperfx.ai/apps).
28- **Firecrawl integration connected** for site research and screenshot grounding (discovery phase).
29 
30If `search("meta_ads_adaccount_list")` does not find `meta_ads_adaccount_list`, stop and tell the user to enable Hyper MCP and connect Meta Business.
31 
32If you suspect a connection issue (missing ad accounts, page publishing failures, or permission errors), call `meta_ads_health_check()` and report the diagnostics before proceeding.
33 
34### How to run the tools in this skill
35 
36Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:
37 
38| Surface | Find a tool | Run it |
39| --- | --- | --- |
40| MCP client (Claude, Cursor, Codex, ChatGPT) | `search("<what you want to do>")`, then `describe("<name>")` | `call("<name>", {...})` |
41| Hyper CLI | `hyperai search "<what you want to do>"`, then `hyperai describe <name>` | `hyperai call <name> --json '{...}'` |
42 
43If a tool is not found, its integration is not connected or not enabled for the workspace: stop and tell the user which integration to connect.
44 
45## Tool names
46 
47Use the **exact tool name from your connected tool list**. Canonical names are `meta_ads_*` (listed below). On Hyper platform chat, legacy `meta_business_*` names (e.g. `meta_ads_adaccount_list`) and the retired plural names (e.g. `meta_ads_campaign_create`) resolve to the same tools via aliases — if a call fails with "tool not found", search the live catalog for the canonical name.
48 
49| Group | Tools |
50| --- | --- |
51| Discovery | `meta_ads_adaccount_list`, `meta_ads_owned_pages_list`, `meta_ads_pages_search`, `meta_accounts_list`, `meta_ads_instagram_accounts_list` |
52| Health & sync | `meta_ads_health_check`, `meta_ads_health_get` |
53| Tracking assets | `meta_ads_ad_pixels_list`, `meta_ads_ad_pixels_get`, `meta_ads_custom_audiences_list`, `meta_ads_lookalike_audiences_list`, `meta_ads_targeting_search` |
54| Step-by-step creation (preferred) | `meta_ads_campaign_create`, `meta_ads_adset_create`, `meta_ads_ad_create`, `meta_ads_ad_images_upload`, `meta_ads_creative_create` |
55| Read & preview | `meta_ads_campaign_get`, `meta_ads_campaigns_search`, `meta_ads_adset_list`, `meta_ads_ad_list`, `meta_ads_ad_get`, `meta_ads_ad_previews_get` |
56| Insights & dashboards | `meta_ads_insights_get`, `data_apps_build`, `database_query` |
57| Launch & edits | `meta_ads_campaigns_activate`, `meta_ads_campaign_update`, `meta_ads_adset_update`, `meta_ads_ad_update` |
58| Automated rules | `meta_ads_adrule_create`, `meta_ads_adrule_list`, `meta_ads_adrule_get`, `meta_ads_adrule_update`, `meta_ads_adrule_delete`, `meta_ads_adrule_history_list` |
59| Site research | `firecrawl_branding_extract`, `firecrawl_screenshots_create` |
60 
61CLI users: translate tool names with the `hyper-cli` skill (`hyperai search "<tool name>"`).
62 
63---
64 
65## Rules that must never be forgotten
66 
67> **BUDGETS IN CENTS**: $20.00 = 2000. $5.50 = 550. $100 = 10000. Never pass dollar amounts directly.
68 
69> **ACTIVATE, DON'T UPDATE**: Use `meta_ads_campaigns_activate(campaign_id)` to go live. Never `meta_ads_campaign_update(status="ACTIVE")` — that silently leaves ad sets and ads PAUSED so nothing serves.
70 
71> **ALWAYS START PAUSED**: Create campaigns with `status="PAUSED"`. Never launch live without user review.
72 
73> **BUILD STEP BY STEP**: Create campaigns with the individual tools — `meta_ads_campaign_create` → `meta_ads_adset_create` → `meta_ads_creative_create` → `meta_ads_ad_create`, capturing each id from the previous response. (The old blueprint tools were removed.) The tools validate requests before sending — campaign objective rules, bid-strategy/bid-amount pairing, billing-event/optimization-goal compatibility, budget coherence — but objective-specific ad-set fields (`optimization_goal`, `promoted_object`) are YOUR responsibility: match them to the campaign objective using the reference file for the campaign type.
74 
75> **REGULATED ADVERTISERS NEED `special_ad_categories`**: For gambling, financial, housing, employment, credit, or political advertisers, declare the category on `meta_ads_campaign_create` (e.g. `special_ad_categories=["ONLINE_GAMBLING_AND_GAMING"]`).
76 
77> **FIXED RUN WINDOWS GO ON THE AD SET**: When the user gives a run duration or dates ("run it for 7 days", "through end of month"), set `start_time` AND `end_time` (ISO 8601) on `meta_ads_adset_create`. A daily-budget ad set with no `end_time` runs continuously until manually paused — the requested window is silently lost.
78 
79> **GROUND COPY IN THE DESTINATION PAGE (RESEARCH FIRST)**: When the brief centers on a URL ("build a campaign for https://..."), fetch that page FIRST (`web_pages_fetch`) — before discovery and before writing any copy — and ground ad copy in what the page actually says (product name, value props, offer). Never invent copy for a page you have not read; even when the user supplies exact copy or headlines, fetch the page to verify the destination matches the offer.
80 
81> **EU-TARGETED AD SETS NEED DSA FIELDS**: If an ad set targets the EU, set `dsa_beneficiary` and `dsa_payor` on `meta_ads_adset_create` (who benefits from / pays for the ad) — required under the EU Digital Services Act, or delivery is restricted.
82 
83> **UTMs ON EVERY DESTINATION AD (`url_tags`)**: Set `url_tags` (UTM params, e.g. `utm_source=meta&utm_medium=paid&utm_campaign=...`) on every creative that drives to a destination — downstream measurement (e.g. AppsFlyer + a data warehouse) stitches on these, so an ad without UTMs is effectively unmeasurable. Use the advertiser's canonical template; if you don't have one, ask rather than ship untracked.
84 
85See [references/constraints.md](references/constraints.md) for the full constraint set.
86 
87> **All reference files live in `references/`.** Read them at `references/<file>` (e.g. `references/discovery.md`). They are not in the same directory as this SKILL.md.
88 
89---
90 
91## Core process
92 
93Every task follows this sequence. Do not skip steps.
94 
951. **Identify the goal** — creation, analysis, or both?
962. **Check the routing table** and read the referenced files before calling any tools
973. **Make a written plan** — state campaign type, budget in cents, optimization goal, and sequence of steps; show it before acting
984. **Execute step by step**, re-checking [references/constraints.md](references/constraints.md) at each creation step
995. **Show ad previews** before activation
1006. **Activate only when the user approves** using `meta_ads_campaigns_activate()`
101 
102**Automated / scheduled runs:** If there is no user present to interact with (e.g. a scheduled task), skip steps 3 and 6. Do not write a plan and wait for confirmation — proceed directly. Do not activate unless activation was explicitly included in the task instructions.
103 
104---
105 
106## Routing table
107 
108| The user wants to… | Read these files first |
109|---|---|
110| Create a sales / conversion campaign | [references/discovery.md](references/discovery.md) → [references/campaigns/sales.md](references/campaigns/sales.md) |
111| Create a leads campaign | [references/discovery.md](references/discovery.md) → [references/campaigns/leads.md](references/campaigns/leads.md) |
112| Create a traffic campaign | [references/discovery.md](references/discovery.md) → [references/campaigns/traffic.md](references/campaigns/traffic.md) |
113| Create an awareness or engagement campaign | [references/discovery.md](references/discovery.md) → [references/campaigns/awareness-engagement.md](references/campaigns/awareness-engagement.md) |
114| Create an app promotion campaign | [references/discovery.md](references/discovery.md) → [references/campaigns/app-promotion.md](references/campaigns/app-promotion.md) |
115| Create a campaign (any objective) | [references/discovery.md](references/discovery.md) → the matching `references/campaigns/*.md` above, then build step by step |
116| Analyze performance / query insights | [references/analytics.md](references/analytics.md) |
117| Audit an account / find optimization opportunities | [references/account-audit.md](references/account-audit.md) |
118| Set up automated rules (auto-pause, budget guards, alerts) | [references/automated-rules.md](references/automated-rules.md) |
119| Build a Meta dashboard or data app | [references/analytics.md](references/analytics.md) → [references/dashboards.md](references/dashboards.md) |
120| Analyze performance, then create a campaign | [references/analytics.md](references/analytics.md) → [references/discovery.md](references/discovery.md) → relevant campaign file |
121| Build a funnel / multiple campaigns at once (TOF/MOF/BOF) | [references/multi-campaign-funnel.md](references/multi-campaign-funnel.md) → [references/discovery.md](references/discovery.md) → per-tier campaign files |
122| Objective not yet known | [references/discovery.md](references/discovery.md) — discovery clarifies the goal |
123 
124---
125 
126## Worked examples
127 
128- Full sales campaign (ecommerce, Advantage+, step-by-step): [references/examples/sales-ecommerce.md](references/examples/sales-ecommerce.md)
129- Full leads campaign (B2B SaaS, website pixel, step-by-step): [references/examples/leads-form.md](references/examples/leads-form.md)
130 

Discussion

Alternatives

Also in Social & retail adsSee all 401 in Marketing →
Ad creativeWhen the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad variations — for any paid advertising platform. Also use when the user mentions 'ad copy variations,' 'ad creative,' 'generate headlines,' 'RSA headlines,' 'bulk ad copy,' 'ad iterations,' 'creative testing,' 'write me some ads,' 'Facebook ad copy,' 'Google ad headlines,' 'LinkedIn ad text,' 'static ads,' 'ad templates,' 'iMessage ad,' 'chat reveal ad,' 'ChatGPT ad,' 'Apple Notes ad,' 'AirDrop ad,' 'creative strategy,' 'creative roadmap,' 'creative retro,' 'hook writing,' 'creative review page,' 'present ad creative for approval,' 'motion video ad,' 'faceless video ad,' 'UGC ad,' 'greenscreen ad,' 'TikTok/Reels ad format,' 'which ad format to make,' 'Meta ad format tier list,' or 'creative format taxonomy.' Use this whenever someone needs to produce ad copy at scale or iterate on existing ads. For campaign strategy and targeting, see ads. For landing page copy, see copywriting.Marketing · MITAmazon Ads AuditYou share your Amazon advertising numbers and goals; you get back a plain-language review of what's draining your budget and what to change first.Business & ops · MITApple Ads AuditPaste what you're spending on Apple Search Ads and your recent numbers; get back a plain review of what's wasting money and what to fix first.Business & ops · MITAd creative builderUse when the user asks to "write ad copy", "generate RSA headlines", or "build ad creative at volume"; produces ad units — RSA headlines/descriptions, hooks, and an angle matrix — message-matched to the destination landing page. Not for scoring an ad account — use ad-account-auditor; not for the post-click page — use landing-optimizer; not for organic articles — use content-writer. 广告创意/广告文案/RSA标题Marketing · Apache-2.0