diagnose-underperforme…
Diagnose why a specific Google Ads or Meta Ads campaign / ad set / ad is underperforming and prescribe the next concrete action.…
Edit a Meta ad's creative content — landing page URL, primary text, headline, description, CTA, link description — across one ad or many. Use when the user says "change the URL on my ads", "update the copy", "swap the CTA", or anything that changes what an existing Meta ad
Claude Code
$ npx -y skills add markifact/markifact-mcp --skill edit-meta-creative --agent claude-code
Codex
$ npx skills add markifact/markifact-mcp --skill edit-meta-creative -a codex -y
Cursor
$ npx skills add markifact/markifact-mcp --skill edit-meta-creative -a cursor -y
Gemini CLI
$ npx skills add markifact/markifact-mcp --skill edit-meta-creative -a gemini-cli -y
GitHub Copilot
$ npx skills add markifact/markifact-mcp --skill edit-meta-creative -a github-copilot -y
OpenCode
$ npx skills add markifact/markifact-mcp --skill edit-meta-creative -a opencode -y
Windsurf
$ npx skills add markifact/markifact-mcp --skill edit-meta-creative -a windsurf -y
name: edit-meta-creative description: Edit a Meta ad's creative content — landing page URL, primary text, headline, description, CTA, link description — across one ad or many. Use when the user says "change the URL on my ads", "update the copy", "swap the CTA", or anything that changes what an existing Meta ad shows. Meta does not allow in-place creative edits, so this command runs the required get → modify → create → replace workflow.
Apply a creative-content change to one or more existing Meta ads **without losing learning, frequency caps, ad post engagement, or the ad ID**. The same `ad_id` keeps running with a new creative attached.
Meta does **not** allow in-place edits of creative content (URL, text, headline, image, CTA). The only way to change an existing ad's creative is:
get_ad_creative → modify payload locally → create_ad_creative → replace_ad_creative
Anything else (deleting + recreating the ad) destroys learning, frequency capping, social proof (likes/comments), and breaks any link people have to the ad post. Always use `replace_ad_creative` — never delete-and-recreate for a creative change.
1. Account name (substring) — required. 2. **Scope** — required. One of:
3. **What to change** — required. Examples:
4. **Old → new mapping** if it's a find-and-replace (e.g. swap `utm_campaign=spring` for `utm_campaign=summer`, or replace `oldsite.com` with `newsite.com`).
1. **Discover** ops: `meta_ads_select_accounts`, `meta_ads_list_ads`, `meta_ads_list_adsets`, `meta_ads_list_campaigns`, `meta_ads_get_ad_creative`, `meta_ads_create_ad_creative`, `meta_ads_replace_ad_creative`. 2. **Inspect** each with `get_operation_inputs`. 3. **Resolve account** via `meta_ads_select_accounts` (substring). 4. **Resolve scope to a list of `ad_id`s** via `meta_ads_list_ads` with the right filters (campaign, ad set, status). Show the user the ad list and the count before doing anything else. 5. **For each ad in scope**: a. `meta_ads_get_ad_creative(ad_id)` → returns the raw creative payload. b. **Modify the payload locally** based on the requested change. Preserve all fields the user did not ask to change. Common fields to patch:
c. `meta_ads_create_ad_creative(modified_payload)` → returns new `creative_id`. **Only works when the existing media (image_hash / video_id) is reused.** If the user is also swapping in fresh media that isn't already in Meta, see "Fresh media" below. d. `meta_ads_replace_ad_creative(ad_id, creative_id)` → attaches the new creative. 6. **Build a diff preview before executing.** Show the user a table of every ad with old → new for each changed field. Wait for explicit confirmation. Then run all replaces, batched into a single `request_human_approval` if approval is required. 7. **Confirm**: count succeeded, count failed (with reason), list of new `creative_id`s.
Use `safe-write-operations` for steps 5c, 5d, and 6.
`meta_ads_create_ad_creative` expects media that already exists in Meta as `image_hash` or `video_id`. If the user wants brand-new media:
Manage Google Ads, Meta Ads, TikTok Ads, LinkedIn Ads, Microsoft Ads, Reddit Ads, Pinterest Ads, Snapchat Ads, Amazon Ads, DV360, GA4, BigQuery, Google Search Console, Google Business Profile, Google Merchant Center, Facebook, Instagram, LinkedIn, Shopify,
Diagnose why a specific Google Ads or Meta Ads campaign / ad set / ad is underperforming and prescribe the next concrete action.…
Launch a complete Google Ads Search campaign — campaign, ad group, responsive search ads, keywords, sitelinks, callouts, and…
Launch a complete Meta Ads campaign — campaign, ad set, and ad(s) — built paused and ready to review. Use when the user wants a…
Launch a Google Ads Performance Max campaign with a complete asset group, audience signals, and (for ecom) listing groups. Built…
Senior performance-marketing operator with hands-on access to the user's ad accounts via Markifact. Use proactively for anything…
Reference — what Markifact is, what the MCP server exposes, and the discover→inspect→run pattern. Always loaded into the…
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use…
Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…
Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…
Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…