Skip to content
Marketing
Skill

/ad-angle-miner

Research supported advertising promises from a specific buyer's context, current product facts, customer language and observed ads. Turn them into static, video or copy ideas; match video ideas to actual recipes and save a product-scoped angle bank for write-video-ad-script.

From plugin
goose-skills
1.3k181 skills

Claude Code

$ npx -y skills add gooseworks-ai/goose-skills --skill ad-angle-miner --agent claude-code

SKILL.md

ad-angle-miner.SKILL.md
name: ad-angle-miner
description: Research supported advertising promises from a specific buyer's context, current product facts, customer language and observed ads. Turn them into static, video or copy ideas; match video ideas to actual recipes and save a product-scoped angle bank for write-video-ad-script. Product-led discovery can use verified facts without reviews. Reference persistence and reach are observations, not proof of performance.

Ad Angle Miner

**Summary.** Research advertising promises and match them to creatives the brand can make. Video research produces a structured bank the script writer can reuse, with stable angle ids, separate product facts and customer language, and template compatibility. Research scores rank test candidates; they do not predict conversions.

An ad is **copy plus creative**. This skill finds the angles real buyers respond to and turns each into an ad idea the user can make:

  • **Static**: a headline and primary text, plus a template from the live library whose layout fits the message.
  • **Video**: a hook, plus a video format from the live catalogue and the observed posts that illustrate the pattern.
  • **Copy only**: the headline and primary text lines, with no creative. Same evidence as static.

**Core principle:** combine audience relevance with a supported product promise and a feasible creative. Customer language, demonstrations, first-party performance and advertiser persistence provide different evidence. Long-running ads and variants are observations, not proof of profit. A product-led angle can start from verified facts without reviews; label missing evidence.

**Do only the work the chosen output needs.** Copy and static never search for videos or read video formats. Copy never looks at templates. Video reuses available reviews for language and insight; collect more only when the angle needs them. A video request may name a selected template or angle: preserve both.

When to Use

  • "What static ads should I make?" / "Give me image ad ideas for [brand]" (static)
  • "What video ads should I make?" / "Give me video ad hooks for [brand]" (video)
  • "Write ad copy / headlines for [brand]" / "What should our ads say?" (copy)
  • "What's working in my competitors' ads?" (any; ask which output)
  • "I need fresh ad angles" (ask which output)

Prerequisites

  • **GooseWorks MCP connector** (recommended): brand context, competitors, the Meta Ad Library

(imported and live search), comments and reviews through the ScrapeCreators proxy (no key), the video format catalogue and the static template library. With it connected, no API key is needed.

  • **Without GooseWorks**: a direct ScrapeCreators key (`scrapecreators-api`,

`competitor-ad-intelligence`) and web search. Static and video ideas then describe the layout or format in words instead of naming a library entry, and there is no hand-off step.

Phase 0: Intake

0A: Choose the output

Read it from the request:

| The user says | Output | |---|---| | static, image ads, banners, "what image ads" | **static** | | video, UGC, reels, TikTok, "what video should I make" | **video** | | copy, headlines, primary text, "what should our ads say" | **copy** | | "ads" or "angles" with no hint | **ask once**: "Static ad ideas, video ad ideas, or just the copy?" |

The user can pick more than one (for example static and video); then run the union of their sources, once. Never widen the scope on your own.

0B: What each output runs

| Source | static | video | copy | |---|---|---|---| | Brand context (1-0) | yes | yes | yes | | The brand's own ads (1A) | yes | yes | yes | | Competitor ads (1B) | yes, image ads first | yes, video ads first | yes, the copy | | Customer voice: reviews + comments (1C) | **yes** | reuse reviews; comments on top posts | **yes** | | Organic short-form reach (1D) | no | **yes** | no | | Internal data (1E) | if provided | if provided | if provided | | Reddit and forums (1F) | only if asked | only if asked | only if asked | | Template library (2.5) | **yes** | no | no | | Video format catalogue and full recipes (2.5) | no | **yes** | no |

0C: The rest of the intake

Take what the request and the brand context already answer; ask only for what's missing, in one message:

1. **Your product**: name and what it does in one sentence (with GooseWorks: the brand context). 2. **Competitors**: 2-5 names (with GooseWorks: the tracked ones, or the suggested ones). 3. **Who it's for**, if the brand context doesn't say. 4. **Search terms** the user wants covered, if any. Use them first.

Never invent a customer, a result or a claim: an angle may only promise what the brand's own facts support.

Phase 1: Source Collection

Run only the sections Phase 0B selected. ScrapeCreators calls go through `scrapecreators-api` (GooseWorks: `data_call_provider` with provider scrapecreators, GET). Each is billed per call: before the first one, say roughly how many you'll run and ask one yes/no. Free sources never need asking. Large results are saved to a file by some hosts: request a full page and parse the saved file rather than paging in small pieces.

1-0: Brand Context

With the GooseWorks MCP: `brand_read` (one brand in the org means use it and say which), with sections summary, products, competitors, accounts and learnings (the reply is large: parse the saved file); add kit when you need claims, voice or photos. Note what it sells, who buys it, its claims and can't-say rules, its offers, which products have clean photos (check the files: an SVG logo or a small thumbnail is not a clean product photo), and whether it has screen recordings or footage. `competitor_read` lists tracked competitors; with none, its suggestions view names likely ones. Say them in one line and carry on.

1A: The Brand's Own Ads

What the brand already runs decides what is new.

1. **Find the right page.** Search the Meta Ad Library for the brand by name (/v1/facebook/adLibrary/search/companies

Read more
@gooseworks-ai
Ships withgoose-skills

Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.

1.3k181 skills
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.3k
Star history of gooseworks-ai/goose-skills on GitHub, a chart by star-history.com

Other skills on goose-skills.

goose-ads

goose-ads

Edit, resize, animate and study image ads with GooseWorks in this chat. New static or image ads go to the make-static-ads skill…

goose-video

goose-video

Make a video ad in this chat from a real reference ad, found or theirs; styles are the fallback. Follow every answer's next_step.

gooseworks

gooseworks

GooseWorks growth coworker and router for markets, competitors, audiences, creators, campaigns, ads, photos, graphics, video,…

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about ad-angle-miner.

Which coding agents can use ad-angle-miner?
ad-angle-miner installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.