Set up and run ongoing competitive intelligence monitoring for a client. Tracks competitor content, ads, reviews, social, and product moves.
npx gooseworks install --all # then, in Claude Code, Cursor, or Codex: /gooseworks use the competitor-monitoring-system skill
Set up ongoing competitive intelligence for a client. Monitor competitor content, ads, reviews, social presence, and product moves. Produce regular intelligence reports.
Create a competitor tracking file: clients/<client-name>/intelligence/competitor-watchlist.md
For each competitor, document:
Run the full competitor-intel composite for each competitor to establish a baseline:
Skill: competitor-intel (chains reddit + twitter + linkedin + blog + review scrapers)
Plus:
web_search against Meta Ad Library (facebook.com/ads/library) for Meta ad researchOutput: clients/<client-name>/intelligence/competitor-baseline.md
| What to Monitor | Frequency | Skill | What to Look For |
|---|---|---|---|
| Blog/content output | Weekly | blog-feed-monitor | New posts, topic shifts, SEO attacks |
| Social media posts | Weekly | linkedin-profile-post-scraper + twitter-mention-tracker | Messaging changes, product announcements, engagement patterns |
| Reddit/HN mentions | Weekly | reddit-post-finder + hacker-news-scraper | User sentiment, complaints, praise, feature requests |
| Ad creative changes | Bi-weekly | google-ad-scraper + web_search (Meta Ad Library) | New campaigns, messaging shifts, spend changes |
| Review sentiment | Monthly | review-site-scraper | New reviews, rating trends, common complaints |
Each monitoring cycle:
After each cycle, produce a brief intelligence summary:
# Competitor Intelligence — [Client] — Week of [Date]
## Key Changes
- [Competitor A] published 3 new blog posts targeting "[keyword]"
- [Competitor B] launched new Meta ad campaign focused on [theme]
- [Competitor C] received 5 negative G2 reviews about [issue]
## Recommended Actions
- Publish response content for [Competitor A]'s keyword attack
- Create comparison page addressing [Competitor B]'s new messaging
- Target [Competitor C]'s unhappy customers with migration content
## Detailed Findings
[Per-competitor breakdown]Output: clients/<client-name>/intelligence/competitor-reports/[date].md
Render a 'model comparison grid' video from a config — a fal-style "same prompt, N contenders" showcase — a dark real-DOM stage where per beat a monospace prompt fades in centered, docks to a small top strip, then a labeled 2-4 panel grid (static images OR muted video clips, mixable per cell) staggers in and holds for comparison, plus a minimal end card — frame-stepped via Playwright (video cells are frame-seeked deterministically) and encoded with FFmpeg. Deterministic assembly, FREE (cell media comes from create-image-fal / create-video-fal, music from create-music-elevenlabs), text stays pixel-crisp. Use for the model-comparison-grid format.
Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film — HEADLINE slam → real PRODUCT drop → CLAIM/proof → CTA pill — from one config of copy slots, a real product photo, a brand palette, fonts, bpm, and beat split. DETERMINISTIC + FREE (a bundled Remotion project; springs + interpolate, no AI-gen for visuals). Backgrounds are engine gradient divs off the palette, props are inline SVG, the ONLY composited bitmap is the REAL product photo (objectFit:contain, never stretched), and ALL headline/claim/CTA/URL/wordmark text is typeset in the engine — never AI-rendered (the format's credibility guard). A driver binds the config to Remotion input props, renders the 9:16 master, and derives a 1:1 center-crop with ffmpeg. Two gating checks run before render (claim verbs must match the product's physical format; the claim beat needs an edge-entry mechanism prop). Use for the motion-graphics-offer-ad format.
Assemble a myth-vs-fact kinetic-typography explainer video ad (≈29.5s, 9:16) from N myth/fact pairs + hook / turn / punch copy + palette + a brand end-card PNG + a VO track — a hook, 3 red-strike MYTH cards that flip to teal-check FACT cards (per-line strikethrough that crosses EVERY wrapped line), a "what actually works" turn, an optional proof reveal, a punch line, and a static end card. DETERMINISTIC assembly with ZERO AI-gen visuals — HTML hyperframes rendered frame-exact via Playwright (`window.renderAt(t)`, animation a pure function of beat-local time), Whisper beat-snap to VO word onsets, concat at a uniform fps, karaoke `.ass` captions burned last (suppressed on the proof + end-card beats), and a VO + optional music mix (music −20 dB, `amix normalize=0`, tail fade). FREE (Python + Playwright + ffmpeg); the recipe supplies the copy / palette / end-card / VO and gates the paid VO / music / Whisper calls to their own capabilities. Use for the myth-vs-fact format.