$npx -y skills add gooseworks-ai/goose-skills --skill brand-researchKickoff research for a brand you haven't worked on before — web research, existing-ad analysis from the Meta Ad Library, editorial-grammar profiling, sourced + AI-generated brand assets, hook/CTA libraries, and an ad concept brief. Produces one reusable brand-context pack (brand-
| 1 | # brand-research |
| 2 | |
| 3 | ## Purpose |
| 4 | |
| 5 | Given a brand (name and/or URL) and a product, produce the full creative-prep package for |
| 6 | it: research the product, analyze the brand's running ads, measure their editorial DNA, |
| 7 | source logos and reference photos, generate brand-anchored product + lifestyle imagery, and |
| 8 | write the brand-context documents a downstream ad/video pipeline consumes. |
| 9 | |
| 10 | The output is a **brand-context pack** — a self-contained set of artifacts: |
| 11 | |
| 12 | - `brand-summary`, `visual-identity`, `competitors`, `audience` — the core brand context. |
| 13 | - `existing-ads` — what the brand's running ads reveal that web research misses. |
| 14 | - `brand-grammar` — the brand's editorial DNA (archetype, pacing, caption style). |
| 15 | - an **asset manifest** cataloging every sourced + generated asset with its kind, name, and |
| 16 | usage note, plus the binary assets themselves (logos, reference photos, generated stills). |
| 17 | - a **concept brief** of brand-level ad concept seeds. |
| 18 | |
| 19 | Everything is written into a single brand-pack directory under `output_dir`. |
| 20 | |
| 21 | ## Inputs |
| 22 | |
| 23 | - `brand` (required) — the brand, used as the pack's folder name, e.g. `amex`, `liquid-death`. |
| 24 | - `product` (required) — the specific product / SKU / offer to research, e.g. "Platinum |
| 25 | Card", "Sparkling Water". Disambiguates brands with many SKUs. |
| 26 | - `brand_url` (optional) — canonical homepage. Strongly recommended to avoid wrong-entity |
| 27 | confusion (e.g. Apple band vs. Apple Inc.). |
| 28 | - `output_dir` (optional) — directory to write the brand pack into. Defaults to `./<brand>/`. |
| 29 | Resolve the location from this input; never hardcode a path. |
| 30 | - `max_existing_ads` (optional, default 10) — cap on how many of the brand's running Meta |
| 31 | ads to pull for analysis. |
| 32 | - `brand_video_urls` (optional) — the brand's own video URLs (launch films, demos). If |
| 33 | provided, run `build-brand-clip-library` afterward to cut them into a reusable clip library. |
| 34 | - `concept_count` (optional, default 6–10) — number of social-ad concepts to draft. |
| 35 | - `skip_generation` (optional, default false) — skip image generation and ship research + |
| 36 | brief only (useful when no image budget is available). |
| 37 | |
| 38 | ## Composed Atoms |
| 39 | |
| 40 | - `source-company-existing-ads` — download the brand's running ads from the **Meta Ad |
| 41 | Library** (via the Apify FB Ad Library scraper) into a `raw/` folder with provenance. |
| 42 | - `rename-and-index-ads` — watch each downloaded ad, semantically rename it, and write an |
| 43 | `INDEX.md` (per-ad strategy + cross-ad patterns). |
| 44 | - `analyze-reference-grammar` — measure each ad's editorial DNA (cut points, pacing curve, |
| 45 | archetype, audio mode) into a per-ad `grammar-profile.json`. |
| 46 | - `source-brand-assets` — scrape logos + reference hero photos from the brand's site / press kit. |
| 47 | - `understand-brand-assets` — distill web research + reference photos into the visual-identity |
| 48 | content (colors, typography, photography style). |
| 49 | - `analyze-ad-hooks` — extract recurring hooks/motifs from the downloaded ads. |
| 50 | - `generate-ad-concepts` — produce the concept list for the concept brief. |
| 51 | - `create-product-images-higgsfield-product-photoshoot` — 4–6 hero/end-card product stills |
| 52 | (Higgsfield product-photoshoot on `gpt_image_2`). |
| 53 | - `create-product-images-nanobanana` — 8–12 vertical 9:16 lifestyle stills (Nano Banana Pro). |
| 54 | - External tools: a video-watching capability (frame extraction + transcription — e.g. |
| 55 | `yt-dlp` + `ffmpeg` + Whisper), and web search + fetch. |
| 56 | |
| 57 | ## Workflow |
| 58 | |
| 59 | 1. **Disambiguate.** Confirm `brand` + `product` resolves to one entity. If `brand_url` is |
| 60 | missing and the name is ambiguous, stop and ask. |
| 61 | 2. **Scaffold the brand pack** under `<output_dir>` — a `brand-research/` folder for the |
| 62 | markdown docs, a `brand-assets/` folder for the asset manifest + binaries (`logos/`, |
| 63 | `reference-photos/`, `generated-product-shots/`, `generated-lifestyle/`, `songs/`), and an |
| 64 | `existing-ads/` folder (`raw/` + renamed copies + a `grammar/` subfolder). Only create |
| 65 | subfolders that will be populated. |
| 66 | 3. **Web research** via web search + fetch. Priority order: brand site → trade press |
| 67 | (Adweek/AdAge/Campaign) → reputable category reviewers. Capture: product overview, |
| 68 | mechanics/pricing, benefits, target audience, current named campaigns with dates, core |
| 69 | positioning, voice/tone. Record every URL with its access date. |
| 70 | 4. **Pull and study the brand's running ads.** Mandatory — research without watching real |
| 71 | ads misses how the product is actually shown and talked about. |
| 72 | - Run `source-company-existing-a |